Neovim LSP And Completion Plugins
Up: Plugin Atlas Down: LSP architecture, LSP servers, completion cockpit
This layer is the editor’s nervous system. It senses code, offers completions, formats documents, and reports trouble.
The NixOS Line
mason.nvim, mason-lspconfig.nvim, and mason-nvim-dap.nvim are disabled on NixOS. They are useful on non-Nix Linux, but NixOS should get tools from devShell, devenv, flakes, or the system configuration.
enabled = O.lsp and not O.is_nixosThat line keeps the editor from becoming a second package manager.
LSP Surface
nvim-lspconfig is the base LSP substrate. Native vim.lsp.config() server files and custom setup code handle server behavior.
lspsaga.nvim gives LSP actions better rooms: finder, code actions, diagnostics, outline, hover, and peek behavior.
SchemaStore.nvim supplies JSON and YAML schema knowledge so config files get meaningful validation.
lazydev.nvim makes Lua editing inside Neovim aware of Neovim’s runtime APIs.
colorful-menu.nvim makes completion entries easier to scan.
Completion Stack
blink.cmp is the main completion engine. It is fast, filetype-aware, and wired to sources that match the work being done.
Its source plugins each add a different kind of memory:
| Plugin | Memory source |
|---|---|
friendly-snippets | Community snippets. |
blink-ripgrep.nvim | Words and symbols from the repository. |
blink-cmp-git | Git and GitHub context. |
cmp-nvim-lua | Neovim Lua API completion. |
blink-calc | Small calculations. |
cmp-emoji | Prose and issue text symbols. |
cmp-dap | Debugger REPL completions. |
ecolog.nvim | Environment key lookup without exposing values. |
blink.compat | Adapter for older cmp-style sources. |
lspkind.nvim | Completion item icons. |
Format And Lint
conform.nvim formats by filetype and uses LSP formatting as a fallback. It knows about Lua, Nix, Python, Markdown, R, TeX, Typst, YAML, JSON, JS, TS, Vue, CSS, and more.
nvim-lint keeps linting separate. It runs tools such as commit message linters, statix, proselint, shell linters, GitHub workflow linters, and editorconfig checks.
tsc.nvim runs TypeScript compiler diagnostics as a broad project check.
ts-error-translator.nvim turns TypeScript’s dense messages into something a human can read while still angry.
Related: platforms, completion cockpit