Skip to content

Language specific plugins

kzsh edited this page Aug 16, 2024 · 31 revisions

Nvim-lspconfig is meant to implement basic configuration and settings for most language servers. The beauty of the language server protocol, is most language servers should expose their entire functionality without any special per-server treatment.

Some servers send requests outside of the language server protocol specification to extend the functionality of the protocol. Eclipse JDTLS is one such example. An ecosystem of per language plugins is forming around neovim's core implementation to provide an enhanced experience compared to nvim-lspconfig. We recommend you install these plugins if you are using the language in question. Here are some recommendations:

LSP/Language Plugin Description
jdtls nvim-jdtls Java's Eclipse JDT
Metals nvim-metals Scala's Metals
flutter flutter-tools.nvim Flutter
lua-language-server lazydev.nvim Neovim api and docs support for lua
luau-lsp luau-lsp.nvim A luau-lsp extension to improve your experience in neovim.
rust-analyzer rust-tools.nvim Deprecated - Rust's rust-analyzer
rust-analyzer mrcjkb/rustaceanvim rust-tools.nvim fork; no lspconfig dependency
rust-analyzer vxpm/ferris.nvim A rust-analyzer client plugin geared towards people who prefer to set up the LSP client manually
rust-analyzer crates.nvim Rust - helps managing crates.io dependencies in Cargo.toml
tsserver typescript-tools.nvim Lua port of the typescript VSCode plugin, adding many off-spec featuers
tsserver typescript.nvim Deprecated - Support for tsserver's off-spec features
Lean Theorem Prover lean.nvim Lean; Note: will automatically call setup{}
jsonls SchemaStore.nvim Note, this provides schemas for jsonls but still depends on lspconfig.
ltex-ls grammar-guard.nvim
omnisharp omnisharp-extended-lsp.nvim Add support for decompiling.
omnisharp com.cloudedmountain.ide.neovim Add support for unity.
csharp_ls csharpls-extended-lsp.nvim Add support for decompiling.
clangd clangd_extensions.nvim Clangd's extra features (inlay hints, type hierarchy, ...etc
F# Ionide F# Vim plugin based on FsAutoComplete and LSP protocol
deno deno-nvim Deno's lsp
Haskell's haskell-language-server haskell-tools.nvim Haskell LSP client configuration; note: doesn't require nvim-lspconfig
angularls ng.nvim custom features, e.g. go to component template, go to component from template, etc.
ltex-ls ltex_extra.nvim support for actions such as "add to dictionary"