nvim-lspconfig is a "data only" repo, providing basic, default Nvim LSP client
configurations for various LSP servers. View all configs or :help lspconfig-all
from Nvim.
lsp/
.vim.lsp.enable('…')
(not require'…'.pyright.setup{}
) to enable a config.lua/lspconfig/
are deprecated and will be removed.vim.lsp.enable('…')
(not require'…'.pyright.setup{}
) to enable a config.:help lsp
), report it to Neovim core.git clone https://github.com/neovim/nvim-lspconfig ~/.config/nvim/pack/nvim/start/nvim-lspconfig
vim.pack.add{
{ src = 'https://github.com/neovim/nvim-lspconfig' },
}
npm i -g pyright
vim.lsp.enable('pyright')
require'lspconfig'.pyright.setup{}
:help lspconfig-all
.nvim main.py
:checkhealth lsp
to see the status or to troubleshoot.Read :help lspconfig
for details. Read :help lspconfig-all
for the full list of server-specific details.
For servers not on your $PATH
(e.g., jdtls
, elixirls
), you must manually set the cmd
parameter, see vim.lsp.config.
Nvim sets default options and mappings when LSP is active in a buffer:
To customize, see:
Extra settings can be specified for each LSP server:
lsp/
and put it in a local lsp/
directory in your 'runtimepath').vim.lsp.config('rust_analyzer', {
-- Server-specific settings. See `:help lsp-quickstart`
settings = {
['rust-analyzer'] = {},
},
})
local lspconfig = require('lspconfig')
lspconfig.rust_analyzer.setup {
-- Server-specific settings. See `:help lspconfig-setup`
settings = {
['rust-analyzer'] = {},
},
}
The most common reasons a language server does not start or attach are:
cmd
defined in each server's Lua module from the command line and see that the language server starts. If the cmd
is an executable name instead of an absolute path to the executable, ensure it is on your path.:set filetype?
shows the filetype and not an empty value..git/
, but each config defines other "root marker" names. Root markers/directories are listed in doc/configs.md.If you found a bug with LSP functionality, report it to Neovim core.
Before reporting a bug, check your logs and the output of :LspInfo
. Add the following to your init.vim to enable logging:
vim.lsp.set_log_level("debug")
Attempt to run the language server, and open the log with:
:LspLog
Most of the time, the reason for failure is present in the logs.
:LspInfo
(alias to :checkhealth vim.lsp
) shows the status of active and configured language servers.:LspStart <config_name>
Start the requested server name. Will only successfully start if the command detects a root directory matching the current config.:LspStop [<client_id_or_name>]
Stops the given server. Defaults to stopping all servers active on the current buffer. To force stop add ++force
:LspRestart [<client_id_or_name>]
Restarts the given client, and attempts to reattach to all previously attached buffers. Defaults to restarting all active servers.If a language server is missing from configs.md, contributing a new configuration for it helps others, especially if the server requires special setup. Follow these steps:
lsp/<server_name>.lua
.To publish a release:
Copyright Neovim contributors. All rights reserved.
nvim-lspconfig is licensed under the terms of the Apache 2.0 license.
See LICENSE.md