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_nixos

That 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:

PluginMemory source
friendly-snippetsCommunity snippets.
blink-ripgrep.nvimWords and symbols from the repository.
blink-cmp-gitGit and GitHub context.
cmp-nvim-luaNeovim Lua API completion.
blink-calcSmall calculations.
cmp-emojiProse and issue text symbols.
cmp-dapDebugger REPL completions.
ecolog.nvimEnvironment key lookup without exposing values.
blink.compatAdapter for older cmp-style sources.
lspkind.nvimCompletion 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