diff options
| author | github-actions[bot] <github-actions[bot]@users.noreply.github.com> | 2025-08-20 02:13:10 +0000 |
|---|---|---|
| committer | github-actions[bot] <github-actions[bot]@users.noreply.github.com> | 2025-08-20 02:13:10 +0000 |
| commit | d64ea08d8033543a61af35f2f23cac0f0d05f7b4 (patch) | |
| tree | 18e1ebae84185333d0ff86a47fba5297fc91f5b4 /doc | |
| parent | fix: separate type annotation from `@brief` docstring #4017 (diff) | |
| download | nvim-lspconfig-d64ea08d8033543a61af35f2f23cac0f0d05f7b4.tar nvim-lspconfig-d64ea08d8033543a61af35f2f23cac0f0d05f7b4.tar.gz nvim-lspconfig-d64ea08d8033543a61af35f2f23cac0f0d05f7b4.tar.bz2 nvim-lspconfig-d64ea08d8033543a61af35f2f23cac0f0d05f7b4.tar.lz nvim-lspconfig-d64ea08d8033543a61af35f2f23cac0f0d05f7b4.tar.xz nvim-lspconfig-d64ea08d8033543a61af35f2f23cac0f0d05f7b4.tar.zst nvim-lspconfig-d64ea08d8033543a61af35f2f23cac0f0d05f7b4.zip | |
docs: update configs.md
skip-checks: true
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/configs.md | 3442 | ||||
| -rw-r--r-- | doc/configs.txt | 3286 |
2 files changed, 2929 insertions, 3799 deletions
diff --git a/doc/configs.md b/doc/configs.md index db23821c..c5d51ca0 100644 --- a/doc/configs.md +++ b/doc/configs.md @@ -435,11 +435,10 @@ Default config: https://github.com/aiken-lang/aiken - A language server for Aiken Programming Language. - [Installation](https://aiken-lang.org/installation-instructions) +A language server for Aiken Programming Language. +[Installation](https://aiken-lang.org/installation-instructions) - It can be i -@type vim.lsp.Config +It can be i Snippet to enable the language server: ```lua @@ -466,10 +465,9 @@ Default config: https://github.com/posit-dev/air - Air is an R formatter and language server, written in Rust. +Air is an R formatter and language server, written in Rust. - Refer to the [documentation](https://posit-dev.github.io/air/editors.html) for more details. -@type vim.lsp.Config +Refer to the [documentation](https://posit-dev.github.io/air/editors.html) for more details. Snippet to enable the language server: ```lua @@ -496,26 +494,25 @@ Default config: https://github.com/AlloyTools/org.alloytools.alloy - Alloy is a formal specification language for describing structures and a tool for exploring them. +Alloy is a formal specification language for describing structures and a tool for exploring them. - You may also need to configure the filetype for Alloy (*.als) files: +You may also need to configure the filetype for Alloy (*.als) files: - ``` - autocmd BufNewFile,BufRead *.als set filetype=alloy - ``` +``` +autocmd BufNewFile,BufRead *.als set filetype=alloy +``` - or +or - ```lua - vim.filetype.add({ - pattern = { - ['.*/*.als'] = 'alloy', - }, - }) - ``` +```lua +vim.filetype.add({ + pattern = { + ['.*/*.als'] = 'alloy', + }, +}) +``` - Alternatively, you may use a syntax plugin like https://github.com/runoshun/vim-alloy. -@type vim.lsp.Config +Alternatively, you may use a syntax plugin like https://github.com/runoshun/vim-alloy. Snippet to enable the language server: ```lua @@ -542,13 +539,12 @@ Default config: https://pypi.org/project/anakin-language-server/ - `anakin-language-server` is yet another Jedi Python language server. +`anakin-language-server` is yet another Jedi Python language server. - Available options: +Available options: - * Initialization: https://github.com/muffinmad/anakin-language-server#initialization-option - * Configuration: https://github.com/muffinmad/anakin-language-server#configuration-options -@type vim.lsp.Config +* Initialization: https://github.com/muffinmad/anakin-language-server#initialization-option +* Configuration: https://github.com/muffinmad/anakin-language-server#configuration-options Snippet to enable the language server: ```lua @@ -618,14 +614,13 @@ Default config: https://github.com/ansible/vscode-ansible - Language server for the ansible configuration management tool. +Language server for the ansible configuration management tool. - `ansible-language-server` can be installed via `npm`: +`ansible-language-server` can be installed via `npm`: - ```sh - npm install -g @ansible/ansible-language-server - ``` -@type vim.lsp.Config +```sh +npm install -g @ansible/ansible-language-server +``` Snippet to enable the language server: ```lua @@ -675,11 +670,10 @@ Default config: https://www.npmjs.com/package/antlers-language-server - `antlersls` can be installed via `npm`: - ```sh - npm install -g antlers-language-server - ``` -@type vim.lsp.Config +`antlersls` can be installed via `npm`: +```sh +npm install -g antlers-language-server +``` Snippet to enable the language server: ```lua @@ -805,11 +799,10 @@ Default config: https://github.com/bergercookie/asm-lsp - Language Server for NASM/GAS/GO Assembly +Language Server for NASM/GAS/GO Assembly - `asm-lsp` can be installed via cargo: - cargo install asm-lsp -@type vim.lsp.Config +`asm-lsp` can be installed via cargo: +cargo install asm-lsp Snippet to enable the language server: ```lua @@ -836,12 +829,11 @@ Default config: https://ast-grep.github.io/ - ast-grep(sg) is a fast and polyglot tool for code structural search, lint, rewriting at large scale. - ast-grep LSP only works in projects that have `sgconfig.y[a]ml` in their root directories. - ```sh - npm install [-g] @ast-grep/cli - ``` -@type vim.lsp.Config +ast-grep(sg) is a fast and polyglot tool for code structural search, lint, rewriting at large scale. +ast-grep LSP only works in projects that have `sgconfig.y[a]ml` in their root directories. +```sh +npm install [-g] @ast-grep/cli +``` Snippet to enable the language server: ```lua @@ -857,7 +849,7 @@ Default config: ```lua { "c", "cpp", "rust", "go", "java", "python", "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx", "html", "css", "kotlin", "dart", "lua" } ``` -- `reuse_client`: [../lsp/ast_grep.lua:11](../lsp/ast_grep.lua#L11) +- `reuse_client`: [../lsp/ast_grep.lua:12](../lsp/ast_grep.lua#L12) - `root_markers` : ```lua { "sgconfig.yaml", "sgconfig.yml" } @@ -907,60 +899,58 @@ Default config: https://github.com/ariga/atlas - Language server for Atlas config and schema files. +Language server for Atlas config and schema files. - You may also need to configure the filetype for *.hcl files: +You may also need to configure the filetype for *.hcl files: - ```vim - autocmd BufNewFile,BufRead atlas.hcl set filetype=atlas-config - autocmd BufNewFile,BufRead *.my.hcl set filetype=atlas-schema-mysql - autocmd BufNewFile,BufRead *.pg.hcl set filetype=atlas-schema-postgresql - autocmd BufNewFile,BufRead *.lt.hcl set filetype=atlas-schema-sqlite - autocmd BufNewFile,BufRead *.ch.hcl set filetype=atlas-schema-clickhouse - autocmd BufNewFile,BufRead *.ms.hcl set filetype=atlas-schema-mssql - autocmd BufNewFile,BufRead *.rs.hcl set filetype=atlas-schema-redshift - autocmd BufNewFile,BufRead *.test.hcl set filetype=atlas-test - autocmd BufNewFile,BufRead *.plan.hcl set filetype=atlas-plan - autocmd BufNewFile,BufRead *.rule.hcl set filetype=atlas-rule - ``` +```vim +autocmd BufNewFile,BufRead atlas.hcl set filetype=atlas-config +autocmd BufNewFile,BufRead *.my.hcl set filetype=atlas-schema-mysql +autocmd BufNewFile,BufRead *.pg.hcl set filetype=atlas-schema-postgresql +autocmd BufNewFile,BufRead *.lt.hcl set filetype=atlas-schema-sqlite +autocmd BufNewFile,BufRead *.ch.hcl set filetype=atlas-schema-clickhouse +autocmd BufNewFile,BufRead *.ms.hcl set filetype=atlas-schema-mssql +autocmd BufNewFile,BufRead *.rs.hcl set filetype=atlas-schema-redshift +autocmd BufNewFile,BufRead *.test.hcl set filetype=atlas-test +autocmd BufNewFile,BufRead *.plan.hcl set filetype=atlas-plan +autocmd BufNewFile,BufRead *.rule.hcl set filetype=atlas-rule +``` - or +or - ```lua - vim.filetype.add({ - filename = { - ['atlas.hcl'] = 'atlas-config', - }, - pattern = { - ['.*/*.my.hcl'] = 'atlas-schema-mysql', - ['.*/*.pg.hcl'] = 'atlas-schema-postgresql', - ['.*/*.lt.hcl'] = 'atlas-schema-sqlite', - ['.*/*.ch.hcl'] = 'atlas-schema-clickhouse', - ['.*/*.ms.hcl'] = 'atlas-schema-mssql', - ['.*/*.rs.hcl'] = 'atlas-schema-redshift', - ['.*/*.test.hcl'] = 'atlas-test', - ['.*/*.plan.hcl'] = 'atlas-plan', - ['.*/*.rule.hcl'] = 'atlas-rule', - }, - }) - ``` - - Optionally, tell treesitter to treat Atlas filetypes as HCL for better syntax highlighting: +```lua +vim.filetype.add({ + filename = { + ['atlas.hcl'] = 'atlas-config', + }, + pattern = { + ['.*/*.my.hcl'] = 'atlas-schema-mysql', + ['.*/*.pg.hcl'] = 'atlas-schema-postgresql', + ['.*/*.lt.hcl'] = 'atlas-schema-sqlite', + ['.*/*.ch.hcl'] = 'atlas-schema-clickhouse', + ['.*/*.ms.hcl'] = 'atlas-schema-mssql', + ['.*/*.rs.hcl'] = 'atlas-schema-redshift', + ['.*/*.test.hcl'] = 'atlas-test', + ['.*/*.plan.hcl'] = 'atlas-plan', + ['.*/*.rule.hcl'] = 'atlas-rule', + }, +}) +``` - ```lua - vim.treesitter.language.register('hcl', 'atlas-config') - vim.treesitter.language.register('hcl', 'atlas-schema-mysql') - vim.treesitter.language.register('hcl', 'atlas-schema-postgresql') - vim.treesitter.language.register('hcl', 'atlas-schema-sqlite') - vim.treesitter.language.register('hcl', 'atlas-schema-clickhouse') - vim.treesitter.language.register('hcl', 'atlas-schema-mssql') - vim.treesitter.language.register('hcl', 'atlas-schema-redshift') - vim.treesitter.language.register('hcl', 'atlas-test') - vim.treesitter.language.register('hcl', 'atlas-plan') - vim.treesitter.language.register('hcl', 'atlas-rule') - ``` +Optionally, tell treesitter to treat Atlas filetypes as HCL for better syntax highlighting: -@type vim.lsp.Config +```lua +vim.treesitter.language.register('hcl', 'atlas-config') +vim.treesitter.language.register('hcl', 'atlas-schema-mysql') +vim.treesitter.language.register('hcl', 'atlas-schema-postgresql') +vim.treesitter.language.register('hcl', 'atlas-schema-sqlite') +vim.treesitter.language.register('hcl', 'atlas-schema-clickhouse') +vim.treesitter.language.register('hcl', 'atlas-schema-mssql') +vim.treesitter.language.register('hcl', 'atlas-schema-redshift') +vim.treesitter.language.register('hcl', 'atlas-test') +vim.treesitter.language.register('hcl', 'atlas-plan') +vim.treesitter.language.register('hcl', 'atlas-rule') +``` Snippet to enable the language server: ```lua @@ -1109,34 +1099,33 @@ Default config: https://github.com/microsoft/azure-pipelines-language-server - An Azure Pipelines language server +An Azure Pipelines language server - `azure-pipelines-ls` can be installed via `npm`: +`azure-pipelines-ls` can be installed via `npm`: - ```sh - npm install -g azure-pipelines-language-server - ``` +```sh +npm install -g azure-pipelines-language-server +``` - By default `azure-pipelines-ls` will only work in files named `azure-pipelines.yml`, this can be changed by providing additional settings like so: - ```lua - vim.lsp.config('azure_pipelines_ls', { - ... -- other configuration - settings = { - yaml = { - schemas = { - ["https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json"] = { - "/azure-pipeline*.y*l", - "/*.azure*", - "Azure-Pipelines/**/*.y*l", - "Pipelines/*.y*l", - }, - }, - }, - }, - }) - ``` - The Azure Pipelines LSP is a fork of `yaml-language-server` and as such the same settings can be passed to it as `yaml-language-server`. -@type vim.lsp.Config +By default `azure-pipelines-ls` will only work in files named `azure-pipelines.yml`, this can be changed by providing additional settings like so: +```lua +vim.lsp.config('azure_pipelines_ls', { + ... -- other configuration + settings = { + yaml = { + schemas = { + ["https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json"] = { + "/azure-pipeline*.y*l", + "/*.azure*", + "Azure-Pipelines/**/*.y*l", + "Pipelines/*.y*l", + }, + }, + }, + }, +}) +``` +The Azure Pipelines LSP is a fork of `yaml-language-server` and as such the same settings can be passed to it as `yaml-language-server`. Snippet to enable the language server: ```lua @@ -1167,42 +1156,41 @@ Default config: https://github.com/crisidev/bacon-ls - A Language Server Protocol wrapper for [bacon](https://dystroy.org/bacon/). - It offers textDocument/diagnostic and workspace/diagnostic capabilities for Rust - workspaces using the Bacon export locations file. +A Language Server Protocol wrapper for [bacon](https://dystroy.org/bacon/). +It offers textDocument/diagnostic and workspace/diagnostic capabilities for Rust +workspaces using the Bacon export locations file. - It requires `bacon` and `bacon-ls` to be installed on the system using - [mason.nvim](https://github.com/williamboman/mason.nvim) or manually +It requires `bacon` and `bacon-ls` to be installed on the system using +[mason.nvim](https://github.com/williamboman/mason.nvim) or manually - ```sh - $ cargo install --locked bacon bacon-ls - ``` +```sh +$ cargo install --locked bacon bacon-ls +``` - Settings can be changed using the `init_options` dictionary:util +Settings can be changed using the `init_options` dictionary:util - ```lua - init_options = { - -- Bacon export filename (default: .bacon-locations). - locationsFile = ".bacon-locations", - -- Try to update diagnostics every time the file is saved (default: true). - updateOnSave = true, - -- How many milliseconds to wait before updating diagnostics after a save (default: 1000). - updateOnSaveWaitMillis = 1000, - -- Try to update diagnostics every time the file changes (default: true). - updateOnChange = true, - -- Try to validate that bacon preferences are setup correctly to work with bacon-ls (default: true). - validateBaconPreferences = true, - -- f no bacon preferences file is found, create a new preferences file with the bacon-ls job definition (default: true). - createBaconPreferencesFile = true, - -- Run bacon in background for the bacon-ls job (default: true) - runBaconInBackground = true, - -- Command line arguments to pass to bacon running in background (default "--headless -j bacon-ls") - runBaconInBackgroundCommandArguments = "--headless -j bacon-ls", - -- How many milliseconds to wait between background diagnostics check to synchronize all open files (default: 2000). - synchronizeAllOpenFilesWaitMillis = 2000, - } - ``` -@type vim.lsp.Config +```lua +init_options = { + -- Bacon export filename (default: .bacon-locations). + locationsFile = ".bacon-locations", + -- Try to update diagnostics every time the file is saved (default: true). + updateOnSave = true, + -- How many milliseconds to wait before updating diagnostics after a save (default: 1000). + updateOnSaveWaitMillis = 1000, + -- Try to update diagnostics every time the file changes (default: true). + updateOnChange = true, + -- Try to validate that bacon preferences are setup correctly to work with bacon-ls (default: true). + validateBaconPreferences = true, + -- f no bacon preferences file is found, create a new preferences file with the bacon-ls job definition (default: true). + createBaconPreferencesFile = true, + -- Run bacon in background for the bacon-ls job (default: true) + runBaconInBackground = true, + -- Command line arguments to pass to bacon running in background (default "--headless -j bacon-ls") + runBaconInBackgroundCommandArguments = "--headless -j bacon-ls", + -- How many milliseconds to wait between background diagnostics check to synchronize all open files (default: 2000). + synchronizeAllOpenFilesWaitMillis = 2000, +} +``` Snippet to enable the language server: ```lua @@ -1233,9 +1221,8 @@ Default config: Ballerina language server - The Ballerina language's CLI tool comes with its own language server implementation. - The `bal` command line tool must be installed and available in your system's PATH. -@type vim.lsp.Config +The Ballerina language's CLI tool comes with its own language server implementation. +The `bal` command line tool must be installed and available in your system's PATH. Snippet to enable the language server: ```lua @@ -1302,13 +1289,12 @@ Default config: https://github.com/bash-lsp/bash-language-server - `bash-language-server` can be installed via `npm`: - ```sh - npm i -g bash-language-server - ``` +`bash-language-server` can be installed via `npm`: +```sh +npm i -g bash-language-server +``` - Language server for bash, written using tree sitter in typescript. -@type vim.lsp.Config +Language server for bash, written using tree sitter in typescript. Snippet to enable the language server: ```lua @@ -1343,12 +1329,11 @@ Default config: https://github.com/antonk52/basics-language-server/ - Buffer, path, and snippet completion +Buffer, path, and snippet completion - ```sh - npm install -g basics-language-server - ``` -@type vim.lsp.Config +```sh +npm install -g basics-language-server +``` Snippet to enable the language server: ```lua @@ -1383,18 +1368,17 @@ Default config: https://github.com/salesforce-misc/bazelrc-lsp - `bazelrc-lsp` is a LSP for `.bazelrc` configuration files. +`bazelrc-lsp` is a LSP for `.bazelrc` configuration files. - The `.bazelrc` file type is not detected automatically, you can register it manually (see below) or override the filetypes: +The `.bazelrc` file type is not detected automatically, you can register it manually (see below) or override the filetypes: - ```lua - vim.filetype.add { - pattern = { - ['.*.bazelrc'] = 'bazelrc', - }, - } - ``` -@type vim.lsp.Config +```lua +vim.filetype.add { + pattern = { + ['.*.bazelrc'] = 'bazelrc', + }, +} +``` Snippet to enable the language server: ```lua @@ -1421,8 +1405,7 @@ Default config: https://github.com/polarmutex/beancount-language-server#installation - See https://github.com/polarmutex/beancount-language-server#configuration for configuration options -@type vim.lsp.Config +See https://github.com/polarmutex/beancount-language-server#configuration for configuration options Snippet to enable the language server: ```lua @@ -1452,37 +1435,36 @@ Default config: ## bicep https://github.com/azure/bicep - Bicep language server +Bicep language server - Bicep language server can be installed by downloading and extracting a release of bicep-langserver.zip from [Bicep GitHub releases](https://github.com/Azure/bicep/releases). +Bicep language server can be installed by downloading and extracting a release of bicep-langserver.zip from [Bicep GitHub releases](https://github.com/Azure/bicep/releases). - Bicep language server requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed. +Bicep language server requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed. - Neovim does not have built-in support for the bicep filetype which is required for lspconfig to automatically launch the language server. +Neovim does not have built-in support for the bicep filetype which is required for lspconfig to automatically launch the language server. - Filetype detection can be added via an autocmd: - ```lua - vim.cmd [[ autocmd BufNewFile,BufRead *.bicep set filetype=bicep ]] - ``` +Filetype detection can be added via an autocmd: +```lua +vim.cmd [[ autocmd BufNewFile,BufRead *.bicep set filetype=bicep ]] +``` - **By default, bicep language server does not have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary. +**By default, bicep language server does not have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary. - ```lua - local bicep_lsp_bin = "/path/to/bicep-langserver/Bicep.LangServer.dll" - vim.lsp.config('bicep', { - cmd = { "dotnet", bicep_lsp_bin }; - ... - }) - ``` +```lua +local bicep_lsp_bin = "/path/to/bicep-langserver/Bicep.LangServer.dll" +vim.lsp.config('bicep', { + cmd = { "dotnet", bicep_lsp_bin }; + ... +}) +``` - To download the latest release and place in /usr/local/bin/bicep-langserver: - ```bash - (cd $(mktemp -d) \ - && curl -fLO https://github.com/Azure/bicep/releases/latest/download/bicep-langserver.zip \ - && rm -rf /usr/local/bin/bicep-langserver \ - && unzip -d /usr/local/bin/bicep-langserver bicep-langserver.zip) - ``` -@type vim.lsp.Config +To download the latest release and place in /usr/local/bin/bicep-langserver: +```bash +(cd $(mktemp -d) \ + && curl -fLO https://github.com/Azure/bicep/releases/latest/download/bicep-langserver.zip \ + && rm -rf /usr/local/bin/bicep-langserver \ + && unzip -d /usr/local/bin/bicep-langserver bicep-langserver.zip) +``` Snippet to enable the language server: ```lua @@ -1538,7 +1520,6 @@ Default config: ## bitbake_language_server 🛠️ bitbake language server -@type vim.lsp.Config Snippet to enable the language server: ```lua @@ -1565,11 +1546,10 @@ Default config: https://gitlab.gnome.org/jwestman/blueprint-compiler - `blueprint-compiler` can be installed via your system package manager. +`blueprint-compiler` can be installed via your system package manager. - Language server for the blueprint markup language, written in python and part - of the blueprint-compiler. -@type vim.lsp.Config +Language server for the blueprint markup language, written in python and part +of the blueprint-compiler. Snippet to enable the language server: ```lua @@ -1602,12 +1582,11 @@ Default config: https://github.com/kitagry/bqls - The `bqls` BigQuery language server can be installed by running: +The `bqls` BigQuery language server can be installed by running: - ```sh - $ go install github.com/kitagry/bqls@latest - ``` -@type vim.lsp.Config +```sh +$ go install github.com/kitagry/bqls@latest +``` Snippet to enable the language server: ```lua @@ -1638,11 +1617,10 @@ Default config: https://github.com/RokuCommunity/brighterscript - `brightscript` can be installed via `npm`: - ```sh - npm install -g brighterscript - ``` -@type vim.lsp.Config +`brightscript` can be installed via `npm`: +```sh +npm install -g brighterscript +``` Snippet to enable the language server: ```lua @@ -1692,14 +1670,13 @@ Default config: https://github.com/facebook/buck2 - Build system, successor to Buck +Build system, successor to Buck - To better detect Buck2 project files, the following can be added: +To better detect Buck2 project files, the following can be added: - ``` - vim.cmd [[ autocmd BufRead,BufNewFile *.bxl,BUCK,TARGETS set filetype=bzl ]] - ``` -@type vim.lsp.Config +``` +vim.cmd [[ autocmd BufRead,BufNewFile *.bxl,BUCK,TARGETS set filetype=bzl ]] +``` Snippet to enable the language server: ```lua @@ -1725,10 +1702,9 @@ Default config: ## buddy_ls https://github.com/buddy-compiler/buddy-mlir#buddy-lsp-server - The Language Server for the buddy-mlir, a drop-in replacement for mlir-lsp-server, - supporting new dialects defined in buddy-mlir. - `buddy-lsp-server` can be installed at the buddy-mlir repository (buddy-compiler/buddy-mlir) -@type vim.lsp.Config +The Language Server for the buddy-mlir, a drop-in replacement for mlir-lsp-server, +supporting new dialects defined in buddy-mlir. +`buddy-lsp-server` can be installed at the buddy-mlir repository (buddy-compiler/buddy-mlir) Snippet to enable the language server: ```lua @@ -1784,13 +1760,12 @@ Default config: https://github.com/bufbuild/buf-language-server - `buf-language-server` can be installed via `go install`: - ```sh - go install github.com/bufbuild/buf-language-server/cmd/bufls@latest - ``` +`buf-language-server` can be installed via `go install`: +```sh +go install github.com/bufbuild/buf-language-server/cmd/bufls@latest +``` - bufls is a Protobuf language server compatible with Buf modules and workspaces -@type vim.lsp.Config +bufls is a Protobuf language server compatible with Buf modules and workspaces Snippet to enable the language server: ```lua @@ -1817,10 +1792,9 @@ Default config: https://bzl.io/ - https://docs.stack.build/docs/cli/installation +https://docs.stack.build/docs/cli/installation - https://docs.stack.build/docs/vscode/starlark-language-server -@type vim.lsp.Config +https://docs.stack.build/docs/vscode/starlark-language-server Snippet to enable the language server: ```lua @@ -1847,8 +1821,7 @@ Default config: https://github.com/pherrymason/c3-lsp - Language Server for c3. -@type vim.lsp.Config +Language Server for c3. Snippet to enable the language server: ```lua @@ -1875,15 +1848,14 @@ Default config: [Cairo Language Server](https://github.com/starkware-libs/cairo/tree/main/crates/cairo-lang-language-server) - First, install Cairo following [this tutorial](https://book.cairo-lang.org/ch01-01-installation.html) +First, install Cairo following [this tutorial](https://book.cairo-lang.org/ch01-01-installation.html) - Then enable Cairo Language Server in your Lua configuration. - ```lua - vim.lsp.enable('cairo_ls') - ``` +Then enable Cairo Language Server in your Lua configuration. +```lua +vim.lsp.enable('cairo_ls') +``` - *cairo-language-server is still under active development, some features might not work yet !* -@type vim.lsp.Config +*cairo-language-server is still under active development, some features might not work yet !* Snippet to enable the language server: ```lua @@ -1967,12 +1939,11 @@ Default config: https://cap.cloud.sap/docs/ - `cds-lsp` can be installed via `npm`: +`cds-lsp` can be installed via `npm`: - ```sh - npm i -g @sap/cds-lsp - ``` -@type vim.lsp.Config +```sh +npm i -g @sap/cds-lsp +``` Snippet to enable the language server: ```lua @@ -2007,8 +1978,7 @@ Default config: [Circom Language Server](https://github.com/rubydusa/circom-lsp) - `circom-lsp`, the language server for the Circom language. -@type vim.lsp.Config +`circom-lsp`, the language server for the Circom language. Snippet to enable the language server: ```lua @@ -2082,8 +2052,7 @@ Default config: https://github.com/hirosystems/clarinet - Clarinet is the fastest way to build, test, and deploy smart contracts on the Stacks blockchain. -@type vim.lsp.Config +Clarinet is the fastest way to build, test, and deploy smart contracts on the Stacks blockchain. Snippet to enable the language server: ```lua @@ -2110,8 +2079,7 @@ Default config: https://github.com/clojure-lsp/clojure-lsp - Clojure Language Server -@type vim.lsp.Config +Clojure Language Server Snippet to enable the language server: ```lua @@ -2138,8 +2106,7 @@ Default config: https://github.com/regen100/cmake-language-server - CMake LSP Implementation -@type vim.lsp.Config +CMake LSP Implementation Snippet to enable the language server: ```lua @@ -2171,7 +2138,6 @@ Default config: ## cobol_ls Cobol language support -@type vim.lsp.Config Snippet to enable the language server: ```lua @@ -2198,13 +2164,11 @@ Default config: https://github.com/blopker/codebook - An unholy spell checker for code. - - `codebook-lsp` can be installed by following the instructions [here](https://github.com/blopker/codebook/blob/main/README.md#installation). + An unholy spell checker for code. - The default `cmd` assumes that the `codebook-lsp` binary can be found in `$PATH`. +`codebook-lsp` can be installed by following the instructions [here](https://github.com/blopker/codebook/blob/main/README.md#installation). -@type vim.lsp.Config +The default `cmd` assumes that the `codebook-lsp` binary can be found in `$PATH`. Snippet to enable the language server: ```lua @@ -2231,12 +2195,11 @@ Default config: https://github.com/phil294/coffeesense - CoffeeSense Language Server - `coffeesense-language-server` can be installed via `npm`: - ```sh - npm install -g coffeesense-language-server - ``` -@type vim.lsp.Config +CoffeeSense Language Server +`coffeesense-language-server` can be installed via `npm`: +```sh +npm install -g coffeesense-language-server +``` Snippet to enable the language server: ```lua @@ -2263,14 +2226,13 @@ Default config: https://github.com/dev-cycles/contextive - Language Server for Contextive. +Language Server for Contextive. - Contextive allows you to define terms in a central file and provides auto-completion suggestions and hover panels for these terms wherever they're used. +Contextive allows you to define terms in a central file and provides auto-completion suggestions and hover panels for these terms wherever they're used. - To install the language server, you need to download the appropriate [GitHub release asset](https://github.com/dev-cycles/contextive/releases/) for your operating system and architecture. +To install the language server, you need to download the appropriate [GitHub release asset](https://github.com/dev-cycles/contextive/releases/) for your operating system and architecture. - After the download unzip the Contextive.LanguageServer binary and copy the file into a folder that is included in your system's PATH. -@type vim.lsp.Config +After the download unzip the Contextive.LanguageServer binary and copy the file into a folder that is included in your system's PATH. Snippet to enable the language server: ```lua @@ -2292,7 +2254,6 @@ Default config: ## coq_lsp https://github.com/ejgallego/coq-lsp/ -@type vim.lsp.Config Snippet to enable the language server: ```lua @@ -2319,8 +2280,7 @@ Default config: https://github.com/elbywan/crystalline - Crystal language server. -@type vim.lsp.Config +Crystal language server. Snippet to enable the language server: ```lua @@ -2381,8 +2341,6 @@ Default config: [cspell language server](https://github.com/vlabo/cspell-lsp) -@type vim.lsp.Config - Snippet to enable the language server: ```lua vim.lsp.enable('cspell_ls') @@ -2404,14 +2362,13 @@ Default config: https://github.com/vunguyentuan/vscode-css-variables/tree/master/packages/css-variables-language-server - CSS variables autocompletion and go-to-definition +CSS variables autocompletion and go-to-definition - `css-variables-language-server` can be installed via `npm`: +`css-variables-language-server` can be installed via `npm`: - ```sh - npm i -g css-variables-language-server - ``` -@type vim.lsp.Config +```sh +npm i -g css-variables-language-server +``` Snippet to enable the language server: ```lua @@ -2447,24 +2404,23 @@ Default config: https://github.com/hrsh7th/vscode-langservers-extracted - `css-languageserver` can be installed via `npm`: +`css-languageserver` can be installed via `npm`: - ```sh - npm i -g vscode-langservers-extracted - ``` +```sh +npm i -g vscode-langservers-extracted +``` - Neovim does not currently include built-in snippets. `vscode-css-language-server` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. +Neovim does not currently include built-in snippets. `vscode-css-language-server` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. - ```lua - --Enable (broadcasting) snippet capability for completion - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities.textDocument.completion.completionItem.snippetSupport = true +```lua +--Enable (broadcasting) snippet capability for completion +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true - vim.lsp.config('cssls', { - capabilities = capabilities, - }) - ``` -@type vim.lsp.Config +vim.lsp.config('cssls', { + capabilities = capabilities, +}) +``` Snippet to enable the language server: ```lua @@ -2511,13 +2467,12 @@ Default config: https://github.com/antonk52/cssmodules-language-server - Language server for autocompletion and go-to-definition functionality for CSS modules. +Language server for autocompletion and go-to-definition functionality for CSS modules. - You can install cssmodules-language-server via npm: - ```sh - npm install -g cssmodules-language-server - ``` -@type vim.lsp.Config +You can install cssmodules-language-server via npm: +```sh +npm install -g cssmodules-language-server +``` Snippet to enable the language server: ```lua @@ -2543,16 +2498,15 @@ Default config: ## cucumber_language_server https://cucumber.io - https://github.com/cucumber/common - https://www.npmjs.com/package/@cucumber/language-server +https://github.com/cucumber/common +https://www.npmjs.com/package/@cucumber/language-server - Language server for Cucumber. +Language server for Cucumber. - `cucumber-language-server` can be installed via `npm`: - ```sh - npm install -g @cucumber/language-server - ``` -@type vim.lsp.Config +`cucumber-language-server` can be installed via `npm`: +```sh +npm install -g @cucumber/language-server +``` Snippet to enable the language server: ```lua @@ -2579,8 +2533,7 @@ Default config: https://github.com/cue-lang/cue - CUE makes it easy to validate data, write schemas, and ensure configurations align with policies. -@type vim.lsp.Config +CUE makes it easy to validate data, write schemas, and ensure configurations align with policies. Snippet to enable the language server: ```lua @@ -2607,28 +2560,27 @@ Default config: https://github.com/Matsuuu/custom-elements-language-server - `custom-elements-languageserver` depends on `typescript`. Both packages can be installed via `npm`: - ```sh - npm install -g typescript custom-elements-languageserver - ``` - To configure typescript language server, add a - [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or - [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your - project. - Here's an example that disables type checking in JavaScript files. - ```json - { - "compilerOptions": { - "module": "commonjs", - "target": "es6", - "checkJs": false - }, - "exclude": [ - "node_modules" - ] - } - ``` -@type vim.lsp.Config +`custom-elements-languageserver` depends on `typescript`. Both packages can be installed via `npm`: +```sh +npm install -g typescript custom-elements-languageserver +``` +To configure typescript language server, add a +[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or +[`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your +project. +Here's an example that disables type checking in JavaScript files. +```json +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "checkJs": false + }, + "exclude": [ + "node_modules" + ] +} +``` Snippet to enable the language server: ```lua @@ -2657,14 +2609,13 @@ Default config: https://github.com/neo4j/cypher-language-support/tree/main/packages/language-server - `cypher-language-server`, language server for Cypher query language. - Part of the umbrella project cypher-language-support: https://github.com/neo4j/cypher-language-support +`cypher-language-server`, language server for Cypher query language. +Part of the umbrella project cypher-language-support: https://github.com/neo4j/cypher-language-support - `cypher-language-server` can be installed via `npm`: - ```sh - npm i -g @neo4j-cypher/language-server - ``` -@type vim.lsp.Config +`cypher-language-server` can be installed via `npm`: +```sh +npm i -g @neo4j-cypher/language-server +``` Snippet to enable the language server: ```lua @@ -2755,8 +2706,7 @@ Default config: https://github.com/dagger/cuelsp - Dagger's lsp server for cuelang. -@type vim.lsp.Config +Dagger's lsp server for cuelang. Snippet to enable the language server: ```lua @@ -2783,8 +2733,7 @@ Default config: https://github.com/dart-lang/sdk/tree/master/pkg/analysis_server/tool/lsp_spec - Language server for dart. -@type vim.lsp.Config +Language server for dart. Snippet to enable the language server: ```lua @@ -2830,8 +2779,7 @@ Default config: https://dcm.dev/ - Language server for DCM analyzer. -@type vim.lsp.Config +Language server for DCM analyzer. Snippet to enable the language server: ```lua @@ -2858,8 +2806,7 @@ Default config: https://salsa.debian.org/debian/debputy - Language Server for Debian packages. -@type vim.lsp.Config +Language Server for Debian packages. Snippet to enable the language server: ```lua @@ -2985,8 +2932,7 @@ Default config: https://github.com/iamcco/diagnostic-languageserver - Diagnostic language server integrate with linters. -@type vim.lsp.Config +Diagnostic language server integrate with linters. Snippet to enable the language server: ```lua @@ -3013,12 +2959,11 @@ Default config: https://github.com/astoff/digestif - Digestif is a code analyzer, and a language server, for LaTeX, ConTeXt et caterva. It provides +Digestif is a code analyzer, and a language server, for LaTeX, ConTeXt et caterva. It provides - context-sensitive completion, documentation, code navigation, and related functionality to any +context-sensitive completion, documentation, code navigation, and related functionality to any - text editor that speaks the LSP protocol. -@type vim.lsp.Config +text editor that speaks the LSP protocol. Snippet to enable the language server: ```lua @@ -3110,11 +3055,10 @@ Default config: https://github.com/docker/docker-language-server - `docker-langserver-server` can be installed via `go`: - ```sh - go install github.com/docker/docker-language-server/cmd/docker-language-server@latest - ``` -@type vim.lsp.Config +`docker-langserver-server` can be installed via `go`: +```sh +go install github.com/docker/docker-language-server/cmd/docker-language-server@latest +``` Snippet to enable the language server: ```lua @@ -3130,7 +3074,7 @@ Default config: ```lua { "dockerfile", "yaml.docker-compose" } ``` -- `get_language_id`: [../lsp/docker_language_server.lua:10](../lsp/docker_language_server.lua#L10) +- `get_language_id`: [../lsp/docker_language_server.lua:11](../lsp/docker_language_server.lua#L11) - `root_markers` : ```lua { "Dockerfile", "docker-compose.yaml", "docker-compose.yml", "compose.yaml", "compose.yml", "docker-bake.json", "docker-bake.hcl", "docker-bake.override.json", "docker-bake.override.hcl" } @@ -3142,26 +3086,25 @@ Default config: https://github.com/rcjsuen/dockerfile-language-server-nodejs - `docker-langserver` can be installed via `npm`: - ```sh - npm install -g dockerfile-language-server-nodejs - ``` +`docker-langserver` can be installed via `npm`: +```sh +npm install -g dockerfile-language-server-nodejs +``` - Additional configuration can be applied in the following way: - ```lua - vim.lsp.config('dockerls', { - settings = { - docker = { - languageserver = { - formatter = { - ignoreMultilineInstructions = true, - }, - }, - } - } - }) - ``` -@type vim.lsp.Config +Additional configuration can be applied in the following way: +```lua +vim.lsp.config('dockerls', { + settings = { + docker = { + languageserver = { + formatter = { + ignoreMultilineInstructions = true, + }, + }, + } + } +}) +``` Snippet to enable the language server: ```lua @@ -3188,11 +3131,10 @@ Default config: https://github.com/Gbury/dolmen/blob/master/doc/lsp.md - `dolmenls` can be installed via `opam` - ```sh - opam install dolmen_lsp - ``` -@type vim.lsp.Config +`dolmenls` can be installed via `opam` +```sh +opam install dolmen_lsp +``` Snippet to enable the language server: ```lua @@ -3219,11 +3161,10 @@ Default config: https://github.com/nikeee/dot-language-server - `dot-language-server` can be installed via `npm`: - ```sh - npm install -g dot-language-server - ``` -@type vim.lsp.Config +`dot-language-server` can be installed via `npm`: +```sh +npm install -g dot-language-server +``` Snippet to enable the language server: ```lua @@ -3250,8 +3191,7 @@ Default config: https://github.com/dprint/dprint - Pluggable and configurable code formatting platform written in Rust. -@type vim.lsp.Config +Pluggable and configurable code formatting platform written in Rust. Snippet to enable the language server: ```lua @@ -3403,11 +3343,10 @@ Default config: https://github.com/ecsact-dev/ecsact_lsp_server - Language server for Ecsact. +Language server for Ecsact. - The default cmd assumes `ecsact_lsp_server` is in your PATH. Typically from the - Ecsact SDK: https://ecsact.dev/start -@type vim.lsp.Config +The default cmd assumes `ecsact_lsp_server` is in your PATH. Typically from the +Ecsact SDK: https://ecsact.dev/start Snippet to enable the language server: ```lua @@ -3471,30 +3410,29 @@ Default config: https://github.com/elixir-lsp/elixir-ls - `elixir-ls` can be installed by following the instructions [here](https://github.com/elixir-lsp/elixir-ls#building-and-running). +`elixir-ls` can be installed by following the instructions [here](https://github.com/elixir-lsp/elixir-ls#building-and-running). - 1. Download the zip from https://github.com/elixir-lsp/elixir-ls/releases/latest/ - 2. Unzip it and make it executable. - ```bash - unzip elixir-ls.zip -d /path/to/elixir-ls - # Unix - chmod +x /path/to/elixir-ls/language_server.sh - ``` +1. Download the zip from https://github.com/elixir-lsp/elixir-ls/releases/latest/ +2. Unzip it and make it executable. + ```bash + unzip elixir-ls.zip -d /path/to/elixir-ls + # Unix + chmod +x /path/to/elixir-ls/language_server.sh + ``` - **By default, elixir-ls doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of your unzipped elixir-ls. +**By default, elixir-ls doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of your unzipped elixir-ls. - ```lua - vim.lsp.config('elixirls', { - -- Unix - cmd = { "/path/to/elixir-ls/language_server.sh" }; - -- Windows - cmd = { "/path/to/elixir-ls/language_server.bat" }; - ... - }) - ``` +```lua +vim.lsp.config('elixirls', { + -- Unix + cmd = { "/path/to/elixir-ls/language_server.sh" }; + -- Windows + cmd = { "/path/to/elixir-ls/language_server.bat" }; + ... +}) +``` - 'root_dir' is chosen like this: if two or more directories containing `mix.exs` were found when searching directories upward, the second one (higher up) is chosen, with the assumption that it is the root of an umbrella app. Otherwise the directory containing the single mix.exs that was found is chosen. -@type vim.lsp.Config +'root_dir' is chosen like this: if two or more directories containing `mix.exs` were found when searching directories upward, the second one (higher up) is chosen, with the assumption that it is the root of an umbrella app. Otherwise the directory containing the single mix.exs that was found is chosen. Snippet to enable the language server: ```lua @@ -3506,7 +3444,7 @@ Default config: ```lua { "elixir", "eelixir", "heex", "surface" } ``` -- `root_dir`: [../lsp/elixirls.lua:29](../lsp/elixirls.lua#L29) +- `root_dir`: [../lsp/elixirls.lua:30](../lsp/elixirls.lua#L30) --- @@ -3556,9 +3494,8 @@ Default config: https://whatsapp.github.io/erlang-language-platform - ELP integrates Erlang into modern IDEs via the language server protocol and was - inspired by rust-analyzer. -@type vim.lsp.Config +ELP integrates Erlang into modern IDEs via the language server protocol and was +inspired by rust-analyzer. Snippet to enable the language server: ```lua @@ -3585,12 +3522,11 @@ Default config: https://github.com/ember-tooling/ember-language-server - `ember-language-server` can be installed via `npm`: +`ember-language-server` can be installed via `npm`: - ```sh - npm install -g @ember-tooling/ember-language-server - ``` -@type vim.lsp.Config +```sh +npm install -g @ember-tooling/ember-language-server +``` Snippet to enable the language server: ```lua @@ -3617,11 +3553,10 @@ Default config: https://github.com/olrtg/emmet-language-server - Package can be installed via `npm`: - ```sh - npm install -g @olrtg/emmet-language-server - ``` -@type vim.lsp.Config +Package can be installed via `npm`: +```sh +npm install -g @olrtg/emmet-language-server +``` Snippet to enable the language server: ```lua @@ -3648,11 +3583,10 @@ Default config: https://github.com/aca/emmet-ls - Package can be installed via `npm`: - ```sh - npm install -g emmet-ls - ``` -@type vim.lsp.Config +Package can be installed via `npm`: +```sh +npm install -g emmet-ls +``` Snippet to enable the language server: ```lua @@ -3747,17 +3681,16 @@ Default config: https://erlang-ls.github.io - Language Server for Erlang. +Language Server for Erlang. - Clone [erlang_ls](https://github.com/erlang-ls/erlang_ls) - Compile the project with `make` and copy resulting binaries somewhere in your $PATH eg. `cp _build/*/bin/* ~/local/bin` +Clone [erlang_ls](https://github.com/erlang-ls/erlang_ls) +Compile the project with `make` and copy resulting binaries somewhere in your $PATH eg. `cp _build/*/bin/* ~/local/bin` - Installation instruction can be found [here](https://github.com/erlang-ls/erlang_ls). +Installation instruction can be found [here](https://github.com/erlang-ls/erlang_ls). - Installation requirements: - - [Erlang OTP 21+](https://github.com/erlang/otp) - - [rebar3 3.9.1+](https://github.com/erlang/rebar3) -@type vim.lsp.Config +Installation requirements: + - [Erlang OTP 21+](https://github.com/erlang/otp) + - [rebar3 3.9.1+](https://github.com/erlang/rebar3) Snippet to enable the language server: ```lua @@ -3784,47 +3717,46 @@ Default config: https://github.com/swyddfa/esbonio - Esbonio is a language server for [Sphinx](https://www.sphinx-doc.org/en/master/) documentation projects. - The language server can be installed via pip +Esbonio is a language server for [Sphinx](https://www.sphinx-doc.org/en/master/) documentation projects. +The language server can be installed via pip - ``` - pip install esbonio - ``` +``` +pip install esbonio +``` - Since Sphinx is highly extensible you will get best results if you install the language server in the same - Python environment as the one used to build your documentation. To ensure that the correct Python environment - is picked up, you can either launch `nvim` with the correct environment activated. +Since Sphinx is highly extensible you will get best results if you install the language server in the same +Python environment as the one used to build your documentation. To ensure that the correct Python environment +is picked up, you can either launch `nvim` with the correct environment activated. - ``` - source env/bin/activate - nvim - ``` +``` +source env/bin/activate +nvim +``` - Or you can modify the default `cmd` to include the full path to the Python interpreter. +Or you can modify the default `cmd` to include the full path to the Python interpreter. - ```lua - vim.lsp.config('esbonio', { - cmd = { '/path/to/virtualenv/bin/python', '-m', 'esbonio' } - }) - ``` +```lua +vim.lsp.config('esbonio', { + cmd = { '/path/to/virtualenv/bin/python', '-m', 'esbonio' } +}) +``` - Esbonio supports a number of config values passed as `init_options` on startup, for example. +Esbonio supports a number of config values passed as `init_options` on startup, for example. - ```lua - vim.lsp.config('esbonio', { - init_options = { - server = { - logLevel = "debug" - }, - sphinx = { - confDir = "/path/to/docs", - srcDir = "${confDir}/../docs-src" - } - }) - ``` +```lua +vim.lsp.config('esbonio', { + init_options = { + server = { + logLevel = "debug" + }, + sphinx = { + confDir = "/path/to/docs", + srcDir = "${confDir}/../docs-src" + } +}) +``` - A full list and explanation of the available options can be found [here](https://docs.esbon.io/en/esbonio-language-server-v0.16.4/lsp/getting-started.html?editor=neovim-lspconfig#configuration) -@type vim.lsp.Config +A full list and explanation of the available options can be found [here](https://docs.esbon.io/en/esbonio-language-server-v0.16.4/lsp/getting-started.html?editor=neovim-lspconfig#configuration) Snippet to enable the language server: ```lua @@ -3957,8 +3889,7 @@ Default config: https://github.com/FacilityApi/FacilityLanguageServer - Facility language server protocol (LSP) support. -@type vim.lsp.Config +Facility language server protocol (LSP) support. Snippet to enable the language server: ```lua @@ -3985,8 +3916,7 @@ Default config: https://github.com/rydesun/fennel-language-server - Fennel language server protocol (LSP) support. -@type vim.lsp.Config +Fennel language server protocol (LSP) support. Snippet to enable the language server: ```lua @@ -4054,13 +3984,12 @@ Default config: https://github.com/ndonfris/fish-lsp - A Language Server Protocol (LSP) tailored for the fish shell. - This project aims to enhance the coding experience for fish, - by introducing a suite of intelligent features like auto-completion, - scope aware symbol analysis, per-token hover generation, and many others. +A Language Server Protocol (LSP) tailored for the fish shell. +This project aims to enhance the coding experience for fish, +by introducing a suite of intelligent features like auto-completion, +scope aware symbol analysis, per-token hover generation, and many others. - [homepage](https://www.fish-lsp.dev/) -@type vim.lsp.Config +[homepage](https://www.fish-lsp.dev/) Snippet to enable the language server: ```lua @@ -4086,17 +4015,16 @@ Default config: ## flow https://flow.org/ - https://github.com/facebook/flow +https://github.com/facebook/flow - See below for how to setup Flow itself. - https://flow.org/en/docs/install/ +See below for how to setup Flow itself. +https://flow.org/en/docs/install/ - See below for lsp command options. +See below for lsp command options. - ```sh - npx flow lsp --help - ``` -@type vim.lsp.Config +```sh +npx flow lsp --help +``` Snippet to enable the language server: ```lua @@ -4122,11 +4050,10 @@ Default config: ## flux_lsp https://github.com/influxdata/flux-lsp - `flux-lsp` can be installed via `cargo`: - ```sh - cargo install --git https://github.com/influxdata/flux-lsp - ``` -@type vim.lsp.Config +`flux-lsp` can be installed via `cargo`: +```sh +cargo install --git https://github.com/influxdata/flux-lsp +``` Snippet to enable the language server: ```lua @@ -4180,16 +4107,15 @@ Default config: https://fortls.fortran-lang.org/index.html - fortls is a Fortran Language Server, the server can be installed via pip +fortls is a Fortran Language Server, the server can be installed via pip - ```sh - pip install fortls - ``` +```sh +pip install fortls +``` - Settings to the server can be passed either through the `cmd` option or through - a local configuration file e.g. `.fortls`. For more information - see the `fortls` [documentation](https://fortls.fortran-lang.org/options.html). -@type vim.lsp.Config +Settings to the server can be passed either through the `cmd` option or through +a local configuration file e.g. `.fortls`. For more information +see the `fortls` [documentation](https://fortls.fortran-lang.org/options.html). Snippet to enable the language server: ```lua @@ -4328,8 +4254,7 @@ Default config: https://github.com/FStarLang/FStar - LSP support is included in FStar. Make sure `fstar.exe` is in your PATH. -@type vim.lsp.Config +LSP support is included in FStar. Make sure `fstar.exe` is in your PATH. Snippet to enable the language server: ```lua @@ -4356,13 +4281,12 @@ Default config: https://github.com/diku-dk/futhark - Futhark Language Server +Futhark Language Server - This language server comes with the futhark compiler and is run with the command - ``` - futhark lsp - ``` -@type vim.lsp.Config +This language server comes with the futhark compiler and is run with the command +``` +futhark lsp +``` Snippet to enable the language server: ```lua @@ -4413,8 +4337,7 @@ Default config: https://github.com/godofavacyn/gdshader-lsp - A language server for the Godot Shading language. -@type vim.lsp.Config +A language server for the Godot Shading language. Snippet to enable the language server: ```lua @@ -4441,19 +4364,18 @@ Default config: https://github.com/lttb/gh-actions-language-server - Language server for GitHub Actions. +Language server for GitHub Actions. - The projects [forgejo](https://forgejo.org/) and [gitea](https://about.gitea.com/) - design their actions to be as compatible to github as possible - with only [a few differences](https://docs.gitea.com/usage/actions/comparison#unsupported-workflows-syntax) between the systems. - The `gh_actions_ls` is therefore enabled for those `yaml` files as well. +The projects [forgejo](https://forgejo.org/) and [gitea](https://about.gitea.com/) +design their actions to be as compatible to github as possible +with only [a few differences](https://docs.gitea.com/usage/actions/comparison#unsupported-workflows-syntax) between the systems. +The `gh_actions_ls` is therefore enabled for those `yaml` files as well. - The `gh-actions-language-server` can be installed via `npm`: +The `gh-actions-language-server` can be installed via `npm`: - ```sh - npm install -g gh-actions-language-server - ``` -@type vim.lsp.Config +```sh +npm install -g gh-actions-language-server +``` Snippet to enable the language server: ```lua @@ -4483,7 +4405,7 @@ Default config: ```lua {} ``` -- `root_dir`: [../lsp/gh_actions_ls.lua:17](../lsp/gh_actions_ls.lua#L17) +- `root_dir`: [../lsp/gh_actions_ls.lua:18](../lsp/gh_actions_ls.lua#L18) --- @@ -4491,9 +4413,8 @@ Default config: https://github.com/digital-asset/ghcide - A library for building Haskell IDE tooling. - "ghcide" isn't for end users now. Use "haskell-language-server" instead of "ghcide". -@type vim.lsp.Config +A library for building Haskell IDE tooling. +"ghcide" isn't for end users now. Use "haskell-language-server" instead of "ghcide". Snippet to enable the language server: ```lua @@ -4520,11 +4441,10 @@ Default config: https://github.com/ghdl/ghdl-language-server - A language server for VHDL, using ghdl as its backend. +A language server for VHDL, using ghdl as its backend. - `ghdl-ls` is part of pyghdl, for installation instructions see - [the upstream README](https://github.com/ghdl/ghdl/tree/master/pyGHDL/lsp). -@type vim.lsp.Config +`ghdl-ls` is part of pyghdl, for installation instructions see +[the upstream README](https://github.com/ghdl/ghdl/tree/master/pyGHDL/lsp). Snippet to enable the language server: ```lua @@ -4556,7 +4476,6 @@ Default config: Install `ginko_ls` from https://github.com/Schottkyc137/ginko and add it to path `ginko_ls` doesn't require any configuration. -@type vim.lsp.Config Snippet to enable the language server: ```lua @@ -4621,25 +4540,24 @@ Default config: https://github.com/nolanderc/glasgow - Provides language features for WGSL (WebGPU Shading Language): - - Completions: - - Local functions/variables/types. - - Fields and swizzles. - - Builtin types and functions (`dot`, `reflect`, `textureSample`, `vec3`, `mat4x2`, etc.) - - Hover Documentation: - - Function signatures. - - Variable types. - - Includes builtin types and functions. Text is taken from the WGSL specification. - - Goto Definition - - Find all References - - Rename - - Formatter +Provides language features for WGSL (WebGPU Shading Language): +- Completions: + - Local functions/variables/types. + - Fields and swizzles. + - Builtin types and functions (`dot`, `reflect`, `textureSample`, `vec3`, `mat4x2`, etc.) +- Hover Documentation: + - Function signatures. + - Variable types. + - Includes builtin types and functions. Text is taken from the WGSL specification. +- Goto Definition +- Find all References +- Rename +- Formatter - `glasgow` can be installed via `cargo`: - ```sh - cargo install glasgow - ``` -@type vim.lsp.Config +`glasgow` can be installed via `cargo`: +```sh +cargo install glasgow +``` Snippet to enable the language server: ```lua @@ -4670,10 +4588,9 @@ Default config: https://github.com/gleam-lang/gleam - A language server for Gleam Programming Language. +A language server for Gleam Programming Language. - It comes with the Gleam compiler, for installation see: [Installing Gleam](https://gleam.run/getting-started/installing/) -@type vim.lsp.Config +It comes with the Gleam compiler, for installation see: [Installing Gleam](https://gleam.run/getting-started/installing/) Snippet to enable the language server: ```lua @@ -4751,8 +4668,7 @@ Default config: https://github.com/nolanderc/glsl_analyzer - Language server for GLSL -@type vim.lsp.Config +Language server for GLSL Snippet to enable the language server: ```lua @@ -4783,11 +4699,10 @@ Default config: https://github.com/svenstaro/glsl-language-server - Language server implementation for GLSL +Language server implementation for GLSL - `glslls` can be compiled and installed manually, or, if your distribution has access to the AUR, - via the `glsl-language-server` AUR package -@type vim.lsp.Config +`glslls` can be compiled and installed manually, or, if your distribution has access to the AUR, +via the `glsl-language-server` AUR package Snippet to enable the language server: ```lua @@ -4825,17 +4740,16 @@ Default config: https://github.com/microsoft/gnls - Microsoft's language server for GN build files. +Microsoft's language server for GN build files. - Assuming there is a `gnls` script somewhere in your `$PATH`, containing - for example: +Assuming there is a `gnls` script somewhere in your `$PATH`, containing +for example: - ```shell - GNLS_SRC_DIR=</path/to/gnls> +```shell +GNLS_SRC_DIR=</path/to/gnls> - exec node ${GNLS_SRC_DIR}/build/server.js $@ - ``` -@type vim.lsp.Config +exec node ${GNLS_SRC_DIR}/build/server.js $@ +``` Snippet to enable the language server: ```lua @@ -4862,17 +4776,16 @@ Default config: Combination of both lint server and client - https://github.com/nametake/golangci-lint-langserver - https://github.com/golangci/golangci-lint +https://github.com/nametake/golangci-lint-langserver +https://github.com/golangci/golangci-lint - Installation of binaries needed is done via +Installation of binaries needed is done via - ``` - go install github.com/nametake/golangci-lint-langserver@latest - go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest - ``` -@type vim.lsp.Config +``` +go install github.com/nametake/golangci-lint-langserver@latest +go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest +``` Snippet to enable the language server: ```lua @@ -4880,7 +4793,7 @@ vim.lsp.enable('golangci_lint_ls') ``` Default config: -- `before_init`: [../lsp/golangci_lint_ls.lua:16](../lsp/golangci_lint_ls.lua#L16) +- `before_init`: [../lsp/golangci_lint_ls.lua:17](../lsp/golangci_lint_ls.lua#L17) - `cmd` : ```lua { "golangci-lint-langserver" } @@ -4967,14 +4880,13 @@ Default config: https://github.com/znck/grammarly - `grammarly-languageserver` can be installed via `npm`: +`grammarly-languageserver` can be installed via `npm`: - ```sh - npm i -g grammarly-languageserver - ``` +```sh +npm i -g grammarly-languageserver +``` - WARNING: Since this language server uses Grammarly's API, any document you open with it running is shared with them. Please evaluate their [privacy policy](https://www.grammarly.com/privacy-policy) before using this. -@type vim.lsp.Config +WARNING: Since this language server uses Grammarly's API, any document you open with it running is shared with them. Please evaluate their [privacy policy](https://www.grammarly.com/privacy-policy) before using this. Snippet to enable the language server: ```lua @@ -5043,22 +4955,21 @@ Default config: https://github.com/prominic/groovy-language-server.git - Requirements: - - Linux/macOS (for now) - - Java 11+ +Requirements: + - Linux/macOS (for now) + - Java 11+ - `groovyls` can be installed by following the instructions [here](https://github.com/prominic/groovy-language-server.git#build). +`groovyls` can be installed by following the instructions [here](https://github.com/prominic/groovy-language-server.git#build). - If you have installed groovy language server, you can set the `cmd` custom path as follow: +If you have installed groovy language server, you can set the `cmd` custom path as follow: - ```lua - vim.lsp.config('groovyls', { - -- Unix - cmd = { "java", "-jar", "path/to/groovyls/groovy-language-server-all.jar" }, - ... - }) - ``` -@type vim.lsp.Config +```lua +vim.lsp.config('groovyls', { + -- Unix + cmd = { "java", "-jar", "path/to/groovyls/groovy-language-server-all.jar" }, + ... +}) +``` Snippet to enable the language server: ```lua @@ -5085,15 +4996,14 @@ Default config: https://codeberg.org/rgherdt/scheme-lsp-server - The recommended way is to install guile-lsp-server is using Guix. Unfortunately it is still not available at the official Guix channels, but you can use the provided channel guix.scm in the repo: - ```sh - guix package -f guix.scm - ``` +The recommended way is to install guile-lsp-server is using Guix. Unfortunately it is still not available at the official Guix channels, but you can use the provided channel guix.scm in the repo: +```sh +guix package -f guix.scm +``` - Checkout the repo for more info. +Checkout the repo for more info. - Note: This LSP will start on `scheme.guile` filetype. You can set this file type using `:help modeline` or adding https://gitlab.com/HiPhish/guile.vim to your plugins to automatically set it. -@type vim.lsp.Config +Note: This LSP will start on `scheme.guile` filetype. You can set this file type using `:help modeline` or adding https://gitlab.com/HiPhish/guile.vim to your plugins to automatically set it. Snippet to enable the language server: ```lua @@ -5120,21 +5030,20 @@ Default config: https://github.com/automattic/harper - The language server for Harper, the slim, clean language checker for developers. +The language server for Harper, the slim, clean language checker for developers. - See our [documentation](https://writewithharper.com/docs/integrations/neovim) for more information on settings. +See our [documentation](https://writewithharper.com/docs/integrations/neovim) for more information on settings. - In short, they should look something like this: - ```lua - vim.lsp.config('harper_ls', { - settings = { - ["harper-ls"] = { - userDictPath = "~/dict.txt" - } - }, - }) - ``` -@type vim.lsp.Config +In short, they should look something like this: +```lua +vim.lsp.config('harper_ls', { + settings = { + ["harper-ls"] = { + userDictPath = "~/dict.txt" + } + }, +}) +``` Snippet to enable the language server: ```lua @@ -5160,9 +5069,8 @@ Default config: ## hdl_checker https://github.com/suoto/hdl_checker - Language server for hdl-checker. - Install using: `pip install hdl-checker --upgrade` -@type vim.lsp.Config +Language server for hdl-checker. +Install using: `pip install hdl-checker --upgrade` Snippet to enable the language server: ```lua @@ -5189,14 +5097,13 @@ Default config: https://github.com/mrjosh/helm-ls - Helm Language server. (This LSP is in early development) +Helm Language server. (This LSP is in early development) - `helm Language server` can be installed by following the instructions [here](https://github.com/mrjosh/helm-ls). +`helm Language server` can be installed by following the instructions [here](https://github.com/mrjosh/helm-ls). - The default `cmd` assumes that the `helm_ls` binary can be found in `$PATH`. +The default `cmd` assumes that the `helm_ls` binary can be found in `$PATH`. - If need Helm file highlight use [vim-helm](https://github.com/towolf/vim-helm) plugin. -@type vim.lsp.Config +If need Helm file highlight use [vim-helm](https://github.com/towolf/vim-helm) plugin. Snippet to enable the language server: ```lua @@ -5232,26 +5139,25 @@ Default config: ## herb_ls https://www.npmjs.com/package/@herb-tools/language-server - https://github.com/marcoroth/herb +https://github.com/marcoroth/herb - HTML+ERB (HTML + Embedded Ruby) - Powerful and seamless HTML-aware ERB parsing and tooling. +HTML+ERB (HTML + Embedded Ruby) +Powerful and seamless HTML-aware ERB parsing and tooling. - Herb is designed from the ground up to deeply understand `.html.erb` files, - preserving both HTML and embedded Ruby structure without losing any details. +Herb is designed from the ground up to deeply understand `.html.erb` files, +preserving both HTML and embedded Ruby structure without losing any details. - `herb-language-server` can be installed via `npm`: +`herb-language-server` can be installed via `npm`: - ```sh - npm install -g @herb-tools/language-server - ``` +```sh +npm install -g @herb-tools/language-server +``` - or via `yarn`: +or via `yarn`: - ```sh - yarn global add @herb-tools/language-server - ``` -@type vim.lsp.Config +```sh +yarn global add @herb-tools/language-server +``` Snippet to enable the language server: ```lua @@ -5277,11 +5183,10 @@ Default config: ## hhvm Language server for programs written in Hack - https://hhvm.com/ - https://github.com/facebook/hhvm - See below for how to setup HHVM & typechecker: - https://docs.hhvm.com/hhvm/getting-started/getting-started -@type vim.lsp.Config +https://hhvm.com/ +https://github.com/facebook/hhvm +See below for how to setup HHVM & typechecker: +https://docs.hhvm.com/hhvm/getting-started/getting-started Snippet to enable the language server: ```lua @@ -5308,21 +5213,20 @@ Default config: https://github.com/haskell/haskell-ide-engine - the following init_options are supported (see https://github.com/haskell/haskell-ide-engine#configuration): - ```lua - init_options = { - languageServerHaskell = { - hlintOn = bool; - maxNumberOfProblems = number; - diagnosticsDebounceDuration = number; - liquidOn = bool (default false); - completionSnippetsOn = bool (default true); - formatOnImportOn = bool (default true); - formattingProvider = string (default "brittany", alternate "floskell"); - } - } - ``` -@type vim.lsp.Config +the following init_options are supported (see https://github.com/haskell/haskell-ide-engine#configuration): +```lua +init_options = { + languageServerHaskell = { + hlintOn = bool; + maxNumberOfProblems = number; + diagnosticsDebounceDuration = number; + liquidOn = bool (default false); + completionSnippetsOn = bool (default true); + formatOnImportOn = bool (default true); + formattingProvider = string (default "brittany", alternate "floskell"); + } +} +``` Snippet to enable the language server: ```lua @@ -5349,8 +5253,7 @@ Default config: `hlasm_language_server` is a language server for the High Level Assembler language used on IBM SystemZ mainframes. - To learn how to configure the HLASM language server, see the [HLASM Language Support documentation](https://github.com/eclipse-che4z/che-che4z-lsp-for-hlasm). -@type vim.lsp.Config +To learn how to configure the HLASM language server, see the [HLASM Language Support documentation](https://github.com/eclipse-che4z/che-che4z-lsp-for-hlasm). Snippet to enable the language server: ```lua @@ -5418,13 +5321,12 @@ Default config: https://github.com/urbit/hoon-language-server - A language server for Hoon. +A language server for Hoon. - The language server can be installed via `npm install -g @hoon-language-server` +The language server can be installed via `npm install -g @hoon-language-server` - Start a fake ~zod with `urbit -F zod`. - Start the language server at the Urbit Dojo prompt with: `|start %language-server` -@type vim.lsp.Config +Start a fake ~zod with `urbit -F zod`. +Start the language server at the Urbit Dojo prompt with: `|start %language-server` Snippet to enable the language server: ```lua @@ -5451,26 +5353,25 @@ Default config: https://github.com/hrsh7th/vscode-langservers-extracted - `vscode-html-language-server` can be installed via `npm`: - ```sh - npm i -g vscode-langservers-extracted - ``` +`vscode-html-language-server` can be installed via `npm`: +```sh +npm i -g vscode-langservers-extracted +``` - Neovim does not currently include built-in snippets. `vscode-html-language-server` only provides completions when snippet support is enabled. - To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. +Neovim does not currently include built-in snippets. `vscode-html-language-server` only provides completions when snippet support is enabled. +To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. - The code-formatting feature of the lsp can be controlled with the `provideFormatter` option. +The code-formatting feature of the lsp can be controlled with the `provideFormatter` option. - ```lua - --Enable (broadcasting) snippet capability for completion - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities.textDocument.completion.completionItem.snippetSupport = true +```lua +--Enable (broadcasting) snippet capability for completion +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true - vim.lsp.config('html', { - capabilities = capabilities, - }) - ``` -@type vim.lsp.Config +vim.lsp.config('html', { + capabilities = capabilities, +}) +``` Snippet to enable the language server: ```lua @@ -5512,13 +5413,12 @@ Default config: https://github.com/ThePrimeagen/htmx-lsp - `htmx-lsp` can be installed via `cargo`: - ```sh - cargo install htmx-lsp - ``` +`htmx-lsp` can be installed via `cargo`: +```sh +cargo install htmx-lsp +``` - Lsp is still very much work in progress and experimental. Use at your own risk. -@type vim.lsp.Config +Lsp is still very much work in progress and experimental. Use at your own risk. Snippet to enable the language server: ```lua @@ -5545,8 +5445,7 @@ Default config: https://github.com/Retsediv/hydra-lsp - LSP for Hydra Python package config files. -@type vim.lsp.Config +LSP for Hydra Python package config files. Snippet to enable the language server: ```lua @@ -5573,11 +5472,10 @@ Default config: https://github.com/hyprland-community/hyprls - `hyprls` can be installed via `go`: - ```sh - go install github.com/hyprland-community/hyprls/cmd/hyprls@latest - ``` -@type vim.lsp.Config +`hyprls` can be installed via `go`: +```sh +go install github.com/hyprland-community/hyprls/cmd/hyprls@latest +``` Snippet to enable the language server: ```lua @@ -5701,8 +5599,7 @@ Default config: https://github.com/CFiggers/janet-lsp - A Language Server Protocol implementation for Janet. -@type vim.lsp.Config +A Language Server Protocol implementation for Janet. Snippet to enable the language server: ```lua @@ -5729,10 +5626,9 @@ Default config: https://github.com/georgewfraser/java-language-server - Java language server +Java language server - Point `cmd` to `lang_server_linux.sh` or the equivalent script for macOS/Windows provided by java-language-server -@type vim.lsp.Config +Point `cmd` to `lang_server_linux.sh` or the equivalent script for macOS/Windows provided by java-language-server Snippet to enable the language server: ```lua @@ -5830,8 +5726,7 @@ Default config: https://github.com/pappasam/jedi-language-server - `jedi-language-server`, a language server for Python, built on top of jedi -@type vim.lsp.Config +`jedi-language-server`, a language server for Python, built on top of jedi Snippet to enable the language server: ```lua @@ -5858,18 +5753,17 @@ Default config: jinja-lsp enhances minijinja development experience by providing Helix/Nvim users with advanced features such as autocomplete, syntax highlighting, hover, goto definition, code actions and linting. - The file types are not detected automatically, you can register them manually (see below) or override the filetypes: +The file types are not detected automatically, you can register them manually (see below) or override the filetypes: - ```lua - vim.filetype.add { - extension = { - jinja = 'jinja', - jinja2 = 'jinja', - j2 = 'jinja', - }, - } - ``` -@type vim.lsp.Config +```lua +vim.filetype.add { + extension = { + jinja = 'jinja', + jinja2 = 'jinja', + j2 = 'jinja', + }, +} +``` Snippet to enable the language server: ```lua @@ -5899,21 +5793,20 @@ Default config: ## jqls https://github.com/wader/jq-lsp - Language server for jq, written using Go. - You can install the server easily using go install: - ```sh - # install directly - go install github.com/wader/jq-lsp@master - # copy binary to $PATH - cp $(go env GOPATH)/bin/jq-lsp /usr/local/bin +Language server for jq, written using Go. +You can install the server easily using go install: +```sh +# install directly +go install github.com/wader/jq-lsp@master +# copy binary to $PATH +cp $(go env GOPATH)/bin/jq-lsp /usr/local/bin - ``` - Note: To activate properly nvim needs to know the jq filetype. - You can add it via: - ```lua - vim.cmd([[au BufRead,BufNewFile *.jq setfiletype jq]]) - ``` -@type vim.lsp.Config +``` +Note: To activate properly nvim needs to know the jq filetype. +You can add it via: +```lua +vim.cmd([[au BufRead,BufNewFile *.jq setfiletype jq]]) +``` Snippet to enable the language server: ```lua @@ -5940,25 +5833,24 @@ Default config: https://github.com/hrsh7th/vscode-langservers-extracted - vscode-json-language-server, a language server for JSON and JSON schema +vscode-json-language-server, a language server for JSON and JSON schema - `vscode-json-language-server` can be installed via `npm`: - ```sh - npm i -g vscode-langservers-extracted - ``` +`vscode-json-language-server` can be installed via `npm`: +```sh +npm i -g vscode-langservers-extracted +``` - `vscode-json-language-server` only provides completions when snippet support is enabled. If you use Neovim older than v0.10 you need to enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. +`vscode-json-language-server` only provides completions when snippet support is enabled. If you use Neovim older than v0.10 you need to enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. - ```lua - --Enable (broadcasting) snippet capability for completion - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities.textDocument.completion.completionItem.snippetSupport = true +```lua +--Enable (broadcasting) snippet capability for completion +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true - vim.lsp.config('jsonls', { - capabilities = capabilities, - }) - ``` -@type vim.lsp.Config +vim.lsp.config('jsonls', { + capabilities = capabilities, +}) +``` Snippet to enable the language server: ```lua @@ -5991,13 +5883,12 @@ Default config: https://github.com/grafana/jsonnet-language-server - A Language Server Protocol (LSP) server for Jsonnet. +A Language Server Protocol (LSP) server for Jsonnet. - The language server can be installed with `go`: - ```sh - go install github.com/grafana/jsonnet-language-server@latest - ``` -@type vim.lsp.Config +The language server can be installed with `go`: +```sh +go install github.com/grafana/jsonnet-language-server@latest +``` Snippet to enable the language server: ```lua @@ -6071,8 +5962,7 @@ Default config: https://github.com/terror/just-lsp - `just-lsp` is an LSP for just built on top of the tree-sitter-just parser. -@type vim.lsp.Config +`just-lsp` is an LSP for just built on top of the tree-sitter-just parser. Snippet to enable the language server: ```lua @@ -6099,9 +5989,7 @@ Default config: https://github.com/kcl-lang/kcl.nvim - Language server for the KCL configuration and policy language. - -@type vim.lsp.Config +Language server for the KCL configuration and policy language. Snippet to enable the language server: ```lua @@ -6127,8 +6015,7 @@ Default config: ## koka https://koka-lang.github.io/koka/doc/index.html - Koka is a functional programming language with effect types and handlers. -@type vim.lsp.Config +Koka is a functional programming language with effect types and handlers. Snippet to enable the language server: ```lua @@ -6225,8 +6112,7 @@ Default config: https://github.com/mistweaverco/kulala-ls - A minimal language server for HTTP syntax. -@type vim.lsp.Config +A minimal language server for HTTP syntax. Snippet to enable the language server: ```lua @@ -6320,13 +6206,12 @@ Default config: https://github.com/0x2a-42/lelwel - Language server for lelwel grammars. +Language server for lelwel grammars. - You can install `lelwel-ls` via cargo: - ```sh - cargo install --features="lsp" lelwel - ``` -@type vim.lsp.Config +You can install `lelwel-ls` via cargo: +```sh +cargo install --features="lsp" lelwel +``` Snippet to enable the language server: ```lua @@ -6353,10 +6238,9 @@ Default config: https://github.com/eclipse/lemminx - The easiest way to install the server is to get a binary from https://github.com/redhat-developer/vscode-xml/releases and place it on your PATH. +The easiest way to install the server is to get a binary from https://github.com/redhat-developer/vscode-xml/releases and place it on your PATH. - NOTE to macOS users: Binaries from unidentified developers are blocked by default. If you trust the downloaded binary, run it once, cancel the prompt, then remove the binary from Gatekeeper quarantine with `xattr -d com.apple.quarantine lemminx`. It should now run without being blocked. -@type vim.lsp.Config +NOTE to macOS users: Binaries from unidentified developers are blocked by default. If you trust the downloaded binary, run it once, cancel the prompt, then remove the binary from Gatekeeper quarantine with `xattr -d com.apple.quarantine lemminx`. It should now run without being blocked. Snippet to enable the language server: ```lua @@ -6383,13 +6267,12 @@ Default config: https://github.com/lexical-lsp/lexical - Lexical is a next-generation language server for the Elixir programming language. +Lexical is a next-generation language server for the Elixir programming language. - Follow the [Detailed Installation Instructions](https://github.com/lexical-lsp/lexical/blob/main/pages/installation.md) +Follow the [Detailed Installation Instructions](https://github.com/lexical-lsp/lexical/blob/main/pages/installation.md) - **By default, `lexical` doesn't have a `cmd` set.** - This is because nvim-lspconfig does not make assumptions about your path. -@type vim.lsp.Config +**By default, `lexical` doesn't have a `cmd` set.** +This is because nvim-lspconfig does not make assumptions about your path. Snippet to enable the language server: ```lua @@ -6412,14 +6295,13 @@ Default config: https://github.com/SilasMarvin/lsp-ai - LSP-AI is an open source language server that serves as a backend for AI-powered functionality in your favorite code - editors. It offers features like in-editor chatting with LLMs and code completions. +LSP-AI is an open source language server that serves as a backend for AI-powered functionality in your favorite code +editors. It offers features like in-editor chatting with LLMs and code completions. - You will need to provide configuration for the inference backends and models you want to use, as well as configure - completion/code actions. See the [wiki docs](https://github.com/SilasMarvin/lsp-ai/wiki/Configuration) and - [examples](https://github.com/SilasMarvin/lsp-ai/blob/main/examples/nvim) for more information. -@type vim.lsp.Config +You will need to provide configuration for the inference backends and models you want to use, as well as configure +completion/code actions. See the [wiki docs](https://github.com/SilasMarvin/lsp-ai/wiki/Configuration) and +[examples](https://github.com/SilasMarvin/lsp-ai/blob/main/examples/nvim) for more information. Snippet to enable the language server: ```lua @@ -6559,72 +6441,70 @@ Default config: https://github.com/luals/lua-language-server - Lua language server. +Lua language server. - `lua-language-server` can be installed by following the instructions [here](https://luals.github.io/#neovim-install). +`lua-language-server` can be installed by following the instructions [here](https://luals.github.io/#neovim-install). - The default `cmd` assumes that the `lua-language-server` binary can be found in `$PATH`. +The default `cmd` assumes that the `lua-language-server` binary can be found in `$PATH`. - If you primarily use `lua-language-server` for Neovim, and want to provide completions, - analysis, and location handling for plugins on runtime path, you can use the following - settings. +If you primarily use `lua-language-server` for Neovim, and want to provide completions, +analysis, and location handling for plugins on runtime path, you can use the following +settings. - ```lua - vim.lsp.config('lua_ls', { - on_init = function(client) - if client.workspace_folders then - local path = client.workspace_folders[1].name - if - path ~= vim.fn.stdpath('config') - and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc')) - then - return - end - end - - client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, { - runtime = { - -- Tell the language server which version of Lua you're using (most - -- likely LuaJIT in the case of Neovim) - version = 'LuaJIT', - -- Tell the language server how to find Lua modules same way as Neovim - -- (see `:h lua-module-load`) - path = { - 'lua/?.lua', - 'lua/?/init.lua', - }, - }, - -- Make the server aware of Neovim runtime files - workspace = { - checkThirdParty = false, - library = { - vim.env.VIMRUNTIME - -- Depending on the usage, you might want to add additional paths - -- here. - -- '${3rd}/luv/library' - -- '${3rd}/busted/library' - } - -- Or pull in all of 'runtimepath'. - -- NOTE: this is a lot slower and will cause issues when working on - -- your own configuration. - -- See https://github.com/neovim/nvim-lspconfig/issues/3189 - -- library = { - -- vim.api.nvim_get_runtime_file('', true), - -- } - } - }) - end, - settings = { - Lua = {} - } - }) - ``` +```lua +vim.lsp.config('lua_ls', { + on_init = function(client) + if client.workspace_folders then + local path = client.workspace_folders[1].name + if + path ~= vim.fn.stdpath('config') + and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc')) + then + return + end + end - See `lua-language-server`'s [documentation](https://luals.github.io/wiki/settings/) for an explanation of the above fields: - * [Lua.runtime.path](https://luals.github.io/wiki/settings/#runtimepath) - * [Lua.workspace.library](https://luals.github.io/wiki/settings/#workspacelibrary) + client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, { + runtime = { + -- Tell the language server which version of Lua you're using (most + -- likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + -- Tell the language server how to find Lua modules same way as Neovim + -- (see `:h lua-module-load`) + path = { + 'lua/?.lua', + 'lua/?/init.lua', + }, + }, + -- Make the server aware of Neovim runtime files + workspace = { + checkThirdParty = false, + library = { + vim.env.VIMRUNTIME + -- Depending on the usage, you might want to add additional paths + -- here. + -- '${3rd}/luv/library' + -- '${3rd}/busted/library' + } + -- Or pull in all of 'runtimepath'. + -- NOTE: this is a lot slower and will cause issues when working on + -- your own configuration. + -- See https://github.com/neovim/nvim-lspconfig/issues/3189 + -- library = { + -- vim.api.nvim_get_runtime_file('', true), + -- } + } + }) + end, + settings = { + Lua = {} + } +}) +``` -@type vim.lsp.Config +See `lua-language-server`'s [documentation](https://luals.github.io/wiki/settings/) for an explanation of the above fields: +* [Lua.runtime.path](https://luals.github.io/wiki/settings/#runtimepath) +* [Lua.workspace.library](https://luals.github.io/wiki/settings/#workspacelibrary) Snippet to enable the language server: ```lua @@ -6651,16 +6531,15 @@ Default config: https://github.com/JohnnyMorganz/luau-lsp - Language server for the [Luau](https://luau-lang.org/) language. +Language server for the [Luau](https://luau-lang.org/) language. - `luau-lsp` can be installed by downloading one of the release assets available at https://github.com/JohnnyMorganz/luau-lsp. +`luau-lsp` can be installed by downloading one of the release assets available at https://github.com/JohnnyMorganz/luau-lsp. - You might also have to set up automatic filetype detection for Luau files, for example like so: +You might also have to set up automatic filetype detection for Luau files, for example like so: - ```vim - autocmd BufRead,BufNewFile *.luau setf luau - ``` -@type vim.lsp.Config +```vim +autocmd BufRead,BufNewFile *.luau setf luau +``` Snippet to enable the language server: ```lua @@ -6687,21 +6566,20 @@ Default config: https://github.com/forcedotcom/lightning-language-server/ - Language server for Lightning Web Components. +Language server for Lightning Web Components. - For manual installation, utilize the official [NPM package](https://www.npmjs.com/package/@salesforce/lwc-language-server). - Then, configure `cmd` to run the Node script at the unpacked location: +For manual installation, utilize the official [NPM package](https://www.npmjs.com/package/@salesforce/lwc-language-server). +Then, configure `cmd` to run the Node script at the unpacked location: - ```lua - vim.lsp.config('lwc_ls', { - cmd = { - 'node', - '/path/to/node_modules/@salesforce/lwc-language-server/bin/lwc-language-server.js', - '--stdio' - } - }) - ``` -@type vim.lsp.Config +```lua +vim.lsp.config('lwc_ls', { + cmd = { + 'node', + '/path/to/node_modules/@salesforce/lwc-language-server/bin/lwc-language-server.js', + '--stdio' + } +}) +``` Snippet to enable the language server: ```lua @@ -6736,20 +6614,19 @@ Default config: https://github.com/grahambates/m68k-lsp - Language server for Motorola 68000 family assembly +Language server for Motorola 68000 family assembly - `m68k-lsp-server` can be installed via `npm`: +`m68k-lsp-server` can be installed via `npm`: - ```sh - npm install -g m68k-lsp-server - ``` +```sh +npm install -g m68k-lsp-server +``` - Ensure you are using the 68k asm syntax variant in Neovim. +Ensure you are using the 68k asm syntax variant in Neovim. - ```lua - vim.g.asmsyntax = 'asm68k' - ``` -@type vim.lsp.Config +```lua +vim.g.asmsyntax = 'asm68k' +``` Snippet to enable the language server: ```lua @@ -6809,13 +6686,12 @@ Default config: https://github.com/marko-js/language-server - Using the Language Server Protocol to improve Marko's developer experience. +Using the Language Server Protocol to improve Marko's developer experience. - Can be installed via npm: - ``` - npm i -g @marko/language-server - ``` -@type vim.lsp.Config +Can be installed via npm: +``` +npm i -g @marko/language-server +``` Snippet to enable the language server: ```lua @@ -6873,19 +6749,18 @@ Default config: https://github.com/mathworks/MATLAB-language-server - MATLAB® language server implements the Microsoft® Language Server Protocol for the MATLAB language. +MATLAB® language server implements the Microsoft® Language Server Protocol for the MATLAB language. - Make sure to set `MATLAB.installPath` to your MATLAB path, e.g.: - ```lua - settings = { - MATLAB = { - ... - installPath = '/usr/local/MATLAB/R2023a', - ... - }, - }, - ``` -@type vim.lsp.Config +Make sure to set `MATLAB.installPath` to your MATLAB path, e.g.: +```lua +settings = { + MATLAB = { + ... + installPath = '/usr/local/MATLAB/R2023a', + ... + }, +}, +``` Snippet to enable the language server: ```lua @@ -6901,7 +6776,7 @@ Default config: ```lua { "matlab" } ``` -- `root_dir`: [../lsp/matlab_ls.lua:18](../lsp/matlab_ls.lua#L18) +- `root_dir`: [../lsp/matlab_ls.lua:19](../lsp/matlab_ls.lua#L19) - `settings` : ```lua { @@ -6982,16 +6857,15 @@ Default config: https://scalameta.org/metals/ - Scala language server with rich IDE features. +Scala language server with rich IDE features. - See full instructions in the Metals documentation: +See full instructions in the Metals documentation: - https://scalameta.org/metals/docs/editors/vim#using-an-alternative-lsp-client +https://scalameta.org/metals/docs/editors/vim#using-an-alternative-lsp-client - Note: that if you're using [nvim-metals](https://github.com/scalameta/nvim-metals), that plugin fully handles the setup and installation of Metals, and you shouldn't set up Metals both with it and `lspconfig`. +Note: that if you're using [nvim-metals](https://github.com/scalameta/nvim-metals), that plugin fully handles the setup and installation of Metals, and you shouldn't set up Metals both with it and `lspconfig`. - To install Metals, make sure to have [coursier](https://get-coursier.io/docs/cli-installation) installed, and once you do you can install the latest Metals with `cs install metals`. -@type vim.lsp.Config +To install Metals, make sure to have [coursier](https://get-coursier.io/docs/cli-installation) installed, and once you do you can install the latest Metals with `cs install metals`. Snippet to enable the language server: ```lua @@ -7036,15 +6910,14 @@ Default config: https://github.com/azdavis/millet - Millet, a language server for Standard ML +Millet, a language server for Standard ML - To use with nvim: +To use with nvim: - 1. Install a Rust toolchain: https://rustup.rs - 2. Clone the repo - 3. Run `cargo build --release --bin millet-ls` - 4. Move `target/release/millet-ls` to somewhere on your $PATH as `millet` -@type vim.lsp.Config +1. Install a Rust toolchain: https://rustup.rs +2. Clone the repo +3. Run `cargo build --release --bin millet-ls` +4. Move `target/release/millet-ls` to somewhere on your $PATH as `millet` Snippet to enable the language server: ```lua @@ -7071,9 +6944,8 @@ Default config: https://www.mint-lang.com - Install Mint using the [instructions](https://www.mint-lang.com/install). - The language server is included since version 0.12.0. -@type vim.lsp.Config +Install Mint using the [instructions](https://www.mint-lang.com/install). +The language server is included since version 0.12.0. Snippet to enable the language server: ```lua @@ -7100,10 +6972,9 @@ Default config: https://mlir.llvm.org/docs/Tools/MLIRLSP/#mlir-lsp-language-server--mlir-lsp-server= - The Language Server for the LLVM MLIR language +The Language Server for the LLVM MLIR language - `mlir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project) -@type vim.lsp.Config +`mlir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project) Snippet to enable the language server: ```lua @@ -7130,10 +7001,9 @@ Default config: https://mlir.llvm.org/docs/Tools/MLIRLSP/#pdll-lsp-language-server--mlir-pdll-lsp-server - The Language Server for the LLVM PDLL language +The Language Server for the LLVM PDLL language - `mlir-pdll-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project) -@type vim.lsp.Config +`mlir-pdll-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project) Snippet to enable the language server: ```lua @@ -7160,11 +7030,10 @@ Default config: https://github.com/digama0/mm0 - Language Server for the metamath-zero theorem prover. +Language Server for the metamath-zero theorem prover. - Requires [mm0-rs](https://github.com/digama0/mm0/tree/master/mm0-rs) to be installed - and available on the `PATH`. -@type vim.lsp.Config +Requires [mm0-rs](https://github.com/digama0/mm0/tree/master/mm0-rs) to be installed +and available on the `PATH`. Snippet to enable the language server: ```lua @@ -7191,10 +7060,9 @@ Default config: https://github.com/modularml/mojo - `mojo-lsp-server` can be installed [via Modular](https://developer.modular.com/download) +`mojo-lsp-server` can be installed [via Modular](https://developer.modular.com/download) - Mojo is a new programming language that bridges the gap between research and production by combining Python syntax and ecosystem with systems programming and metaprogramming features. -@type vim.lsp.Config +Mojo is a new programming language that bridges the gap between research and production by combining Python syntax and ecosystem with systems programming and metaprogramming features. Snippet to enable the language server: ```lua @@ -7221,8 +7089,7 @@ Default config: https://github.com/dfinity/vscode-motoko - Language server for the Motoko programming language. -@type vim.lsp.Config +Language server for the Motoko programming language. Snippet to enable the language server: ```lua @@ -7255,16 +7122,15 @@ Default config: https://github.com/move-language/move/tree/main/language/move-analyzer - Language server for Move +Language server for Move - The `move-analyzer` can be installed by running: +The `move-analyzer` can be installed by running: - ``` - cargo install --git https://github.com/move-language/move move-analyzer - ``` +``` +cargo install --git https://github.com/move-language/move move-analyzer +``` - See [`move-analyzer`'s doc](https://github.com/move-language/move/blob/1b258a06e3c7d2bc9174578aac92cca3ac19de71/language/move-analyzer/editors/code/README.md#how-to-install) for details. -@type vim.lsp.Config +See [`move-analyzer`'s doc](https://github.com/move-language/move/blob/1b258a06e3c7d2bc9174578aac92cca3ac19de71/language/move-analyzer/editors/code/README.md#how-to-install) for details. Snippet to enable the language server: ```lua @@ -7346,7 +7212,6 @@ Default config: ## muon https://muon.build -@type vim.lsp.Config Snippet to enable the language server: ```lua @@ -7362,7 +7227,7 @@ Default config: ```lua { "meson" } ``` -- `root_dir`: [../lsp/muon.lua:5](../lsp/muon.lua#L5) +- `root_dir`: [../lsp/muon.lua:6](../lsp/muon.lua#L6) --- @@ -7370,12 +7235,11 @@ Default config: https://github.com/neomutt/mutt-language-server - A language server for (neo)mutt's muttrc. It can be installed via pip. +A language server for (neo)mutt's muttrc. It can be installed via pip. - ```sh - pip install mutt-language-server - ``` -@type vim.lsp.Config +```sh +pip install mutt-language-server +``` Snippet to enable the language server: ```lua @@ -7406,28 +7270,27 @@ Default config: https://github.com/codehz/nelua-lsp - nelua-lsp is an experimental nelua language server. +nelua-lsp is an experimental nelua language server. - You need [nelua.vim](https://github.com/stefanos82/nelua.vim/blob/main/ftdetect/nelua.vim) for nelua files to be recognized or add this to your config: +You need [nelua.vim](https://github.com/stefanos82/nelua.vim/blob/main/ftdetect/nelua.vim) for nelua files to be recognized or add this to your config: - in vimscript: - ```vimscript - au BufNewFile,BufRead *.nelua setf nelua - ``` +in vimscript: +```vimscript +au BufNewFile,BufRead *.nelua setf nelua +``` - in lua: - ```lua - vim.api.nvim_create_autocmd({ "BufNewFile", "BufRead" }, { pattern = { "*.nelua" }, command = "setf nelua"}) - ``` +in lua: +```lua +vim.api.nvim_create_autocmd({ "BufNewFile", "BufRead" }, { pattern = { "*.nelua" }, command = "setf nelua"}) +``` - **By default, nelua-lsp doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary. +**By default, nelua-lsp doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary. - ```lua - vim.lsp.config('nelua_lsp', { - cmd = { "nelua", "-L", "/path/to/nelua-lsp/", "--script", "/path/to/nelua-lsp/nelua-lsp.lua" }, - }) - ``` -@type vim.lsp.Config +```lua +vim.lsp.config('nelua_lsp', { + cmd = { "nelua", "-L", "/path/to/nelua-lsp/", "--script", "/path/to/nelua-lsp/nelua-lsp.lua" }, +}) +``` Snippet to enable the language server: ```lua @@ -7450,20 +7313,19 @@ Default config: https://github.com/Decodetalkers/neocmakelsp - CMake LSP Implementation +CMake LSP Implementation - Neovim does not currently include built-in snippets. `neocmakelsp` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. +Neovim does not currently include built-in snippets. `neocmakelsp` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. - ```lua - --Enable (broadcasting) snippet capability for completion - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities.textDocument.completion.completionItem.snippetSupport = true +```lua +--Enable (broadcasting) snippet capability for completion +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true - vim.lsp.config('neocmake', { - capabilities = capabilities, - }) - ``` -@type vim.lsp.Config +vim.lsp.config('neocmake', { + capabilities = capabilities, +}) +``` Snippet to enable the language server: ```lua @@ -7490,27 +7352,26 @@ Default config: https://github.com/nextflow-io/language-server - Requirements: - - Java 17+ +Requirements: + - Java 17+ - `nextflow_ls` can be installed by following the instructions [here](https://github.com/nextflow-io/language-server#development). +`nextflow_ls` can be installed by following the instructions [here](https://github.com/nextflow-io/language-server#development). - If you have installed nextflow language server, you can set the `cmd` custom path as follow: +If you have installed nextflow language server, you can set the `cmd` custom path as follow: - ```lua - vim.lsp.config('nextflow_ls', { - cmd = { 'java', '-jar', 'nextflow-language-server-all.jar' }, - filetypes = { 'nextflow' }, - settings = { - nextflow = { - files = { - exclude = { '.git', '.nf-test', 'work' }, - }, - }, - }, - }) - ``` -@type vim.lsp.Config +```lua +vim.lsp.config('nextflow_ls', { + cmd = { 'java', '-jar', 'nextflow-language-server-all.jar' }, + filetypes = { 'nextflow' }, + settings = { + nextflow = { + files = { + exclude = { '.git', '.nf-test', 'work' }, + }, + }, + }, +}) +``` Snippet to enable the language server: ```lua @@ -7547,8 +7408,7 @@ Default config: https://github.com/elixir-tools/next-ls - **By default, next-ls does not set its `cmd`. Please see the following [detailed instructions](https://www.elixir-tools.dev/docs/next-ls/installation/) for possible installation methods.** -@type vim.lsp.Config +**By default, next-ls does not set its `cmd`. Please see the following [detailed instructions](https://www.elixir-tools.dev/docs/next-ls/installation/) for possible installation methods.** Snippet to enable the language server: ```lua @@ -7571,12 +7431,11 @@ Default config: https://pypi.org/project/nginx-language-server/ - `nginx-language-server` can be installed via pip: +`nginx-language-server` can be installed via pip: - ```sh - pip install -U nginx-language-server - ``` -@type vim.lsp.Config +```sh +pip install -U nginx-language-server +``` Snippet to enable the language server: ```lua @@ -7603,28 +7462,27 @@ Default config: Nickel Language Server - https://github.com/tweag/nickel +https://github.com/tweag/nickel - `nls` can be installed with nix, or cargo, from the Nickel repository. - ```sh - git clone https://github.com/tweag/nickel.git - ``` +`nls` can be installed with nix, or cargo, from the Nickel repository. +```sh +git clone https://github.com/tweag/nickel.git +``` - Nix: - ```sh - cd nickel - nix-env -f . -i - ``` +Nix: +```sh +cd nickel +nix-env -f . -i +``` - cargo: - ```sh - cd nickel/lsp/nls - cargo install --path . - ``` +cargo: +```sh +cd nickel/lsp/nls +cargo install --path . +``` - In order to have lspconfig detect Nickel filetypes (a prerequisite for autostarting a server), - install the [Nickel vim plugin](https://github.com/nickel-lang/vim-nickel). -@type vim.lsp.Config +In order to have lspconfig detect Nickel filetypes (a prerequisite for autostarting a server), +install the [Nickel vim plugin](https://github.com/nickel-lang/vim-nickel). Snippet to enable the language server: ```lua @@ -7651,13 +7509,12 @@ Default config: https://github.com/oxalica/nil - A new language server for Nix Expression Language. +A new language server for Nix Expression Language. - If you are using Nix with Flakes support, run `nix profile install github:oxalica/nil` to install. - Check the repository README for more information. +If you are using Nix with Flakes support, run `nix profile install github:oxalica/nil` to install. +Check the repository README for more information. - _See an example config at https://github.com/oxalica/nil/blob/main/dev/nvim-lsp.nix._ -@type vim.lsp.Config +_See an example config at https://github.com/oxalica/nil/blob/main/dev/nvim-lsp.nix._ Snippet to enable the language server: ```lua @@ -7740,11 +7597,10 @@ Default config: https://github.com/nix-community/nixd - Nix language server, based on nix libraries. +Nix language server, based on nix libraries. - If you are using Nix with Flakes support, run `nix profile install github:nix-community/nixd` to install. - Check the repository README for more information. -@type vim.lsp.Config +If you are using Nix with Flakes support, run `nix profile install github:nix-community/nixd` to install. +Check the repository README for more information. Snippet to enable the language server: ```lua @@ -7842,8 +7698,7 @@ Default config: https://github.com/nushell/nushell - Nushell built-in language server. -@type vim.lsp.Config +Nushell built-in language server. Snippet to enable the language server: ```lua @@ -7859,7 +7714,7 @@ Default config: ```lua { "nu" } ``` -- `root_dir`: [../lsp/nushell.lua:7](../lsp/nushell.lua#L7) +- `root_dir`: [../lsp/nushell.lua:8](../lsp/nushell.lua#L8) --- @@ -7867,13 +7722,12 @@ Default config: https://github.com/nrwl/nx-console/tree/master/apps/nxls - nxls, a language server for Nx Workspaces +nxls, a language server for Nx Workspaces - `nxls` can be installed via `npm`: - ```sh - npm i -g nxls - ``` -@type vim.lsp.Config +`nxls` can be installed via `npm`: +```sh +npm i -g nxls +``` Snippet to enable the language server: ```lua @@ -8039,10 +7893,9 @@ Default config: https://github.com/Galarius/opencl-language-server - Build instructions can be found [here](https://github.com/Galarius/opencl-language-server/blob/main/_dev/build.md). +Build instructions can be found [here](https://github.com/Galarius/opencl-language-server/blob/main/_dev/build.md). - Prebuilt binaries are available for Linux, macOS and Windows [here](https://github.com/Galarius/opencl-language-server/releases). -@type vim.lsp.Config +Prebuilt binaries are available for Linux, macOS and Windows [here](https://github.com/Galarius/opencl-language-server/releases). Snippet to enable the language server: ```lua @@ -8069,23 +7922,22 @@ Default config: https://github.com/dzhu/openscad-language-server - A Language Server Protocol server for OpenSCAD +A Language Server Protocol server for OpenSCAD - You can build and install `openscad-language-server` binary with `cargo`: - ```sh - cargo install openscad-language-server - ``` +You can build and install `openscad-language-server` binary with `cargo`: +```sh +cargo install openscad-language-server +``` - Vim does not have built-in syntax for the `openscad` filetype currently. +Vim does not have built-in syntax for the `openscad` filetype currently. - This can be added via an autocmd: +This can be added via an autocmd: - ```lua - vim.cmd [[ autocmd BufRead,BufNewFile *.scad set filetype=openscad ]] - ``` +```lua +vim.cmd [[ autocmd BufRead,BufNewFile *.scad set filetype=openscad ]] +``` - or by installing a filetype plugin such as https://github.com/sirtaj/vim-openscad -@type vim.lsp.Config +or by installing a filetype plugin such as https://github.com/sirtaj/vim-openscad Snippet to enable the language server: ```lua @@ -8112,13 +7964,12 @@ Default config: https://github.com/Leathong/openscad-LSP - A Language Server Protocol server for OpenSCAD +A Language Server Protocol server for OpenSCAD - You can build and install `openscad-lsp` binary with `cargo`: - ```sh - cargo install openscad-lsp - ``` -@type vim.lsp.Config +You can build and install `openscad-lsp` binary with `cargo`: +```sh +cargo install openscad-lsp +``` Snippet to enable the language server: ```lua @@ -8175,8 +8026,7 @@ Default config: https://github.com/kadena-io/pact-lsp - The Pact language server -@type vim.lsp.Config +The Pact language server Snippet to enable the language server: ```lua @@ -8238,15 +8088,14 @@ Default config: https://git.sr.ht/~rrc/pbls - Prerequisites: Ensure protoc is on your $PATH. +Prerequisites: Ensure protoc is on your $PATH. - `pbls` can be installed via `cargo install`: - ```sh - cargo install --git https://git.sr.ht/~rrc/pbls - ``` +`pbls` can be installed via `cargo install`: +```sh +cargo install --git https://git.sr.ht/~rrc/pbls +``` - pbls is a Language Server for protobuf -@type vim.lsp.Config +pbls is a Language Server for protobuf Snippet to enable the language server: ```lua @@ -8273,10 +8122,9 @@ Default config: https://github.com/richterger/Perl-LanguageServer/tree/master/clients/vscode/perl - `Perl-LanguageServer`, a language server for Perl. +`Perl-LanguageServer`, a language server for Perl. - To use the language server, ensure that you have Perl::LanguageServer installed and perl command is on your path. -@type vim.lsp.Config +To use the language server, ensure that you have Perl::LanguageServer installed and perl command is on your path. Snippet to enable the language server: ```lua @@ -8314,24 +8162,23 @@ Default config: https://github.com/bscan/PerlNavigator - A Perl language server. It can be installed via npm: +A Perl language server. It can be installed via npm: - ```sh - npm i -g perlnavigator-server - ``` +```sh +npm i -g perlnavigator-server +``` - At minimum, you will need `perl` in your path. If you want to use a non-standard `perl` you will need to set your configuration like so: - ```lua - settings = { - perlnavigator = { - perlPath = '/some/odd/location/my-perl' - } - } - ``` +At minimum, you will need `perl` in your path. If you want to use a non-standard `perl` you will need to set your configuration like so: +```lua +settings = { + perlnavigator = { + perlPath = '/some/odd/location/my-perl' + } +} +``` - The `contributes.configuration.properties` section of `perlnavigator`'s `package.json` has all available configuration settings. All - settings have a reasonable default, but, at minimum, you may want to point `perlnavigator` at your `perltidy` and `perlcritic` configurations. -@type vim.lsp.Config +The `contributes.configuration.properties` section of `perlnavigator`'s `package.json` has all available configuration settings. All +settings have a reasonable default, but, at minimum, you may want to point `perlnavigator` at your `perltidy` and `perlcritic` configurations. Snippet to enable the language server: ```lua @@ -8357,12 +8204,11 @@ Default config: ## perlpls https://github.com/FractalBoy/perl-language-server - https://metacpan.org/pod/PLS +https://metacpan.org/pod/PLS - `PLS`, another language server for Perl. +`PLS`, another language server for Perl. - To use the language server, ensure that you have PLS installed and that it is in your path -@type vim.lsp.Config +To use the language server, ensure that you have PLS installed and that it is in your path Snippet to enable the language server: ```lua @@ -8402,8 +8248,7 @@ Default config: https://github.com/pest-parser/pest-ide-tools - Language server for pest grammars. -@type vim.lsp.Config +Language server for pest grammars. Snippet to enable the language server: ```lua @@ -8510,10 +8355,9 @@ Default config: https://github.com/thought-machine/please - High-performance extensible build system for reproducible multi-language builds. +High-performance extensible build system for reproducible multi-language builds. - The `plz` binary will automatically install the LSP for you on first run -@type vim.lsp.Config +The `plz` binary will automatically install the LSP for you on first run Snippet to enable the language server: ```lua @@ -8540,8 +8384,7 @@ Default config: `pli_language_server` is a language server for the PL/I language used on IBM SystemZ mainframes. - To learn how to configure the PL/I language server, see the [PL/I Language Support documentation](https://github.com/zowe/zowe-pli-language-support). -@type vim.lsp.Config +To learn how to configure the PL/I language server, see the [PL/I Language Support documentation](https://github.com/zowe/zowe-pli-language-support). Snippet to enable the language server: ```lua @@ -8568,8 +8411,7 @@ Default config: https://github.com/huderlem/poryscript-pls - Language server for poryscript (a high level scripting language for GBA-era Pokémon decompilation projects) -@type vim.lsp.Config +Language server for poryscript (a high level scripting language for GBA-era Pokémon decompilation projects) Snippet to enable the language server: ```lua @@ -8596,8 +8438,7 @@ Default config: https://pgtools.dev - A collection of language tools and a Language Server Protocol (LSP) implementation for Postgres, focusing on developer experience and reliable SQL tooling. -@type vim.lsp.Config +A collection of language tools and a Language Server Protocol (LSP) implementation for Postgres, focusing on developer experience and reliable SQL tooling. Snippet to enable the language server: ```lua @@ -8680,11 +8521,10 @@ Default config: Language Server for the Prisma JavaScript and TypeScript ORM - `@prisma/language-server` can be installed via npm - ```sh - npm install -g @prisma/language-server - ``` -@type vim.lsp.Config +`@prisma/language-server` can be installed via npm +```sh +npm install -g @prisma/language-server +``` Snippet to enable the language server: ```lua @@ -8719,8 +8559,7 @@ Default config: https://github.com/jamesnvc/lsp_server - Language Server Protocol server for SWI-Prolog -@type vim.lsp.Config +Language Server Protocol server for SWI-Prolog Snippet to enable the language server: ```lua @@ -8747,10 +8586,9 @@ Default config: https://github.com/kitten/prosemd-lsp - An experimental LSP for Markdown. +An experimental LSP for Markdown. - Please see the manual installation instructions: https://github.com/kitten/prosemd-lsp#manual-installation -@type vim.lsp.Config +Please see the manual installation instructions: https://github.com/kitten/prosemd-lsp#manual-installation Snippet to enable the language server: ```lua @@ -8777,13 +8615,12 @@ Default config: https://github.com/coder3101/protols - `protols` can be installed via `cargo`: - ```sh - cargo install protols - ``` +`protols` can be installed via `cargo`: +```sh +cargo install protols +``` - A Language Server for proto3 files. It uses tree-sitter and runs in single file mode. -@type vim.lsp.Config +A Language Server for proto3 files. It uses tree-sitter and runs in single file mode. Snippet to enable the language server: ```lua @@ -8810,11 +8647,10 @@ Default config: https://github.com/vimeo/psalm - Can be installed with composer. - ```sh - composer global require vimeo/psalm - ``` -@type vim.lsp.Config +Can be installed with composer. +```sh +composer global require vimeo/psalm +``` Snippet to enable the language server: ```lua @@ -8841,10 +8677,9 @@ Default config: https://github.com/opa-oz/pug-lsp - An implementation of the Language Protocol Server for [Pug.js](http://pugjs.org) +An implementation of the Language Protocol Server for [Pug.js](http://pugjs.org) - PugLSP can be installed via `go install github.com/opa-oz/pug-lsp@latest`, or manually downloaded from [releases page](https://github.com/opa-oz/pug-lsp/releases) -@type vim.lsp.Config +PugLSP can be installed via `go install github.com/opa-oz/pug-lsp@latest`, or manually downloaded from [releases page](https://github.com/opa-oz/pug-lsp/releases) Snippet to enable the language server: ```lua @@ -8871,19 +8706,18 @@ Default config: LSP server for Puppet. - Installation: +Installation: - - Clone the editor-services repository: - https://github.com/puppetlabs/puppet-editor-services +- Clone the editor-services repository: + https://github.com/puppetlabs/puppet-editor-services - - Navigate into that directory and run: `bundle install` +- Navigate into that directory and run: `bundle install` - - Install the 'puppet-lint' gem: `gem install puppet-lint` +- Install the 'puppet-lint' gem: `gem install puppet-lint` - - Add that repository to $PATH. +- Add that repository to $PATH. - - Ensure you can run `puppet-languageserver` from outside the editor-services directory. -@type vim.lsp.Config +- Ensure you can run `puppet-languageserver` from outside the editor-services directory. Snippet to enable the language server: ```lua @@ -8910,11 +8744,10 @@ Default config: https://github.com/nwolverson/purescript-language-server - The `purescript-language-server` can be added to your project and `$PATH` via +The `purescript-language-server` can be added to your project and `$PATH` via - * JavaScript package manager such as npm, pnpm, Yarn, et al. - * Nix under the `nodePackages` and `nodePackages_latest` package sets -@type vim.lsp.Config +* JavaScript package manager such as npm, pnpm, Yarn, et al. +* Nix under the `nodePackages` and `nodePackages_latest` package sets Snippet to enable the language server: ```lua @@ -8941,30 +8774,29 @@ Default config: https://github.com/python-lsp/python-lsp-server - A Python 3.6+ implementation of the Language Server Protocol. +A Python 3.6+ implementation of the Language Server Protocol. - See the [project's README](https://github.com/python-lsp/python-lsp-server) for installation instructions. +See the [project's README](https://github.com/python-lsp/python-lsp-server) for installation instructions. - Configuration options are documented [here](https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md). - In order to configure an option, it must be translated to a nested Lua table and included in the `settings` argument to the `config('pylsp', {})` function. - For example, in order to set the `pylsp.plugins.pycodestyle.ignore` option: - ```lua - vim.lsp.config('pylsp', { - settings = { - pylsp = { - plugins = { - pycodestyle = { - ignore = {'W391'}, - maxLineLength = 100 - } - } - } - } - }) - ``` +Configuration options are documented [here](https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md). +In order to configure an option, it must be translated to a nested Lua table and included in the `settings` argument to the `config('pylsp', {})` function. +For example, in order to set the `pylsp.plugins.pycodestyle.ignore` option: +```lua +vim.lsp.config('pylsp', { + settings = { + pylsp = { + plugins = { + pycodestyle = { + ignore = {'W391'}, + maxLineLength = 100 + } + } + } + } +}) +``` - Note: This is a community fork of `pyls`. -@type vim.lsp.Config +Note: This is a community fork of `pyls`. Snippet to enable the language server: ```lua @@ -8991,13 +8823,12 @@ Default config: https://github.com/mtshiba/pylyzer - `pylyzer`, a fast static code analyzer & language server for Python. +`pylyzer`, a fast static code analyzer & language server for Python. - `pylyzer` requires Erg as dependency, and finds it via `ERG_PATH` environment variable. - This config sets `ERG_PATH="~/.erg"`. Set `cmd_env` if you want to change it. - To install Erg, simply extract tarball/zip from [Erg releases](https://github.com/erg-lang/erg/releases/latest) - to the the path where you want to install it, e.g. `~/.erg`. -@type vim.lsp.Config +`pylyzer` requires Erg as dependency, and finds it via `ERG_PATH` environment variable. +This config sets `ERG_PATH="~/.erg"`. Set `cmd_env` if you want to change it. +To install Erg, simply extract tarball/zip from [Erg releases](https://github.com/erg-lang/erg/releases/latest) +to the the path where you want to install it, e.g. `~/.erg`. Snippet to enable the language server: ```lua @@ -9041,13 +8872,12 @@ Default config: https://pyre-check.org/ - `pyre` a static type checker for Python 3. +`pyre` a static type checker for Python 3. - `pyre` offers an extremely limited featureset. It currently only supports diagnostics, - which are triggered on save. +`pyre` offers an extremely limited featureset. It currently only supports diagnostics, +which are triggered on save. - Do not report issues for missing features in `pyre` to `lspconfig`. -@type vim.lsp.Config +Do not report issues for missing features in `pyre` to `lspconfig`. Snippet to enable the language server: ```lua @@ -9145,10 +8975,9 @@ Default config: https://doc.qt.io/qt-6/qtqml-tooling-qmlls.html - > QML Language Server is a tool shipped with Qt that helps you write code in your favorite (LSP-supporting) editor. +> QML Language Server is a tool shipped with Qt that helps you write code in your favorite (LSP-supporting) editor. - Source in the [QtDeclarative repository](https://code.qt.io/cgit/qt/qtdeclarative.git/) -@type vim.lsp.Config +Source in the [QtDeclarative repository](https://code.qt.io/cgit/qt/qtdeclarative.git/) Snippet to enable the language server: ```lua @@ -9175,10 +9004,9 @@ Default config: https://quick-lint-js.com/ - quick-lint-js finds bugs in JavaScript programs. +quick-lint-js finds bugs in JavaScript programs. - See installation [instructions](https://quick-lint-js.com/install/) -@type vim.lsp.Config +See installation [instructions](https://quick-lint-js.com/install/) Snippet to enable the language server: ```lua @@ -9204,15 +9032,14 @@ Default config: ## r_language_server [languageserver](https://github.com/REditorSupport/languageserver) is an - implementation of the Microsoft's Language Server Protocol for the R - language. +implementation of the Microsoft's Language Server Protocol for the R +language. - It is released on CRAN and can be easily installed by +It is released on CRAN and can be easily installed by - ```r - install.packages("languageserver") - ``` -@type vim.lsp.Config +```r +install.packages("languageserver") +``` Snippet to enable the language server: ```lua @@ -9228,7 +9055,7 @@ Default config: ```lua { "r", "rmd", "quarto" } ``` -- `root_dir`: [../lsp/r_language_server.lua:13](../lsp/r_language_server.lua#L13) +- `root_dir`: [../lsp/r_language_server.lua:14](../lsp/r_language_server.lua#L14) --- @@ -9236,12 +9063,11 @@ Default config: [https://github.com/jeapostrophe/racket-langserver](https://github.com/jeapostrophe/racket-langserver) - The Racket language server. This project seeks to use - [DrRacket](https://github.com/racket/drracket)'s public API to provide - functionality that mimics DrRacket's code tools as closely as possible. +The Racket language server. This project seeks to use +[DrRacket](https://github.com/racket/drracket)'s public API to provide +functionality that mimics DrRacket's code tools as closely as possible. - Install via `raco`: `raco pkg install racket-langserver` -@type vim.lsp.Config +Install via `raco`: `raco pkg install racket-langserver` Snippet to enable the language server: ```lua @@ -9267,25 +9093,24 @@ Default config: ## raku_navigator https://github.com/bscan/RakuNavigator - A Raku language server - **By default, raku_navigator doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. - You have to install the language server manually. - Clone the RakuNavigator repo, install based on the [instructions](https://github.com/bscan/raku_Navigator#installation-for-other-editors), - and point `cmd` to `server.js` inside the `server/out` directory: - ```lua - cmd = {'node', '<path_to_repo>/server/out/server.js', '--stdio'} - ``` - At minimum, you will need `raku` in your path. If you want to use a non-standard `raku` you will need to set your configuration like so: - ```lua - settings = { - raku_navigator = { - rakuPath = '/some/odd/location/my-raku' - } - } - ``` - The `contributes.configuration.properties` section of `raku_navigator`'s `package.json` has all available configuration settings. All - settings have a reasonable default, but, at minimum, you may want to point `raku_navigator` at your `raku_tidy` and `raku_critic` configurations. -@type vim.lsp.Config +A Raku language server +**By default, raku_navigator doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. +You have to install the language server manually. +Clone the RakuNavigator repo, install based on the [instructions](https://github.com/bscan/raku_Navigator#installation-for-other-editors), +and point `cmd` to `server.js` inside the `server/out` directory: +```lua +cmd = {'node', '<path_to_repo>/server/out/server.js', '--stdio'} +``` +At minimum, you will need `raku` in your path. If you want to use a non-standard `raku` you will need to set your configuration like so: +```lua +settings = { + raku_navigator = { + rakuPath = '/some/odd/location/my-raku' + } +} +``` +The `contributes.configuration.properties` section of `raku_navigator`'s `package.json` has all available configuration settings. All +settings have a reasonable default, but, at minimum, you may want to point `raku_navigator` at your `raku_tidy` and `raku_critic` configurations. Snippet to enable the language server: ```lua @@ -9312,8 +9137,7 @@ Default config: Reason language server - You can install reason language server from [reason-language-server](https://github.com/jaredly/reason-language-server) repository. -@type vim.lsp.Config +You can install reason language server from [reason-language-server](https://github.com/jaredly/reason-language-server) repository. Snippet to enable the language server: ```lua @@ -9398,33 +9222,32 @@ Default config: https://github.com/remarkjs/remark-language-server - `remark-language-server` can be installed via `npm`: - ```sh - npm install -g remark-language-server - ``` +`remark-language-server` can be installed via `npm`: +```sh +npm install -g remark-language-server +``` - `remark-language-server` uses the same - [configuration files](https://github.com/remarkjs/remark/tree/main/packages/remark-cli#example-config-files-json-yaml-js) - as `remark-cli`. +`remark-language-server` uses the same +[configuration files](https://github.com/remarkjs/remark/tree/main/packages/remark-cli#example-config-files-json-yaml-js) +as `remark-cli`. - This uses a plugin based system. Each plugin needs to be installed locally using `npm` or `yarn`. +This uses a plugin based system. Each plugin needs to be installed locally using `npm` or `yarn`. - For example, given the following `.remarkrc.json`: +For example, given the following `.remarkrc.json`: - ```json - { - "presets": [ - "remark-preset-lint-recommended" - ] - } - ``` +```json +{ + "presets": [ + "remark-preset-lint-recommended" + ] +} +``` - `remark-preset-lint-recommended` needs to be installed in the local project: +`remark-preset-lint-recommended` needs to be installed in the local project: - ```sh - npm install remark-preset-lint-recommended - ``` -@type vim.lsp.Config +```sh +npm install remark-preset-lint-recommended +``` Snippet to enable the language server: ```lua @@ -9451,38 +9274,37 @@ Default config: https://github.com/rescript-lang/rescript-vscode/tree/master/server - ReScript Language Server can be installed via npm: - ```sh - npm install -g @rescript/language-server - ``` +ReScript Language Server can be installed via npm: +```sh +npm install -g @rescript/language-server +``` - See [package.json](https://github.com/rescript-lang/rescript-vscode/blob/master/package.json#L139) - for init_options supported. +See [package.json](https://github.com/rescript-lang/rescript-vscode/blob/master/package.json#L139) +for init_options supported. - For example, in order to disable the `inlayHints` option: - ```lua - vim.lsp.config('rescriptls', { - settings = { - rescript = { - settings = { - inlayHints = { enable = false }, - }, - }, - }) - } - ``` +For example, in order to disable the `inlayHints` option: +```lua +vim.lsp.config('rescriptls', { + settings = { + rescript = { + settings = { + inlayHints = { enable = false }, + }, + }, + }) +} +``` - Detect file changes: While using @rescript/language-server >= 1.63.0 you have to detect file changes by registering the didChangeWatchedFiles hook. - ```lua - capabilities = { - workspace = { - didChangeWatchedFiles = { - dynamicRegistration = true, - }, - }, - } - ``` -@type vim.lsp.Config +Detect file changes: While using @rescript/language-server >= 1.63.0 you have to detect file changes by registering the didChangeWatchedFiles hook. +```lua +capabilities = { + workspace = { + didChangeWatchedFiles = { + dynamicRegistration = true, + }, + }, +} +``` Snippet to enable the language server: ```lua @@ -9535,31 +9357,30 @@ Default config: https://github.com/rust-lang/rls - rls, a language server for Rust +rls, a language server for Rust - See https://github.com/rust-lang/rls#setup to setup rls itself. - See https://github.com/rust-lang/rls#configuration for rls-specific settings. - All settings listed on the rls configuration section of the readme - must be set under settings.rust as follows: +See https://github.com/rust-lang/rls#setup to setup rls itself. +See https://github.com/rust-lang/rls#configuration for rls-specific settings. +All settings listed on the rls configuration section of the readme +must be set under settings.rust as follows: - ```lua - vim.lsp.config('rls', { - settings = { - rust = { - unstable_features = true, - build_on_save = false, - all_features = true, - }, - }, - }) - ``` +```lua +vim.lsp.config('rls', { + settings = { + rust = { + unstable_features = true, + build_on_save = false, + all_features = true, + }, + }, +}) +``` - If you want to use rls for a particular build, eg nightly, set cmd as follows: +If you want to use rls for a particular build, eg nightly, set cmd as follows: - ```lua - cmd = {"rustup", "run", "nightly", "rls"} - ``` -@type vim.lsp.Config +```lua +cmd = {"rustup", "run", "nightly", "rls"} +``` Snippet to enable the language server: ```lua @@ -9586,12 +9407,11 @@ Default config: https://github.com/nix-community/rnix-lsp - A language server for Nix providing basic completion and formatting via nixpkgs-fmt. +A language server for Nix providing basic completion and formatting via nixpkgs-fmt. - To install manually, run `cargo install rnix-lsp`. If you are using nix, rnix-lsp is in nixpkgs. +To install manually, run `cargo install rnix-lsp`. If you are using nix, rnix-lsp is in nixpkgs. - This server accepts configuration via the `settings` key. -@type vim.lsp.Config +This server accepts configuration via the `settings` key. Snippet to enable the language server: ```lua @@ -9611,7 +9431,7 @@ Default config: ```lua {} ``` -- `root_dir`: [../lsp/rnix.lua:11](../lsp/rnix.lua#L11) +- `root_dir`: [../lsp/rnix.lua:12](../lsp/rnix.lua#L12) - `settings` : ```lua {} @@ -9623,8 +9443,7 @@ Default config: https://robotcode.io - RobotCode - Language Server Protocol implementation for Robot Framework. -@type vim.lsp.Config +RobotCode - Language Server Protocol implementation for Robot Framework. Snippet to enable the language server: ```lua @@ -9640,7 +9459,7 @@ Default config: ```lua { "robot", "resource" } ``` -- `get_language_id`: [../lsp/robotcode.lua:7](../lsp/robotcode.lua#L7) +- `get_language_id`: [../lsp/robotcode.lua:8](../lsp/robotcode.lua#L8) - `root_markers` : ```lua { "robot.toml", "pyproject.toml", "Pipfile", ".git" } @@ -9652,8 +9471,7 @@ Default config: https://github.com/robocorp/robotframework-lsp - Language Server Protocol implementation for Robot Framework. -@type vim.lsp.Config +Language Server Protocol implementation for Robot Framework. Snippet to enable the language server: ```lua @@ -9680,9 +9498,8 @@ Default config: https://github.com/roc-lang/roc/tree/main/crates/language_server#roc_language_server - The built-in language server for the Roc programming language. - [Installation](https://github.com/roc-lang/roc/tree/main/crates/language_server#installing) -@type vim.lsp.Config +The built-in language server for the Roc programming language. +[Installation](https://github.com/roc-lang/roc/tree/main/crates/language_server#installing) Snippet to enable the language server: ```lua @@ -9709,14 +9526,13 @@ Default config: https://rome.tools - Language server for the Rome Frontend Toolchain. +Language server for the Rome Frontend Toolchain. - (Unmaintained, use [Biome](https://biomejs.dev/blog/annoucing-biome) instead.) +(Unmaintained, use [Biome](https://biomejs.dev/blog/annoucing-biome) instead.) - ```sh - npm install [-g] rome - ``` -@type vim.lsp.Config +```sh +npm install [-g] rome +``` Snippet to enable the language server: ```lua @@ -9847,14 +9663,13 @@ Default config: https://github.com/dcermak/rpm-spec-language-server - Language server protocol (LSP) support for RPM Spec files. +Language server protocol (LSP) support for RPM Spec files. - `rpm-spec-language-server` can be installed by running, +`rpm-spec-language-server` can be installed by running, - ```sh - pip install rpm-spec-language-server - ``` -@type vim.lsp.Config +```sh +pip install rpm-spec-language-server +``` Snippet to enable the language server: ```lua @@ -9884,7 +9699,6 @@ Default config: ## rubocop https://github.com/rubocop/rubocop -@type vim.lsp.Config Snippet to enable the language server: ```lua @@ -9911,16 +9725,15 @@ Default config: https://shopify.github.io/ruby-lsp/ - This gem is an implementation of the language server protocol specification for - Ruby, used to improve editor features. +This gem is an implementation of the language server protocol specification for +Ruby, used to improve editor features. - Install the gem. There's no need to require it, since the server is used as a - standalone executable. +Install the gem. There's no need to require it, since the server is used as a +standalone executable. - ```sh - gem install ruby-lsp - ``` -@type vim.lsp.Config +```sh +gem install ruby-lsp +``` Snippet to enable the language server: ```lua @@ -9953,30 +9766,29 @@ Default config: https://github.com/astral-sh/ruff - A Language Server Protocol implementation for Ruff, an extremely fast Python linter and code formatter, written in Rust. It can be installed via `pip`. +A Language Server Protocol implementation for Ruff, an extremely fast Python linter and code formatter, written in Rust. It can be installed via `pip`. - ```sh - pip install ruff - ``` +```sh +pip install ruff +``` - **Available in Ruff `v0.4.5` in beta and stabilized in Ruff `v0.5.3`.** +**Available in Ruff `v0.4.5` in beta and stabilized in Ruff `v0.5.3`.** - This is the new built-in language server written in Rust. It supports the same feature set as `ruff-lsp`, but with superior performance and no installation required. Note that the `ruff-lsp` server will continue to be maintained until further notice. +This is the new built-in language server written in Rust. It supports the same feature set as `ruff-lsp`, but with superior performance and no installation required. Note that the `ruff-lsp` server will continue to be maintained until further notice. - Server settings can be provided via: +Server settings can be provided via: - ```lua - vim.lsp.config('ruff', { - init_options = { - settings = { - -- Server settings should go here - } - } - }) - ``` +```lua +vim.lsp.config('ruff', { + init_options = { + settings = { + -- Server settings should go here + } + } +}) +``` - Refer to the [documentation](https://docs.astral.sh/ruff/editors/) for more details. -@type vim.lsp.Config +Refer to the [documentation](https://docs.astral.sh/ruff/editors/) for more details. Snippet to enable the language server: ```lua @@ -10007,25 +9819,24 @@ Default config: https://github.com/astral-sh/ruff-lsp - A Language Server Protocol implementation for Ruff, an extremely fast Python linter and code transformation tool, written in Rust. It can be installed via pip. +A Language Server Protocol implementation for Ruff, an extremely fast Python linter and code transformation tool, written in Rust. It can be installed via pip. - ```sh - pip install ruff-lsp - ``` +```sh +pip install ruff-lsp +``` - Extra CLI arguments for `ruff` can be provided via +Extra CLI arguments for `ruff` can be provided via - ```lua - vim.lsp.config('ruff_lsp', { - init_options = { - settings = { - -- Any extra CLI arguments for `ruff` go here. - args = {}, - } - } - }) - ``` -@type vim.lsp.Config +```lua +vim.lsp.config('ruff_lsp', { + init_options = { + settings = { + -- Any extra CLI arguments for `ruff` go here. + args = {}, + } + } +}) +``` Snippet to enable the language server: ```lua @@ -10056,9 +9867,8 @@ Default config: https://crates.io/crates/rune-languageserver - A language server for the [Rune](https://rune-rs.github.io/) Language, - an embeddable dynamic programming language for Rust -@type vim.lsp.Config +A language server for the [Rune](https://rune-rs.github.io/) Language, +an embeddable dynamic programming language for Rust Snippet to enable the language server: ```lua @@ -10135,13 +9945,12 @@ Default config: ## salt_ls Language server for Salt configuration files. - https://github.com/dcermak/salt-lsp +https://github.com/dcermak/salt-lsp - The language server can be installed with `pip`: - ```sh - pip install salt-lsp - ``` -@type vim.lsp.Config +The language server can be installed with `pip`: +```sh +pip install salt-lsp +``` Snippet to enable the language server: ```lua @@ -10195,8 +10004,7 @@ Default config: https://github.com/crystal-lang-tools/scry - Crystal language server. -@type vim.lsp.Config +Crystal language server. Snippet to enable the language server: ```lua @@ -10223,8 +10031,7 @@ Default config: https://github.com/antonk52/lua-3p-language-servers - 3rd party Language Server for Selene lua linter -@type vim.lsp.Config +3rd party Language Server for Selene lua linter Snippet to enable the language server: ```lua @@ -10251,9 +10058,8 @@ Default config: https://github.com/Pure-D/serve-d - Microsoft language server protocol implementation for D using workspace-d. - Download a binary from https://github.com/Pure-D/serve-d/releases and put it in your $PATH. -@type vim.lsp.Config +Microsoft language server protocol implementation for D using workspace-d. +Download a binary from https://github.com/Pure-D/serve-d/releases and put it in your $PATH. Snippet to enable the language server: ```lua @@ -10280,12 +10086,11 @@ Default config: https://shopify.dev/docs/api/shopify-cli - [Language Server](https://shopify.dev/docs/themes/tools/cli/language-server) and Theme Check (linter) for Shopify themes. +[Language Server](https://shopify.dev/docs/themes/tools/cli/language-server) and Theme Check (linter) for Shopify themes. - `shopify` can be installed via npm `npm install -g @shopify/cli`. +`shopify` can be installed via npm `npm install -g @shopify/cli`. - Note: This LSP already includes Theme Check so you don't need to use the `theme_check` server configuration as well. -@type vim.lsp.Config +Note: This LSP already includes Theme Check so you don't need to use the `theme_check` server configuration as well. Snippet to enable the language server: ```lua @@ -10315,23 +10120,22 @@ Default config: ## sixtyfps https://github.com/sixtyfpsui/sixtyfps - `SixtyFPS`'s language server +`SixtyFPS`'s language server - You can build and install `sixtyfps-lsp` binary with `cargo`: - ```sh - cargo install sixtyfps-lsp - ``` +You can build and install `sixtyfps-lsp` binary with `cargo`: +```sh +cargo install sixtyfps-lsp +``` - Vim does not have built-in syntax for the `sixtyfps` filetype currently. +Vim does not have built-in syntax for the `sixtyfps` filetype currently. - This can be added via an autocmd: +This can be added via an autocmd: - ```lua - vim.cmd [[ autocmd BufRead,BufNewFile *.60 set filetype=sixtyfps ]] - ``` +```lua +vim.cmd [[ autocmd BufRead,BufNewFile *.60 set filetype=sixtyfps ]] +``` - or by installing a filetype plugin such as https://github.com/RustemB/sixtyfps-vim -@type vim.lsp.Config +or by installing a filetype plugin such as https://github.com/RustemB/sixtyfps-vim Snippet to enable the language server: ```lua @@ -10399,21 +10203,20 @@ Default config: ## slint_lsp https://github.com/slint-ui/slint - `Slint`'s language server +`Slint`'s language server - You can build and install `slint-lsp` binary with `cargo`: - ```sh - cargo install slint-lsp - ``` +You can build and install `slint-lsp` binary with `cargo`: +```sh +cargo install slint-lsp +``` - Vim does not have built-in syntax for the `slint` filetype at this time. +Vim does not have built-in syntax for the `slint` filetype at this time. - This can be added via an autocmd: +This can be added via an autocmd: - ```lua - vim.cmd [[ autocmd BufRead,BufNewFile *.slint set filetype=slint ]] - ``` -@type vim.lsp.Config +```lua +vim.cmd [[ autocmd BufRead,BufNewFile *.slint set filetype=slint ]] +``` Snippet to enable the language server: ```lua @@ -10541,11 +10344,10 @@ Default config: https://www.npmjs.com/package/@snakeskin/cli - `snakeskin cli` can be installed via `npm`: - ```sh - npm install -g @snakeskin/cli - ``` -@type vim.lsp.Config +`snakeskin cli` can be installed via `npm`: +```sh +npm install -g @snakeskin/cli +``` Snippet to enable the language server: ```lua @@ -10572,8 +10374,7 @@ Default config: https://github.com/snyk/snyk-ls - LSP for Snyk Open Source, Snyk Infrastructure as Code, and Snyk Code. -@type vim.lsp.Config +LSP for Snyk Open Source, Snyk Infrastructure as Code, and Snyk Code. Snippet to enable the language server: ```lua @@ -10618,7 +10419,6 @@ A language server for Solidity * Hover There is currently no support for completion, goto definition, references, or other functionality. -@type vim.lsp.Config Snippet to enable the language server: ```lua @@ -10645,14 +10445,13 @@ Default config: https://solargraph.org/ - solargraph, a language server for Ruby +solargraph, a language server for Ruby - You can install solargraph via gem install. +You can install solargraph via gem install. - ```sh - gem install --user-install solargraph - ``` -@type vim.lsp.Config +```sh +gem install --user-install solargraph +``` Snippet to enable the language server: ```lua @@ -10717,37 +10516,36 @@ Default config: https://github.com/qiuxiang/solidity-ls - npm i solidity-ls -g +npm i solidity-ls -g - Make sure that solc is installed and it's the same version of the file. solc-select is recommended. +Make sure that solc is installed and it's the same version of the file. solc-select is recommended. - Solidity language server is a LSP with autocomplete, go to definition and diagnostics. +Solidity language server is a LSP with autocomplete, go to definition and diagnostics. - If you use brownie, use this root_markers: - root_markers = { 'brownie-config.yaml', '.git' } +If you use brownie, use this root_markers: +root_markers = { 'brownie-config.yaml', '.git' } - on includePath, you can add an extra path to search for external libs, on remapping you can remap lib <> path, like: +on includePath, you can add an extra path to search for external libs, on remapping you can remap lib <> path, like: - ```lua - { solidity = { includePath = '/Users/your_user/.brownie/packages/', remapping = { ["@OpenZeppelin/"] = 'OpenZeppelin/openzeppelin-contracts@4.6.0/' } } } - ``` +```lua +{ solidity = { includePath = '/Users/your_user/.brownie/packages/', remapping = { ["@OpenZeppelin/"] = 'OpenZeppelin/openzeppelin-contracts@4.6.0/' } } } +``` - **For brownie users** - Change the root_markers to: +**For brownie users** +Change the root_markers to: - ```lua - root_markers = { 'brownie-config.yaml', '.git' } - ``` +```lua +root_markers = { 'brownie-config.yaml', '.git' } +``` - The best way of using it is to have a package.json in your project folder with the packages that you will use. - After installing with package.json, just create a `remappings.txt` with: +The best way of using it is to have a package.json in your project folder with the packages that you will use. +After installing with package.json, just create a `remappings.txt` with: - ``` - @OpenZeppelin/=node_modules/OpenZeppelin/openzeppelin-contracts@4.6.0/ - ``` +``` +@OpenZeppelin/=node_modules/OpenZeppelin/openzeppelin-contracts@4.6.0/ +``` - You can omit the node_modules as well. -@type vim.lsp.Config +You can omit the node_modules as well. Snippet to enable the language server: ```lua @@ -10783,14 +10581,13 @@ Default config: https://github.com/juanfranblanco/vscode-solidity - `vscode-solidity-server` can be installed via `npm`: +`vscode-solidity-server` can be installed via `npm`: - ```sh - npm install -g vscode-solidity-server - ``` +```sh +npm install -g vscode-solidity-server +``` - `vscode-solidity-server` is a language server for the Solidity language ported from the VSCode "solidity" extension. -@type vim.lsp.Config +`vscode-solidity-server` is a language server for the Solidity language ported from the VSCode "solidity" extension. Snippet to enable the language server: ```lua @@ -10817,14 +10614,13 @@ Default config: https://github.com/NomicFoundation/hardhat-vscode/blob/development/server/README.md - `nomicfoundation-solidity-language-server` can be installed via `npm`: +`nomicfoundation-solidity-language-server` can be installed via `npm`: - ```sh - npm install -g @nomicfoundation/solidity-language-server - ``` +```sh +npm install -g @nomicfoundation/solidity-language-server +``` - A language server for the Solidity programming language, built by the Nomic Foundation for the Ethereum community. -@type vim.lsp.Config +A language server for the Solidity programming language, built by the Nomic Foundation for the Ethereum community. Snippet to enable the language server: ```lua @@ -10851,20 +10647,19 @@ Default config: https://github.com/wkillerud/some-sass/tree/main/packages/language-server - `some-sass-language-server` can be installed via `npm`: +`some-sass-language-server` can be installed via `npm`: - ```sh - npm i -g some-sass-language-server - ``` +```sh +npm i -g some-sass-language-server +``` - The language server provides: +The language server provides: - - Full support for @use and @forward, including aliases, prefixes and hiding. - - Workspace-wide code navigation and refactoring, such as Rename Symbol. - - Rich documentation through SassDoc. - - Language features for %placeholder-selectors, both when using them and writing them. - - Suggestions and hover info for built-in Sass modules, when used with @use. -@type vim.lsp.Config +- Full support for @use and @forward, including aliases, prefixes and hiding. +- Workspace-wide code navigation and refactoring, such as Rename Symbol. +- Rich documentation through SassDoc. +- Language features for %placeholder-selectors, both when using them and writing them. +- Suggestions and hover info for built-in Sass modules, when used with @use. Snippet to enable the language server: ```lua @@ -10903,15 +10698,14 @@ Default config: https://sorbet.org - Sorbet is a fast, powerful type checker designed for Ruby. +Sorbet is a fast, powerful type checker designed for Ruby. - You can install Sorbet via gem install. You might also be interested in how to set - Sorbet up for new projects: https://sorbet.org/docs/adopting. +You can install Sorbet via gem install. You might also be interested in how to set +Sorbet up for new projects: https://sorbet.org/docs/adopting. - ```sh - gem install sorbet - ``` -@type vim.lsp.Config +```sh +gem install sorbet +``` Snippet to enable the language server: ```lua @@ -11019,20 +10813,19 @@ Default config: https://github.com/SpyglassMC/Spyglass/tree/main/packages/language-server - Language server for Minecraft datapacks. +Language server for Minecraft datapacks. - `spyglassmc-language-server` can be installed via `npm`: +`spyglassmc-language-server` can be installed via `npm`: - ```sh - npm i -g @spyglassmc/language-server - ``` +```sh +npm i -g @spyglassmc/language-server +``` - You may also need to configure the filetype: +You may also need to configure the filetype: - `autocmd BufNewFile,BufRead *.mcfunction set filetype=mcfunction` +`autocmd BufNewFile,BufRead *.mcfunction set filetype=mcfunction` - This is automatically done by [CrystalAlpha358/vim-mcfunction](https://github.com/CrystalAlpha358/vim-mcfunction), which also provide syntax highlight. -@type vim.lsp.Config +This is automatically done by [CrystalAlpha358/vim-mcfunction](https://github.com/CrystalAlpha358/vim-mcfunction), which also provide syntax highlight. Snippet to enable the language server: ```lua @@ -11090,14 +10883,13 @@ Default config: https://github.com/sqls-server/sqls - ```lua - vim.lsp.config('sqls', { - cmd = {"path/to/command", "-config", "path/to/config.yml"}; - ... - }) - ``` - Sqls can be installed via `go install github.com/sqls-server/sqls@latest`. Instructions for compiling Sqls from the source can be found at [sqls-server/sqls](https://github.com/sqls-server/sqls). -@type vim.lsp.Config +```lua +vim.lsp.config('sqls', { + cmd = {"path/to/command", "-config", "path/to/config.yml"}; + ... +}) +``` +Sqls can be installed via `go install github.com/sqls-server/sqls@latest`. Instructions for compiling Sqls from the source can be found at [sqls-server/sqls](https://github.com/sqls-server/sqls). Snippet to enable the language server: ```lua @@ -11128,9 +10920,7 @@ Default config: https://github.com/quarylabs/sqruff - `sqruff` can be installed by following the instructions [here](https://github.com/quarylabs/sqruff?tab=readme-ov-file#installation) - -@type vim.lsp.Config +`sqruff` can be installed by following the instructions [here](https://github.com/quarylabs/sqruff?tab=readme-ov-file#installation) Snippet to enable the language server: ```lua @@ -11157,8 +10947,7 @@ Default config: https://github.com/testdouble/standard - Ruby Style Guide, with linter & automatic code fixer. -@type vim.lsp.Config +Ruby Style Guide, with linter & automatic code fixer. Snippet to enable the language server: ```lua @@ -11184,13 +10973,12 @@ Default config: ## starlark_rust https://github.com/facebookexperimental/starlark-rust/ - The LSP part of `starlark-rust` is not currently documented, - but the implementation works well for linting. - This gives valuable warnings for potential issues in the code, - but does not support refactorings. +The LSP part of `starlark-rust` is not currently documented, +but the implementation works well for linting. +This gives valuable warnings for potential issues in the code, +but does not support refactorings. - It can be installed with cargo: https://crates.io/crates/starlark -@type vim.lsp.Config +It can be installed with cargo: https://crates.io/crates/starlark Snippet to enable the language server: ```lua @@ -11217,8 +11005,7 @@ Default config: https://github.com/withered-magic/starpls - `starpls` is an LSP implementation for Starlark. Installation instructions can be found in the project's README. -@type vim.lsp.Config +`starpls` is an LSP implementation for Starlark. Installation instructions can be found in the project's README. Snippet to enable the language server: ```lua @@ -11245,8 +11032,7 @@ Default config: https://github.com/nerdypepper/statix - lints and suggestions for the nix programming language -@type vim.lsp.Config +lints and suggestions for the nix programming language Snippet to enable the language server: ```lua @@ -11273,10 +11059,9 @@ Default config: https://github.com/soutaro/steep - `steep` is a static type checker for Ruby. +`steep` is a static type checker for Ruby. - You need `Steepfile` to make it work. Generate it with `steep init`. -@type vim.lsp.Config +You need `Steepfile` to make it work. Generate it with `steep init`. Snippet to enable the language server: ```lua @@ -11303,18 +11088,17 @@ Default config: https://www.npmjs.com/package/stimulus-language-server - `stimulus-lsp` can be installed via `npm`: +`stimulus-lsp` can be installed via `npm`: - ```sh - npm install -g stimulus-language-server - ``` +```sh +npm install -g stimulus-language-server +``` - or via `yarn`: +or via `yarn`: - ```sh - yarn global add stimulus-language-server - ``` -@type vim.lsp.Config +```sh +yarn global add stimulus-language-server +``` Snippet to enable the language server: ```lua @@ -11388,8 +11172,7 @@ Default config: https://github.com/antonk52/lua-3p-language-servers - 3rd party Language Server for Stylua lua formatter -@type vim.lsp.Config +3rd party Language Server for Stylua lua formatter Snippet to enable the language server: ```lua @@ -11416,20 +11199,19 @@ Default config: https://github.com/kristoff-it/superhtml - HTML Language Server & Templating Language Library +HTML Language Server & Templating Language Library - This LSP is designed to tightly adhere to the HTML spec as well as enforcing - some additional rules that ensure HTML clarity. +This LSP is designed to tightly adhere to the HTML spec as well as enforcing +some additional rules that ensure HTML clarity. - If you want to disable HTML support for another HTML LSP, add the following - to your configuration: +If you want to disable HTML support for another HTML LSP, add the following +to your configuration: - ```lua - vim.lsp.config('superhtml', { - filetypes = { 'superhtml' } - }) - ``` -@type vim.lsp.Config +```lua +vim.lsp.config('superhtml', { + filetypes = { 'superhtml' } +}) +``` Snippet to enable the language server: ```lua @@ -11528,13 +11310,12 @@ Default config: https://github.com/dalance/svls - Language server for verilog and SystemVerilog +Language server for verilog and SystemVerilog - `svls` can be installed via `cargo`: - ```sh - cargo install svls - ``` -@type vim.lsp.Config +`svls` can be installed via `cargo`: + ```sh + cargo install svls + ``` Snippet to enable the language server: ```lua @@ -11561,8 +11342,7 @@ Default config: https://github.com/JCWasmx86/Swift-MesonLSP - Meson language server written in Swift -@type vim.lsp.Config +Meson language server written in Swift Snippet to enable the language server: ```lua @@ -11589,17 +11369,16 @@ Default config: https://ruby-syntax-tree.github.io/syntax_tree/ - A fast Ruby parser and formatter. +A fast Ruby parser and formatter. - Syntax Tree is a suite of tools built on top of the internal CRuby parser. It - provides the ability to generate a syntax tree from source, as well as the - tools necessary to inspect and manipulate that syntax tree. It can be used to - build formatters, linters, language servers, and more. +Syntax Tree is a suite of tools built on top of the internal CRuby parser. It +provides the ability to generate a syntax tree from source, as well as the +tools necessary to inspect and manipulate that syntax tree. It can be used to +build formatters, linters, language servers, and more. - ```sh - gem install syntax_tree - ``` -@type vim.lsp.Config +```sh +gem install syntax_tree +``` Snippet to enable the language server: ```lua @@ -11626,13 +11405,12 @@ Default config: https://github.com/psacawa/systemd-language-server - `systemd-language-server` can be installed via `pip`: - ```sh - pip install systemd-language-server - ``` +`systemd-language-server` can be installed via `pip`: +```sh +pip install systemd-language-server +``` - Language Server for Systemd unit files -@type vim.lsp.Config +Language Server for Systemd unit files Snippet to enable the language server: ```lua @@ -11659,14 +11437,13 @@ Default config: https://tabby.tabbyml.com/blog/running-tabby-as-a-language-server - Language server for Tabby, an opensource, self-hosted AI coding assistant. +Language server for Tabby, an opensource, self-hosted AI coding assistant. - `tabby-agent` can be installed via `npm`: +`tabby-agent` can be installed via `npm`: - ```sh - npm install --global tabby-agent - ``` -@type vim.lsp.Config +```sh +npm install --global tabby-agent +``` Snippet to enable the language server: ```lua @@ -11747,13 +11524,12 @@ Default config: https://taplo.tamasfe.dev/cli/usage/language-server.html - Language server for Taplo, a TOML toolkit. +Language server for Taplo, a TOML toolkit. - `taplo-cli` can be installed via `cargo`: - ```sh - cargo install --features lsp --locked taplo-cli - ``` -@type vim.lsp.Config +`taplo-cli` can be installed via `cargo`: +```sh +cargo install --features lsp --locked taplo-cli +``` Snippet to enable the language server: ```lua @@ -11809,16 +11585,15 @@ Default config: https://github.com/teal-language/teal-language-server - Install with: - ``` - luarocks install teal-language-server - ``` +Install with: +``` +luarocks install teal-language-server +``` - Optional Command Args: - * "--log-mode=by_date" - Enable logging in $HOME/.cache/teal-language-server. Log name will be date + pid of process - * "--log-mode=by_proj_path" - Enable logging in $HOME/.cache/teal-language-server. Log name will be project path + pid of process - * "--verbose=true" - Increases log level. Does nothing unless log-mode is set -@type vim.lsp.Config +Optional Command Args: +* "--log-mode=by_date" - Enable logging in $HOME/.cache/teal-language-server. Log name will be date + pid of process +* "--log-mode=by_proj_path" - Enable logging in $HOME/.cache/teal-language-server. Log name will be project path + pid of process +* "--verbose=true" - Increases log level. Does nothing unless log-mode is set Snippet to enable the language server: ```lua @@ -11845,8 +11620,7 @@ Default config: https://templ.guide - The official language server for the templ HTML templating language. -@type vim.lsp.Config +The official language server for the templ HTML templating language. Snippet to enable the language server: ```lua @@ -11873,8 +11647,7 @@ Default config: https://github.com/termux/termux-language-server - Language server for various bash scripts such as Arch PKGBUILD, Gentoo ebuild, Termux build.sh, etc. -@type vim.lsp.Config +Language server for various bash scripts such as Arch PKGBUILD, Gentoo ebuild, Termux build.sh, etc. Snippet to enable the language server: ```lua @@ -11901,32 +11674,31 @@ Default config: https://github.com/juliosueiras/terraform-lsp - Terraform language server - Download a released binary from - https://github.com/juliosueiras/terraform-lsp/releases. +Terraform language server +Download a released binary from +https://github.com/juliosueiras/terraform-lsp/releases. - From https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp: +From https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp: - Both HashiCorp and the maintainer of terraform-lsp expressed interest in - collaborating on a language server and are working towards a _long-term_ - goal of a single stable and feature-complete implementation. +Both HashiCorp and the maintainer of terraform-lsp expressed interest in +collaborating on a language server and are working towards a _long-term_ +goal of a single stable and feature-complete implementation. - For the time being both projects continue to exist, giving users the - choice: +For the time being both projects continue to exist, giving users the +choice: - - `terraform-ls` providing - - overall stability (by relying only on public APIs) - - compatibility with any provider and any Terraform >=0.12.0 currently - less features - - due to project being younger and relying on public APIs which may - not offer the same functionality yet +- `terraform-ls` providing + - overall stability (by relying only on public APIs) + - compatibility with any provider and any Terraform >=0.12.0 currently + less features + - due to project being younger and relying on public APIs which may + not offer the same functionality yet - - `terraform-lsp` providing - - currently more features - - compatibility with a single particular Terraform (0.12.20 at time of writing) - - configs designed for other 0.12 versions may work, but interpretation may be inaccurate - - less stability (due to reliance on Terraform's own internal packages) -@type vim.lsp.Config +- `terraform-lsp` providing + - currently more features + - compatibility with a single particular Terraform (0.12.20 at time of writing) + - configs designed for other 0.12 versions may work, but interpretation may be inaccurate + - less stability (due to reliance on Terraform's own internal packages) Snippet to enable the language server: ```lua @@ -11953,36 +11725,35 @@ Default config: https://github.com/hashicorp/terraform-ls - Terraform language server - Download a released binary from https://github.com/hashicorp/terraform-ls/releases. +Terraform language server +Download a released binary from https://github.com/hashicorp/terraform-ls/releases. - From https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp: +From https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp: - Both HashiCorp and the maintainer of terraform-lsp expressed interest in - collaborating on a language server and are working towards a _long-term_ - goal of a single stable and feature-complete implementation. +Both HashiCorp and the maintainer of terraform-lsp expressed interest in +collaborating on a language server and are working towards a _long-term_ +goal of a single stable and feature-complete implementation. - For the time being both projects continue to exist, giving users the - choice: +For the time being both projects continue to exist, giving users the +choice: - - `terraform-ls` providing - - overall stability (by relying only on public APIs) - - compatibility with any provider and any Terraform >=0.12.0 currently - less features - - due to project being younger and relying on public APIs which may - not offer the same functionality yet +- `terraform-ls` providing + - overall stability (by relying only on public APIs) + - compatibility with any provider and any Terraform >=0.12.0 currently + less features + - due to project being younger and relying on public APIs which may + not offer the same functionality yet - - `terraform-lsp` providing - - currently more features - - compatibility with a single particular Terraform (0.12.20 at time of writing) - - configs designed for other 0.12 versions may work, but interpretation may be inaccurate - - less stability (due to reliance on Terraform's own internal packages) +- `terraform-lsp` providing + - currently more features + - compatibility with a single particular Terraform (0.12.20 at time of writing) + - configs designed for other 0.12 versions may work, but interpretation may be inaccurate + - less stability (due to reliance on Terraform's own internal packages) - Note, that the `settings` configuration option uses the `workspace/didChangeConfiguration` event, - [which is not supported by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/features.md). - Instead you should use `init_options` which passes the settings as part of the LSP initialize call - [as is required by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/SETTINGS.md#how-to-pass-settings). -@type vim.lsp.Config +Note, that the `settings` configuration option uses the `workspace/didChangeConfiguration` event, +[which is not supported by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/features.md). +Instead you should use `init_options` which passes the settings as part of the LSP initialize call +[as is required by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/SETTINGS.md#how-to-pass-settings). Snippet to enable the language server: ```lua @@ -12072,15 +11843,14 @@ Default config: https://github.com/hangyav/textLSP - `textLSP` is an LSP server for text spell and grammar checking with various AI tools. - It supports multiple text file formats, such as LaTeX, Org or txt. +`textLSP` is an LSP server for text spell and grammar checking with various AI tools. +It supports multiple text file formats, such as LaTeX, Org or txt. - For the available text analyzer tools and their configuration, see the [GitHub](https://github.com/hangyav/textLSP) page. - By default, all analyzers are disabled in textLSP, since most of them need special settings. - For quick testing, LanguageTool is enabled in the default `nvim-lspconfig` configuration. +For the available text analyzer tools and their configuration, see the [GitHub](https://github.com/hangyav/textLSP) page. +By default, all analyzers are disabled in textLSP, since most of them need special settings. +For quick testing, LanguageTool is enabled in the default `nvim-lspconfig` configuration. - To install run: `pip install textLSP` -@type vim.lsp.Config +To install run: `pip install textLSP` Snippet to enable the language server: ```lua @@ -12129,9 +11899,8 @@ Default config: https://github.com/terraform-linters/tflint - A pluggable Terraform linter that can act as lsp server. - Installation instructions can be found in https://github.com/terraform-linters/tflint#installation. -@type vim.lsp.Config +A pluggable Terraform linter that can act as lsp server. +Installation instructions can be found in https://github.com/terraform-linters/tflint#installation. Snippet to enable the language server: ```lua @@ -12200,8 +11969,7 @@ Default config: https://github.com/joyme123/thrift-ls - you can install thriftls by mason or download binary here: https://github.com/joyme123/thrift-ls/releases -@type vim.lsp.Config +you can install thriftls by mason or download binary here: https://github.com/joyme123/thrift-ls/releases Snippet to enable the language server: ```lua @@ -12228,14 +11996,13 @@ Default config: https://github.com/tilt-dev/tilt - Tilt language server. +Tilt language server. - You might need to add filetype detection manually: +You might need to add filetype detection manually: - ```vim - autocmd BufRead Tiltfile setf=tiltfile - ``` -@type vim.lsp.Config +```vim +autocmd BufRead Tiltfile setf=tiltfile +``` Snippet to enable the language server: ```lua @@ -12296,8 +12063,6 @@ Default config: [OpenTofu Language Server](https://github.com/opentofu/tofu-ls) -@type vim.lsp.Config - Snippet to enable the language server: ```lua vim.lsp.enable('tofu_ls') @@ -12323,9 +12088,7 @@ Default config: https://tombi-toml.github.io/tombi/ - Language server for Tombi, a TOML toolkit. - -@type vim.lsp.Config +Language server for Tombi, a TOML toolkit. Snippet to enable the language server: ```lua @@ -12433,31 +12196,30 @@ Default config: ## ts_query_ls https://github.com/ribru17/ts_query_ls - Can be configured by passing a "settings" object to `vim.lsp.config('ts_query_ls', {})`: - ```lua - vim.lsp.config('ts_query_ls', { - settings = { - parser_install_directories = { - -- If using nvim-treesitter with lazy.nvim - vim.fs.joinpath( - vim.fn.stdpath('data'), - '/lazy/nvim-treesitter/parser/' - ), - }, - -- This setting is provided by default - parser_aliases = { - ecma = 'javascript', - jsx = 'javascript', - php_only = 'php', - }, - -- E.g. zed support - language_retrieval_patterns = { - 'languages/src/([^/]+)/[^/]+\\.scm$', - }, - }, - }) - ``` -@type vim.lsp.Config +Can be configured by passing a "settings" object to `vim.lsp.config('ts_query_ls', {})`: +```lua +vim.lsp.config('ts_query_ls', { + settings = { + parser_install_directories = { + -- If using nvim-treesitter with lazy.nvim + vim.fs.joinpath( + vim.fn.stdpath('data'), + '/lazy/nvim-treesitter/parser/' + ), + }, + -- This setting is provided by default + parser_aliases = { + ecma = 'javascript', + jsx = 'javascript', + php_only = 'php', + }, + -- E.g. zed support + language_retrieval_patterns = { + 'languages/src/([^/]+)/[^/]+\\.scm$', + }, + }, +}) +``` Snippet to enable the language server: ```lua @@ -12494,18 +12256,16 @@ Default config: https://github.com/microsoft/typescript-go - `typescript-go` is experimental port of the TypeScript compiler (tsc) and language server (tsserver) to the Go programming language. +`typescript-go` is experimental port of the TypeScript compiler (tsc) and language server (tsserver) to the Go programming language. - `tsgo` can be installed via npm `npm install @typescript/native-preview`. +`tsgo` can be installed via npm `npm install @typescript/native-preview`. - ### Monorepo support - - `tsgo` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on. - This works without the need of spawning multiple instances of `tsgo`, saving memory. +### Monorepo support - It is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once. +`tsgo` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on. +This works without the need of spawning multiple instances of `tsgo`, saving memory. -@type vim.lsp.Config +It is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once. Snippet to enable the language server: ```lua @@ -12521,7 +12281,7 @@ Default config: ```lua { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx" } ``` -- `root_dir`: [../lsp/tsgo.lua:17](../lsp/tsgo.lua#L17) +- `root_dir`: [../lsp/tsgo.lua:18](../lsp/tsgo.lua#L18) --- @@ -12529,13 +12289,12 @@ Default config: https://github.com/microsoft/typespec - The language server for TypeSpec, a language for defining cloud service APIs and shapes. +The language server for TypeSpec, a language for defining cloud service APIs and shapes. - `tsp-server` can be installed together with the typespec compiler via `npm`: - ```sh - npm install -g @typespec/compiler - ``` -@type vim.lsp.Config +`tsp-server` can be installed together with the typespec compiler via `npm`: +```sh +npm install -g @typespec/compiler +``` Snippet to enable the language server: ```lua @@ -12561,7 +12320,6 @@ Default config: ## ttags https://github.com/npezza93/ttags -@type vim.lsp.Config Snippet to enable the language server: ```lua @@ -12588,18 +12346,17 @@ Default config: https://www.npmjs.com/package/turbo-language-server - `turbo-language-server` can be installed via `npm`: +`turbo-language-server` can be installed via `npm`: - ```sh - npm install -g turbo-language-server - ``` +```sh +npm install -g turbo-language-server +``` - or via `yarn`: +or via `yarn`: - ```sh - yarn global add turbo-language-server - ``` -@type vim.lsp.Config +```sh +yarn global add turbo-language-server +``` Snippet to enable the language server: ```lua @@ -12656,11 +12413,10 @@ Default config: https://github.com/tqchen/ffi-navigator - The Language Server for FFI calls in TVM to be able jump between python and C++ +The Language Server for FFI calls in TVM to be able jump between python and C++ - FFI navigator can be installed with `pip install ffi-navigator`, buf for more details, please see - https://github.com/tqchen/ffi-navigator?tab=readme-ov-file#installation -@type vim.lsp.Config +FFI navigator can be installed with `pip install ffi-navigator`, buf for more details, please see +https://github.com/tqchen/ffi-navigator?tab=readme-ov-file#installation Snippet to enable the language server: ```lua @@ -12687,11 +12443,10 @@ Default config: https://github.com/moetelo/twiggy - `twiggy-language-server` can be installed via `npm`: - ```sh - npm install -g twiggy-language-server - ``` -@type vim.lsp.Config +`twiggy-language-server` can be installed via `npm`: +```sh +npm install -g twiggy-language-server +``` Snippet to enable the language server: ```lua @@ -12718,10 +12473,9 @@ Default config: https://github.com/astral-sh/ty - A Language Server Protocol implementation for ty, an extremely fast Python type checker and language server, written in Rust. +A Language Server Protocol implementation for ty, an extremely fast Python type checker and language server, written in Rust. - For installation instructions, please refer to the [ty documentation](https://github.com/astral-sh/ty/blob/main/README.md#getting-started). -@type vim.lsp.Config +For installation instructions, please refer to the [ty documentation](https://github.com/astral-sh/ty/blob/main/README.md#getting-started). Snippet to enable the language server: ```lua @@ -12748,8 +12502,7 @@ Default config: https://github.com/ruby/typeprof - `typeprof` is the built-in analysis and LSP tool for Ruby 3.1+. -@type vim.lsp.Config +`typeprof` is the built-in analysis and LSP tool for Ruby 3.1+. Snippet to enable the language server: ```lua @@ -12775,12 +12528,11 @@ Default config: ## typos_lsp https://github.com/crate-ci/typos - https://github.com/tekumara/typos-lsp +https://github.com/tekumara/typos-lsp - A Language Server Protocol implementation for Typos, a low false-positive - source code spell checker, written in Rust. Download it from the releases page - on GitHub: https://github.com/tekumara/typos-lsp/releases -@type vim.lsp.Config +A Language Server Protocol implementation for Typos, a low false-positive +source code spell checker, written in Rust. Download it from the releases page +on GitHub: https://github.com/tekumara/typos-lsp/releases Snippet to enable the language server: ```lua @@ -12807,8 +12559,7 @@ Default config: https://github.com/nvarner/typst-lsp - Language server for Typst. -@type vim.lsp.Config +Language server for Typst. Snippet to enable the language server: ```lua @@ -12835,10 +12586,9 @@ Default config: https://github.com/uiua-lang/uiua/ - The builtin language server of the Uiua interpreter. +The builtin language server of the Uiua interpreter. - The Uiua interpreter can be installed with `cargo install uiua` -@type vim.lsp.Config +The Uiua interpreter can be installed with `cargo install uiua` Snippet to enable the language server: ```lua @@ -12864,13 +12614,12 @@ Default config: ## ungrammar_languageserver https://github.com/binhtran432k/ungrammar-language-features - Language Server for Ungrammar. +Language Server for Ungrammar. - Ungrammar Language Server can be installed via npm: - ```sh - npm i ungrammar-languageserver -g - ``` -@type vim.lsp.Config +Ungrammar Language Server can be installed via npm: +```sh +npm i ungrammar-languageserver -g +``` Snippet to enable the language server: ```lua @@ -12936,11 +12685,10 @@ Default config: https://github.com/xna00/unocss-language-server - UnoCSS Language Server can be installed via npm: - ```sh - npm i unocss-language-server -g - ``` -@type vim.lsp.Config +UnoCSS Language Server can be installed via npm: +```sh +npm i unocss-language-server -g +``` Snippet to enable the language server: ```lua @@ -12967,20 +12715,19 @@ Default config: ## uvls https://codeberg.org/caradhras/uvls - Language server for UVL, written using tree sitter and rust. - You can install the server easily using cargo: - ```sh - git clone https://codeberg.org/caradhras/uvls - cd uvls - cargo install --path . - ``` +Language server for UVL, written using tree sitter and rust. +You can install the server easily using cargo: +```sh +git clone https://codeberg.org/caradhras/uvls +cd uvls +cargo install --path . +``` - Note: To activate properly nvim needs to know the uvl filetype. - You can add it via: - ```lua - vim.cmd([[au BufRead,BufNewFile *.uvl setfiletype uvl]]) - ``` -@type vim.lsp.Config +Note: To activate properly nvim needs to know the uvl filetype. +You can add it via: +```lua +vim.cmd([[au BufRead,BufNewFile *.uvl setfiletype uvl]]) +``` Snippet to enable the language server: ```lua @@ -13007,10 +12754,9 @@ Default config: https://github.com/vlang/v-analyzer - V language server. +V language server. - `v-analyzer` can be installed by following the instructions [here](https://github.com/vlang/v-analyzer#installation). -@type vim.lsp.Config +`v-analyzer` can be installed by following the instructions [here](https://github.com/vlang/v-analyzer#installation). Snippet to enable the language server: ```lua @@ -13049,7 +12795,6 @@ Vacuum is the worlds fastest OpenAPI 3, OpenAPI 2 / Swagger linter and quality a }, } ``` -@type vim.lsp.Config Snippet to enable the language server: ```lua @@ -13098,8 +12843,7 @@ Default config: https://github.com/errata-ai/vale-ls - An implementation of the Language Server Protocol (LSP) for the Vale command-line tool. -@type vim.lsp.Config +An implementation of the Language Server Protocol (LSP) for the Vale command-line tool. Snippet to enable the language server: ```lua @@ -13126,8 +12870,7 @@ Default config: https://github.com/Davidyz/VectorCode - A Language Server Protocol implementation for VectorCode, a code repository indexing tool. -@type vim.lsp.Config +A Language Server Protocol implementation for VectorCode, a code repository indexing tool. Snippet to enable the language server: ```lua @@ -13139,7 +12882,7 @@ Default config: ```lua { "vectorcode-server" } ``` -- `root_dir`: [../lsp/vectorcode_server.lua:6](../lsp/vectorcode_server.lua#L6) +- `root_dir`: [../lsp/vectorcode_server.lua:7](../lsp/vectorcode_server.lua#L7) - `settings` : ```lua {} @@ -13151,13 +12894,12 @@ Default config: https://github.com/chipsalliance/verible - A linter and formatter for verilog and SystemVerilog files. +A linter and formatter for verilog and SystemVerilog files. - Release binaries can be downloaded from [here](https://github.com/chipsalliance/verible/releases) - and placed in a directory on PATH. +Release binaries can be downloaded from [here](https://github.com/chipsalliance/verible/releases) +and placed in a directory on PATH. - See https://github.com/chipsalliance/verible/tree/master/verilog/tools/ls/README.md for options. -@type vim.lsp.Config +See https://github.com/chipsalliance/verible/tree/master/verilog/tools/ls/README.md for options. Snippet to enable the language server: ```lua @@ -13184,20 +12926,19 @@ Default config: https://github.com/vivekmalneedi/veridian - A SystemVerilog LanguageServer. +A SystemVerilog LanguageServer. - Download the latest release for your OS from the releases page +Download the latest release for your OS from the releases page - Install with slang feature, if C++17 compiler is available: - ``` - cargo install --git https://github.com/vivekmalneedi/veridian.git --all-features - ``` +Install with slang feature, if C++17 compiler is available: +``` +cargo install --git https://github.com/vivekmalneedi/veridian.git --all-features +``` - Install if C++17 compiler is not available: - ``` - cargo install --git https://github.com/vivekmalneedi/veridian.git - ``` -@type vim.lsp.Config +Install if C++17 compiler is not available: +``` +cargo install --git https://github.com/vivekmalneedi/veridian.git +``` Snippet to enable the language server: ```lua @@ -13224,13 +12965,12 @@ Default config: https://github.com/veryl-lang/veryl - Language server for Veryl +Language server for Veryl - `veryl-ls` can be installed via `cargo`: - ```sh - cargo install veryl-ls - ``` -@type vim.lsp.Config +`veryl-ls` can be installed via `cargo`: + ```sh + cargo install veryl-ls + ``` Snippet to enable the language server: ```lua @@ -13308,31 +13048,30 @@ Default config: Install vhdl_ls from https://github.com/VHDL-LS/rust_hdl and add it to path - Configuration +Configuration - The language server needs to know your library mapping to perform full analysis of the code. For this it uses a configuration file in the TOML format named vhdl_ls.toml. +The language server needs to know your library mapping to perform full analysis of the code. For this it uses a configuration file in the TOML format named vhdl_ls.toml. - vhdl_ls will load configuration files in the following order of priority (first to last): +vhdl_ls will load configuration files in the following order of priority (first to last): - A file named .vhdl_ls.toml in the user home folder. - A file name from the VHDL_LS_CONFIG environment variable. - A file named vhdl_ls.toml in the workspace root. + A file named .vhdl_ls.toml in the user home folder. + A file name from the VHDL_LS_CONFIG environment variable. + A file named vhdl_ls.toml in the workspace root. - Settings in a later files overwrites those from previously loaded files. +Settings in a later files overwrites those from previously loaded files. - Example vhdl_ls.toml - ``` - # File names are either absolute or relative to the parent folder of the vhdl_ls.toml file - [libraries] - lib2.files = [ - 'pkg2.vhd', - ] - lib1.files = [ - 'pkg1.vhd', - 'tb_ent.vhd' - ] - ``` -@type vim.lsp.Config +Example vhdl_ls.toml +``` +# File names are either absolute or relative to the parent folder of the vhdl_ls.toml file +[libraries] +lib2.files = [ + 'pkg2.vhd', +] +lib1.files = [ + 'pkg1.vhd', + 'tb_ent.vhd' +] +``` Snippet to enable the language server: ```lua @@ -13359,11 +13098,10 @@ Default config: https://github.com/iamcco/vim-language-server - You can install vim-language-server via npm: - ```sh - npm install -g vim-language-server - ``` -@type vim.lsp.Config +You can install vim-language-server via npm: +```sh +npm install -g vim-language-server +``` Snippet to enable the language server: ```lua @@ -13412,22 +13150,21 @@ Default config: https://github.com/forcedotcom/salesforcedx-vscode - Language server for Visualforce. +Language server for Visualforce. - For manual installation, download the .vsix archive file from the - [forcedotcom/salesforcedx-vscode](https://github.com/forcedotcom/salesforcedx-vscode) - GitHub releases. Then, configure `cmd` to run the Node script at the unpacked location: +For manual installation, download the .vsix archive file from the +[forcedotcom/salesforcedx-vscode](https://github.com/forcedotcom/salesforcedx-vscode) +GitHub releases. Then, configure `cmd` to run the Node script at the unpacked location: - ```lua - vim.lsp.config('visualforce_ls', { - cmd = { - 'node', - '/path/to/unpacked/archive/extension/node_modules/@salesforce/salesforcedx-visualforce-language-server/out/src/visualforceServer.js', - '--stdio' - } - }) - ``` -@type vim.lsp.Config +```lua +vim.lsp.config('visualforce_ls', { + cmd = { + 'node', + '/path/to/unpacked/archive/extension/node_modules/@salesforce/salesforcedx-visualforce-language-server/out/src/visualforceServer.js', + '--stdio' + } +}) +``` Snippet to enable the language server: ```lua @@ -13459,10 +13196,9 @@ Default config: https://github.com/vlang/vls - V language server. +V language server. - `v-language-server` can be installed by following the instructions [here](https://github.com/vlang/vls#installation). -@type vim.lsp.Config +`v-language-server` can be installed by following the instructions [here](https://github.com/vlang/vls#installation). Snippet to enable the language server: ```lua @@ -13518,7 +13254,6 @@ Default config: ## vscoqtop https://github.com/coq-community/vscoq -@type vim.lsp.Config Snippet to enable the language server: ```lua @@ -13672,9 +13407,8 @@ Default config: https://github.com/g-plane/wasm-language-tools - WebAssembly Language Tools aims to provide and improve the editing experience of WebAssembly Text Format. - It also provides an out-of-the-box formatter (a.k.a. pretty printer) for WebAssembly Text Format. -@type vim.lsp.Config +WebAssembly Language Tools aims to provide and improve the editing experience of WebAssembly Text Format. +It also provides an out-of-the-box formatter (a.k.a. pretty printer) for WebAssembly Text Format. Snippet to enable the language server: ```lua @@ -13697,11 +13431,10 @@ Default config: https://github.com/wgsl-analyzer/wgsl-analyzer - `wgsl-analyzer` can be installed via `cargo`: - ```sh - cargo install --git https://github.com/wgsl-analyzer/wgsl-analyzer wgsl-analyzer - ``` -@type vim.lsp.Config +`wgsl-analyzer` can be installed via `cargo`: +```sh +cargo install --git https://github.com/wgsl-analyzer/wgsl-analyzer wgsl-analyzer +``` Snippet to enable the language server: ```lua @@ -13732,63 +13465,62 @@ Default config: https://github.com/redhat-developer/yaml-language-server - `yaml-language-server` can be installed via `yarn`: - ```sh - yarn global add yaml-language-server - ``` +`yaml-language-server` can be installed via `yarn`: +```sh +yarn global add yaml-language-server +``` - To use a schema for validation, there are two options: +To use a schema for validation, there are two options: - 1. Add a modeline to the file. A modeline is a comment of the form: +1. Add a modeline to the file. A modeline is a comment of the form: - ``` - # yaml-language-server: $schema=<urlToTheSchema|relativeFilePath|absoluteFilePath}> - ``` +``` +# yaml-language-server: $schema=<urlToTheSchema|relativeFilePath|absoluteFilePath}> +``` - where the relative filepath is the path relative to the open yaml file, and the absolute filepath - is the filepath relative to the filesystem root ('/' on unix systems) +where the relative filepath is the path relative to the open yaml file, and the absolute filepath +is the filepath relative to the filesystem root ('/' on unix systems) - 2. Associated a schema url, relative , or absolute (to root of project, not to filesystem root) path to - the a glob pattern relative to the detected project root. Check `:checkhealth vim.lsp` to determine the resolved project - root. +2. Associated a schema url, relative , or absolute (to root of project, not to filesystem root) path to +the a glob pattern relative to the detected project root. Check `:checkhealth vim.lsp` to determine the resolved project +root. - ```lua - vim.lsp.config('yamlls', { - ... - settings = { - yaml = { - ... -- other settings. note this overrides the lspconfig defaults. - schemas = { - ["https://json.schemastore.org/github-workflow.json"] = "/.github/workflows/*", - ["../path/relative/to/file.yml"] = "/.github/workflows/*", - ["/path/from/root/of/project"] = "/.github/workflows/*", - }, - }, - } - }) - ``` +```lua +vim.lsp.config('yamlls', { + ... + settings = { + yaml = { + ... -- other settings. note this overrides the lspconfig defaults. + schemas = { + ["https://json.schemastore.org/github-workflow.json"] = "/.github/workflows/*", + ["../path/relative/to/file.yml"] = "/.github/workflows/*", + ["/path/from/root/of/project"] = "/.github/workflows/*", + }, + }, + } +}) +``` - Currently, kubernetes is special-cased in yammls, see the following upstream issues: - * [#211](https://github.com/redhat-developer/yaml-language-server/issues/211). - * [#307](https://github.com/redhat-developer/yaml-language-server/issues/307). +Currently, kubernetes is special-cased in yammls, see the following upstream issues: +* [#211](https://github.com/redhat-developer/yaml-language-server/issues/211). +* [#307](https://github.com/redhat-developer/yaml-language-server/issues/307). - To override a schema to use a specific k8s schema version (for example, to use 1.18): +To override a schema to use a specific k8s schema version (for example, to use 1.18): - ```lua - vim.lsp.config('yamlls', { - ... - settings = { - yaml = { - ... -- other settings. note this overrides the lspconfig defaults. - schemas = { - ["https://raw.githubusercontent.com/yannh/kubernetes-json-schema/refs/heads/master/v1.32.1-standalone-strict/all.json"] = "/*.k8s.yaml", - ... -- other schemas - }, - }, - } - }) - ``` -@type vim.lsp.Config +```lua +vim.lsp.config('yamlls', { + ... + settings = { + yaml = { + ... -- other settings. note this overrides the lspconfig defaults. + schemas = { + ["https://raw.githubusercontent.com/yannh/kubernetes-json-schema/refs/heads/master/v1.32.1-standalone-strict/all.json"] = "/*.k8s.yaml", + ... -- other schemas + }, + }, + } +}) +``` Snippet to enable the language server: ```lua @@ -13830,8 +13562,7 @@ Default config: https://github.com/TypeFox/yang-lsp - A Language Server for the YANG data modeling language. -@type vim.lsp.Config +A Language Server for the YANG data modeling language. Snippet to enable the language server: ```lua @@ -13858,12 +13589,11 @@ Default config: https://pypi.org/project/yls-yara/ - An YLS plugin adding YARA linting capabilities. +An YLS plugin adding YARA linting capabilities. - This plugin runs yara.compile on every save, parses the errors, and returns list of diagnostic messages. +This plugin runs yara.compile on every save, parses the errors, and returns list of diagnostic messages. - Language Server: https://github.com/avast/yls -@type vim.lsp.Config +Language Server: https://github.com/avast/yls Snippet to enable the language server: ```lua @@ -13890,8 +13620,7 @@ Default config: https://ziggy-lang.io/documentation/ziggy-lsp/ - Language server for the Ziggy data serialization format -@type vim.lsp.Config +Language server for the Ziggy data serialization format Snippet to enable the language server: ```lua @@ -13918,8 +13647,7 @@ Default config: https://ziggy-lang.io/documentation/ziggy-lsp/ - Language server for schema files of the Ziggy data serialization format -@type vim.lsp.Config +Language server for schema files of the Ziggy data serialization format Snippet to enable the language server: ```lua diff --git a/doc/configs.txt b/doc/configs.txt index 8020293d..fd3a939a 100644 --- a/doc/configs.txt +++ b/doc/configs.txt @@ -62,11 +62,10 @@ aiken https://github.com/aiken-lang/aiken - A language server for Aiken Programming Language. - [Installation](https://aiken-lang.org/installation-instructions) +A language server for Aiken Programming Language. +[Installation](https://aiken-lang.org/installation-instructions) - It can be i -@type vim.lsp.Config +It can be i Snippet to enable the language server: >lua vim.lsp.enable('aiken') @@ -86,10 +85,9 @@ air https://github.com/posit-dev/air - Air is an R formatter and language server, written in Rust. +Air is an R formatter and language server, written in Rust. - Refer to the [documentation](https://posit-dev.github.io/air/editors.html) for more details. -@type vim.lsp.Config +Refer to the [documentation](https://posit-dev.github.io/air/editors.html) for more details. Snippet to enable the language server: >lua vim.lsp.enable('air') @@ -109,26 +107,21 @@ alloy_ls https://github.com/AlloyTools/org.alloytools.alloy - Alloy is a formal specification language for describing structures and a tool for exploring them. +Alloy is a formal specification language for describing structures and a tool for exploring them. - You may also need to configure the filetype for Alloy (*.als) files: - - ``` - autocmd BufNewFile,BufRead *.als set filetype=alloy - ``` - - or +You may also need to configure the filetype for Alloy (*.als) files: +> + autocmd BufNewFile,BufRead *.als set filetype=alloy - ```lua - vim.filetype.add({ - pattern = { - ['.*/*.als'] = 'alloy', - }, - }) - ``` +or +>lua + vim.filetype.add({ + pattern = { + ['.*/*.als'] = 'alloy', + }, + }) - Alternatively, you may use a syntax plugin like https://github.com/runoshun/vim-alloy. -@type vim.lsp.Config +Alternatively, you may use a syntax plugin like https://github.com/runoshun/vim-alloy. Snippet to enable the language server: >lua vim.lsp.enable('alloy_ls') @@ -148,13 +141,12 @@ anakin_language_server https://pypi.org/project/anakin-language-server/ - `anakin-language-server` is yet another Jedi Python language server. +`anakin-language-server` is yet another Jedi Python language server. - Available options: +Available options: - * Initialization: https://github.com/muffinmad/anakin-language-server#initialization-option - * Configuration: https://github.com/muffinmad/anakin-language-server#configuration-options -@type vim.lsp.Config +* Initialization: https://github.com/muffinmad/anakin-language-server#initialization-option +* Configuration: https://github.com/muffinmad/anakin-language-server#configuration-options Snippet to enable the language server: >lua vim.lsp.enable('anakin_language_server') @@ -206,14 +198,11 @@ ansiblels https://github.com/ansible/vscode-ansible - Language server for the ansible configuration management tool. +Language server for the ansible configuration management tool. - `ansible-language-server` can be installed via `npm`: - - ```sh - npm install -g @ansible/ansible-language-server - ``` -@type vim.lsp.Config +`ansible-language-server` can be installed via `npm`: +>sh + npm install -g @ansible/ansible-language-server Snippet to enable the language server: >lua vim.lsp.enable('ansiblels') @@ -254,11 +243,8 @@ antlersls https://www.npmjs.com/package/antlers-language-server - `antlersls` can be installed via `npm`: - ```sh - npm install -g antlers-language-server - ``` -@type vim.lsp.Config +`antlersls` can be installed via `npm` >sh + npm install -g antlers-language-server Snippet to enable the language server: >lua vim.lsp.enable('antlersls') @@ -358,11 +344,10 @@ asm_lsp https://github.com/bergercookie/asm-lsp - Language Server for NASM/GAS/GO Assembly +Language Server for NASM/GAS/GO Assembly - `asm-lsp` can be installed via cargo: - cargo install asm-lsp -@type vim.lsp.Config +`asm-lsp` can be installed via cargo: +cargo install asm-lsp Snippet to enable the language server: >lua vim.lsp.enable('asm_lsp') @@ -382,12 +367,9 @@ ast_grep https://ast-grep.github.io/ - ast-grep(sg) is a fast and polyglot tool for code structural search, lint, rewriting at large scale. - ast-grep LSP only works in projects that have `sgconfig.y[a]ml` in their root directories. - ```sh - npm install [-g] @ast-grep/cli - ``` -@type vim.lsp.Config +ast-grep(sg) is a fast and polyglot tool for code structural search, lint, rewriting at large scale. +ast-grep LSP only works in projects that have `sgconfig.y[a]ml` in their root directories >sh + npm install [-g] @ast-grep/cli Snippet to enable the language server: >lua vim.lsp.enable('ast_grep') @@ -398,7 +380,7 @@ Default config: { "ast-grep", "lsp" } - filetypes: >lua { "c", "cpp", "rust", "go", "java", "python", "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx", "html", "css", "kotlin", "dart", "lua" } -- reuse_client (use "gF" to view): ../lsp/ast_grep.lua:11 +- reuse_client (use "gF" to view): ../lsp/ast_grep.lua:12 - root_markers: >lua { "sgconfig.yaml", "sgconfig.yml" } - `workspace_required` : `true` @@ -435,60 +417,52 @@ atlas https://github.com/ariga/atlas - Language server for Atlas config and schema files. - - You may also need to configure the filetype for *.hcl files: - - ```vim - autocmd BufNewFile,BufRead atlas.hcl set filetype=atlas-config - autocmd BufNewFile,BufRead *.my.hcl set filetype=atlas-schema-mysql - autocmd BufNewFile,BufRead *.pg.hcl set filetype=atlas-schema-postgresql - autocmd BufNewFile,BufRead *.lt.hcl set filetype=atlas-schema-sqlite - autocmd BufNewFile,BufRead *.ch.hcl set filetype=atlas-schema-clickhouse - autocmd BufNewFile,BufRead *.ms.hcl set filetype=atlas-schema-mssql - autocmd BufNewFile,BufRead *.rs.hcl set filetype=atlas-schema-redshift - autocmd BufNewFile,BufRead *.test.hcl set filetype=atlas-test - autocmd BufNewFile,BufRead *.plan.hcl set filetype=atlas-plan - autocmd BufNewFile,BufRead *.rule.hcl set filetype=atlas-rule - ``` - - or - - ```lua - vim.filetype.add({ - filename = { - ['atlas.hcl'] = 'atlas-config', - }, - pattern = { - ['.*/*.my.hcl'] = 'atlas-schema-mysql', - ['.*/*.pg.hcl'] = 'atlas-schema-postgresql', - ['.*/*.lt.hcl'] = 'atlas-schema-sqlite', - ['.*/*.ch.hcl'] = 'atlas-schema-clickhouse', - ['.*/*.ms.hcl'] = 'atlas-schema-mssql', - ['.*/*.rs.hcl'] = 'atlas-schema-redshift', - ['.*/*.test.hcl'] = 'atlas-test', - ['.*/*.plan.hcl'] = 'atlas-plan', - ['.*/*.rule.hcl'] = 'atlas-rule', - }, - }) - ``` +Language server for Atlas config and schema files. - Optionally, tell treesitter to treat Atlas filetypes as HCL for better syntax highlighting: +You may also need to configure the filetype for *.hcl files: +>vim + autocmd BufNewFile,BufRead atlas.hcl set filetype=atlas-config + autocmd BufNewFile,BufRead *.my.hcl set filetype=atlas-schema-mysql + autocmd BufNewFile,BufRead *.pg.hcl set filetype=atlas-schema-postgresql + autocmd BufNewFile,BufRead *.lt.hcl set filetype=atlas-schema-sqlite + autocmd BufNewFile,BufRead *.ch.hcl set filetype=atlas-schema-clickhouse + autocmd BufNewFile,BufRead *.ms.hcl set filetype=atlas-schema-mssql + autocmd BufNewFile,BufRead *.rs.hcl set filetype=atlas-schema-redshift + autocmd BufNewFile,BufRead *.test.hcl set filetype=atlas-test + autocmd BufNewFile,BufRead *.plan.hcl set filetype=atlas-plan + autocmd BufNewFile,BufRead *.rule.hcl set filetype=atlas-rule - ```lua - vim.treesitter.language.register('hcl', 'atlas-config') - vim.treesitter.language.register('hcl', 'atlas-schema-mysql') - vim.treesitter.language.register('hcl', 'atlas-schema-postgresql') - vim.treesitter.language.register('hcl', 'atlas-schema-sqlite') - vim.treesitter.language.register('hcl', 'atlas-schema-clickhouse') - vim.treesitter.language.register('hcl', 'atlas-schema-mssql') - vim.treesitter.language.register('hcl', 'atlas-schema-redshift') - vim.treesitter.language.register('hcl', 'atlas-test') - vim.treesitter.language.register('hcl', 'atlas-plan') - vim.treesitter.language.register('hcl', 'atlas-rule') - ``` +or +>lua + vim.filetype.add({ + filename = { + ['atlas.hcl'] = 'atlas-config', + }, + pattern = { + ['.*/*.my.hcl'] = 'atlas-schema-mysql', + ['.*/*.pg.hcl'] = 'atlas-schema-postgresql', + ['.*/*.lt.hcl'] = 'atlas-schema-sqlite', + ['.*/*.ch.hcl'] = 'atlas-schema-clickhouse', + ['.*/*.ms.hcl'] = 'atlas-schema-mssql', + ['.*/*.rs.hcl'] = 'atlas-schema-redshift', + ['.*/*.test.hcl'] = 'atlas-test', + ['.*/*.plan.hcl'] = 'atlas-plan', + ['.*/*.rule.hcl'] = 'atlas-rule', + }, + }) -@type vim.lsp.Config +Optionally, tell treesitter to treat Atlas filetypes as HCL for better syntax highlighting: +>lua + vim.treesitter.language.register('hcl', 'atlas-config') + vim.treesitter.language.register('hcl', 'atlas-schema-mysql') + vim.treesitter.language.register('hcl', 'atlas-schema-postgresql') + vim.treesitter.language.register('hcl', 'atlas-schema-sqlite') + vim.treesitter.language.register('hcl', 'atlas-schema-clickhouse') + vim.treesitter.language.register('hcl', 'atlas-schema-mssql') + vim.treesitter.language.register('hcl', 'atlas-schema-redshift') + vim.treesitter.language.register('hcl', 'atlas-test') + vim.treesitter.language.register('hcl', 'atlas-plan') + vim.treesitter.language.register('hcl', 'atlas-rule') Snippet to enable the language server: >lua vim.lsp.enable('atlas') @@ -605,34 +579,29 @@ azure_pipelines_ls https://github.com/microsoft/azure-pipelines-language-server - An Azure Pipelines language server - - `azure-pipelines-ls` can be installed via `npm`: +An Azure Pipelines language server - ```sh - npm install -g azure-pipelines-language-server - ``` +`azure-pipelines-ls` can be installed via `npm`: +>sh + npm install -g azure-pipelines-language-server - By default `azure-pipelines-ls` will only work in files named `azure-pipelines.yml`, this can be changed by providing additional settings like so: - ```lua - vim.lsp.config('azure_pipelines_ls', { - ... -- other configuration - settings = { - yaml = { - schemas = { - ["https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json"] = { - "/azure-pipeline*.y*l", - "/*.azure*", - "Azure-Pipelines/**/*.y*l", - "Pipelines/*.y*l", - }, - }, - }, - }, - }) - ``` - The Azure Pipelines LSP is a fork of `yaml-language-server` and as such the same settings can be passed to it as `yaml-language-server`. -@type vim.lsp.Config +By default `azure-pipelines-ls` will only work in files named `azure-pipelines.yml`, this can be changed by providing additional settings like so >lua + vim.lsp.config('azure_pipelines_ls', { + ... -- other configuration + settings = { + yaml = { + schemas = { + ["https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json"] = { + "/azure-pipeline*.y*l", + "/*.azure*", + "Azure-Pipelines/**/*.y*l", + "Pipelines/*.y*l", + }, + }, + }, + }, + }) +The Azure Pipelines LSP is a fork of `yaml-language-server` and as such the same settings can be passed to it as `yaml-language-server`. Snippet to enable the language server: >lua vim.lsp.enable('azure_pipelines_ls') @@ -654,42 +623,37 @@ bacon_ls https://github.com/crisidev/bacon-ls - A Language Server Protocol wrapper for [bacon](https://dystroy.org/bacon/). - It offers textDocument/diagnostic and workspace/diagnostic capabilities for Rust - workspaces using the Bacon export locations file. - - It requires `bacon` and `bacon-ls` to be installed on the system using - [mason.nvim](https://github.com/williamboman/mason.nvim) or manually +A Language Server Protocol wrapper for [bacon](https://dystroy.org/bacon/). +It offers textDocument/diagnostic and workspace/diagnostic capabilities for Rust +workspaces using the Bacon export locations file. - ```sh - $ cargo install --locked bacon bacon-ls - ``` - - Settings can be changed using the `init_options` dictionary:util +It requires `bacon` and `bacon-ls` to be installed on the system using +[mason.nvim](https://github.com/williamboman/mason.nvim) or manually +>sh + $ cargo install --locked bacon bacon-ls - ```lua - init_options = { - -- Bacon export filename (default: .bacon-locations). - locationsFile = ".bacon-locations", - -- Try to update diagnostics every time the file is saved (default: true). - updateOnSave = true, - -- How many milliseconds to wait before updating diagnostics after a save (default: 1000). - updateOnSaveWaitMillis = 1000, - -- Try to update diagnostics every time the file changes (default: true). - updateOnChange = true, - -- Try to validate that bacon preferences are setup correctly to work with bacon-ls (default: true). - validateBaconPreferences = true, - -- f no bacon preferences file is found, create a new preferences file with the bacon-ls job definition (default: true). - createBaconPreferencesFile = true, - -- Run bacon in background for the bacon-ls job (default: true) - runBaconInBackground = true, - -- Command line arguments to pass to bacon running in background (default "--headless -j bacon-ls") - runBaconInBackgroundCommandArguments = "--headless -j bacon-ls", - -- How many milliseconds to wait between background diagnostics check to synchronize all open files (default: 2000). - synchronizeAllOpenFilesWaitMillis = 2000, - } - ``` -@type vim.lsp.Config +Settings can be changed using the `init_options` dictionary:util +>lua + init_options = { + -- Bacon export filename (default: .bacon-locations). + locationsFile = ".bacon-locations", + -- Try to update diagnostics every time the file is saved (default: true). + updateOnSave = true, + -- How many milliseconds to wait before updating diagnostics after a save (default: 1000). + updateOnSaveWaitMillis = 1000, + -- Try to update diagnostics every time the file changes (default: true). + updateOnChange = true, + -- Try to validate that bacon preferences are setup correctly to work with bacon-ls (default: true). + validateBaconPreferences = true, + -- f no bacon preferences file is found, create a new preferences file with the bacon-ls job definition (default: true). + createBaconPreferencesFile = true, + -- Run bacon in background for the bacon-ls job (default: true) + runBaconInBackground = true, + -- Command line arguments to pass to bacon running in background (default "--headless -j bacon-ls") + runBaconInBackgroundCommandArguments = "--headless -j bacon-ls", + -- How many milliseconds to wait between background diagnostics check to synchronize all open files (default: 2000). + synchronizeAllOpenFilesWaitMillis = 2000, + } Snippet to enable the language server: >lua vim.lsp.enable('bacon_ls') @@ -711,9 +675,8 @@ ballerina Ballerina language server - The Ballerina language's CLI tool comes with its own language server implementation. - The `bal` command line tool must be installed and available in your system's PATH. -@type vim.lsp.Config +The Ballerina language's CLI tool comes with its own language server implementation. +The `bal` command line tool must be installed and available in your system's PATH. Snippet to enable the language server: >lua vim.lsp.enable('ballerina') @@ -764,13 +727,10 @@ bashls https://github.com/bash-lsp/bash-language-server - `bash-language-server` can be installed via `npm`: - ```sh - npm i -g bash-language-server - ``` +`bash-language-server` can be installed via `npm` >sh + npm i -g bash-language-server - Language server for bash, written using tree sitter in typescript. -@type vim.lsp.Config +Language server for bash, written using tree sitter in typescript. Snippet to enable the language server: >lua vim.lsp.enable('bashls') @@ -796,12 +756,9 @@ basics_ls https://github.com/antonk52/basics-language-server/ - Buffer, path, and snippet completion - - ```sh - npm install -g basics-language-server - ``` -@type vim.lsp.Config +Buffer, path, and snippet completion +>sh + npm install -g basics-language-server Snippet to enable the language server: >lua vim.lsp.enable('basics_ls') @@ -831,18 +788,15 @@ bazelrc_lsp https://github.com/salesforce-misc/bazelrc-lsp - `bazelrc-lsp` is a LSP for `.bazelrc` configuration files. +`bazelrc-lsp` is a LSP for `.bazelrc` configuration files. - The `.bazelrc` file type is not detected automatically, you can register it manually (see below) or override the filetypes: - - ```lua - vim.filetype.add { - pattern = { - ['.*.bazelrc'] = 'bazelrc', - }, - } - ``` -@type vim.lsp.Config +The `.bazelrc` file type is not detected automatically, you can register it manually (see below) or override the filetypes: +>lua + vim.filetype.add { + pattern = { + ['.*.bazelrc'] = 'bazelrc', + }, + } Snippet to enable the language server: >lua vim.lsp.enable('bazelrc_lsp') @@ -862,8 +816,7 @@ beancount https://github.com/polarmutex/beancount-language-server#installation - See https://github.com/polarmutex/beancount-language-server#configuration for configuration options -@type vim.lsp.Config +See https://github.com/polarmutex/beancount-language-server#configuration for configuration options Snippet to enable the language server: >lua vim.lsp.enable('beancount') @@ -884,37 +837,30 @@ Default config: bicep https://github.com/azure/bicep - Bicep language server +Bicep language server - Bicep language server can be installed by downloading and extracting a release of bicep-langserver.zip from [Bicep GitHub releases](https://github.com/Azure/bicep/releases). +Bicep language server can be installed by downloading and extracting a release of bicep-langserver.zip from [Bicep GitHub releases](https://github.com/Azure/bicep/releases). - Bicep language server requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed. +Bicep language server requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed. - Neovim does not have built-in support for the bicep filetype which is required for lspconfig to automatically launch the language server. +Neovim does not have built-in support for the bicep filetype which is required for lspconfig to automatically launch the language server. - Filetype detection can be added via an autocmd: - ```lua - vim.cmd [[ autocmd BufNewFile,BufRead *.bicep set filetype=bicep ]] - ``` +Filetype detection can be added via an autocmd >lua + vim.cmd [[ autocmd BufNewFile,BufRead *.bicep set filetype=bicep ]] - **By default, bicep language server does not have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary. - - ```lua - local bicep_lsp_bin = "/path/to/bicep-langserver/Bicep.LangServer.dll" - vim.lsp.config('bicep', { - cmd = { "dotnet", bicep_lsp_bin }; - ... - }) - ``` +**By default, bicep language server does not have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary. +>lua + local bicep_lsp_bin = "/path/to/bicep-langserver/Bicep.LangServer.dll" + vim.lsp.config('bicep', { + cmd = { "dotnet", bicep_lsp_bin }; + ... + }) - To download the latest release and place in /usr/local/bin/bicep-langserver: - ```bash - (cd $(mktemp -d) \ - && curl -fLO https://github.com/Azure/bicep/releases/latest/download/bicep-langserver.zip \ - && rm -rf /usr/local/bin/bicep-langserver \ - && unzip -d /usr/local/bin/bicep-langserver bicep-langserver.zip) - ``` -@type vim.lsp.Config +To download the latest release and place in /usr/local/bin/bicep-langserver >bash + (cd $(mktemp -d) \ + && curl -fLO https://github.com/Azure/bicep/releases/latest/download/bicep-langserver.zip \ + && rm -rf /usr/local/bin/bicep-langserver \ + && unzip -d /usr/local/bin/bicep-langserver bicep-langserver.zip) Snippet to enable the language server: >lua vim.lsp.enable('bicep') @@ -958,7 +904,6 @@ Default config: bitbake_language_server 🛠️ bitbake language server -@type vim.lsp.Config Snippet to enable the language server: >lua vim.lsp.enable('bitbake_language_server') @@ -978,11 +923,10 @@ blueprint_ls https://gitlab.gnome.org/jwestman/blueprint-compiler - `blueprint-compiler` can be installed via your system package manager. +`blueprint-compiler` can be installed via your system package manager. - Language server for the blueprint markup language, written in python and part - of the blueprint-compiler. -@type vim.lsp.Config +Language server for the blueprint markup language, written in python and part +of the blueprint-compiler. Snippet to enable the language server: >lua vim.lsp.enable('blueprint_ls') @@ -1006,12 +950,9 @@ bqls https://github.com/kitagry/bqls - The `bqls` BigQuery language server can be installed by running: - - ```sh - $ go install github.com/kitagry/bqls@latest - ``` -@type vim.lsp.Config +The `bqls` BigQuery language server can be installed by running: +>sh + $ go install github.com/kitagry/bqls@latest Snippet to enable the language server: >lua vim.lsp.enable('bqls') @@ -1033,11 +974,8 @@ bright_script https://github.com/RokuCommunity/brighterscript - `brightscript` can be installed via `npm`: - ```sh - npm install -g brighterscript - ``` -@type vim.lsp.Config +`brightscript` can be installed via `npm` >sh + npm install -g brighterscript Snippet to enable the language server: >lua vim.lsp.enable('bright_script') @@ -1075,14 +1013,11 @@ buck2 https://github.com/facebook/buck2 - Build system, successor to Buck - - To better detect Buck2 project files, the following can be added: +Build system, successor to Buck - ``` - vim.cmd [[ autocmd BufRead,BufNewFile *.bxl,BUCK,TARGETS set filetype=bzl ]] - ``` -@type vim.lsp.Config +To better detect Buck2 project files, the following can be added: +> + vim.cmd [[ autocmd BufRead,BufNewFile *.bxl,BUCK,TARGETS set filetype=bzl ]] Snippet to enable the language server: >lua vim.lsp.enable('buck2') @@ -1101,10 +1036,9 @@ Default config: buddy_ls https://github.com/buddy-compiler/buddy-mlir#buddy-lsp-server - The Language Server for the buddy-mlir, a drop-in replacement for mlir-lsp-server, - supporting new dialects defined in buddy-mlir. - `buddy-lsp-server` can be installed at the buddy-mlir repository (buddy-compiler/buddy-mlir) -@type vim.lsp.Config +The Language Server for the buddy-mlir, a drop-in replacement for mlir-lsp-server, +supporting new dialects defined in buddy-mlir. +`buddy-lsp-server` can be installed at the buddy-mlir repository (buddy-compiler/buddy-mlir) Snippet to enable the language server: >lua vim.lsp.enable('buddy_ls') @@ -1146,13 +1080,10 @@ bufls https://github.com/bufbuild/buf-language-server - `buf-language-server` can be installed via `go install`: - ```sh - go install github.com/bufbuild/buf-language-server/cmd/bufls@latest - ``` +`buf-language-server` can be installed via `go install` >sh + go install github.com/bufbuild/buf-language-server/cmd/bufls@latest - bufls is a Protobuf language server compatible with Buf modules and workspaces -@type vim.lsp.Config +bufls is a Protobuf language server compatible with Buf modules and workspaces Snippet to enable the language server: >lua vim.lsp.enable('bufls') @@ -1172,10 +1103,9 @@ bzl https://bzl.io/ - https://docs.stack.build/docs/cli/installation +https://docs.stack.build/docs/cli/installation - https://docs.stack.build/docs/vscode/starlark-language-server -@type vim.lsp.Config +https://docs.stack.build/docs/vscode/starlark-language-server Snippet to enable the language server: >lua vim.lsp.enable('bzl') @@ -1195,8 +1125,7 @@ c3_lsp https://github.com/pherrymason/c3-lsp - Language Server for c3. -@type vim.lsp.Config +Language Server for c3. Snippet to enable the language server: >lua vim.lsp.enable('c3_lsp') @@ -1216,15 +1145,12 @@ cairo_ls [Cairo Language Server](https://github.com/starkware-libs/cairo/tree/main/crates/cairo-lang-language-server) - First, install Cairo following [this tutorial](https://book.cairo-lang.org/ch01-01-installation.html) +First, install Cairo following [this tutorial](https://book.cairo-lang.org/ch01-01-installation.html) - Then enable Cairo Language Server in your Lua configuration. - ```lua - vim.lsp.enable('cairo_ls') - ``` +Then enable Cairo Language Server in your Lua configuration >lua + vim.lsp.enable('cairo_ls') - *cairo-language-server is still under active development, some features might not work yet !* -@type vim.lsp.Config +*cairo-language-server is still under active development, some features might not work yet !* Snippet to enable the language server: >lua vim.lsp.enable('cairo_ls') @@ -1288,12 +1214,9 @@ cds_lsp https://cap.cloud.sap/docs/ - `cds-lsp` can be installed via `npm`: - - ```sh - npm i -g @sap/cds-lsp - ``` -@type vim.lsp.Config +`cds-lsp` can be installed via `npm`: +>sh + npm i -g @sap/cds-lsp Snippet to enable the language server: >lua vim.lsp.enable('cds_lsp') @@ -1319,8 +1242,7 @@ circom-lsp [Circom Language Server](https://github.com/rubydusa/circom-lsp) - `circom-lsp`, the language server for the Circom language. -@type vim.lsp.Config +`circom-lsp`, the language server for the Circom language. Snippet to enable the language server: >lua vim.lsp.enable('circom-lsp') @@ -1378,8 +1300,7 @@ clarinet https://github.com/hirosystems/clarinet - Clarinet is the fastest way to build, test, and deploy smart contracts on the Stacks blockchain. -@type vim.lsp.Config +Clarinet is the fastest way to build, test, and deploy smart contracts on the Stacks blockchain. Snippet to enable the language server: >lua vim.lsp.enable('clarinet') @@ -1399,8 +1320,7 @@ clojure_lsp https://github.com/clojure-lsp/clojure-lsp - Clojure Language Server -@type vim.lsp.Config +Clojure Language Server Snippet to enable the language server: >lua vim.lsp.enable('clojure_lsp') @@ -1420,8 +1340,7 @@ cmake https://github.com/regen100/cmake-language-server - CMake LSP Implementation -@type vim.lsp.Config +CMake LSP Implementation Snippet to enable the language server: >lua vim.lsp.enable('cmake') @@ -1444,7 +1363,6 @@ Default config: cobol_ls Cobol language support -@type vim.lsp.Config Snippet to enable the language server: >lua vim.lsp.enable('cobol_ls') @@ -1464,13 +1382,11 @@ codebook https://github.com/blopker/codebook - An unholy spell checker for code. - - `codebook-lsp` can be installed by following the instructions [here](https://github.com/blopker/codebook/blob/main/README.md#installation). + An unholy spell checker for code. - The default `cmd` assumes that the `codebook-lsp` binary can be found in `$PATH`. +`codebook-lsp` can be installed by following the instructions [here](https://github.com/blopker/codebook/blob/main/README.md#installation). -@type vim.lsp.Config +The default `cmd` assumes that the `codebook-lsp` binary can be found in `$PATH`. Snippet to enable the language server: >lua vim.lsp.enable('codebook') @@ -1490,12 +1406,9 @@ coffeesense https://github.com/phil294/coffeesense - CoffeeSense Language Server - `coffeesense-language-server` can be installed via `npm`: - ```sh - npm install -g coffeesense-language-server - ``` -@type vim.lsp.Config +CoffeeSense Language Server +`coffeesense-language-server` can be installed via `npm` >sh + npm install -g coffeesense-language-server Snippet to enable the language server: >lua vim.lsp.enable('coffeesense') @@ -1515,14 +1428,13 @@ contextive https://github.com/dev-cycles/contextive - Language Server for Contextive. +Language Server for Contextive. - Contextive allows you to define terms in a central file and provides auto-completion suggestions and hover panels for these terms wherever they're used. +Contextive allows you to define terms in a central file and provides auto-completion suggestions and hover panels for these terms wherever they're used. - To install the language server, you need to download the appropriate [GitHub release asset](https://github.com/dev-cycles/contextive/releases/) for your operating system and architecture. +To install the language server, you need to download the appropriate [GitHub release asset](https://github.com/dev-cycles/contextive/releases/) for your operating system and architecture. - After the download unzip the Contextive.LanguageServer binary and copy the file into a folder that is included in your system's PATH. -@type vim.lsp.Config +After the download unzip the Contextive.LanguageServer binary and copy the file into a folder that is included in your system's PATH. Snippet to enable the language server: >lua vim.lsp.enable('contextive') @@ -1539,7 +1451,6 @@ Default config: coq_lsp https://github.com/ejgallego/coq-lsp/ -@type vim.lsp.Config Snippet to enable the language server: >lua vim.lsp.enable('coq_lsp') @@ -1559,8 +1470,7 @@ crystalline https://github.com/elbywan/crystalline - Crystal language server. -@type vim.lsp.Config +Crystal language server. Snippet to enable the language server: >lua vim.lsp.enable('crystalline') @@ -1607,8 +1517,6 @@ cspell_ls [cspell language server](https://github.com/vlabo/cspell-lsp) -@type vim.lsp.Config - Snippet to enable the language server: >lua vim.lsp.enable('cspell_ls') @@ -1625,14 +1533,11 @@ css_variables https://github.com/vunguyentuan/vscode-css-variables/tree/master/packages/css-variables-language-server - CSS variables autocompletion and go-to-definition +CSS variables autocompletion and go-to-definition - `css-variables-language-server` can be installed via `npm`: - - ```sh - npm i -g css-variables-language-server - ``` -@type vim.lsp.Config +`css-variables-language-server` can be installed via `npm`: +>sh + npm i -g css-variables-language-server Snippet to enable the language server: >lua vim.lsp.enable('css_variables') @@ -1659,24 +1564,19 @@ cssls https://github.com/hrsh7th/vscode-langservers-extracted - `css-languageserver` can be installed via `npm`: - - ```sh - npm i -g vscode-langservers-extracted - ``` - - Neovim does not currently include built-in snippets. `vscode-css-language-server` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. +`css-languageserver` can be installed via `npm`: +>sh + npm i -g vscode-langservers-extracted - ```lua - --Enable (broadcasting) snippet capability for completion - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities.textDocument.completion.completionItem.snippetSupport = true +Neovim does not currently include built-in snippets. `vscode-css-language-server` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. +>lua + --Enable (broadcasting) snippet capability for completion + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities.textDocument.completion.completionItem.snippetSupport = true - vim.lsp.config('cssls', { - capabilities = capabilities, - }) - ``` -@type vim.lsp.Config + vim.lsp.config('cssls', { + capabilities = capabilities, + }) Snippet to enable the language server: >lua vim.lsp.enable('cssls') @@ -1712,13 +1612,10 @@ cssmodules_ls https://github.com/antonk52/cssmodules-language-server - Language server for autocompletion and go-to-definition functionality for CSS modules. +Language server for autocompletion and go-to-definition functionality for CSS modules. - You can install cssmodules-language-server via npm: - ```sh - npm install -g cssmodules-language-server - ``` -@type vim.lsp.Config +You can install cssmodules-language-server via npm >sh + npm install -g cssmodules-language-server Snippet to enable the language server: >lua vim.lsp.enable('cssmodules_ls') @@ -1737,16 +1634,13 @@ Default config: cucumber_language_server https://cucumber.io - https://github.com/cucumber/common - https://www.npmjs.com/package/@cucumber/language-server +https://github.com/cucumber/common +https://www.npmjs.com/package/@cucumber/language-server - Language server for Cucumber. +Language server for Cucumber. - `cucumber-language-server` can be installed via `npm`: - ```sh - npm install -g @cucumber/language-server - ``` -@type vim.lsp.Config +`cucumber-language-server` can be installed via `npm` >sh + npm install -g @cucumber/language-server Snippet to enable the language server: >lua vim.lsp.enable('cucumber_language_server') @@ -1766,8 +1660,7 @@ cue https://github.com/cue-lang/cue - CUE makes it easy to validate data, write schemas, and ensure configurations align with policies. -@type vim.lsp.Config +CUE makes it easy to validate data, write schemas, and ensure configurations align with policies. Snippet to enable the language server: >lua vim.lsp.enable('cue') @@ -1787,28 +1680,23 @@ custom_elements_ls https://github.com/Matsuuu/custom-elements-language-server - `custom-elements-languageserver` depends on `typescript`. Both packages can be installed via `npm`: - ```sh - npm install -g typescript custom-elements-languageserver - ``` - To configure typescript language server, add a - [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or - [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your - project. - Here's an example that disables type checking in JavaScript files. - ```json - { - "compilerOptions": { - "module": "commonjs", - "target": "es6", - "checkJs": false - }, - "exclude": [ - "node_modules" - ] - } - ``` -@type vim.lsp.Config +`custom-elements-languageserver` depends on `typescript`. Both packages can be installed via `npm` >sh + npm install -g typescript custom-elements-languageserver +To configure typescript language server, add a +[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or +[`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your +project. +Here's an example that disables type checking in JavaScript files >json + { + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "checkJs": false + }, + "exclude": [ + "node_modules" + ] + } Snippet to enable the language server: >lua vim.lsp.enable('custom_elements_ls') @@ -1830,14 +1718,11 @@ cypher_ls https://github.com/neo4j/cypher-language-support/tree/main/packages/language-server - `cypher-language-server`, language server for Cypher query language. - Part of the umbrella project cypher-language-support: https://github.com/neo4j/cypher-language-support +`cypher-language-server`, language server for Cypher query language. +Part of the umbrella project cypher-language-support: https://github.com/neo4j/cypher-language-support - `cypher-language-server` can be installed via `npm`: - ```sh - npm i -g @neo4j-cypher/language-server - ``` -@type vim.lsp.Config +`cypher-language-server` can be installed via `npm` >sh + npm i -g @neo4j-cypher/language-server Snippet to enable the language server: >lua vim.lsp.enable('cypher_ls') @@ -1905,8 +1790,7 @@ dagger https://github.com/dagger/cuelsp - Dagger's lsp server for cuelang. -@type vim.lsp.Config +Dagger's lsp server for cuelang. Snippet to enable the language server: >lua vim.lsp.enable('dagger') @@ -1926,8 +1810,7 @@ dartls https://github.com/dart-lang/sdk/tree/master/pkg/analysis_server/tool/lsp_spec - Language server for dart. -@type vim.lsp.Config +Language server for dart. Snippet to enable the language server: >lua vim.lsp.enable('dartls') @@ -1962,8 +1845,7 @@ dcmls https://dcm.dev/ - Language server for DCM analyzer. -@type vim.lsp.Config +Language server for DCM analyzer. Snippet to enable the language server: >lua vim.lsp.enable('dcmls') @@ -1983,8 +1865,7 @@ debputy https://salsa.debian.org/debian/debputy - Language Server for Debian packages. -@type vim.lsp.Config +Language Server for Debian packages. Snippet to enable the language server: >lua vim.lsp.enable('debputy') @@ -2079,8 +1960,7 @@ diagnosticls https://github.com/iamcco/diagnostic-languageserver - Diagnostic language server integrate with linters. -@type vim.lsp.Config +Diagnostic language server integrate with linters. Snippet to enable the language server: >lua vim.lsp.enable('diagnosticls') @@ -2100,12 +1980,11 @@ digestif https://github.com/astoff/digestif - Digestif is a code analyzer, and a language server, for LaTeX, ConTeXt et caterva. It provides +Digestif is a code analyzer, and a language server, for LaTeX, ConTeXt et caterva. It provides - context-sensitive completion, documentation, code navigation, and related functionality to any +context-sensitive completion, documentation, code navigation, and related functionality to any - text editor that speaks the LSP protocol. -@type vim.lsp.Config +text editor that speaks the LSP protocol. Snippet to enable the language server: >lua vim.lsp.enable('digestif') @@ -2172,11 +2051,8 @@ docker_language_server https://github.com/docker/docker-language-server - `docker-langserver-server` can be installed via `go`: - ```sh - go install github.com/docker/docker-language-server/cmd/docker-language-server@latest - ``` -@type vim.lsp.Config +`docker-langserver-server` can be installed via `go` >sh + go install github.com/docker/docker-language-server/cmd/docker-language-server@latest Snippet to enable the language server: >lua vim.lsp.enable('docker_language_server') @@ -2187,7 +2063,7 @@ Default config: { "docker-language-server", "start", "--stdio" } - filetypes: >lua { "dockerfile", "yaml.docker-compose" } -- get_language_id (use "gF" to view): ../lsp/docker_language_server.lua:10 +- get_language_id (use "gF" to view): ../lsp/docker_language_server.lua:11 - root_markers: >lua { "Dockerfile", "docker-compose.yaml", "docker-compose.yml", "compose.yaml", "compose.yml", "docker-bake.json", "docker-bake.hcl", "docker-bake.override.json", "docker-bake.override.hcl" } < @@ -2197,26 +2073,21 @@ dockerls https://github.com/rcjsuen/dockerfile-language-server-nodejs - `docker-langserver` can be installed via `npm`: - ```sh - npm install -g dockerfile-language-server-nodejs - ``` +`docker-langserver` can be installed via `npm` >sh + npm install -g dockerfile-language-server-nodejs - Additional configuration can be applied in the following way: - ```lua - vim.lsp.config('dockerls', { - settings = { - docker = { - languageserver = { - formatter = { - ignoreMultilineInstructions = true, - }, - }, - } - } - }) - ``` -@type vim.lsp.Config +Additional configuration can be applied in the following way >lua + vim.lsp.config('dockerls', { + settings = { + docker = { + languageserver = { + formatter = { + ignoreMultilineInstructions = true, + }, + }, + } + } + }) Snippet to enable the language server: >lua vim.lsp.enable('dockerls') @@ -2236,11 +2107,8 @@ dolmenls https://github.com/Gbury/dolmen/blob/master/doc/lsp.md - `dolmenls` can be installed via `opam` - ```sh - opam install dolmen_lsp - ``` -@type vim.lsp.Config +`dolmenls` can be installed via `opam >sh + opam install dolmen_lsp Snippet to enable the language server: >lua vim.lsp.enable('dolmenls') @@ -2260,11 +2128,8 @@ dotls https://github.com/nikeee/dot-language-server - `dot-language-server` can be installed via `npm`: - ```sh - npm install -g dot-language-server - ``` -@type vim.lsp.Config +`dot-language-server` can be installed via `npm` >sh + npm install -g dot-language-server Snippet to enable the language server: >lua vim.lsp.enable('dotls') @@ -2284,8 +2149,7 @@ dprint https://github.com/dprint/dprint - Pluggable and configurable code formatting platform written in Rust. -@type vim.lsp.Config +Pluggable and configurable code formatting platform written in Rust. Snippet to enable the language server: >lua vim.lsp.enable('dprint') @@ -2399,11 +2263,10 @@ ecsact https://github.com/ecsact-dev/ecsact_lsp_server - Language server for Ecsact. +Language server for Ecsact. - The default cmd assumes `ecsact_lsp_server` is in your PATH. Typically from the - Ecsact SDK: https://ecsact.dev/start -@type vim.lsp.Config +The default cmd assumes `ecsact_lsp_server` is in your PATH. Typically from the +Ecsact SDK: https://ecsact.dev/start Snippet to enable the language server: >lua vim.lsp.enable('ecsact') @@ -2453,30 +2316,27 @@ elixirls https://github.com/elixir-lsp/elixir-ls - `elixir-ls` can be installed by following the instructions [here](https://github.com/elixir-lsp/elixir-ls#building-and-running). +`elixir-ls` can be installed by following the instructions [here](https://github.com/elixir-lsp/elixir-ls#building-and-running). - 1. Download the zip from https://github.com/elixir-lsp/elixir-ls/releases/latest/ - 2. Unzip it and make it executable. - ```bash - unzip elixir-ls.zip -d /path/to/elixir-ls - # Unix - chmod +x /path/to/elixir-ls/language_server.sh - ``` - - **By default, elixir-ls doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of your unzipped elixir-ls. +1. Download the zip from https://github.com/elixir-lsp/elixir-ls/releases/latest/ +2. Unzip it and make it executable. + ```bash + unzip elixir-ls.zip -d /path/to/elixir-ls + # Unix + chmod +x /path/to/elixir-ls/language_server.sh + ``` - ```lua - vim.lsp.config('elixirls', { - -- Unix - cmd = { "/path/to/elixir-ls/language_server.sh" }; - -- Windows - cmd = { "/path/to/elixir-ls/language_server.bat" }; - ... - }) - ``` +**By default, elixir-ls doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of your unzipped elixir-ls. +>lua + vim.lsp.config('elixirls', { + -- Unix + cmd = { "/path/to/elixir-ls/language_server.sh" }; + -- Windows + cmd = { "/path/to/elixir-ls/language_server.bat" }; + ... + }) - 'root_dir' is chosen like this: if two or more directories containing `mix.exs` were found when searching directories upward, the second one (higher up) is chosen, with the assumption that it is the root of an umbrella app. Otherwise the directory containing the single mix.exs that was found is chosen. -@type vim.lsp.Config +'root_dir' is chosen like this: if two or more directories containing `mix.exs` were found when searching directories upward, the second one (higher up) is chosen, with the assumption that it is the root of an umbrella app. Otherwise the directory containing the single mix.exs that was found is chosen. Snippet to enable the language server: >lua vim.lsp.enable('elixirls') @@ -2485,7 +2345,7 @@ Snippet to enable the language server: >lua Default config: - filetypes: >lua { "elixir", "eelixir", "heex", "surface" } -- root_dir (use "gF" to view): ../lsp/elixirls.lua:29 +- root_dir (use "gF" to view): ../lsp/elixirls.lua:30 < ------------------------------------------------------------------------------ @@ -2524,9 +2384,8 @@ elp https://whatsapp.github.io/erlang-language-platform - ELP integrates Erlang into modern IDEs via the language server protocol and was - inspired by rust-analyzer. -@type vim.lsp.Config +ELP integrates Erlang into modern IDEs via the language server protocol and was +inspired by rust-analyzer. Snippet to enable the language server: >lua vim.lsp.enable('elp') @@ -2546,12 +2405,9 @@ ember https://github.com/ember-tooling/ember-language-server - `ember-language-server` can be installed via `npm`: - - ```sh - npm install -g @ember-tooling/ember-language-server - ``` -@type vim.lsp.Config +`ember-language-server` can be installed via `npm`: +>sh + npm install -g @ember-tooling/ember-language-server Snippet to enable the language server: >lua vim.lsp.enable('ember') @@ -2571,11 +2427,8 @@ emmet_language_server https://github.com/olrtg/emmet-language-server - Package can be installed via `npm`: - ```sh - npm install -g @olrtg/emmet-language-server - ``` -@type vim.lsp.Config +Package can be installed via `npm` >sh + npm install -g @olrtg/emmet-language-server Snippet to enable the language server: >lua vim.lsp.enable('emmet_language_server') @@ -2595,11 +2448,8 @@ emmet_ls https://github.com/aca/emmet-ls - Package can be installed via `npm`: - ```sh - npm install -g emmet-ls - ``` -@type vim.lsp.Config +Package can be installed via `npm` >sh + npm install -g emmet-ls Snippet to enable the language server: >lua vim.lsp.enable('emmet_ls') @@ -2671,17 +2521,16 @@ erlangls https://erlang-ls.github.io - Language Server for Erlang. +Language Server for Erlang. - Clone [erlang_ls](https://github.com/erlang-ls/erlang_ls) - Compile the project with `make` and copy resulting binaries somewhere in your $PATH eg. `cp _build/*/bin/* ~/local/bin` +Clone [erlang_ls](https://github.com/erlang-ls/erlang_ls) +Compile the project with `make` and copy resulting binaries somewhere in your $PATH eg. `cp _build/*/bin/* ~/local/bin` - Installation instruction can be found [here](https://github.com/erlang-ls/erlang_ls). +Installation instruction can be found [here](https://github.com/erlang-ls/erlang_ls). - Installation requirements: - - [Erlang OTP 21+](https://github.com/erlang/otp) - - [rebar3 3.9.1+](https://github.com/erlang/rebar3) -@type vim.lsp.Config +Installation requirements: + - [Erlang OTP 21+](https://github.com/erlang/otp) + - [rebar3 3.9.1+](https://github.com/erlang/rebar3) Snippet to enable the language server: >lua vim.lsp.enable('erlangls') @@ -2701,47 +2550,38 @@ esbonio https://github.com/swyddfa/esbonio - Esbonio is a language server for [Sphinx](https://www.sphinx-doc.org/en/master/) documentation projects. - The language server can be installed via pip - - ``` - pip install esbonio - ``` - - Since Sphinx is highly extensible you will get best results if you install the language server in the same - Python environment as the one used to build your documentation. To ensure that the correct Python environment - is picked up, you can either launch `nvim` with the correct environment activated. - - ``` - source env/bin/activate - nvim - ``` - - Or you can modify the default `cmd` to include the full path to the Python interpreter. +Esbonio is a language server for [Sphinx](https://www.sphinx-doc.org/en/master/) documentation projects. +The language server can be installed via pip +> + pip install esbonio - ```lua - vim.lsp.config('esbonio', { - cmd = { '/path/to/virtualenv/bin/python', '-m', 'esbonio' } - }) - ``` +Since Sphinx is highly extensible you will get best results if you install the language server in the same +Python environment as the one used to build your documentation. To ensure that the correct Python environment +is picked up, you can either launch `nvim` with the correct environment activated. +> + source env/bin/activate + nvim - Esbonio supports a number of config values passed as `init_options` on startup, for example. +Or you can modify the default `cmd` to include the full path to the Python interpreter. +>lua + vim.lsp.config('esbonio', { + cmd = { '/path/to/virtualenv/bin/python', '-m', 'esbonio' } + }) - ```lua - vim.lsp.config('esbonio', { - init_options = { - server = { - logLevel = "debug" - }, - sphinx = { - confDir = "/path/to/docs", - srcDir = "${confDir}/../docs-src" - } - }) - ``` +Esbonio supports a number of config values passed as `init_options` on startup, for example. +>lua + vim.lsp.config('esbonio', { + init_options = { + server = { + logLevel = "debug" + }, + sphinx = { + confDir = "/path/to/docs", + srcDir = "${confDir}/../docs-src" + } + }) - A full list and explanation of the available options can be found [here](https://docs.esbon.io/en/esbonio-language-server-v0.16.4/lsp/getting-started.html?editor=neovim-lspconfig#configuration) -@type vim.lsp.Config +A full list and explanation of the available options can be found [here](https://docs.esbon.io/en/esbonio-language-server-v0.16.4/lsp/getting-started.html?editor=neovim-lspconfig#configuration) Snippet to enable the language server: >lua vim.lsp.enable('esbonio') @@ -2854,8 +2694,7 @@ facility_language_server https://github.com/FacilityApi/FacilityLanguageServer - Facility language server protocol (LSP) support. -@type vim.lsp.Config +Facility language server protocol (LSP) support. Snippet to enable the language server: >lua vim.lsp.enable('facility_language_server') @@ -2875,8 +2714,7 @@ fennel_language_server https://github.com/rydesun/fennel-language-server - Fennel language server protocol (LSP) support. -@type vim.lsp.Config +Fennel language server protocol (LSP) support. Snippet to enable the language server: >lua vim.lsp.enable('fennel_language_server') @@ -2926,13 +2764,12 @@ fish_lsp https://github.com/ndonfris/fish-lsp - A Language Server Protocol (LSP) tailored for the fish shell. - This project aims to enhance the coding experience for fish, - by introducing a suite of intelligent features like auto-completion, - scope aware symbol analysis, per-token hover generation, and many others. +A Language Server Protocol (LSP) tailored for the fish shell. +This project aims to enhance the coding experience for fish, +by introducing a suite of intelligent features like auto-completion, +scope aware symbol analysis, per-token hover generation, and many others. - [homepage](https://www.fish-lsp.dev/) -@type vim.lsp.Config +[homepage](https://www.fish-lsp.dev/) Snippet to enable the language server: >lua vim.lsp.enable('fish_lsp') @@ -2951,17 +2788,14 @@ Default config: flow https://flow.org/ - https://github.com/facebook/flow - - See below for how to setup Flow itself. - https://flow.org/en/docs/install/ +https://github.com/facebook/flow - See below for lsp command options. +See below for how to setup Flow itself. +https://flow.org/en/docs/install/ - ```sh - npx flow lsp --help - ``` -@type vim.lsp.Config +See below for lsp command options. +>sh + npx flow lsp --help Snippet to enable the language server: >lua vim.lsp.enable('flow') @@ -2980,11 +2814,8 @@ Default config: flux_lsp https://github.com/influxdata/flux-lsp - `flux-lsp` can be installed via `cargo`: - ```sh - cargo install --git https://github.com/influxdata/flux-lsp - ``` -@type vim.lsp.Config +`flux-lsp` can be installed via `cargo` >sh + cargo install --git https://github.com/influxdata/flux-lsp Snippet to enable the language server: >lua vim.lsp.enable('flux_lsp') @@ -3024,16 +2855,13 @@ fortls https://fortls.fortran-lang.org/index.html - fortls is a Fortran Language Server, the server can be installed via pip - - ```sh - pip install fortls - ``` +fortls is a Fortran Language Server, the server can be installed via pip +>sh + pip install fortls - Settings to the server can be passed either through the `cmd` option or through - a local configuration file e.g. `.fortls`. For more information - see the `fortls` [documentation](https://fortls.fortran-lang.org/options.html). -@type vim.lsp.Config +Settings to the server can be passed either through the `cmd` option or through +a local configuration file e.g. `.fortls`. For more information +see the `fortls` [documentation](https://fortls.fortran-lang.org/options.html). Snippet to enable the language server: >lua vim.lsp.enable('fortls') @@ -3145,8 +2973,7 @@ fstar https://github.com/FStarLang/FStar - LSP support is included in FStar. Make sure `fstar.exe` is in your PATH. -@type vim.lsp.Config +LSP support is included in FStar. Make sure `fstar.exe` is in your PATH. Snippet to enable the language server: >lua vim.lsp.enable('fstar') @@ -3166,13 +2993,10 @@ futhark_lsp https://github.com/diku-dk/futhark - Futhark Language Server +Futhark Language Server - This language server comes with the futhark compiler and is run with the command - ``` - futhark lsp - ``` -@type vim.lsp.Config +This language server comes with the futhark compiler and is run with the command> + futhark lsp Snippet to enable the language server: >lua vim.lsp.enable('futhark_lsp') @@ -3211,8 +3035,7 @@ gdshader_lsp https://github.com/godofavacyn/gdshader-lsp - A language server for the Godot Shading language. -@type vim.lsp.Config +A language server for the Godot Shading language. Snippet to enable the language server: >lua vim.lsp.enable('gdshader_lsp') @@ -3232,19 +3055,16 @@ gh_actions_ls https://github.com/lttb/gh-actions-language-server - Language server for GitHub Actions. +Language server for GitHub Actions. - The projects [forgejo](https://forgejo.org/) and [gitea](https://about.gitea.com/) - design their actions to be as compatible to github as possible - with only [a few differences](https://docs.gitea.com/usage/actions/comparison#unsupported-workflows-syntax) between the systems. - The `gh_actions_ls` is therefore enabled for those `yaml` files as well. +The projects [forgejo](https://forgejo.org/) and [gitea](https://about.gitea.com/) +design their actions to be as compatible to github as possible +with only [a few differences](https://docs.gitea.com/usage/actions/comparison#unsupported-workflows-syntax) between the systems. +The `gh_actions_ls` is therefore enabled for those `yaml` files as well. - The `gh-actions-language-server` can be installed via `npm`: - - ```sh - npm install -g gh-actions-language-server - ``` -@type vim.lsp.Config +The `gh-actions-language-server` can be installed via `npm`: +>sh + npm install -g gh-actions-language-server Snippet to enable the language server: >lua vim.lsp.enable('gh_actions_ls') @@ -3265,7 +3085,7 @@ Default config: { "yaml" } - init_options: >lua {} -- root_dir (use "gF" to view): ../lsp/gh_actions_ls.lua:17 +- root_dir (use "gF" to view): ../lsp/gh_actions_ls.lua:18 < ------------------------------------------------------------------------------ @@ -3273,9 +3093,8 @@ ghcide https://github.com/digital-asset/ghcide - A library for building Haskell IDE tooling. - "ghcide" isn't for end users now. Use "haskell-language-server" instead of "ghcide". -@type vim.lsp.Config +A library for building Haskell IDE tooling. +"ghcide" isn't for end users now. Use "haskell-language-server" instead of "ghcide". Snippet to enable the language server: >lua vim.lsp.enable('ghcide') @@ -3295,11 +3114,10 @@ ghdl_ls https://github.com/ghdl/ghdl-language-server - A language server for VHDL, using ghdl as its backend. +A language server for VHDL, using ghdl as its backend. - `ghdl-ls` is part of pyghdl, for installation instructions see - [the upstream README](https://github.com/ghdl/ghdl/tree/master/pyGHDL/lsp). -@type vim.lsp.Config +`ghdl-ls` is part of pyghdl, for installation instructions see +[the upstream README](https://github.com/ghdl/ghdl/tree/master/pyGHDL/lsp). Snippet to enable the language server: >lua vim.lsp.enable('ghdl_ls') @@ -3324,7 +3142,6 @@ ginko_ls Install `ginko_ls` from https://github.com/Schottkyc137/ginko and add it to path `ginko_ls` doesn't require any configuration. -@type vim.lsp.Config Snippet to enable the language server: >lua vim.lsp.enable('ginko_ls') @@ -3373,25 +3190,22 @@ glasgow https://github.com/nolanderc/glasgow - Provides language features for WGSL (WebGPU Shading Language): - - Completions: - - Local functions/variables/types. - - Fields and swizzles. - - Builtin types and functions (`dot`, `reflect`, `textureSample`, `vec3`, `mat4x2`, etc.) - - Hover Documentation: - - Function signatures. - - Variable types. - - Includes builtin types and functions. Text is taken from the WGSL specification. - - Goto Definition - - Find all References - - Rename - - Formatter +Provides language features for WGSL (WebGPU Shading Language): +- Completions: + - Local functions/variables/types. + - Fields and swizzles. + - Builtin types and functions (`dot`, `reflect`, `textureSample`, `vec3`, `mat4x2`, etc.) +- Hover Documentation: + - Function signatures. + - Variable types. + - Includes builtin types and functions. Text is taken from the WGSL specification. +- Goto Definition +- Find all References +- Rename +- Formatter - `glasgow` can be installed via `cargo`: - ```sh - cargo install glasgow - ``` -@type vim.lsp.Config +`glasgow` can be installed via `cargo` >sh + cargo install glasgow Snippet to enable the language server: >lua vim.lsp.enable('glasgow') @@ -3413,10 +3227,9 @@ gleam https://github.com/gleam-lang/gleam - A language server for Gleam Programming Language. +A language server for Gleam Programming Language. - It comes with the Gleam compiler, for installation see: [Installing Gleam](https://gleam.run/getting-started/installing/) -@type vim.lsp.Config +It comes with the Gleam compiler, for installation see: [Installing Gleam](https://gleam.run/getting-started/installing/) Snippet to enable the language server: >lua vim.lsp.enable('gleam') @@ -3480,8 +3293,7 @@ glsl_analyzer https://github.com/nolanderc/glsl_analyzer - Language server for GLSL -@type vim.lsp.Config +Language server for GLSL Snippet to enable the language server: >lua vim.lsp.enable('glsl_analyzer') @@ -3503,11 +3315,10 @@ glslls https://github.com/svenstaro/glsl-language-server - Language server implementation for GLSL +Language server implementation for GLSL - `glslls` can be compiled and installed manually, or, if your distribution has access to the AUR, - via the `glsl-language-server` AUR package -@type vim.lsp.Config +`glslls` can be compiled and installed manually, or, if your distribution has access to the AUR, +via the `glsl-language-server` AUR package Snippet to enable the language server: >lua vim.lsp.enable('glslls') @@ -3536,17 +3347,14 @@ gnls https://github.com/microsoft/gnls - Microsoft's language server for GN build files. +Microsoft's language server for GN build files. - Assuming there is a `gnls` script somewhere in your `$PATH`, containing - for example: +Assuming there is a `gnls` script somewhere in your `$PATH`, containing +for example: +>shell + GNLS_SRC_DIR=</path/to/gnls> - ```shell - GNLS_SRC_DIR=</path/to/gnls> - - exec node ${GNLS_SRC_DIR}/build/server.js $@ - ``` -@type vim.lsp.Config + exec node ${GNLS_SRC_DIR}/build/server.js $@ Snippet to enable the language server: >lua vim.lsp.enable('gnls') @@ -3566,24 +3374,21 @@ golangci_lint_ls Combination of both lint server and client - https://github.com/nametake/golangci-lint-langserver - https://github.com/golangci/golangci-lint +https://github.com/nametake/golangci-lint-langserver +https://github.com/golangci/golangci-lint - Installation of binaries needed is done via - - ``` - go install github.com/nametake/golangci-lint-langserver@latest - go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest - ``` -@type vim.lsp.Config +Installation of binaries needed is done via +> + go install github.com/nametake/golangci-lint-langserver@latest + go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest Snippet to enable the language server: >lua vim.lsp.enable('golangci_lint_ls') Default config: -- before_init (use "gF" to view): ../lsp/golangci_lint_ls.lua:16 +- before_init (use "gF" to view): ../lsp/golangci_lint_ls.lua:17 - cmd: >lua { "golangci-lint-langserver" } - filetypes: >lua @@ -3648,14 +3453,11 @@ grammarly https://github.com/znck/grammarly - `grammarly-languageserver` can be installed via `npm`: - - ```sh - npm i -g grammarly-languageserver - ``` +`grammarly-languageserver` can be installed via `npm`: +>sh + npm i -g grammarly-languageserver - WARNING: Since this language server uses Grammarly's API, any document you open with it running is shared with them. Please evaluate their [privacy policy](https://www.grammarly.com/privacy-policy) before using this. -@type vim.lsp.Config +WARNING: Since this language server uses Grammarly's API, any document you open with it running is shared with them. Please evaluate their [privacy policy](https://www.grammarly.com/privacy-policy) before using this. Snippet to enable the language server: >lua vim.lsp.enable('grammarly') @@ -3706,22 +3508,19 @@ groovyls https://github.com/prominic/groovy-language-server.git - Requirements: - - Linux/macOS (for now) - - Java 11+ +Requirements: + - Linux/macOS (for now) + - Java 11+ - `groovyls` can be installed by following the instructions [here](https://github.com/prominic/groovy-language-server.git#build). +`groovyls` can be installed by following the instructions [here](https://github.com/prominic/groovy-language-server.git#build). - If you have installed groovy language server, you can set the `cmd` custom path as follow: - - ```lua - vim.lsp.config('groovyls', { - -- Unix - cmd = { "java", "-jar", "path/to/groovyls/groovy-language-server-all.jar" }, - ... - }) - ``` -@type vim.lsp.Config +If you have installed groovy language server, you can set the `cmd` custom path as follow: +>lua + vim.lsp.config('groovyls', { + -- Unix + cmd = { "java", "-jar", "path/to/groovyls/groovy-language-server-all.jar" }, + ... + }) Snippet to enable the language server: >lua vim.lsp.enable('groovyls') @@ -3741,15 +3540,12 @@ guile_ls https://codeberg.org/rgherdt/scheme-lsp-server - The recommended way is to install guile-lsp-server is using Guix. Unfortunately it is still not available at the official Guix channels, but you can use the provided channel guix.scm in the repo: - ```sh - guix package -f guix.scm - ``` +The recommended way is to install guile-lsp-server is using Guix. Unfortunately it is still not available at the official Guix channels, but you can use the provided channel guix.scm in the repo >sh + guix package -f guix.scm - Checkout the repo for more info. +Checkout the repo for more info. - Note: This LSP will start on `scheme.guile` filetype. You can set this file type using `:help modeline` or adding https://gitlab.com/HiPhish/guile.vim to your plugins to automatically set it. -@type vim.lsp.Config +Note: This LSP will start on `scheme.guile` filetype. You can set this file type using `:help modeline` or adding https://gitlab.com/HiPhish/guile.vim to your plugins to automatically set it. Snippet to enable the language server: >lua vim.lsp.enable('guile_ls') @@ -3769,21 +3565,18 @@ harper_ls https://github.com/automattic/harper - The language server for Harper, the slim, clean language checker for developers. +The language server for Harper, the slim, clean language checker for developers. - See our [documentation](https://writewithharper.com/docs/integrations/neovim) for more information on settings. +See our [documentation](https://writewithharper.com/docs/integrations/neovim) for more information on settings. - In short, they should look something like this: - ```lua - vim.lsp.config('harper_ls', { - settings = { - ["harper-ls"] = { - userDictPath = "~/dict.txt" - } - }, - }) - ``` -@type vim.lsp.Config +In short, they should look something like this >lua + vim.lsp.config('harper_ls', { + settings = { + ["harper-ls"] = { + userDictPath = "~/dict.txt" + } + }, + }) Snippet to enable the language server: >lua vim.lsp.enable('harper_ls') @@ -3802,9 +3595,8 @@ Default config: hdl_checker https://github.com/suoto/hdl_checker - Language server for hdl-checker. - Install using: `pip install hdl-checker --upgrade` -@type vim.lsp.Config +Language server for hdl-checker. +Install using: `pip install hdl-checker --upgrade` Snippet to enable the language server: >lua vim.lsp.enable('hdl_checker') @@ -3824,14 +3616,13 @@ helm_ls https://github.com/mrjosh/helm-ls - Helm Language server. (This LSP is in early development) +Helm Language server. (This LSP is in early development) - `helm Language server` can be installed by following the instructions [here](https://github.com/mrjosh/helm-ls). +`helm Language server` can be installed by following the instructions [here](https://github.com/mrjosh/helm-ls). - The default `cmd` assumes that the `helm_ls` binary can be found in `$PATH`. +The default `cmd` assumes that the `helm_ls` binary can be found in `$PATH`. - If need Helm file highlight use [vim-helm](https://github.com/towolf/vim-helm) plugin. -@type vim.lsp.Config +If need Helm file highlight use [vim-helm](https://github.com/towolf/vim-helm) plugin. Snippet to enable the language server: >lua vim.lsp.enable('helm_ls') @@ -3858,26 +3649,21 @@ Default config: herb_ls https://www.npmjs.com/package/@herb-tools/language-server - https://github.com/marcoroth/herb - - HTML+ERB (HTML + Embedded Ruby) - Powerful and seamless HTML-aware ERB parsing and tooling. - - Herb is designed from the ground up to deeply understand `.html.erb` files, - preserving both HTML and embedded Ruby structure without losing any details. +https://github.com/marcoroth/herb - `herb-language-server` can be installed via `npm`: +HTML+ERB (HTML + Embedded Ruby) +Powerful and seamless HTML-aware ERB parsing and tooling. - ```sh - npm install -g @herb-tools/language-server - ``` +Herb is designed from the ground up to deeply understand `.html.erb` files, +preserving both HTML and embedded Ruby structure without losing any details. - or via `yarn`: +`herb-language-server` can be installed via `npm`: +>sh + npm install -g @herb-tools/language-server - ```sh - yarn global add @herb-tools/language-server - ``` -@type vim.lsp.Config +or via `yarn`: +>sh + yarn global add @herb-tools/language-server Snippet to enable the language server: >lua vim.lsp.enable('herb_ls') @@ -3896,11 +3682,10 @@ Default config: hhvm Language server for programs written in Hack - https://hhvm.com/ - https://github.com/facebook/hhvm - See below for how to setup HHVM & typechecker: - https://docs.hhvm.com/hhvm/getting-started/getting-started -@type vim.lsp.Config +https://hhvm.com/ +https://github.com/facebook/hhvm +See below for how to setup HHVM & typechecker: +https://docs.hhvm.com/hhvm/getting-started/getting-started Snippet to enable the language server: >lua vim.lsp.enable('hhvm') @@ -3920,21 +3705,18 @@ hie https://github.com/haskell/haskell-ide-engine - the following init_options are supported (see https://github.com/haskell/haskell-ide-engine#configuration): - ```lua - init_options = { - languageServerHaskell = { - hlintOn = bool; - maxNumberOfProblems = number; - diagnosticsDebounceDuration = number; - liquidOn = bool (default false); - completionSnippetsOn = bool (default true); - formatOnImportOn = bool (default true); - formattingProvider = string (default "brittany", alternate "floskell"); - } - } - ``` -@type vim.lsp.Config +the following init_options are supported (see https://github.com/haskell/haskell-ide-engine#configuration) >lua + init_options = { + languageServerHaskell = { + hlintOn = bool; + maxNumberOfProblems = number; + diagnosticsDebounceDuration = number; + liquidOn = bool (default false); + completionSnippetsOn = bool (default true); + formatOnImportOn = bool (default true); + formattingProvider = string (default "brittany", alternate "floskell"); + } + } Snippet to enable the language server: >lua vim.lsp.enable('hie') @@ -3954,8 +3736,7 @@ hlasm `hlasm_language_server` is a language server for the High Level Assembler language used on IBM SystemZ mainframes. - To learn how to configure the HLASM language server, see the [HLASM Language Support documentation](https://github.com/eclipse-che4z/che-che4z-lsp-for-hlasm). -@type vim.lsp.Config +To learn how to configure the HLASM language server, see the [HLASM Language Support documentation](https://github.com/eclipse-che4z/che-che4z-lsp-for-hlasm). Snippet to enable the language server: >lua vim.lsp.enable('hlasm') @@ -4007,13 +3788,12 @@ hoon_ls https://github.com/urbit/hoon-language-server - A language server for Hoon. +A language server for Hoon. - The language server can be installed via `npm install -g @hoon-language-server` +The language server can be installed via `npm install -g @hoon-language-server` - Start a fake ~zod with `urbit -F zod`. - Start the language server at the Urbit Dojo prompt with: `|start %language-server` -@type vim.lsp.Config +Start a fake ~zod with `urbit -F zod`. +Start the language server at the Urbit Dojo prompt with: `|start %language-server` Snippet to enable the language server: >lua vim.lsp.enable('hoon_ls') @@ -4033,26 +3813,21 @@ html https://github.com/hrsh7th/vscode-langservers-extracted - `vscode-html-language-server` can be installed via `npm`: - ```sh - npm i -g vscode-langservers-extracted - ``` - - Neovim does not currently include built-in snippets. `vscode-html-language-server` only provides completions when snippet support is enabled. - To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. +`vscode-html-language-server` can be installed via `npm` >sh + npm i -g vscode-langservers-extracted - The code-formatting feature of the lsp can be controlled with the `provideFormatter` option. +Neovim does not currently include built-in snippets. `vscode-html-language-server` only provides completions when snippet support is enabled. +To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. - ```lua - --Enable (broadcasting) snippet capability for completion - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities.textDocument.completion.completionItem.snippetSupport = true +The code-formatting feature of the lsp can be controlled with the `provideFormatter` option. +>lua + --Enable (broadcasting) snippet capability for completion + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities.textDocument.completion.completionItem.snippetSupport = true - vim.lsp.config('html', { - capabilities = capabilities, - }) - ``` -@type vim.lsp.Config + vim.lsp.config('html', { + capabilities = capabilities, + }) Snippet to enable the language server: >lua vim.lsp.enable('html') @@ -4083,13 +3858,10 @@ htmx https://github.com/ThePrimeagen/htmx-lsp - `htmx-lsp` can be installed via `cargo`: - ```sh - cargo install htmx-lsp - ``` +`htmx-lsp` can be installed via `cargo` >sh + cargo install htmx-lsp - Lsp is still very much work in progress and experimental. Use at your own risk. -@type vim.lsp.Config +Lsp is still very much work in progress and experimental. Use at your own risk. Snippet to enable the language server: >lua vim.lsp.enable('htmx') @@ -4109,8 +3881,7 @@ hydra_lsp https://github.com/Retsediv/hydra-lsp - LSP for Hydra Python package config files. -@type vim.lsp.Config +LSP for Hydra Python package config files. Snippet to enable the language server: >lua vim.lsp.enable('hydra_lsp') @@ -4130,11 +3901,8 @@ hyprls https://github.com/hyprland-community/hyprls - `hyprls` can be installed via `go`: - ```sh - go install github.com/hyprland-community/hyprls/cmd/hyprls@latest - ``` -@type vim.lsp.Config +`hyprls` can be installed via `go` >sh + go install github.com/hyprland-community/hyprls/cmd/hyprls@latest Snippet to enable the language server: >lua vim.lsp.enable('hyprls') @@ -4235,8 +4003,7 @@ janet_lsp https://github.com/CFiggers/janet-lsp - A Language Server Protocol implementation for Janet. -@type vim.lsp.Config +A Language Server Protocol implementation for Janet. Snippet to enable the language server: >lua vim.lsp.enable('janet_lsp') @@ -4256,10 +4023,9 @@ java_language_server https://github.com/georgewfraser/java-language-server - Java language server +Java language server - Point `cmd` to `lang_server_linux.sh` or the equivalent script for macOS/Windows provided by java-language-server -@type vim.lsp.Config +Point `cmd` to `lang_server_linux.sh` or the equivalent script for macOS/Windows provided by java-language-server Snippet to enable the language server: >lua vim.lsp.enable('java_language_server') @@ -4335,8 +4101,7 @@ jedi_language_server https://github.com/pappasam/jedi-language-server - `jedi-language-server`, a language server for Python, built on top of jedi -@type vim.lsp.Config +`jedi-language-server`, a language server for Python, built on top of jedi Snippet to enable the language server: >lua vim.lsp.enable('jedi_language_server') @@ -4356,18 +4121,15 @@ jinja_lsp jinja-lsp enhances minijinja development experience by providing Helix/Nvim users with advanced features such as autocomplete, syntax highlighting, hover, goto definition, code actions and linting. - The file types are not detected automatically, you can register them manually (see below) or override the filetypes: - - ```lua - vim.filetype.add { - extension = { - jinja = 'jinja', - jinja2 = 'jinja', - j2 = 'jinja', - }, - } - ``` -@type vim.lsp.Config +The file types are not detected automatically, you can register them manually (see below) or override the filetypes: +>lua + vim.filetype.add { + extension = { + jinja = 'jinja', + jinja2 = 'jinja', + j2 = 'jinja', + }, + } Snippet to enable the language server: >lua vim.lsp.enable('jinja_lsp') @@ -4388,21 +4150,16 @@ Default config: jqls https://github.com/wader/jq-lsp - Language server for jq, written using Go. - You can install the server easily using go install: - ```sh - # install directly - go install github.com/wader/jq-lsp@master - # copy binary to $PATH - cp $(go env GOPATH)/bin/jq-lsp /usr/local/bin +Language server for jq, written using Go. +You can install the server easily using go install >sh + # install directly + go install github.com/wader/jq-lsp@master + # copy binary to $PATH + cp $(go env GOPATH)/bin/jq-lsp /usr/local/bin - ``` - Note: To activate properly nvim needs to know the jq filetype. - You can add it via: - ```lua - vim.cmd([[au BufRead,BufNewFile *.jq setfiletype jq]]) - ``` -@type vim.lsp.Config +Note: To activate properly nvim needs to know the jq filetype. +You can add it via >lua + vim.cmd([[au BufRead,BufNewFile *.jq setfiletype jq]]) Snippet to enable the language server: >lua vim.lsp.enable('jqls') @@ -4422,25 +4179,20 @@ jsonls https://github.com/hrsh7th/vscode-langservers-extracted - vscode-json-language-server, a language server for JSON and JSON schema +vscode-json-language-server, a language server for JSON and JSON schema - `vscode-json-language-server` can be installed via `npm`: - ```sh - npm i -g vscode-langservers-extracted - ``` - - `vscode-json-language-server` only provides completions when snippet support is enabled. If you use Neovim older than v0.10 you need to enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. +`vscode-json-language-server` can be installed via `npm` >sh + npm i -g vscode-langservers-extracted - ```lua - --Enable (broadcasting) snippet capability for completion - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities.textDocument.completion.completionItem.snippetSupport = true +`vscode-json-language-server` only provides completions when snippet support is enabled. If you use Neovim older than v0.10 you need to enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. +>lua + --Enable (broadcasting) snippet capability for completion + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities.textDocument.completion.completionItem.snippetSupport = true - vim.lsp.config('jsonls', { - capabilities = capabilities, - }) - ``` -@type vim.lsp.Config + vim.lsp.config('jsonls', { + capabilities = capabilities, + }) Snippet to enable the language server: >lua vim.lsp.enable('jsonls') @@ -4464,13 +4216,10 @@ jsonnet_ls https://github.com/grafana/jsonnet-language-server - A Language Server Protocol (LSP) server for Jsonnet. +A Language Server Protocol (LSP) server for Jsonnet. - The language server can be installed with `go`: - ```sh - go install github.com/grafana/jsonnet-language-server@latest - ``` -@type vim.lsp.Config +The language server can be installed with `go` >sh + go install github.com/grafana/jsonnet-language-server@latest Snippet to enable the language server: >lua vim.lsp.enable('jsonnet_ls') @@ -4524,8 +4273,7 @@ just https://github.com/terror/just-lsp - `just-lsp` is an LSP for just built on top of the tree-sitter-just parser. -@type vim.lsp.Config +`just-lsp` is an LSP for just built on top of the tree-sitter-just parser. Snippet to enable the language server: >lua vim.lsp.enable('just') @@ -4545,9 +4293,7 @@ kcl https://github.com/kcl-lang/kcl.nvim - Language server for the KCL configuration and policy language. - -@type vim.lsp.Config +Language server for the KCL configuration and policy language. Snippet to enable the language server: >lua vim.lsp.enable('kcl') @@ -4566,8 +4312,7 @@ Default config: koka https://koka-lang.github.io/koka/doc/index.html - Koka is a functional programming language with effect types and handlers. -@type vim.lsp.Config +Koka is a functional programming language with effect types and handlers. Snippet to enable the language server: >lua vim.lsp.enable('koka') @@ -4641,8 +4386,7 @@ kulala_ls https://github.com/mistweaverco/kulala-ls - A minimal language server for HTTP syntax. -@type vim.lsp.Config +A minimal language server for HTTP syntax. Snippet to enable the language server: >lua vim.lsp.enable('kulala_ls') @@ -4713,13 +4457,10 @@ lelwel_ls https://github.com/0x2a-42/lelwel - Language server for lelwel grammars. +Language server for lelwel grammars. - You can install `lelwel-ls` via cargo: - ```sh - cargo install --features="lsp" lelwel - ``` -@type vim.lsp.Config +You can install `lelwel-ls` via cargo >sh + cargo install --features="lsp" lelwel Snippet to enable the language server: >lua vim.lsp.enable('lelwel_ls') @@ -4739,10 +4480,9 @@ lemminx https://github.com/eclipse/lemminx - The easiest way to install the server is to get a binary from https://github.com/redhat-developer/vscode-xml/releases and place it on your PATH. +The easiest way to install the server is to get a binary from https://github.com/redhat-developer/vscode-xml/releases and place it on your PATH. - NOTE to macOS users: Binaries from unidentified developers are blocked by default. If you trust the downloaded binary, run it once, cancel the prompt, then remove the binary from Gatekeeper quarantine with `xattr -d com.apple.quarantine lemminx`. It should now run without being blocked. -@type vim.lsp.Config +NOTE to macOS users: Binaries from unidentified developers are blocked by default. If you trust the downloaded binary, run it once, cancel the prompt, then remove the binary from Gatekeeper quarantine with `xattr -d com.apple.quarantine lemminx`. It should now run without being blocked. Snippet to enable the language server: >lua vim.lsp.enable('lemminx') @@ -4762,13 +4502,12 @@ lexical https://github.com/lexical-lsp/lexical - Lexical is a next-generation language server for the Elixir programming language. +Lexical is a next-generation language server for the Elixir programming language. - Follow the [Detailed Installation Instructions](https://github.com/lexical-lsp/lexical/blob/main/pages/installation.md) +Follow the [Detailed Installation Instructions](https://github.com/lexical-lsp/lexical/blob/main/pages/installation.md) - **By default, `lexical` doesn't have a `cmd` set.** - This is because nvim-lspconfig does not make assumptions about your path. -@type vim.lsp.Config +**By default, `lexical` doesn't have a `cmd` set.** +This is because nvim-lspconfig does not make assumptions about your path. Snippet to enable the language server: >lua vim.lsp.enable('lexical') @@ -4786,14 +4525,13 @@ lsp_ai https://github.com/SilasMarvin/lsp-ai - LSP-AI is an open source language server that serves as a backend for AI-powered functionality in your favorite code - editors. It offers features like in-editor chatting with LLMs and code completions. +LSP-AI is an open source language server that serves as a backend for AI-powered functionality in your favorite code +editors. It offers features like in-editor chatting with LLMs and code completions. - You will need to provide configuration for the inference backends and models you want to use, as well as configure - completion/code actions. See the [wiki docs](https://github.com/SilasMarvin/lsp-ai/wiki/Configuration) and - [examples](https://github.com/SilasMarvin/lsp-ai/blob/main/examples/nvim) for more information. -@type vim.lsp.Config +You will need to provide configuration for the inference backends and models you want to use, as well as configure +completion/code actions. See the [wiki docs](https://github.com/SilasMarvin/lsp-ai/wiki/Configuration) and +[examples](https://github.com/SilasMarvin/lsp-ai/blob/main/examples/nvim) for more information. Snippet to enable the language server: >lua vim.lsp.enable('lsp_ai') @@ -4900,72 +4638,68 @@ lua_ls https://github.com/luals/lua-language-server - Lua language server. +Lua language server. - `lua-language-server` can be installed by following the instructions [here](https://luals.github.io/#neovim-install). +`lua-language-server` can be installed by following the instructions [here](https://luals.github.io/#neovim-install). - The default `cmd` assumes that the `lua-language-server` binary can be found in `$PATH`. - - If you primarily use `lua-language-server` for Neovim, and want to provide completions, - analysis, and location handling for plugins on runtime path, you can use the following - settings. - - ```lua - vim.lsp.config('lua_ls', { - on_init = function(client) - if client.workspace_folders then - local path = client.workspace_folders[1].name - if - path ~= vim.fn.stdpath('config') - and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc')) - then - return - end - end +The default `cmd` assumes that the `lua-language-server` binary can be found in `$PATH`. - client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, { - runtime = { - -- Tell the language server which version of Lua you're using (most - -- likely LuaJIT in the case of Neovim) - version = 'LuaJIT', - -- Tell the language server how to find Lua modules same way as Neovim - -- (see `:h lua-module-load`) - path = { - 'lua/?.lua', - 'lua/?/init.lua', - }, - }, - -- Make the server aware of Neovim runtime files - workspace = { - checkThirdParty = false, - library = { - vim.env.VIMRUNTIME - -- Depending on the usage, you might want to add additional paths - -- here. - -- '${3rd}/luv/library' - -- '${3rd}/busted/library' - } - -- Or pull in all of 'runtimepath'. - -- NOTE: this is a lot slower and will cause issues when working on - -- your own configuration. - -- See https://github.com/neovim/nvim-lspconfig/issues/3189 - -- library = { - -- vim.api.nvim_get_runtime_file('', true), - -- } - } - }) - end, - settings = { - Lua = {} - } - }) - ``` +If you primarily use `lua-language-server` for Neovim, and want to provide completions, +analysis, and location handling for plugins on runtime path, you can use the following +settings. +>lua + vim.lsp.config('lua_ls', { + on_init = function(client) + if client.workspace_folders then + local path = client.workspace_folders[1].name + if + path ~= vim.fn.stdpath('config') + and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc')) + then + return + end + end - See `lua-language-server`'s [documentation](https://luals.github.io/wiki/settings/) for an explanation of the above fields: - * [Lua.runtime.path](https://luals.github.io/wiki/settings/#runtimepath) - * [Lua.workspace.library](https://luals.github.io/wiki/settings/#workspacelibrary) + client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, { + runtime = { + -- Tell the language server which version of Lua you're using (most + -- likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + -- Tell the language server how to find Lua modules same way as Neovim + -- (see `:h lua-module-load`) + path = { + 'lua/?.lua', + 'lua/?/init.lua', + }, + }, + -- Make the server aware of Neovim runtime files + workspace = { + checkThirdParty = false, + library = { + vim.env.VIMRUNTIME + -- Depending on the usage, you might want to add additional paths + -- here. + -- '${3rd}/luv/library' + -- '${3rd}/busted/library' + } + -- Or pull in all of 'runtimepath'. + -- NOTE: this is a lot slower and will cause issues when working on + -- your own configuration. + -- See https://github.com/neovim/nvim-lspconfig/issues/3189 + -- library = { + -- vim.api.nvim_get_runtime_file('', true), + -- } + } + }) + end, + settings = { + Lua = {} + } + }) -@type vim.lsp.Config +See `lua-language-server`'s [documentation](https://luals.github.io/wiki/settings/) for an explanation of the above fields: +* [Lua.runtime.path](https://luals.github.io/wiki/settings/#runtimepath) +* [Lua.workspace.library](https://luals.github.io/wiki/settings/#workspacelibrary) Snippet to enable the language server: >lua vim.lsp.enable('lua_ls') @@ -4985,16 +4719,13 @@ luau_lsp https://github.com/JohnnyMorganz/luau-lsp - Language server for the [Luau](https://luau-lang.org/) language. - - `luau-lsp` can be installed by downloading one of the release assets available at https://github.com/JohnnyMorganz/luau-lsp. +Language server for the [Luau](https://luau-lang.org/) language. - You might also have to set up automatic filetype detection for Luau files, for example like so: +`luau-lsp` can be installed by downloading one of the release assets available at https://github.com/JohnnyMorganz/luau-lsp. - ```vim - autocmd BufRead,BufNewFile *.luau setf luau - ``` -@type vim.lsp.Config +You might also have to set up automatic filetype detection for Luau files, for example like so: +>vim + autocmd BufRead,BufNewFile *.luau setf luau Snippet to enable the language server: >lua vim.lsp.enable('luau_lsp') @@ -5014,21 +4745,18 @@ lwc_ls https://github.com/forcedotcom/lightning-language-server/ - Language server for Lightning Web Components. +Language server for Lightning Web Components. - For manual installation, utilize the official [NPM package](https://www.npmjs.com/package/@salesforce/lwc-language-server). - Then, configure `cmd` to run the Node script at the unpacked location: - - ```lua - vim.lsp.config('lwc_ls', { - cmd = { - 'node', - '/path/to/node_modules/@salesforce/lwc-language-server/bin/lwc-language-server.js', - '--stdio' - } - }) - ``` -@type vim.lsp.Config +For manual installation, utilize the official [NPM package](https://www.npmjs.com/package/@salesforce/lwc-language-server). +Then, configure `cmd` to run the Node script at the unpacked location: +>lua + vim.lsp.config('lwc_ls', { + cmd = { + 'node', + '/path/to/node_modules/@salesforce/lwc-language-server/bin/lwc-language-server.js', + '--stdio' + } + }) Snippet to enable the language server: >lua vim.lsp.enable('lwc_ls') @@ -5054,20 +4782,15 @@ m68k https://github.com/grahambates/m68k-lsp - Language server for Motorola 68000 family assembly - - `m68k-lsp-server` can be installed via `npm`: +Language server for Motorola 68000 family assembly - ```sh - npm install -g m68k-lsp-server - ``` - - Ensure you are using the 68k asm syntax variant in Neovim. +`m68k-lsp-server` can be installed via `npm`: +>sh + npm install -g m68k-lsp-server - ```lua - vim.g.asmsyntax = 'asm68k' - ``` -@type vim.lsp.Config +Ensure you are using the 68k asm syntax variant in Neovim. +>lua + vim.g.asmsyntax = 'asm68k' Snippet to enable the language server: >lua vim.lsp.enable('m68k') @@ -5113,13 +4836,10 @@ marko-js https://github.com/marko-js/language-server - Using the Language Server Protocol to improve Marko's developer experience. +Using the Language Server Protocol to improve Marko's developer experience. - Can be installed via npm: - ``` - npm i -g @marko/language-server - ``` -@type vim.lsp.Config +Can be installed via npm:> + npm i -g @marko/language-server Snippet to enable the language server: >lua vim.lsp.enable('marko-js') @@ -5163,19 +4883,16 @@ matlab_ls https://github.com/mathworks/MATLAB-language-server - MATLAB® language server implements the Microsoft® Language Server Protocol for the MATLAB language. +MATLAB® language server implements the Microsoft® Language Server Protocol for the MATLAB language. - Make sure to set `MATLAB.installPath` to your MATLAB path, e.g.: - ```lua - settings = { - MATLAB = { - ... - installPath = '/usr/local/MATLAB/R2023a', - ... - }, - }, - ``` -@type vim.lsp.Config +Make sure to set `MATLAB.installPath` to your MATLAB path, e.g. >lua + settings = { + MATLAB = { + ... + installPath = '/usr/local/MATLAB/R2023a', + ... + }, + }, Snippet to enable the language server: >lua vim.lsp.enable('matlab_ls') @@ -5186,7 +4903,7 @@ Default config: { "matlab-language-server", "--stdio" } - filetypes: >lua { "matlab" } -- root_dir (use "gF" to view): ../lsp/matlab_ls.lua:18 +- root_dir (use "gF" to view): ../lsp/matlab_ls.lua:19 - settings: >lua { MATLAB = { @@ -5249,16 +4966,15 @@ metals https://scalameta.org/metals/ - Scala language server with rich IDE features. +Scala language server with rich IDE features. - See full instructions in the Metals documentation: +See full instructions in the Metals documentation: - https://scalameta.org/metals/docs/editors/vim#using-an-alternative-lsp-client +https://scalameta.org/metals/docs/editors/vim#using-an-alternative-lsp-client - Note: that if you're using [nvim-metals](https://github.com/scalameta/nvim-metals), that plugin fully handles the setup and installation of Metals, and you shouldn't set up Metals both with it and `lspconfig`. +Note: that if you're using [nvim-metals](https://github.com/scalameta/nvim-metals), that plugin fully handles the setup and installation of Metals, and you shouldn't set up Metals both with it and `lspconfig`. - To install Metals, make sure to have [coursier](https://get-coursier.io/docs/cli-installation) installed, and once you do you can install the latest Metals with `cs install metals`. -@type vim.lsp.Config +To install Metals, make sure to have [coursier](https://get-coursier.io/docs/cli-installation) installed, and once you do you can install the latest Metals with `cs install metals`. Snippet to enable the language server: >lua vim.lsp.enable('metals') @@ -5292,15 +5008,14 @@ millet https://github.com/azdavis/millet - Millet, a language server for Standard ML +Millet, a language server for Standard ML - To use with nvim: +To use with nvim: - 1. Install a Rust toolchain: https://rustup.rs - 2. Clone the repo - 3. Run `cargo build --release --bin millet-ls` - 4. Move `target/release/millet-ls` to somewhere on your $PATH as `millet` -@type vim.lsp.Config +1. Install a Rust toolchain: https://rustup.rs +2. Clone the repo +3. Run `cargo build --release --bin millet-ls` +4. Move `target/release/millet-ls` to somewhere on your $PATH as `millet` Snippet to enable the language server: >lua vim.lsp.enable('millet') @@ -5320,9 +5035,8 @@ mint https://www.mint-lang.com - Install Mint using the [instructions](https://www.mint-lang.com/install). - The language server is included since version 0.12.0. -@type vim.lsp.Config +Install Mint using the [instructions](https://www.mint-lang.com/install). +The language server is included since version 0.12.0. Snippet to enable the language server: >lua vim.lsp.enable('mint') @@ -5342,10 +5056,9 @@ mlir_lsp_server https://mlir.llvm.org/docs/Tools/MLIRLSP/#mlir-lsp-language-server--mlir-lsp-server= - The Language Server for the LLVM MLIR language +The Language Server for the LLVM MLIR language - `mlir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project) -@type vim.lsp.Config +`mlir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project) Snippet to enable the language server: >lua vim.lsp.enable('mlir_lsp_server') @@ -5365,10 +5078,9 @@ mlir_pdll_lsp_server https://mlir.llvm.org/docs/Tools/MLIRLSP/#pdll-lsp-language-server--mlir-pdll-lsp-server - The Language Server for the LLVM PDLL language +The Language Server for the LLVM PDLL language - `mlir-pdll-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project) -@type vim.lsp.Config +`mlir-pdll-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project) Snippet to enable the language server: >lua vim.lsp.enable('mlir_pdll_lsp_server') @@ -5388,11 +5100,10 @@ mm0_ls https://github.com/digama0/mm0 - Language Server for the metamath-zero theorem prover. +Language Server for the metamath-zero theorem prover. - Requires [mm0-rs](https://github.com/digama0/mm0/tree/master/mm0-rs) to be installed - and available on the `PATH`. -@type vim.lsp.Config +Requires [mm0-rs](https://github.com/digama0/mm0/tree/master/mm0-rs) to be installed +and available on the `PATH`. Snippet to enable the language server: >lua vim.lsp.enable('mm0_ls') @@ -5412,10 +5123,9 @@ mojo https://github.com/modularml/mojo - `mojo-lsp-server` can be installed [via Modular](https://developer.modular.com/download) +`mojo-lsp-server` can be installed [via Modular](https://developer.modular.com/download) - Mojo is a new programming language that bridges the gap between research and production by combining Python syntax and ecosystem with systems programming and metaprogramming features. -@type vim.lsp.Config +Mojo is a new programming language that bridges the gap between research and production by combining Python syntax and ecosystem with systems programming and metaprogramming features. Snippet to enable the language server: >lua vim.lsp.enable('mojo') @@ -5435,8 +5145,7 @@ motoko_lsp https://github.com/dfinity/vscode-motoko - Language server for the Motoko programming language. -@type vim.lsp.Config +Language server for the Motoko programming language. Snippet to enable the language server: >lua vim.lsp.enable('motoko_lsp') @@ -5460,16 +5169,13 @@ move_analyzer https://github.com/move-language/move/tree/main/language/move-analyzer - Language server for Move - - The `move-analyzer` can be installed by running: +Language server for Move - ``` - cargo install --git https://github.com/move-language/move move-analyzer - ``` +The `move-analyzer` can be installed by running: +> + cargo install --git https://github.com/move-language/move move-analyzer - See [`move-analyzer`'s doc](https://github.com/move-language/move/blob/1b258a06e3c7d2bc9174578aac92cca3ac19de71/language/move-analyzer/editors/code/README.md#how-to-install) for details. -@type vim.lsp.Config +See [`move-analyzer`'s doc](https://github.com/move-language/move/blob/1b258a06e3c7d2bc9174578aac92cca3ac19de71/language/move-analyzer/editors/code/README.md#how-to-install) for details. Snippet to enable the language server: >lua vim.lsp.enable('move_analyzer') @@ -5531,7 +5237,6 @@ Default config: muon https://muon.build -@type vim.lsp.Config Snippet to enable the language server: >lua vim.lsp.enable('muon') @@ -5542,7 +5247,7 @@ Default config: { "muon", "analyze", "lsp" } - filetypes: >lua { "meson" } -- root_dir (use "gF" to view): ../lsp/muon.lua:5 +- root_dir (use "gF" to view): ../lsp/muon.lua:6 < ------------------------------------------------------------------------------ @@ -5550,12 +5255,9 @@ mutt_ls https://github.com/neomutt/mutt-language-server - A language server for (neo)mutt's muttrc. It can be installed via pip. - - ```sh - pip install mutt-language-server - ``` -@type vim.lsp.Config +A language server for (neo)mutt's muttrc. It can be installed via pip. +>sh + pip install mutt-language-server Snippet to enable the language server: >lua vim.lsp.enable('mutt_ls') @@ -5577,28 +5279,21 @@ nelua_lsp https://github.com/codehz/nelua-lsp - nelua-lsp is an experimental nelua language server. +nelua-lsp is an experimental nelua language server. - You need [nelua.vim](https://github.com/stefanos82/nelua.vim/blob/main/ftdetect/nelua.vim) for nelua files to be recognized or add this to your config: +You need [nelua.vim](https://github.com/stefanos82/nelua.vim/blob/main/ftdetect/nelua.vim) for nelua files to be recognized or add this to your config: - in vimscript: - ```vimscript - au BufNewFile,BufRead *.nelua setf nelua - ``` +in vimscript >vimscript + au BufNewFile,BufRead *.nelua setf nelua - in lua: - ```lua - vim.api.nvim_create_autocmd({ "BufNewFile", "BufRead" }, { pattern = { "*.nelua" }, command = "setf nelua"}) - ``` - - **By default, nelua-lsp doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary. +in lua >lua + vim.api.nvim_create_autocmd({ "BufNewFile", "BufRead" }, { pattern = { "*.nelua" }, command = "setf nelua"}) - ```lua - vim.lsp.config('nelua_lsp', { - cmd = { "nelua", "-L", "/path/to/nelua-lsp/", "--script", "/path/to/nelua-lsp/nelua-lsp.lua" }, - }) - ``` -@type vim.lsp.Config +**By default, nelua-lsp doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. You must add the following to your init.vim or init.lua to set `cmd` to the absolute path ($HOME and ~ are not expanded) of the unzipped run script or binary. +>lua + vim.lsp.config('nelua_lsp', { + cmd = { "nelua", "-L", "/path/to/nelua-lsp/", "--script", "/path/to/nelua-lsp/nelua-lsp.lua" }, + }) Snippet to enable the language server: >lua vim.lsp.enable('nelua_lsp') @@ -5616,20 +5311,17 @@ neocmake https://github.com/Decodetalkers/neocmakelsp - CMake LSP Implementation - - Neovim does not currently include built-in snippets. `neocmakelsp` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. +CMake LSP Implementation - ```lua - --Enable (broadcasting) snippet capability for completion - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities.textDocument.completion.completionItem.snippetSupport = true +Neovim does not currently include built-in snippets. `neocmakelsp` only provides completions when snippet support is enabled. To enable completion, install a snippet plugin and add the following override to your language client capabilities during setup. +>lua + --Enable (broadcasting) snippet capability for completion + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities.textDocument.completion.completionItem.snippetSupport = true - vim.lsp.config('neocmake', { - capabilities = capabilities, - }) - ``` -@type vim.lsp.Config + vim.lsp.config('neocmake', { + capabilities = capabilities, + }) Snippet to enable the language server: >lua vim.lsp.enable('neocmake') @@ -5649,27 +5341,24 @@ nextflow_ls https://github.com/nextflow-io/language-server - Requirements: - - Java 17+ - - `nextflow_ls` can be installed by following the instructions [here](https://github.com/nextflow-io/language-server#development). +Requirements: + - Java 17+ - If you have installed nextflow language server, you can set the `cmd` custom path as follow: +`nextflow_ls` can be installed by following the instructions [here](https://github.com/nextflow-io/language-server#development). - ```lua - vim.lsp.config('nextflow_ls', { - cmd = { 'java', '-jar', 'nextflow-language-server-all.jar' }, - filetypes = { 'nextflow' }, - settings = { - nextflow = { - files = { - exclude = { '.git', '.nf-test', 'work' }, - }, - }, - }, - }) - ``` -@type vim.lsp.Config +If you have installed nextflow language server, you can set the `cmd` custom path as follow: +>lua + vim.lsp.config('nextflow_ls', { + cmd = { 'java', '-jar', 'nextflow-language-server-all.jar' }, + filetypes = { 'nextflow' }, + settings = { + nextflow = { + files = { + exclude = { '.git', '.nf-test', 'work' }, + }, + }, + }, + }) Snippet to enable the language server: >lua vim.lsp.enable('nextflow_ls') @@ -5697,8 +5386,7 @@ nextls https://github.com/elixir-tools/next-ls - **By default, next-ls does not set its `cmd`. Please see the following [detailed instructions](https://www.elixir-tools.dev/docs/next-ls/installation/) for possible installation methods.** -@type vim.lsp.Config +**By default, next-ls does not set its `cmd`. Please see the following [detailed instructions](https://www.elixir-tools.dev/docs/next-ls/installation/) for possible installation methods.** Snippet to enable the language server: >lua vim.lsp.enable('nextls') @@ -5716,12 +5404,9 @@ nginx_language_server https://pypi.org/project/nginx-language-server/ - `nginx-language-server` can be installed via pip: - - ```sh - pip install -U nginx-language-server - ``` -@type vim.lsp.Config +`nginx-language-server` can be installed via pip: +>sh + pip install -U nginx-language-server Snippet to enable the language server: >lua vim.lsp.enable('nginx_language_server') @@ -5741,28 +5426,21 @@ nickel_ls Nickel Language Server - https://github.com/tweag/nickel +https://github.com/tweag/nickel - `nls` can be installed with nix, or cargo, from the Nickel repository. - ```sh - git clone https://github.com/tweag/nickel.git - ``` +`nls` can be installed with nix, or cargo, from the Nickel repository >sh + git clone https://github.com/tweag/nickel.git - Nix: - ```sh - cd nickel - nix-env -f . -i - ``` +Nix >sh + cd nickel + nix-env -f . -i - cargo: - ```sh - cd nickel/lsp/nls - cargo install --path . - ``` +cargo >sh + cd nickel/lsp/nls + cargo install --path . - In order to have lspconfig detect Nickel filetypes (a prerequisite for autostarting a server), - install the [Nickel vim plugin](https://github.com/nickel-lang/vim-nickel). -@type vim.lsp.Config +In order to have lspconfig detect Nickel filetypes (a prerequisite for autostarting a server), +install the [Nickel vim plugin](https://github.com/nickel-lang/vim-nickel). Snippet to enable the language server: >lua vim.lsp.enable('nickel_ls') @@ -5782,13 +5460,12 @@ nil_ls https://github.com/oxalica/nil - A new language server for Nix Expression Language. +A new language server for Nix Expression Language. - If you are using Nix with Flakes support, run `nix profile install github:oxalica/nil` to install. - Check the repository README for more information. +If you are using Nix with Flakes support, run `nix profile install github:oxalica/nil` to install. +Check the repository README for more information. - _See an example config at https://github.com/oxalica/nil/blob/main/dev/nvim-lsp.nix._ -@type vim.lsp.Config +_See an example config at https://github.com/oxalica/nil/blob/main/dev/nvim-lsp.nix._ Snippet to enable the language server: >lua vim.lsp.enable('nil_ls') @@ -5850,11 +5527,10 @@ nixd https://github.com/nix-community/nixd - Nix language server, based on nix libraries. +Nix language server, based on nix libraries. - If you are using Nix with Flakes support, run `nix profile install github:nix-community/nixd` to install. - Check the repository README for more information. -@type vim.lsp.Config +If you are using Nix with Flakes support, run `nix profile install github:nix-community/nixd` to install. +Check the repository README for more information. Snippet to enable the language server: >lua vim.lsp.enable('nixd') @@ -5929,8 +5605,7 @@ nushell https://github.com/nushell/nushell - Nushell built-in language server. -@type vim.lsp.Config +Nushell built-in language server. Snippet to enable the language server: >lua vim.lsp.enable('nushell') @@ -5941,7 +5616,7 @@ Default config: { "nu", "--lsp" } - filetypes: >lua { "nu" } -- root_dir (use "gF" to view): ../lsp/nushell.lua:7 +- root_dir (use "gF" to view): ../lsp/nushell.lua:8 < ------------------------------------------------------------------------------ @@ -5949,13 +5624,10 @@ nxls https://github.com/nrwl/nx-console/tree/master/apps/nxls - nxls, a language server for Nx Workspaces +nxls, a language server for Nx Workspaces - `nxls` can be installed via `npm`: - ```sh - npm i -g nxls - ``` -@type vim.lsp.Config +`nxls` can be installed via `npm` >sh + npm i -g nxls Snippet to enable the language server: >lua vim.lsp.enable('nxls') @@ -6084,10 +5756,9 @@ opencl_ls https://github.com/Galarius/opencl-language-server - Build instructions can be found [here](https://github.com/Galarius/opencl-language-server/blob/main/_dev/build.md). +Build instructions can be found [here](https://github.com/Galarius/opencl-language-server/blob/main/_dev/build.md). - Prebuilt binaries are available for Linux, macOS and Windows [here](https://github.com/Galarius/opencl-language-server/releases). -@type vim.lsp.Config +Prebuilt binaries are available for Linux, macOS and Windows [here](https://github.com/Galarius/opencl-language-server/releases). Snippet to enable the language server: >lua vim.lsp.enable('opencl_ls') @@ -6107,23 +5778,18 @@ openscad_ls https://github.com/dzhu/openscad-language-server - A Language Server Protocol server for OpenSCAD - - You can build and install `openscad-language-server` binary with `cargo`: - ```sh - cargo install openscad-language-server - ``` +A Language Server Protocol server for OpenSCAD - Vim does not have built-in syntax for the `openscad` filetype currently. +You can build and install `openscad-language-server` binary with `cargo` >sh + cargo install openscad-language-server - This can be added via an autocmd: +Vim does not have built-in syntax for the `openscad` filetype currently. - ```lua - vim.cmd [[ autocmd BufRead,BufNewFile *.scad set filetype=openscad ]] - ``` +This can be added via an autocmd: +>lua + vim.cmd [[ autocmd BufRead,BufNewFile *.scad set filetype=openscad ]] - or by installing a filetype plugin such as https://github.com/sirtaj/vim-openscad -@type vim.lsp.Config +or by installing a filetype plugin such as https://github.com/sirtaj/vim-openscad Snippet to enable the language server: >lua vim.lsp.enable('openscad_ls') @@ -6143,13 +5809,10 @@ openscad_lsp https://github.com/Leathong/openscad-LSP - A Language Server Protocol server for OpenSCAD +A Language Server Protocol server for OpenSCAD - You can build and install `openscad-lsp` binary with `cargo`: - ```sh - cargo install openscad-lsp - ``` -@type vim.lsp.Config +You can build and install `openscad-lsp` binary with `cargo` >sh + cargo install openscad-lsp Snippet to enable the language server: >lua vim.lsp.enable('openscad_lsp') @@ -6192,8 +5855,7 @@ pact_ls https://github.com/kadena-io/pact-lsp - The Pact language server -@type vim.lsp.Config +The Pact language server Snippet to enable the language server: >lua vim.lsp.enable('pact_ls') @@ -6241,15 +5903,12 @@ pbls https://git.sr.ht/~rrc/pbls - Prerequisites: Ensure protoc is on your $PATH. +Prerequisites: Ensure protoc is on your $PATH. - `pbls` can be installed via `cargo install`: - ```sh - cargo install --git https://git.sr.ht/~rrc/pbls - ``` +`pbls` can be installed via `cargo install` >sh + cargo install --git https://git.sr.ht/~rrc/pbls - pbls is a Language Server for protobuf -@type vim.lsp.Config +pbls is a Language Server for protobuf Snippet to enable the language server: >lua vim.lsp.enable('pbls') @@ -6269,10 +5928,9 @@ perlls https://github.com/richterger/Perl-LanguageServer/tree/master/clients/vscode/perl - `Perl-LanguageServer`, a language server for Perl. +`Perl-LanguageServer`, a language server for Perl. - To use the language server, ensure that you have Perl::LanguageServer installed and perl command is on your path. -@type vim.lsp.Config +To use the language server, ensure that you have Perl::LanguageServer installed and perl command is on your path. Snippet to enable the language server: >lua vim.lsp.enable('perlls') @@ -6301,24 +5959,19 @@ perlnavigator https://github.com/bscan/PerlNavigator - A Perl language server. It can be installed via npm: - - ```sh - npm i -g perlnavigator-server - ``` +A Perl language server. It can be installed via npm: +>sh + npm i -g perlnavigator-server - At minimum, you will need `perl` in your path. If you want to use a non-standard `perl` you will need to set your configuration like so: - ```lua - settings = { - perlnavigator = { - perlPath = '/some/odd/location/my-perl' - } - } - ``` +At minimum, you will need `perl` in your path. If you want to use a non-standard `perl` you will need to set your configuration like so >lua + settings = { + perlnavigator = { + perlPath = '/some/odd/location/my-perl' + } + } - The `contributes.configuration.properties` section of `perlnavigator`'s `package.json` has all available configuration settings. All - settings have a reasonable default, but, at minimum, you may want to point `perlnavigator` at your `perltidy` and `perlcritic` configurations. -@type vim.lsp.Config +The `contributes.configuration.properties` section of `perlnavigator`'s `package.json` has all available configuration settings. All +settings have a reasonable default, but, at minimum, you may want to point `perlnavigator` at your `perltidy` and `perlcritic` configurations. Snippet to enable the language server: >lua vim.lsp.enable('perlnavigator') @@ -6337,12 +5990,11 @@ Default config: perlpls https://github.com/FractalBoy/perl-language-server - https://metacpan.org/pod/PLS +https://metacpan.org/pod/PLS - `PLS`, another language server for Perl. +`PLS`, another language server for Perl. - To use the language server, ensure that you have PLS installed and that it is in your path -@type vim.lsp.Config +To use the language server, ensure that you have PLS installed and that it is in your path Snippet to enable the language server: >lua vim.lsp.enable('perlpls') @@ -6373,8 +6025,7 @@ pest_ls https://github.com/pest-parser/pest-ide-tools - Language server for pest grammars. -@type vim.lsp.Config +Language server for pest grammars. Snippet to enable the language server: >lua vim.lsp.enable('pest_ls') @@ -6455,10 +6106,9 @@ please https://github.com/thought-machine/please - High-performance extensible build system for reproducible multi-language builds. +High-performance extensible build system for reproducible multi-language builds. - The `plz` binary will automatically install the LSP for you on first run -@type vim.lsp.Config +The `plz` binary will automatically install the LSP for you on first run Snippet to enable the language server: >lua vim.lsp.enable('please') @@ -6478,8 +6128,7 @@ pli `pli_language_server` is a language server for the PL/I language used on IBM SystemZ mainframes. - To learn how to configure the PL/I language server, see the [PL/I Language Support documentation](https://github.com/zowe/zowe-pli-language-support). -@type vim.lsp.Config +To learn how to configure the PL/I language server, see the [PL/I Language Support documentation](https://github.com/zowe/zowe-pli-language-support). Snippet to enable the language server: >lua vim.lsp.enable('pli') @@ -6499,8 +6148,7 @@ poryscript_pls https://github.com/huderlem/poryscript-pls - Language server for poryscript (a high level scripting language for GBA-era Pokémon decompilation projects) -@type vim.lsp.Config +Language server for poryscript (a high level scripting language for GBA-era Pokémon decompilation projects) Snippet to enable the language server: >lua vim.lsp.enable('poryscript_pls') @@ -6520,8 +6168,7 @@ postgres_lsp https://pgtools.dev - A collection of language tools and a Language Server Protocol (LSP) implementation for Postgres, focusing on developer experience and reliable SQL tooling. -@type vim.lsp.Config +A collection of language tools and a Language Server Protocol (LSP) implementation for Postgres, focusing on developer experience and reliable SQL tooling. Snippet to enable the language server: >lua vim.lsp.enable('postgres_lsp') @@ -6586,11 +6233,8 @@ prismals Language Server for the Prisma JavaScript and TypeScript ORM - `@prisma/language-server` can be installed via npm - ```sh - npm install -g @prisma/language-server - ``` -@type vim.lsp.Config +`@prisma/language-server` can be installed via np >sh + npm install -g @prisma/language-server Snippet to enable the language server: >lua vim.lsp.enable('prismals') @@ -6616,8 +6260,7 @@ prolog_ls https://github.com/jamesnvc/lsp_server - Language Server Protocol server for SWI-Prolog -@type vim.lsp.Config +Language Server Protocol server for SWI-Prolog Snippet to enable the language server: >lua vim.lsp.enable('prolog_ls') @@ -6637,10 +6280,9 @@ prosemd_lsp https://github.com/kitten/prosemd-lsp - An experimental LSP for Markdown. +An experimental LSP for Markdown. - Please see the manual installation instructions: https://github.com/kitten/prosemd-lsp#manual-installation -@type vim.lsp.Config +Please see the manual installation instructions: https://github.com/kitten/prosemd-lsp#manual-installation Snippet to enable the language server: >lua vim.lsp.enable('prosemd_lsp') @@ -6660,13 +6302,10 @@ protols https://github.com/coder3101/protols - `protols` can be installed via `cargo`: - ```sh - cargo install protols - ``` +`protols` can be installed via `cargo` >sh + cargo install protols - A Language Server for proto3 files. It uses tree-sitter and runs in single file mode. -@type vim.lsp.Config +A Language Server for proto3 files. It uses tree-sitter and runs in single file mode. Snippet to enable the language server: >lua vim.lsp.enable('protols') @@ -6686,11 +6325,8 @@ psalm https://github.com/vimeo/psalm - Can be installed with composer. - ```sh - composer global require vimeo/psalm - ``` -@type vim.lsp.Config +Can be installed with composer >sh + composer global require vimeo/psalm Snippet to enable the language server: >lua vim.lsp.enable('psalm') @@ -6710,10 +6346,9 @@ pug https://github.com/opa-oz/pug-lsp - An implementation of the Language Protocol Server for [Pug.js](http://pugjs.org) +An implementation of the Language Protocol Server for [Pug.js](http://pugjs.org) - PugLSP can be installed via `go install github.com/opa-oz/pug-lsp@latest`, or manually downloaded from [releases page](https://github.com/opa-oz/pug-lsp/releases) -@type vim.lsp.Config +PugLSP can be installed via `go install github.com/opa-oz/pug-lsp@latest`, or manually downloaded from [releases page](https://github.com/opa-oz/pug-lsp/releases) Snippet to enable the language server: >lua vim.lsp.enable('pug') @@ -6733,19 +6368,18 @@ puppet LSP server for Puppet. - Installation: +Installation: - - Clone the editor-services repository: - https://github.com/puppetlabs/puppet-editor-services +- Clone the editor-services repository: + https://github.com/puppetlabs/puppet-editor-services - - Navigate into that directory and run: `bundle install` +- Navigate into that directory and run: `bundle install` - - Install the 'puppet-lint' gem: `gem install puppet-lint` +- Install the 'puppet-lint' gem: `gem install puppet-lint` - - Add that repository to $PATH. +- Add that repository to $PATH. - - Ensure you can run `puppet-languageserver` from outside the editor-services directory. -@type vim.lsp.Config +- Ensure you can run `puppet-languageserver` from outside the editor-services directory. Snippet to enable the language server: >lua vim.lsp.enable('puppet') @@ -6765,11 +6399,10 @@ purescriptls https://github.com/nwolverson/purescript-language-server - The `purescript-language-server` can be added to your project and `$PATH` via +The `purescript-language-server` can be added to your project and `$PATH` via - * JavaScript package manager such as npm, pnpm, Yarn, et al. - * Nix under the `nodePackages` and `nodePackages_latest` package sets -@type vim.lsp.Config +* JavaScript package manager such as npm, pnpm, Yarn, et al. +* Nix under the `nodePackages` and `nodePackages_latest` package sets Snippet to enable the language server: >lua vim.lsp.enable('purescriptls') @@ -6789,30 +6422,27 @@ pylsp https://github.com/python-lsp/python-lsp-server - A Python 3.6+ implementation of the Language Server Protocol. +A Python 3.6+ implementation of the Language Server Protocol. - See the [project's README](https://github.com/python-lsp/python-lsp-server) for installation instructions. +See the [project's README](https://github.com/python-lsp/python-lsp-server) for installation instructions. - Configuration options are documented [here](https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md). - In order to configure an option, it must be translated to a nested Lua table and included in the `settings` argument to the `config('pylsp', {})` function. - For example, in order to set the `pylsp.plugins.pycodestyle.ignore` option: - ```lua - vim.lsp.config('pylsp', { - settings = { - pylsp = { - plugins = { - pycodestyle = { - ignore = {'W391'}, - maxLineLength = 100 - } - } - } - } - }) - ``` +Configuration options are documented [here](https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md). +In order to configure an option, it must be translated to a nested Lua table and included in the `settings` argument to the `config('pylsp', {})` function. +For example, in order to set the `pylsp.plugins.pycodestyle.ignore` option >lua + vim.lsp.config('pylsp', { + settings = { + pylsp = { + plugins = { + pycodestyle = { + ignore = {'W391'}, + maxLineLength = 100 + } + } + } + } + }) - Note: This is a community fork of `pyls`. -@type vim.lsp.Config +Note: This is a community fork of `pyls`. Snippet to enable the language server: >lua vim.lsp.enable('pylsp') @@ -6832,13 +6462,12 @@ pylyzer https://github.com/mtshiba/pylyzer - `pylyzer`, a fast static code analyzer & language server for Python. +`pylyzer`, a fast static code analyzer & language server for Python. - `pylyzer` requires Erg as dependency, and finds it via `ERG_PATH` environment variable. - This config sets `ERG_PATH="~/.erg"`. Set `cmd_env` if you want to change it. - To install Erg, simply extract tarball/zip from [Erg releases](https://github.com/erg-lang/erg/releases/latest) - to the the path where you want to install it, e.g. `~/.erg`. -@type vim.lsp.Config +`pylyzer` requires Erg as dependency, and finds it via `ERG_PATH` environment variable. +This config sets `ERG_PATH="~/.erg"`. Set `cmd_env` if you want to change it. +To install Erg, simply extract tarball/zip from [Erg releases](https://github.com/erg-lang/erg/releases/latest) +to the the path where you want to install it, e.g. `~/.erg`. Snippet to enable the language server: >lua vim.lsp.enable('pylyzer') @@ -6871,13 +6500,12 @@ pyre https://pyre-check.org/ - `pyre` a static type checker for Python 3. +`pyre` a static type checker for Python 3. - `pyre` offers an extremely limited featureset. It currently only supports diagnostics, - which are triggered on save. +`pyre` offers an extremely limited featureset. It currently only supports diagnostics, +which are triggered on save. - Do not report issues for missing features in `pyre` to `lspconfig`. -@type vim.lsp.Config +Do not report issues for missing features in `pyre` to `lspconfig`. Snippet to enable the language server: >lua vim.lsp.enable('pyre') @@ -6952,10 +6580,9 @@ qmlls https://doc.qt.io/qt-6/qtqml-tooling-qmlls.html - > QML Language Server is a tool shipped with Qt that helps you write code in your favorite (LSP-supporting) editor. +> QML Language Server is a tool shipped with Qt that helps you write code in your favorite (LSP-supporting) editor. - Source in the [QtDeclarative repository](https://code.qt.io/cgit/qt/qtdeclarative.git/) -@type vim.lsp.Config +Source in the [QtDeclarative repository](https://code.qt.io/cgit/qt/qtdeclarative.git/) Snippet to enable the language server: >lua vim.lsp.enable('qmlls') @@ -6975,10 +6602,9 @@ quick_lint_js https://quick-lint-js.com/ - quick-lint-js finds bugs in JavaScript programs. +quick-lint-js finds bugs in JavaScript programs. - See installation [instructions](https://quick-lint-js.com/install/) -@type vim.lsp.Config +See installation [instructions](https://quick-lint-js.com/install/) Snippet to enable the language server: >lua vim.lsp.enable('quick_lint_js') @@ -6997,15 +6623,12 @@ Default config: r_language_server [languageserver](https://github.com/REditorSupport/languageserver) is an - implementation of the Microsoft's Language Server Protocol for the R - language. - - It is released on CRAN and can be easily installed by +implementation of the Microsoft's Language Server Protocol for the R +language. - ```r - install.packages("languageserver") - ``` -@type vim.lsp.Config +It is released on CRAN and can be easily installed by +>r + install.packages("languageserver") Snippet to enable the language server: >lua vim.lsp.enable('r_language_server') @@ -7016,7 +6639,7 @@ Default config: { "R", "--no-echo", "-e", "languageserver::run()" } - filetypes: >lua { "r", "rmd", "quarto" } -- root_dir (use "gF" to view): ../lsp/r_language_server.lua:13 +- root_dir (use "gF" to view): ../lsp/r_language_server.lua:14 < ------------------------------------------------------------------------------ @@ -7024,12 +6647,11 @@ racket_langserver [https://github.com/jeapostrophe/racket-langserver](https://github.com/jeapostrophe/racket-langserver) - The Racket language server. This project seeks to use - [DrRacket](https://github.com/racket/drracket)'s public API to provide - functionality that mimics DrRacket's code tools as closely as possible. +The Racket language server. This project seeks to use +[DrRacket](https://github.com/racket/drracket)'s public API to provide +functionality that mimics DrRacket's code tools as closely as possible. - Install via `raco`: `raco pkg install racket-langserver` -@type vim.lsp.Config +Install via `raco`: `raco pkg install racket-langserver` Snippet to enable the language server: >lua vim.lsp.enable('racket_langserver') @@ -7048,25 +6670,20 @@ Default config: raku_navigator https://github.com/bscan/RakuNavigator - A Raku language server - **By default, raku_navigator doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. - You have to install the language server manually. - Clone the RakuNavigator repo, install based on the [instructions](https://github.com/bscan/raku_Navigator#installation-for-other-editors), - and point `cmd` to `server.js` inside the `server/out` directory: - ```lua - cmd = {'node', '<path_to_repo>/server/out/server.js', '--stdio'} - ``` - At minimum, you will need `raku` in your path. If you want to use a non-standard `raku` you will need to set your configuration like so: - ```lua - settings = { - raku_navigator = { - rakuPath = '/some/odd/location/my-raku' - } - } - ``` - The `contributes.configuration.properties` section of `raku_navigator`'s `package.json` has all available configuration settings. All - settings have a reasonable default, but, at minimum, you may want to point `raku_navigator` at your `raku_tidy` and `raku_critic` configurations. -@type vim.lsp.Config +A Raku language server +**By default, raku_navigator doesn't have a `cmd` set.** This is because nvim-lspconfig does not make assumptions about your path. +You have to install the language server manually. +Clone the RakuNavigator repo, install based on the [instructions](https://github.com/bscan/raku_Navigator#installation-for-other-editors), +and point `cmd` to `server.js` inside the `server/out` directory >lua + cmd = {'node', '<path_to_repo>/server/out/server.js', '--stdio'} +At minimum, you will need `raku` in your path. If you want to use a non-standard `raku` you will need to set your configuration like so >lua + settings = { + raku_navigator = { + rakuPath = '/some/odd/location/my-raku' + } + } +The `contributes.configuration.properties` section of `raku_navigator`'s `package.json` has all available configuration settings. All +settings have a reasonable default, but, at minimum, you may want to point `raku_navigator` at your `raku_tidy` and `raku_critic` configurations. Snippet to enable the language server: >lua vim.lsp.enable('raku_navigator') @@ -7086,8 +6703,7 @@ reason_ls Reason language server - You can install reason language server from [reason-language-server](https://github.com/jaredly/reason-language-server) repository. -@type vim.lsp.Config +You can install reason language server from [reason-language-server](https://github.com/jaredly/reason-language-server) repository. Snippet to enable the language server: >lua vim.lsp.enable('reason_ls') @@ -7151,33 +6767,26 @@ remark_ls https://github.com/remarkjs/remark-language-server - `remark-language-server` can be installed via `npm`: - ```sh - npm install -g remark-language-server - ``` +`remark-language-server` can be installed via `npm` >sh + npm install -g remark-language-server - `remark-language-server` uses the same - [configuration files](https://github.com/remarkjs/remark/tree/main/packages/remark-cli#example-config-files-json-yaml-js) - as `remark-cli`. +`remark-language-server` uses the same +[configuration files](https://github.com/remarkjs/remark/tree/main/packages/remark-cli#example-config-files-json-yaml-js) +as `remark-cli`. - This uses a plugin based system. Each plugin needs to be installed locally using `npm` or `yarn`. +This uses a plugin based system. Each plugin needs to be installed locally using `npm` or `yarn`. - For example, given the following `.remarkrc.json`: - - ```json - { - "presets": [ - "remark-preset-lint-recommended" - ] - } - ``` - - `remark-preset-lint-recommended` needs to be installed in the local project: +For example, given the following `.remarkrc.json`: +>json + { + "presets": [ + "remark-preset-lint-recommended" + ] + } - ```sh - npm install remark-preset-lint-recommended - ``` -@type vim.lsp.Config +`remark-preset-lint-recommended` needs to be installed in the local project: +>sh + npm install remark-preset-lint-recommended Snippet to enable the language server: >lua vim.lsp.enable('remark_ls') @@ -7197,38 +6806,31 @@ rescriptls https://github.com/rescript-lang/rescript-vscode/tree/master/server - ReScript Language Server can be installed via npm: - ```sh - npm install -g @rescript/language-server - ``` +ReScript Language Server can be installed via npm >sh + npm install -g @rescript/language-server - See [package.json](https://github.com/rescript-lang/rescript-vscode/blob/master/package.json#L139) - for init_options supported. +See [package.json](https://github.com/rescript-lang/rescript-vscode/blob/master/package.json#L139) +for init_options supported. - For example, in order to disable the `inlayHints` option: - ```lua - vim.lsp.config('rescriptls', { - settings = { - rescript = { - settings = { - inlayHints = { enable = false }, - }, - }, - }) - } - ``` +For example, in order to disable the `inlayHints` option >lua + vim.lsp.config('rescriptls', { + settings = { + rescript = { + settings = { + inlayHints = { enable = false }, + }, + }, + }) + } - Detect file changes: While using @rescript/language-server >= 1.63.0 you have to detect file changes by registering the didChangeWatchedFiles hook. - ```lua - capabilities = { - workspace = { - didChangeWatchedFiles = { - dynamicRegistration = true, - }, - }, - } - ``` -@type vim.lsp.Config +Detect file changes: While using @rescript/language-server >= 1.63.0 you have to detect file changes by registering the didChangeWatchedFiles hook >lua + capabilities = { + workspace = { + didChangeWatchedFiles = { + dynamicRegistration = true, + }, + }, + } Snippet to enable the language server: >lua vim.lsp.enable('rescriptls') @@ -7270,31 +6872,26 @@ rls https://github.com/rust-lang/rls - rls, a language server for Rust +rls, a language server for Rust - See https://github.com/rust-lang/rls#setup to setup rls itself. - See https://github.com/rust-lang/rls#configuration for rls-specific settings. - All settings listed on the rls configuration section of the readme - must be set under settings.rust as follows: - - ```lua - vim.lsp.config('rls', { - settings = { - rust = { - unstable_features = true, - build_on_save = false, - all_features = true, - }, - }, - }) - ``` - - If you want to use rls for a particular build, eg nightly, set cmd as follows: +See https://github.com/rust-lang/rls#setup to setup rls itself. +See https://github.com/rust-lang/rls#configuration for rls-specific settings. +All settings listed on the rls configuration section of the readme +must be set under settings.rust as follows: +>lua + vim.lsp.config('rls', { + settings = { + rust = { + unstable_features = true, + build_on_save = false, + all_features = true, + }, + }, + }) - ```lua - cmd = {"rustup", "run", "nightly", "rls"} - ``` -@type vim.lsp.Config +If you want to use rls for a particular build, eg nightly, set cmd as follows: +>lua + cmd = {"rustup", "run", "nightly", "rls"} Snippet to enable the language server: >lua vim.lsp.enable('rls') @@ -7314,12 +6911,11 @@ rnix https://github.com/nix-community/rnix-lsp - A language server for Nix providing basic completion and formatting via nixpkgs-fmt. +A language server for Nix providing basic completion and formatting via nixpkgs-fmt. - To install manually, run `cargo install rnix-lsp`. If you are using nix, rnix-lsp is in nixpkgs. +To install manually, run `cargo install rnix-lsp`. If you are using nix, rnix-lsp is in nixpkgs. - This server accepts configuration via the `settings` key. -@type vim.lsp.Config +This server accepts configuration via the `settings` key. Snippet to enable the language server: >lua vim.lsp.enable('rnix') @@ -7332,7 +6928,7 @@ Default config: { "nix" } - init_options: >lua {} -- root_dir (use "gF" to view): ../lsp/rnix.lua:11 +- root_dir (use "gF" to view): ../lsp/rnix.lua:12 - settings: >lua {} < @@ -7342,8 +6938,7 @@ robotcode https://robotcode.io - RobotCode - Language Server Protocol implementation for Robot Framework. -@type vim.lsp.Config +RobotCode - Language Server Protocol implementation for Robot Framework. Snippet to enable the language server: >lua vim.lsp.enable('robotcode') @@ -7354,7 +6949,7 @@ Default config: { "robotcode", "language-server" } - filetypes: >lua { "robot", "resource" } -- get_language_id (use "gF" to view): ../lsp/robotcode.lua:7 +- get_language_id (use "gF" to view): ../lsp/robotcode.lua:8 - root_markers: >lua { "robot.toml", "pyproject.toml", "Pipfile", ".git" } < @@ -7364,8 +6959,7 @@ robotframework_ls https://github.com/robocorp/robotframework-lsp - Language Server Protocol implementation for Robot Framework. -@type vim.lsp.Config +Language Server Protocol implementation for Robot Framework. Snippet to enable the language server: >lua vim.lsp.enable('robotframework_ls') @@ -7385,9 +6979,8 @@ roc_ls https://github.com/roc-lang/roc/tree/main/crates/language_server#roc_language_server - The built-in language server for the Roc programming language. - [Installation](https://github.com/roc-lang/roc/tree/main/crates/language_server#installing) -@type vim.lsp.Config +The built-in language server for the Roc programming language. +[Installation](https://github.com/roc-lang/roc/tree/main/crates/language_server#installing) Snippet to enable the language server: >lua vim.lsp.enable('roc_ls') @@ -7407,14 +7000,11 @@ rome https://rome.tools - Language server for the Rome Frontend Toolchain. - - (Unmaintained, use [Biome](https://biomejs.dev/blog/annoucing-biome) instead.) +Language server for the Rome Frontend Toolchain. - ```sh - npm install [-g] rome - ``` -@type vim.lsp.Config +(Unmaintained, use [Biome](https://biomejs.dev/blog/annoucing-biome) instead.) +>sh + npm install [-g] rome Snippet to enable the language server: >lua vim.lsp.enable('rome') @@ -7521,14 +7111,11 @@ rpmspec https://github.com/dcermak/rpm-spec-language-server - Language server protocol (LSP) support for RPM Spec files. - - `rpm-spec-language-server` can be installed by running, +Language server protocol (LSP) support for RPM Spec files. - ```sh - pip install rpm-spec-language-server - ``` -@type vim.lsp.Config +`rpm-spec-language-server` can be installed by running, +>sh + pip install rpm-spec-language-server Snippet to enable the language server: >lua vim.lsp.enable('rpmspec') @@ -7549,7 +7136,6 @@ Default config: rubocop https://github.com/rubocop/rubocop -@type vim.lsp.Config Snippet to enable the language server: >lua vim.lsp.enable('rubocop') @@ -7569,16 +7155,13 @@ ruby_lsp https://shopify.github.io/ruby-lsp/ - This gem is an implementation of the language server protocol specification for - Ruby, used to improve editor features. - - Install the gem. There's no need to require it, since the server is used as a - standalone executable. +This gem is an implementation of the language server protocol specification for +Ruby, used to improve editor features. - ```sh - gem install ruby-lsp - ``` -@type vim.lsp.Config +Install the gem. There's no need to require it, since the server is used as a +standalone executable. +>sh + gem install ruby-lsp Snippet to enable the language server: >lua vim.lsp.enable('ruby_lsp') @@ -7602,30 +7185,25 @@ ruff https://github.com/astral-sh/ruff - A Language Server Protocol implementation for Ruff, an extremely fast Python linter and code formatter, written in Rust. It can be installed via `pip`. - - ```sh - pip install ruff - ``` - - **Available in Ruff `v0.4.5` in beta and stabilized in Ruff `v0.5.3`.** +A Language Server Protocol implementation for Ruff, an extremely fast Python linter and code formatter, written in Rust. It can be installed via `pip`. +>sh + pip install ruff - This is the new built-in language server written in Rust. It supports the same feature set as `ruff-lsp`, but with superior performance and no installation required. Note that the `ruff-lsp` server will continue to be maintained until further notice. +**Available in Ruff `v0.4.5` in beta and stabilized in Ruff `v0.5.3`.** - Server settings can be provided via: +This is the new built-in language server written in Rust. It supports the same feature set as `ruff-lsp`, but with superior performance and no installation required. Note that the `ruff-lsp` server will continue to be maintained until further notice. - ```lua - vim.lsp.config('ruff', { - init_options = { - settings = { - -- Server settings should go here - } - } - }) - ``` +Server settings can be provided via: +>lua + vim.lsp.config('ruff', { + init_options = { + settings = { + -- Server settings should go here + } + } + }) - Refer to the [documentation](https://docs.astral.sh/ruff/editors/) for more details. -@type vim.lsp.Config +Refer to the [documentation](https://docs.astral.sh/ruff/editors/) for more details. Snippet to enable the language server: >lua vim.lsp.enable('ruff') @@ -7647,25 +7225,20 @@ ruff_lsp https://github.com/astral-sh/ruff-lsp - A Language Server Protocol implementation for Ruff, an extremely fast Python linter and code transformation tool, written in Rust. It can be installed via pip. - - ```sh - pip install ruff-lsp - ``` - - Extra CLI arguments for `ruff` can be provided via +A Language Server Protocol implementation for Ruff, an extremely fast Python linter and code transformation tool, written in Rust. It can be installed via pip. +>sh + pip install ruff-lsp - ```lua - vim.lsp.config('ruff_lsp', { - init_options = { - settings = { - -- Any extra CLI arguments for `ruff` go here. - args = {}, - } - } - }) - ``` -@type vim.lsp.Config +Extra CLI arguments for `ruff` can be provided via +>lua + vim.lsp.config('ruff_lsp', { + init_options = { + settings = { + -- Any extra CLI arguments for `ruff` go here. + args = {}, + } + } + }) Snippet to enable the language server: >lua vim.lsp.enable('ruff_lsp') @@ -7687,9 +7260,8 @@ rune_languageserver https://crates.io/crates/rune-languageserver - A language server for the [Rune](https://rune-rs.github.io/) Language, - an embeddable dynamic programming language for Rust -@type vim.lsp.Config +A language server for the [Rune](https://rune-rs.github.io/) Language, +an embeddable dynamic programming language for Rust Snippet to enable the language server: >lua vim.lsp.enable('rune_languageserver') @@ -7750,13 +7322,10 @@ Default config: salt_ls Language server for Salt configuration files. - https://github.com/dcermak/salt-lsp +https://github.com/dcermak/salt-lsp - The language server can be installed with `pip`: - ```sh - pip install salt-lsp - ``` -@type vim.lsp.Config +The language server can be installed with `pip` >sh + pip install salt-lsp Snippet to enable the language server: >lua vim.lsp.enable('salt_ls') @@ -7796,8 +7365,7 @@ scry https://github.com/crystal-lang-tools/scry - Crystal language server. -@type vim.lsp.Config +Crystal language server. Snippet to enable the language server: >lua vim.lsp.enable('scry') @@ -7817,8 +7385,7 @@ selene3p_ls https://github.com/antonk52/lua-3p-language-servers - 3rd party Language Server for Selene lua linter -@type vim.lsp.Config +3rd party Language Server for Selene lua linter Snippet to enable the language server: >lua vim.lsp.enable('selene3p_ls') @@ -7838,9 +7405,8 @@ serve_d https://github.com/Pure-D/serve-d - Microsoft language server protocol implementation for D using workspace-d. - Download a binary from https://github.com/Pure-D/serve-d/releases and put it in your $PATH. -@type vim.lsp.Config +Microsoft language server protocol implementation for D using workspace-d. +Download a binary from https://github.com/Pure-D/serve-d/releases and put it in your $PATH. Snippet to enable the language server: >lua vim.lsp.enable('serve_d') @@ -7860,12 +7426,11 @@ shopify_theme_ls https://shopify.dev/docs/api/shopify-cli - [Language Server](https://shopify.dev/docs/themes/tools/cli/language-server) and Theme Check (linter) for Shopify themes. +[Language Server](https://shopify.dev/docs/themes/tools/cli/language-server) and Theme Check (linter) for Shopify themes. - `shopify` can be installed via npm `npm install -g @shopify/cli`. +`shopify` can be installed via npm `npm install -g @shopify/cli`. - Note: This LSP already includes Theme Check so you don't need to use the `theme_check` server configuration as well. -@type vim.lsp.Config +Note: This LSP already includes Theme Check so you don't need to use the `theme_check` server configuration as well. Snippet to enable the language server: >lua vim.lsp.enable('shopify_theme_ls') @@ -7886,23 +7451,18 @@ Default config: sixtyfps https://github.com/sixtyfpsui/sixtyfps - `SixtyFPS`'s language server - - You can build and install `sixtyfps-lsp` binary with `cargo`: - ```sh - cargo install sixtyfps-lsp - ``` +`SixtyFPS`'s language server - Vim does not have built-in syntax for the `sixtyfps` filetype currently. +You can build and install `sixtyfps-lsp` binary with `cargo` >sh + cargo install sixtyfps-lsp - This can be added via an autocmd: +Vim does not have built-in syntax for the `sixtyfps` filetype currently. - ```lua - vim.cmd [[ autocmd BufRead,BufNewFile *.60 set filetype=sixtyfps ]] - ``` +This can be added via an autocmd: +>lua + vim.cmd [[ autocmd BufRead,BufNewFile *.60 set filetype=sixtyfps ]] - or by installing a filetype plugin such as https://github.com/RustemB/sixtyfps-vim -@type vim.lsp.Config +or by installing a filetype plugin such as https://github.com/RustemB/sixtyfps-vim Snippet to enable the language server: >lua vim.lsp.enable('sixtyfps') @@ -7956,21 +7516,16 @@ Default config: slint_lsp https://github.com/slint-ui/slint - `Slint`'s language server +`Slint`'s language server - You can build and install `slint-lsp` binary with `cargo`: - ```sh - cargo install slint-lsp - ``` +You can build and install `slint-lsp` binary with `cargo` >sh + cargo install slint-lsp - Vim does not have built-in syntax for the `slint` filetype at this time. +Vim does not have built-in syntax for the `slint` filetype at this time. - This can be added via an autocmd: - - ```lua - vim.cmd [[ autocmd BufRead,BufNewFile *.slint set filetype=slint ]] - ``` -@type vim.lsp.Config +This can be added via an autocmd: +>lua + vim.cmd [[ autocmd BufRead,BufNewFile *.slint set filetype=slint ]] Snippet to enable the language server: >lua vim.lsp.enable('slint_lsp') @@ -8069,11 +7624,8 @@ snakeskin_ls https://www.npmjs.com/package/@snakeskin/cli - `snakeskin cli` can be installed via `npm`: - ```sh - npm install -g @snakeskin/cli - ``` -@type vim.lsp.Config +`snakeskin cli` can be installed via `npm` >sh + npm install -g @snakeskin/cli Snippet to enable the language server: >lua vim.lsp.enable('snakeskin_ls') @@ -8093,8 +7645,7 @@ snyk_ls https://github.com/snyk/snyk-ls - LSP for Snyk Open Source, Snyk Infrastructure as Code, and Snyk Code. -@type vim.lsp.Config +LSP for Snyk Open Source, Snyk Infrastructure as Code, and Snyk Code. Snippet to enable the language server: >lua vim.lsp.enable('snyk_ls') @@ -8128,7 +7679,6 @@ A language server for Solidity * Hover There is currently no support for completion, goto definition, references, or other functionality. -@type vim.lsp.Config Snippet to enable the language server: >lua vim.lsp.enable('solang') @@ -8148,14 +7698,11 @@ solargraph https://solargraph.org/ - solargraph, a language server for Ruby - - You can install solargraph via gem install. +solargraph, a language server for Ruby - ```sh - gem install --user-install solargraph - ``` -@type vim.lsp.Config +You can install solargraph via gem install. +>sh + gem install --user-install solargraph Snippet to enable the language server: >lua vim.lsp.enable('solargraph') @@ -8204,37 +7751,30 @@ solidity https://github.com/qiuxiang/solidity-ls - npm i solidity-ls -g +npm i solidity-ls -g - Make sure that solc is installed and it's the same version of the file. solc-select is recommended. +Make sure that solc is installed and it's the same version of the file. solc-select is recommended. - Solidity language server is a LSP with autocomplete, go to definition and diagnostics. +Solidity language server is a LSP with autocomplete, go to definition and diagnostics. - If you use brownie, use this root_markers: - root_markers = { 'brownie-config.yaml', '.git' } +If you use brownie, use this root_markers: +root_markers = { 'brownie-config.yaml', '.git' } - on includePath, you can add an extra path to search for external libs, on remapping you can remap lib <> path, like: - - ```lua - { solidity = { includePath = '/Users/your_user/.brownie/packages/', remapping = { ["@OpenZeppelin/"] = 'OpenZeppelin/openzeppelin-contracts@4.6.0/' } } } - ``` - - **For brownie users** - Change the root_markers to: - - ```lua - root_markers = { 'brownie-config.yaml', '.git' } - ``` +on includePath, you can add an extra path to search for external libs, on remapping you can remap lib <> path, like: +>lua + { solidity = { includePath = '/Users/your_user/.brownie/packages/', remapping = { ["@OpenZeppelin/"] = 'OpenZeppelin/openzeppelin-contracts@4.6.0/' } } } - The best way of using it is to have a package.json in your project folder with the packages that you will use. - After installing with package.json, just create a `remappings.txt` with: +**For brownie users** +Change the root_markers to: +>lua + root_markers = { 'brownie-config.yaml', '.git' } - ``` - @OpenZeppelin/=node_modules/OpenZeppelin/openzeppelin-contracts@4.6.0/ - ``` +The best way of using it is to have a package.json in your project folder with the packages that you will use. +After installing with package.json, just create a `remappings.txt` with: +> + @OpenZeppelin/=node_modules/OpenZeppelin/openzeppelin-contracts@4.6.0/ - You can omit the node_modules as well. -@type vim.lsp.Config +You can omit the node_modules as well. Snippet to enable the language server: >lua vim.lsp.enable('solidity') @@ -8261,14 +7801,11 @@ solidity_ls https://github.com/juanfranblanco/vscode-solidity - `vscode-solidity-server` can be installed via `npm`: - - ```sh - npm install -g vscode-solidity-server - ``` +`vscode-solidity-server` can be installed via `npm`: +>sh + npm install -g vscode-solidity-server - `vscode-solidity-server` is a language server for the Solidity language ported from the VSCode "solidity" extension. -@type vim.lsp.Config +`vscode-solidity-server` is a language server for the Solidity language ported from the VSCode "solidity" extension. Snippet to enable the language server: >lua vim.lsp.enable('solidity_ls') @@ -8288,14 +7825,11 @@ solidity_ls_nomicfoundation https://github.com/NomicFoundation/hardhat-vscode/blob/development/server/README.md - `nomicfoundation-solidity-language-server` can be installed via `npm`: - - ```sh - npm install -g @nomicfoundation/solidity-language-server - ``` +`nomicfoundation-solidity-language-server` can be installed via `npm`: +>sh + npm install -g @nomicfoundation/solidity-language-server - A language server for the Solidity programming language, built by the Nomic Foundation for the Ethereum community. -@type vim.lsp.Config +A language server for the Solidity programming language, built by the Nomic Foundation for the Ethereum community. Snippet to enable the language server: >lua vim.lsp.enable('solidity_ls_nomicfoundation') @@ -8315,20 +7849,17 @@ somesass_ls https://github.com/wkillerud/some-sass/tree/main/packages/language-server - `some-sass-language-server` can be installed via `npm`: - - ```sh - npm i -g some-sass-language-server - ``` +`some-sass-language-server` can be installed via `npm`: +>sh + npm i -g some-sass-language-server - The language server provides: +The language server provides: - - Full support for @use and @forward, including aliases, prefixes and hiding. - - Workspace-wide code navigation and refactoring, such as Rename Symbol. - - Rich documentation through SassDoc. - - Language features for %placeholder-selectors, both when using them and writing them. - - Suggestions and hover info for built-in Sass modules, when used with @use. -@type vim.lsp.Config +- Full support for @use and @forward, including aliases, prefixes and hiding. +- Workspace-wide code navigation and refactoring, such as Rename Symbol. +- Rich documentation through SassDoc. +- Language features for %placeholder-selectors, both when using them and writing them. +- Suggestions and hover info for built-in Sass modules, when used with @use. Snippet to enable the language server: >lua vim.lsp.enable('somesass_ls') @@ -8356,15 +7887,12 @@ sorbet https://sorbet.org - Sorbet is a fast, powerful type checker designed for Ruby. +Sorbet is a fast, powerful type checker designed for Ruby. - You can install Sorbet via gem install. You might also be interested in how to set - Sorbet up for new projects: https://sorbet.org/docs/adopting. - - ```sh - gem install sorbet - ``` -@type vim.lsp.Config +You can install Sorbet via gem install. You might also be interested in how to set +Sorbet up for new projects: https://sorbet.org/docs/adopting. +>sh + gem install sorbet Snippet to enable the language server: >lua vim.lsp.enable('sorbet') @@ -8447,20 +7975,17 @@ spyglassmc_language_server https://github.com/SpyglassMC/Spyglass/tree/main/packages/language-server - Language server for Minecraft datapacks. - - `spyglassmc-language-server` can be installed via `npm`: +Language server for Minecraft datapacks. - ```sh - npm i -g @spyglassmc/language-server - ``` +`spyglassmc-language-server` can be installed via `npm`: +>sh + npm i -g @spyglassmc/language-server - You may also need to configure the filetype: +You may also need to configure the filetype: - `autocmd BufNewFile,BufRead *.mcfunction set filetype=mcfunction` +`autocmd BufNewFile,BufRead *.mcfunction set filetype=mcfunction` - This is automatically done by [CrystalAlpha358/vim-mcfunction](https://github.com/CrystalAlpha358/vim-mcfunction), which also provide syntax highlight. -@type vim.lsp.Config +This is automatically done by [CrystalAlpha358/vim-mcfunction](https://github.com/CrystalAlpha358/vim-mcfunction), which also provide syntax highlight. Snippet to enable the language server: >lua vim.lsp.enable('spyglassmc_language_server') @@ -8501,15 +8026,12 @@ Default config: sqls https://github.com/sqls-server/sqls - - ```lua - vim.lsp.config('sqls', { - cmd = {"path/to/command", "-config", "path/to/config.yml"}; - ... - }) - ``` - Sqls can be installed via `go install github.com/sqls-server/sqls@latest`. Instructions for compiling Sqls from the source can be found at [sqls-server/sqls](https://github.com/sqls-server/sqls). -@type vim.lsp.Config +>lua + vim.lsp.config('sqls', { + cmd = {"path/to/command", "-config", "path/to/config.yml"}; + ... + }) +Sqls can be installed via `go install github.com/sqls-server/sqls@latest`. Instructions for compiling Sqls from the source can be found at [sqls-server/sqls](https://github.com/sqls-server/sqls). Snippet to enable the language server: >lua vim.lsp.enable('sqls') @@ -8531,9 +8053,7 @@ sqruff https://github.com/quarylabs/sqruff - `sqruff` can be installed by following the instructions [here](https://github.com/quarylabs/sqruff?tab=readme-ov-file#installation) - -@type vim.lsp.Config +`sqruff` can be installed by following the instructions [here](https://github.com/quarylabs/sqruff?tab=readme-ov-file#installation) Snippet to enable the language server: >lua vim.lsp.enable('sqruff') @@ -8553,8 +8073,7 @@ standardrb https://github.com/testdouble/standard - Ruby Style Guide, with linter & automatic code fixer. -@type vim.lsp.Config +Ruby Style Guide, with linter & automatic code fixer. Snippet to enable the language server: >lua vim.lsp.enable('standardrb') @@ -8573,13 +8092,12 @@ Default config: starlark_rust https://github.com/facebookexperimental/starlark-rust/ - The LSP part of `starlark-rust` is not currently documented, - but the implementation works well for linting. - This gives valuable warnings for potential issues in the code, - but does not support refactorings. +The LSP part of `starlark-rust` is not currently documented, +but the implementation works well for linting. +This gives valuable warnings for potential issues in the code, +but does not support refactorings. - It can be installed with cargo: https://crates.io/crates/starlark -@type vim.lsp.Config +It can be installed with cargo: https://crates.io/crates/starlark Snippet to enable the language server: >lua vim.lsp.enable('starlark_rust') @@ -8599,8 +8117,7 @@ starpls https://github.com/withered-magic/starpls - `starpls` is an LSP implementation for Starlark. Installation instructions can be found in the project's README. -@type vim.lsp.Config +`starpls` is an LSP implementation for Starlark. Installation instructions can be found in the project's README. Snippet to enable the language server: >lua vim.lsp.enable('starpls') @@ -8620,8 +8137,7 @@ statix https://github.com/nerdypepper/statix - lints and suggestions for the nix programming language -@type vim.lsp.Config +lints and suggestions for the nix programming language Snippet to enable the language server: >lua vim.lsp.enable('statix') @@ -8641,10 +8157,9 @@ steep https://github.com/soutaro/steep - `steep` is a static type checker for Ruby. +`steep` is a static type checker for Ruby. - You need `Steepfile` to make it work. Generate it with `steep init`. -@type vim.lsp.Config +You need `Steepfile` to make it work. Generate it with `steep init`. Snippet to enable the language server: >lua vim.lsp.enable('steep') @@ -8664,18 +8179,13 @@ stimulus_ls https://www.npmjs.com/package/stimulus-language-server - `stimulus-lsp` can be installed via `npm`: - - ```sh - npm install -g stimulus-language-server - ``` - - or via `yarn`: +`stimulus-lsp` can be installed via `npm`: +>sh + npm install -g stimulus-language-server - ```sh - yarn global add stimulus-language-server - ``` -@type vim.lsp.Config +or via `yarn`: +>sh + yarn global add stimulus-language-server Snippet to enable the language server: >lua vim.lsp.enable('stimulus_ls') @@ -8729,8 +8239,7 @@ stylua3p_ls https://github.com/antonk52/lua-3p-language-servers - 3rd party Language Server for Stylua lua formatter -@type vim.lsp.Config +3rd party Language Server for Stylua lua formatter Snippet to enable the language server: >lua vim.lsp.enable('stylua3p_ls') @@ -8750,20 +8259,17 @@ superhtml https://github.com/kristoff-it/superhtml - HTML Language Server & Templating Language Library - - This LSP is designed to tightly adhere to the HTML spec as well as enforcing - some additional rules that ensure HTML clarity. +HTML Language Server & Templating Language Library - If you want to disable HTML support for another HTML LSP, add the following - to your configuration: +This LSP is designed to tightly adhere to the HTML spec as well as enforcing +some additional rules that ensure HTML clarity. - ```lua - vim.lsp.config('superhtml', { - filetypes = { 'superhtml' } - }) - ``` -@type vim.lsp.Config +If you want to disable HTML support for another HTML LSP, add the following +to your configuration: +>lua + vim.lsp.config('superhtml', { + filetypes = { 'superhtml' } + }) Snippet to enable the language server: >lua vim.lsp.enable('superhtml') @@ -8837,13 +8343,12 @@ svls https://github.com/dalance/svls - Language server for verilog and SystemVerilog +Language server for verilog and SystemVerilog - `svls` can be installed via `cargo`: - ```sh - cargo install svls - ``` -@type vim.lsp.Config +`svls` can be installed via `cargo`: + ```sh + cargo install svls + ``` Snippet to enable the language server: >lua vim.lsp.enable('svls') @@ -8863,8 +8368,7 @@ swift_mesonls https://github.com/JCWasmx86/Swift-MesonLSP - Meson language server written in Swift -@type vim.lsp.Config +Meson language server written in Swift Snippet to enable the language server: >lua vim.lsp.enable('swift_mesonls') @@ -8884,17 +8388,14 @@ syntax_tree https://ruby-syntax-tree.github.io/syntax_tree/ - A fast Ruby parser and formatter. - - Syntax Tree is a suite of tools built on top of the internal CRuby parser. It - provides the ability to generate a syntax tree from source, as well as the - tools necessary to inspect and manipulate that syntax tree. It can be used to - build formatters, linters, language servers, and more. +A fast Ruby parser and formatter. - ```sh - gem install syntax_tree - ``` -@type vim.lsp.Config +Syntax Tree is a suite of tools built on top of the internal CRuby parser. It +provides the ability to generate a syntax tree from source, as well as the +tools necessary to inspect and manipulate that syntax tree. It can be used to +build formatters, linters, language servers, and more. +>sh + gem install syntax_tree Snippet to enable the language server: >lua vim.lsp.enable('syntax_tree') @@ -8914,13 +8415,10 @@ systemd_ls https://github.com/psacawa/systemd-language-server - `systemd-language-server` can be installed via `pip`: - ```sh - pip install systemd-language-server - ``` +`systemd-language-server` can be installed via `pip` >sh + pip install systemd-language-server - Language Server for Systemd unit files -@type vim.lsp.Config +Language Server for Systemd unit files Snippet to enable the language server: >lua vim.lsp.enable('systemd_ls') @@ -8940,14 +8438,11 @@ tabby_ml https://tabby.tabbyml.com/blog/running-tabby-as-a-language-server - Language server for Tabby, an opensource, self-hosted AI coding assistant. - - `tabby-agent` can be installed via `npm`: +Language server for Tabby, an opensource, self-hosted AI coding assistant. - ```sh - npm install --global tabby-agent - ``` -@type vim.lsp.Config +`tabby-agent` can be installed via `npm`: +>sh + npm install --global tabby-agent Snippet to enable the language server: >lua vim.lsp.enable('tabby_ml') @@ -9014,13 +8509,10 @@ taplo https://taplo.tamasfe.dev/cli/usage/language-server.html - Language server for Taplo, a TOML toolkit. +Language server for Taplo, a TOML toolkit. - `taplo-cli` can be installed via `cargo`: - ```sh - cargo install --features lsp --locked taplo-cli - ``` -@type vim.lsp.Config +`taplo-cli` can be installed via `cargo` >sh + cargo install --features lsp --locked taplo-cli Snippet to enable the language server: >lua vim.lsp.enable('taplo') @@ -9062,16 +8554,13 @@ teal_ls https://github.com/teal-language/teal-language-server - Install with: - ``` - luarocks install teal-language-server - ``` +Install with:> + luarocks install teal-language-server - Optional Command Args: - * "--log-mode=by_date" - Enable logging in $HOME/.cache/teal-language-server. Log name will be date + pid of process - * "--log-mode=by_proj_path" - Enable logging in $HOME/.cache/teal-language-server. Log name will be project path + pid of process - * "--verbose=true" - Increases log level. Does nothing unless log-mode is set -@type vim.lsp.Config +Optional Command Args: +* "--log-mode=by_date" - Enable logging in $HOME/.cache/teal-language-server. Log name will be date + pid of process +* "--log-mode=by_proj_path" - Enable logging in $HOME/.cache/teal-language-server. Log name will be project path + pid of process +* "--verbose=true" - Increases log level. Does nothing unless log-mode is set Snippet to enable the language server: >lua vim.lsp.enable('teal_ls') @@ -9091,8 +8580,7 @@ templ https://templ.guide - The official language server for the templ HTML templating language. -@type vim.lsp.Config +The official language server for the templ HTML templating language. Snippet to enable the language server: >lua vim.lsp.enable('templ') @@ -9112,8 +8600,7 @@ termux_language_server https://github.com/termux/termux-language-server - Language server for various bash scripts such as Arch PKGBUILD, Gentoo ebuild, Termux build.sh, etc. -@type vim.lsp.Config +Language server for various bash scripts such as Arch PKGBUILD, Gentoo ebuild, Termux build.sh, etc. Snippet to enable the language server: >lua vim.lsp.enable('termux_language_server') @@ -9133,32 +8620,31 @@ terraform_lsp https://github.com/juliosueiras/terraform-lsp - Terraform language server - Download a released binary from - https://github.com/juliosueiras/terraform-lsp/releases. +Terraform language server +Download a released binary from +https://github.com/juliosueiras/terraform-lsp/releases. - From https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp: +From https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp: - Both HashiCorp and the maintainer of terraform-lsp expressed interest in - collaborating on a language server and are working towards a _long-term_ - goal of a single stable and feature-complete implementation. +Both HashiCorp and the maintainer of terraform-lsp expressed interest in +collaborating on a language server and are working towards a _long-term_ +goal of a single stable and feature-complete implementation. - For the time being both projects continue to exist, giving users the - choice: +For the time being both projects continue to exist, giving users the +choice: - - `terraform-ls` providing - - overall stability (by relying only on public APIs) - - compatibility with any provider and any Terraform >=0.12.0 currently - less features - - due to project being younger and relying on public APIs which may - not offer the same functionality yet +- `terraform-ls` providing + - overall stability (by relying only on public APIs) + - compatibility with any provider and any Terraform >=0.12.0 currently + less features + - due to project being younger and relying on public APIs which may + not offer the same functionality yet - - `terraform-lsp` providing - - currently more features - - compatibility with a single particular Terraform (0.12.20 at time of writing) - - configs designed for other 0.12 versions may work, but interpretation may be inaccurate - - less stability (due to reliance on Terraform's own internal packages) -@type vim.lsp.Config +- `terraform-lsp` providing + - currently more features + - compatibility with a single particular Terraform (0.12.20 at time of writing) + - configs designed for other 0.12 versions may work, but interpretation may be inaccurate + - less stability (due to reliance on Terraform's own internal packages) Snippet to enable the language server: >lua vim.lsp.enable('terraform_lsp') @@ -9178,36 +8664,35 @@ terraformls https://github.com/hashicorp/terraform-ls - Terraform language server - Download a released binary from https://github.com/hashicorp/terraform-ls/releases. +Terraform language server +Download a released binary from https://github.com/hashicorp/terraform-ls/releases. - From https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp: +From https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp: - Both HashiCorp and the maintainer of terraform-lsp expressed interest in - collaborating on a language server and are working towards a _long-term_ - goal of a single stable and feature-complete implementation. +Both HashiCorp and the maintainer of terraform-lsp expressed interest in +collaborating on a language server and are working towards a _long-term_ +goal of a single stable and feature-complete implementation. - For the time being both projects continue to exist, giving users the - choice: +For the time being both projects continue to exist, giving users the +choice: - - `terraform-ls` providing - - overall stability (by relying only on public APIs) - - compatibility with any provider and any Terraform >=0.12.0 currently - less features - - due to project being younger and relying on public APIs which may - not offer the same functionality yet +- `terraform-ls` providing + - overall stability (by relying only on public APIs) + - compatibility with any provider and any Terraform >=0.12.0 currently + less features + - due to project being younger and relying on public APIs which may + not offer the same functionality yet - - `terraform-lsp` providing - - currently more features - - compatibility with a single particular Terraform (0.12.20 at time of writing) - - configs designed for other 0.12 versions may work, but interpretation may be inaccurate - - less stability (due to reliance on Terraform's own internal packages) +- `terraform-lsp` providing + - currently more features + - compatibility with a single particular Terraform (0.12.20 at time of writing) + - configs designed for other 0.12 versions may work, but interpretation may be inaccurate + - less stability (due to reliance on Terraform's own internal packages) - Note, that the `settings` configuration option uses the `workspace/didChangeConfiguration` event, - [which is not supported by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/features.md). - Instead you should use `init_options` which passes the settings as part of the LSP initialize call - [as is required by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/SETTINGS.md#how-to-pass-settings). -@type vim.lsp.Config +Note, that the `settings` configuration option uses the `workspace/didChangeConfiguration` event, +[which is not supported by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/features.md). +Instead you should use `init_options` which passes the settings as part of the LSP initialize call +[as is required by terraform-ls](https://github.com/hashicorp/terraform-ls/blob/main/docs/SETTINGS.md#how-to-pass-settings). Snippet to enable the language server: >lua vim.lsp.enable('terraformls') @@ -9281,15 +8766,14 @@ textlsp https://github.com/hangyav/textLSP - `textLSP` is an LSP server for text spell and grammar checking with various AI tools. - It supports multiple text file formats, such as LaTeX, Org or txt. +`textLSP` is an LSP server for text spell and grammar checking with various AI tools. +It supports multiple text file formats, such as LaTeX, Org or txt. - For the available text analyzer tools and their configuration, see the [GitHub](https://github.com/hangyav/textLSP) page. - By default, all analyzers are disabled in textLSP, since most of them need special settings. - For quick testing, LanguageTool is enabled in the default `nvim-lspconfig` configuration. +For the available text analyzer tools and their configuration, see the [GitHub](https://github.com/hangyav/textLSP) page. +By default, all analyzers are disabled in textLSP, since most of them need special settings. +For quick testing, LanguageTool is enabled in the default `nvim-lspconfig` configuration. - To install run: `pip install textLSP` -@type vim.lsp.Config +To install run: `pip install textLSP` Snippet to enable the language server: >lua vim.lsp.enable('textlsp') @@ -9329,9 +8813,8 @@ tflint https://github.com/terraform-linters/tflint - A pluggable Terraform linter that can act as lsp server. - Installation instructions can be found in https://github.com/terraform-linters/tflint#installation. -@type vim.lsp.Config +A pluggable Terraform linter that can act as lsp server. +Installation instructions can be found in https://github.com/terraform-linters/tflint#installation. Snippet to enable the language server: >lua vim.lsp.enable('tflint') @@ -9382,8 +8865,7 @@ thriftls https://github.com/joyme123/thrift-ls - you can install thriftls by mason or download binary here: https://github.com/joyme123/thrift-ls/releases -@type vim.lsp.Config +you can install thriftls by mason or download binary here: https://github.com/joyme123/thrift-ls/releases Snippet to enable the language server: >lua vim.lsp.enable('thriftls') @@ -9403,14 +8885,11 @@ tilt_ls https://github.com/tilt-dev/tilt - Tilt language server. +Tilt language server. - You might need to add filetype detection manually: - - ```vim - autocmd BufRead Tiltfile setf=tiltfile - ``` -@type vim.lsp.Config +You might need to add filetype detection manually: +>vim + autocmd BufRead Tiltfile setf=tiltfile Snippet to enable the language server: >lua vim.lsp.enable('tilt_ls') @@ -9457,8 +8936,6 @@ tofu_ls [OpenTofu Language Server](https://github.com/opentofu/tofu-ls) -@type vim.lsp.Config - Snippet to enable the language server: >lua vim.lsp.enable('tofu_ls') @@ -9477,9 +8954,7 @@ tombi https://tombi-toml.github.io/tombi/ - Language server for Tombi, a TOML toolkit. - -@type vim.lsp.Config +Language server for Tombi, a TOML toolkit. Snippet to enable the language server: >lua vim.lsp.enable('tombi') @@ -9565,31 +9040,28 @@ Default config: ts_query_ls https://github.com/ribru17/ts_query_ls - Can be configured by passing a "settings" object to `vim.lsp.config('ts_query_ls', {})`: - ```lua - vim.lsp.config('ts_query_ls', { - settings = { - parser_install_directories = { - -- If using nvim-treesitter with lazy.nvim - vim.fs.joinpath( - vim.fn.stdpath('data'), - '/lazy/nvim-treesitter/parser/' - ), - }, - -- This setting is provided by default - parser_aliases = { - ecma = 'javascript', - jsx = 'javascript', - php_only = 'php', - }, - -- E.g. zed support - language_retrieval_patterns = { - 'languages/src/([^/]+)/[^/]+\\.scm$', - }, - }, - }) - ``` -@type vim.lsp.Config +Can be configured by passing a "settings" object to `vim.lsp.config('ts_query_ls', {})` >lua + vim.lsp.config('ts_query_ls', { + settings = { + parser_install_directories = { + -- If using nvim-treesitter with lazy.nvim + vim.fs.joinpath( + vim.fn.stdpath('data'), + '/lazy/nvim-treesitter/parser/' + ), + }, + -- This setting is provided by default + parser_aliases = { + ecma = 'javascript', + jsx = 'javascript', + php_only = 'php', + }, + -- E.g. zed support + language_retrieval_patterns = { + 'languages/src/([^/]+)/[^/]+\\.scm$', + }, + }, + }) Snippet to enable the language server: >lua vim.lsp.enable('ts_query_ls') @@ -9617,18 +9089,16 @@ tsgo https://github.com/microsoft/typescript-go - `typescript-go` is experimental port of the TypeScript compiler (tsc) and language server (tsserver) to the Go programming language. - - `tsgo` can be installed via npm `npm install @typescript/native-preview`. +`typescript-go` is experimental port of the TypeScript compiler (tsc) and language server (tsserver) to the Go programming language. - ### Monorepo support +`tsgo` can be installed via npm `npm install @typescript/native-preview`. - `tsgo` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on. - This works without the need of spawning multiple instances of `tsgo`, saving memory. +### Monorepo support - It is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once. +`tsgo` supports monorepos by default. It will automatically find the `tsconfig.json` or `jsconfig.json` corresponding to the package you are working on. +This works without the need of spawning multiple instances of `tsgo`, saving memory. -@type vim.lsp.Config +It is recommended to use the same version of TypeScript in all packages, and therefore have it available in your workspace root. The location of the TypeScript binary will be determined automatically, but only once. Snippet to enable the language server: >lua vim.lsp.enable('tsgo') @@ -9639,7 +9109,7 @@ Default config: { "tsgo", "--lsp", "--stdio" } - filetypes: >lua { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx" } -- root_dir (use "gF" to view): ../lsp/tsgo.lua:17 +- root_dir (use "gF" to view): ../lsp/tsgo.lua:18 < ------------------------------------------------------------------------------ @@ -9647,13 +9117,10 @@ tsp_server https://github.com/microsoft/typespec - The language server for TypeSpec, a language for defining cloud service APIs and shapes. +The language server for TypeSpec, a language for defining cloud service APIs and shapes. - `tsp-server` can be installed together with the typespec compiler via `npm`: - ```sh - npm install -g @typespec/compiler - ``` -@type vim.lsp.Config +`tsp-server` can be installed together with the typespec compiler via `npm` >sh + npm install -g @typespec/compiler Snippet to enable the language server: >lua vim.lsp.enable('tsp_server') @@ -9672,7 +9139,6 @@ Default config: ttags https://github.com/npezza93/ttags -@type vim.lsp.Config Snippet to enable the language server: >lua vim.lsp.enable('ttags') @@ -9692,18 +9158,13 @@ turbo_ls https://www.npmjs.com/package/turbo-language-server - `turbo-language-server` can be installed via `npm`: - - ```sh - npm install -g turbo-language-server - ``` - - or via `yarn`: +`turbo-language-server` can be installed via `npm`: +>sh + npm install -g turbo-language-server - ```sh - yarn global add turbo-language-server - ``` -@type vim.lsp.Config +or via `yarn`: +>sh + yarn global add turbo-language-server Snippet to enable the language server: >lua vim.lsp.enable('turbo_ls') @@ -9746,11 +9207,10 @@ tvm_ffi_navigator https://github.com/tqchen/ffi-navigator - The Language Server for FFI calls in TVM to be able jump between python and C++ +The Language Server for FFI calls in TVM to be able jump between python and C++ - FFI navigator can be installed with `pip install ffi-navigator`, buf for more details, please see - https://github.com/tqchen/ffi-navigator?tab=readme-ov-file#installation -@type vim.lsp.Config +FFI navigator can be installed with `pip install ffi-navigator`, buf for more details, please see +https://github.com/tqchen/ffi-navigator?tab=readme-ov-file#installation Snippet to enable the language server: >lua vim.lsp.enable('tvm_ffi_navigator') @@ -9770,11 +9230,8 @@ twiggy_language_server https://github.com/moetelo/twiggy - `twiggy-language-server` can be installed via `npm`: - ```sh - npm install -g twiggy-language-server - ``` -@type vim.lsp.Config +`twiggy-language-server` can be installed via `npm` >sh + npm install -g twiggy-language-server Snippet to enable the language server: >lua vim.lsp.enable('twiggy_language_server') @@ -9794,10 +9251,9 @@ ty https://github.com/astral-sh/ty - A Language Server Protocol implementation for ty, an extremely fast Python type checker and language server, written in Rust. +A Language Server Protocol implementation for ty, an extremely fast Python type checker and language server, written in Rust. - For installation instructions, please refer to the [ty documentation](https://github.com/astral-sh/ty/blob/main/README.md#getting-started). -@type vim.lsp.Config +For installation instructions, please refer to the [ty documentation](https://github.com/astral-sh/ty/blob/main/README.md#getting-started). Snippet to enable the language server: >lua vim.lsp.enable('ty') @@ -9817,8 +9273,7 @@ typeprof https://github.com/ruby/typeprof - `typeprof` is the built-in analysis and LSP tool for Ruby 3.1+. -@type vim.lsp.Config +`typeprof` is the built-in analysis and LSP tool for Ruby 3.1+. Snippet to enable the language server: >lua vim.lsp.enable('typeprof') @@ -9837,12 +9292,11 @@ Default config: typos_lsp https://github.com/crate-ci/typos - https://github.com/tekumara/typos-lsp +https://github.com/tekumara/typos-lsp - A Language Server Protocol implementation for Typos, a low false-positive - source code spell checker, written in Rust. Download it from the releases page - on GitHub: https://github.com/tekumara/typos-lsp/releases -@type vim.lsp.Config +A Language Server Protocol implementation for Typos, a low false-positive +source code spell checker, written in Rust. Download it from the releases page +on GitHub: https://github.com/tekumara/typos-lsp/releases Snippet to enable the language server: >lua vim.lsp.enable('typos_lsp') @@ -9862,8 +9316,7 @@ typst_lsp https://github.com/nvarner/typst-lsp - Language server for Typst. -@type vim.lsp.Config +Language server for Typst. Snippet to enable the language server: >lua vim.lsp.enable('typst_lsp') @@ -9883,10 +9336,9 @@ uiua https://github.com/uiua-lang/uiua/ - The builtin language server of the Uiua interpreter. +The builtin language server of the Uiua interpreter. - The Uiua interpreter can be installed with `cargo install uiua` -@type vim.lsp.Config +The Uiua interpreter can be installed with `cargo install uiua` Snippet to enable the language server: >lua vim.lsp.enable('uiua') @@ -9905,13 +9357,10 @@ Default config: ungrammar_languageserver https://github.com/binhtran432k/ungrammar-language-features - Language Server for Ungrammar. +Language Server for Ungrammar. - Ungrammar Language Server can be installed via npm: - ```sh - npm i ungrammar-languageserver -g - ``` -@type vim.lsp.Config +Ungrammar Language Server can be installed via npm >sh + npm i ungrammar-languageserver -g Snippet to enable the language server: >lua vim.lsp.enable('ungrammar_languageserver') @@ -9961,11 +9410,8 @@ unocss https://github.com/xna00/unocss-language-server - UnoCSS Language Server can be installed via npm: - ```sh - npm i unocss-language-server -g - ``` -@type vim.lsp.Config +UnoCSS Language Server can be installed via npm >sh + npm i unocss-language-server -g Snippet to enable the language server: >lua vim.lsp.enable('unocss') @@ -9985,20 +9431,15 @@ Default config: uvls https://codeberg.org/caradhras/uvls - Language server for UVL, written using tree sitter and rust. - You can install the server easily using cargo: - ```sh - git clone https://codeberg.org/caradhras/uvls - cd uvls - cargo install --path . - ``` +Language server for UVL, written using tree sitter and rust. +You can install the server easily using cargo >sh + git clone https://codeberg.org/caradhras/uvls + cd uvls + cargo install --path . - Note: To activate properly nvim needs to know the uvl filetype. - You can add it via: - ```lua - vim.cmd([[au BufRead,BufNewFile *.uvl setfiletype uvl]]) - ``` -@type vim.lsp.Config +Note: To activate properly nvim needs to know the uvl filetype. +You can add it via >lua + vim.cmd([[au BufRead,BufNewFile *.uvl setfiletype uvl]]) Snippet to enable the language server: >lua vim.lsp.enable('uvls') @@ -10018,10 +9459,9 @@ v_analyzer https://github.com/vlang/v-analyzer - V language server. +V language server. - `v-analyzer` can be installed by following the instructions [here](https://github.com/vlang/v-analyzer#installation). -@type vim.lsp.Config +`v-analyzer` can be installed by following the instructions [here](https://github.com/vlang/v-analyzer#installation). Snippet to enable the language server: >lua vim.lsp.enable('v_analyzer') @@ -10053,7 +9493,6 @@ Vacuum is the worlds fastest OpenAPI 3, OpenAPI 2 / Swagger linter and quality a }, } ``` -@type vim.lsp.Config Snippet to enable the language server: >lua vim.lsp.enable('vacuum') @@ -10090,8 +9529,7 @@ vale_ls https://github.com/errata-ai/vale-ls - An implementation of the Language Server Protocol (LSP) for the Vale command-line tool. -@type vim.lsp.Config +An implementation of the Language Server Protocol (LSP) for the Vale command-line tool. Snippet to enable the language server: >lua vim.lsp.enable('vale_ls') @@ -10111,8 +9549,7 @@ vectorcode_server https://github.com/Davidyz/VectorCode - A Language Server Protocol implementation for VectorCode, a code repository indexing tool. -@type vim.lsp.Config +A Language Server Protocol implementation for VectorCode, a code repository indexing tool. Snippet to enable the language server: >lua vim.lsp.enable('vectorcode_server') @@ -10121,7 +9558,7 @@ Snippet to enable the language server: >lua Default config: - cmd: >lua { "vectorcode-server" } -- root_dir (use "gF" to view): ../lsp/vectorcode_server.lua:6 +- root_dir (use "gF" to view): ../lsp/vectorcode_server.lua:7 - settings: >lua {} < @@ -10131,13 +9568,12 @@ verible https://github.com/chipsalliance/verible - A linter and formatter for verilog and SystemVerilog files. +A linter and formatter for verilog and SystemVerilog files. - Release binaries can be downloaded from [here](https://github.com/chipsalliance/verible/releases) - and placed in a directory on PATH. +Release binaries can be downloaded from [here](https://github.com/chipsalliance/verible/releases) +and placed in a directory on PATH. - See https://github.com/chipsalliance/verible/tree/master/verilog/tools/ls/README.md for options. -@type vim.lsp.Config +See https://github.com/chipsalliance/verible/tree/master/verilog/tools/ls/README.md for options. Snippet to enable the language server: >lua vim.lsp.enable('verible') @@ -10157,20 +9593,15 @@ veridian https://github.com/vivekmalneedi/veridian - A SystemVerilog LanguageServer. +A SystemVerilog LanguageServer. - Download the latest release for your OS from the releases page +Download the latest release for your OS from the releases page - Install with slang feature, if C++17 compiler is available: - ``` - cargo install --git https://github.com/vivekmalneedi/veridian.git --all-features - ``` +Install with slang feature, if C++17 compiler is available:> + cargo install --git https://github.com/vivekmalneedi/veridian.git --all-features - Install if C++17 compiler is not available: - ``` - cargo install --git https://github.com/vivekmalneedi/veridian.git - ``` -@type vim.lsp.Config +Install if C++17 compiler is not available:> + cargo install --git https://github.com/vivekmalneedi/veridian.git Snippet to enable the language server: >lua vim.lsp.enable('veridian') @@ -10190,13 +9621,12 @@ veryl_ls https://github.com/veryl-lang/veryl - Language server for Veryl +Language server for Veryl - `veryl-ls` can be installed via `cargo`: - ```sh - cargo install veryl-ls - ``` -@type vim.lsp.Config +`veryl-ls` can be installed via `cargo`: + ```sh + cargo install veryl-ls + ``` Snippet to enable the language server: >lua vim.lsp.enable('veryl_ls') @@ -10258,31 +9688,28 @@ vhdl_ls Install vhdl_ls from https://github.com/VHDL-LS/rust_hdl and add it to path - Configuration +Configuration - The language server needs to know your library mapping to perform full analysis of the code. For this it uses a configuration file in the TOML format named vhdl_ls.toml. +The language server needs to know your library mapping to perform full analysis of the code. For this it uses a configuration file in the TOML format named vhdl_ls.toml. - vhdl_ls will load configuration files in the following order of priority (first to last): +vhdl_ls will load configuration files in the following order of priority (first to last): - A file named .vhdl_ls.toml in the user home folder. - A file name from the VHDL_LS_CONFIG environment variable. - A file named vhdl_ls.toml in the workspace root. + A file named .vhdl_ls.toml in the user home folder. + A file name from the VHDL_LS_CONFIG environment variable. + A file named vhdl_ls.toml in the workspace root. - Settings in a later files overwrites those from previously loaded files. +Settings in a later files overwrites those from previously loaded files. - Example vhdl_ls.toml - ``` - # File names are either absolute or relative to the parent folder of the vhdl_ls.toml file - [libraries] - lib2.files = [ - 'pkg2.vhd', - ] - lib1.files = [ - 'pkg1.vhd', - 'tb_ent.vhd' - ] - ``` -@type vim.lsp.Config +Example vhdl_ls.toml> + # File names are either absolute or relative to the parent folder of the vhdl_ls.toml file + [libraries] + lib2.files = [ + 'pkg2.vhd', + ] + lib1.files = [ + 'pkg1.vhd', + 'tb_ent.vhd' + ] Snippet to enable the language server: >lua vim.lsp.enable('vhdl_ls') @@ -10302,11 +9729,8 @@ vimls https://github.com/iamcco/vim-language-server - You can install vim-language-server via npm: - ```sh - npm install -g vim-language-server - ``` -@type vim.lsp.Config +You can install vim-language-server via npm >sh + npm install -g vim-language-server Snippet to enable the language server: >lua vim.lsp.enable('vimls') @@ -10346,22 +9770,19 @@ visualforce_ls https://github.com/forcedotcom/salesforcedx-vscode - Language server for Visualforce. +Language server for Visualforce. - For manual installation, download the .vsix archive file from the - [forcedotcom/salesforcedx-vscode](https://github.com/forcedotcom/salesforcedx-vscode) - GitHub releases. Then, configure `cmd` to run the Node script at the unpacked location: - - ```lua - vim.lsp.config('visualforce_ls', { - cmd = { - 'node', - '/path/to/unpacked/archive/extension/node_modules/@salesforce/salesforcedx-visualforce-language-server/out/src/visualforceServer.js', - '--stdio' - } - }) - ``` -@type vim.lsp.Config +For manual installation, download the .vsix archive file from the +[forcedotcom/salesforcedx-vscode](https://github.com/forcedotcom/salesforcedx-vscode) +GitHub releases. Then, configure `cmd` to run the Node script at the unpacked location: +>lua + vim.lsp.config('visualforce_ls', { + cmd = { + 'node', + '/path/to/unpacked/archive/extension/node_modules/@salesforce/salesforcedx-visualforce-language-server/out/src/visualforceServer.js', + '--stdio' + } + }) Snippet to enable the language server: >lua vim.lsp.enable('visualforce_ls') @@ -10386,10 +9807,9 @@ vls https://github.com/vlang/vls - V language server. +V language server. - `v-language-server` can be installed by following the instructions [here](https://github.com/vlang/vls#installation). -@type vim.lsp.Config +`v-language-server` can be installed by following the instructions [here](https://github.com/vlang/vls#installation). Snippet to enable the language server: >lua vim.lsp.enable('vls') @@ -10429,7 +9849,6 @@ Default config: vscoqtop https://github.com/coq-community/vscoq -@type vim.lsp.Config Snippet to enable the language server: >lua vim.lsp.enable('vscoqtop') @@ -10556,9 +9975,8 @@ wasm_language_tools https://github.com/g-plane/wasm-language-tools - WebAssembly Language Tools aims to provide and improve the editing experience of WebAssembly Text Format. - It also provides an out-of-the-box formatter (a.k.a. pretty printer) for WebAssembly Text Format. -@type vim.lsp.Config +WebAssembly Language Tools aims to provide and improve the editing experience of WebAssembly Text Format. +It also provides an out-of-the-box formatter (a.k.a. pretty printer) for WebAssembly Text Format. Snippet to enable the language server: >lua vim.lsp.enable('wasm_language_tools') @@ -10576,11 +9994,8 @@ wgsl_analyzer https://github.com/wgsl-analyzer/wgsl-analyzer - `wgsl-analyzer` can be installed via `cargo`: - ```sh - cargo install --git https://github.com/wgsl-analyzer/wgsl-analyzer wgsl-analyzer - ``` -@type vim.lsp.Config +`wgsl-analyzer` can be installed via `cargo` >sh + cargo install --git https://github.com/wgsl-analyzer/wgsl-analyzer wgsl-analyzer Snippet to enable the language server: >lua vim.lsp.enable('wgsl_analyzer') @@ -10602,63 +10017,54 @@ yamlls https://github.com/redhat-developer/yaml-language-server - `yaml-language-server` can be installed via `yarn`: - ```sh - yarn global add yaml-language-server - ``` +`yaml-language-server` can be installed via `yarn` >sh + yarn global add yaml-language-server - To use a schema for validation, there are two options: +To use a schema for validation, there are two options: - 1. Add a modeline to the file. A modeline is a comment of the form: - - ``` - # yaml-language-server: $schema=<urlToTheSchema|relativeFilePath|absoluteFilePath}> - ``` - - where the relative filepath is the path relative to the open yaml file, and the absolute filepath - is the filepath relative to the filesystem root ('/' on unix systems) - - 2. Associated a schema url, relative , or absolute (to root of project, not to filesystem root) path to - the a glob pattern relative to the detected project root. Check `:checkhealth vim.lsp` to determine the resolved project - root. +1. Add a modeline to the file. A modeline is a comment of the form: +> + # yaml-language-server: $schema=<urlToTheSchema|relativeFilePath|absoluteFilePath}> - ```lua - vim.lsp.config('yamlls', { - ... - settings = { - yaml = { - ... -- other settings. note this overrides the lspconfig defaults. - schemas = { - ["https://json.schemastore.org/github-workflow.json"] = "/.github/workflows/*", - ["../path/relative/to/file.yml"] = "/.github/workflows/*", - ["/path/from/root/of/project"] = "/.github/workflows/*", - }, - }, - } - }) - ``` +where the relative filepath is the path relative to the open yaml file, and the absolute filepath +is the filepath relative to the filesystem root ('/' on unix systems) - Currently, kubernetes is special-cased in yammls, see the following upstream issues: - * [#211](https://github.com/redhat-developer/yaml-language-server/issues/211). - * [#307](https://github.com/redhat-developer/yaml-language-server/issues/307). +2. Associated a schema url, relative , or absolute (to root of project, not to filesystem root) path to +the a glob pattern relative to the detected project root. Check `:checkhealth vim.lsp` to determine the resolved project +root. +>lua + vim.lsp.config('yamlls', { + ... + settings = { + yaml = { + ... -- other settings. note this overrides the lspconfig defaults. + schemas = { + ["https://json.schemastore.org/github-workflow.json"] = "/.github/workflows/*", + ["../path/relative/to/file.yml"] = "/.github/workflows/*", + ["/path/from/root/of/project"] = "/.github/workflows/*", + }, + }, + } + }) - To override a schema to use a specific k8s schema version (for example, to use 1.18): +Currently, kubernetes is special-cased in yammls, see the following upstream issues: +* [#211](https://github.com/redhat-developer/yaml-language-server/issues/211). +* [#307](https://github.com/redhat-developer/yaml-language-server/issues/307). - ```lua - vim.lsp.config('yamlls', { - ... - settings = { - yaml = { - ... -- other settings. note this overrides the lspconfig defaults. - schemas = { - ["https://raw.githubusercontent.com/yannh/kubernetes-json-schema/refs/heads/master/v1.32.1-standalone-strict/all.json"] = "/*.k8s.yaml", - ... -- other schemas - }, - }, - } - }) - ``` -@type vim.lsp.Config +To override a schema to use a specific k8s schema version (for example, to use 1.18): +>lua + vim.lsp.config('yamlls', { + ... + settings = { + yaml = { + ... -- other settings. note this overrides the lspconfig defaults. + schemas = { + ["https://raw.githubusercontent.com/yannh/kubernetes-json-schema/refs/heads/master/v1.32.1-standalone-strict/all.json"] = "/*.k8s.yaml", + ... -- other schemas + }, + }, + } + }) Snippet to enable the language server: >lua vim.lsp.enable('yamlls') @@ -10691,8 +10097,7 @@ yang_lsp https://github.com/TypeFox/yang-lsp - A Language Server for the YANG data modeling language. -@type vim.lsp.Config +A Language Server for the YANG data modeling language. Snippet to enable the language server: >lua vim.lsp.enable('yang_lsp') @@ -10712,12 +10117,11 @@ yls https://pypi.org/project/yls-yara/ - An YLS plugin adding YARA linting capabilities. +An YLS plugin adding YARA linting capabilities. - This plugin runs yara.compile on every save, parses the errors, and returns list of diagnostic messages. +This plugin runs yara.compile on every save, parses the errors, and returns list of diagnostic messages. - Language Server: https://github.com/avast/yls -@type vim.lsp.Config +Language Server: https://github.com/avast/yls Snippet to enable the language server: >lua vim.lsp.enable('yls') @@ -10737,8 +10141,7 @@ ziggy https://ziggy-lang.io/documentation/ziggy-lsp/ - Language server for the Ziggy data serialization format -@type vim.lsp.Config +Language server for the Ziggy data serialization format Snippet to enable the language server: >lua vim.lsp.enable('ziggy') @@ -10758,8 +10161,7 @@ ziggy_schema https://ziggy-lang.io/documentation/ziggy-lsp/ - Language server for schema files of the Ziggy data serialization format -@type vim.lsp.Config +Language server for schema files of the Ziggy data serialization format Snippet to enable the language server: >lua vim.lsp.enable('ziggy_schema') |
