Repolode
neovim

neovim/nvim-lspconfig

A collection of ready-made Language Server Protocol configurations for connecting Neovim to many programming language servers.

Stars
14,000
Forks
2,502
Open issues
40
Last commit
7 hours ago

What is it?

nvim-lspconfig provides server-specific configuration files for the LSP client built into Neovim. Each config tells Neovim how to launch a language server, which filetypes it applies to, and how to detect the project root, so that code completion, diagnostics and navigation work without writing that setup by hand.

Users enable a server with vim.lsp.enable() after installing the server binary themselves; the plugin does not install servers. Custom settings can be added on top of the defaults with vim.lsp.config(), and the plugin ships Lua type annotations for server settings to enable completion and diagnostics in the config file.

The project is moving from its legacy require('lspconfig') framework, which is deprecated, toward the native vim.lsp.config API introduced in Nvim 0.11. The configs themselves remain the supported part and live in the lsp/ directory.

Key features

  • 01Ships configs for many language servers in the lsp/ directory.
  • 02Enable a server with a single vim.lsp.enable() call.
  • 03Override defaults with vim.lsp.config() or after/lsp/ files.
  • 04Provides Lua type annotations for server settings.
  • 05Includes root marker detection so servers attach to the right project.

Use cases

  • Setting up code completion and diagnostics for Python, Rust or Lua in Neovim.
  • Standardizing LSP configuration across a team's Neovim setups.
  • Adding a language server that is not yet covered by the built-in configs.

Quick start

  1. 1

    Install a language server, e.g. pyright

    npm i -g pyright
  2. 2

    Enable its config in your init.lua

    vim.lsp.enable('pyright')
  3. 3

    Open a code file in Nvim so LSP attaches

    nvim main.py

Things to know

  • Requires Nvim 0.11.3+ and does not install language servers for you.
  • The legacy require('lspconfig') framework is deprecated in favor of vim.lsp.config.

Topics

FAQ

What is nvim-lspconfig?
A collection of ready-made Language Server Protocol configurations for connecting Neovim to many programming language servers. nvim-lspconfig provides server-specific configuration files for the LSP client built into Neovim. Each config tells Neovim how to launch a language server, which filetypes it applies to, and how to detect the project root, so that code completion, diagnostics and navigation work without writing that setup by hand.
Is nvim-lspconfig free to use? What license does it have?
nvim-lspconfig is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
Is nvim-lspconfig still maintained?
Actively maintained. The last commit to nvim-lspconfig was on Nov 6, 2026.
What can I use nvim-lspconfig for?
Setting up code completion and diagnostics for Python, Rust or Lua in Neovim. Standardizing LSP configuration across a team's Neovim setups. Adding a language server that is not yet covered by the built-in configs.
How do I install nvim-lspconfig?
Install a language server, e.g. pyright: npm i -g pyright Enable its config in your init.lua: vim.lsp.enable('pyright') Open a code file in Nvim so LSP attaches: nvim main.py
Where can I get nvim-lspconfig?
The source code and installation instructions are on GitHub: https://github.com/neovim/nvim-lspconfig

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects