All Projects → pappasam → nginx-language-server

pappasam / nginx-language-server

Licence: GPL-3.0 license
Language server for nginx.conf

Programming Languages

javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
Makefile
30231 projects

Nginx Language Server

image-version image-license image-python-versions

A Language Server for nginx.conf.

Still under construction, expect big / potentially breaking changes for a while.

Capabilities

nginx-language-server currently partially supports the following Language Server capabilities with more to be added in the future.

Language Features

Installation

From your command line (bash / zsh), run:

pip install -U nginx-language-server

-U ensures that you're pulling the latest version from pypi.

Alternatively, consider using pipx to keep nginx-language-server isolated from your other Python dependencies.

Editor Setup

The following instructions show how to use nginx-language-server with your development tooling. The instructions assume you have already installed nginx-language-server.

Vim / Neovim

With coc.nvim, put the following in coc-settings.json:

  "languageserver": {
    "nginx-language-server": {
      "command": "nginx-language-server",
      "filetypes": ["nginx"],
      "rootPatterns": ["nginx.conf", ".git"]
    }
  },

In your vimrc, I recommend putting in the following lines to ensure variables complete / hover correcty:

augroup custom_nginx
  autocmd!
  autocmd FileType nginx setlocal iskeyword+=$
  autocmd FileType nginx let b:coc_additional_keywords = ['$']
augroup end

Note: this list is non-exhaustive. If you know of a great choice not included in this list, please submit a PR!

Command line

nginx-language-server can be run directly from the command line.

$ nginx-language-server --help
usage: nginx-language-server [-h] [--version] [--tcp] [--host HOST]
                             [--port PORT] [--log-file LOG_FILE] [-v]

Nginx language server: an LSP server for nginx.conf.

optional arguments:
  -h, --help           show this help message and exit
  --version            display version information and exit
  --tcp                use TCP server instead of stdio
  --host HOST          host for TCP server (default 127.0.0.1)
  --port PORT          port for TCP server (default 2088)
  --log-file LOG_FILE  redirect logs to the given file instead of writing to
                       stderr
  -v, --verbose        increase verbosity of log output

Examples:

    Run from stdio: nginx-language-server

Inspiration

The useful language data for nginx is ported from vscode-nginx-conf-hint. I would have used this library directly, but alas! It's written only for VSCode and I use Neovim.

Written by

Samuel Roeca [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].