mason-lspconfig.nvim
mason-lspconfig bridges mason.nvim with the lspconfig plugin - making it easier to use both
plugins together.
:help mason-lspconfig.nvim
Latest version: v1.17.1
Table of Contents
- Introduction
- Requirements
- Installation
- Setup
- Automatic server setup (advanced feature)
- Commands
- Configuration
- Default configuration
- Available LSP servers
Introduction
:h mason-lspconfig-introduction
mason-lspconfig.nvim closes some gaps that exist between mason.nvim and lspconfig. Its main responsibilities are to:
- register a setup hook with
lspconfigthat ensures servers installed withmason.nvimare set up with the necessary configuration - provide extra convenience APIs such as the
:LspInstallcommand - allow you to (i) automatically install, and (ii) automatically set up a predefined list of servers
- translate between
lspconfigserver names andmason.nvimpackage names (e.g.lua_ls <-> lua-language-server)
It is recommended to use this extension if you use mason.nvim and lspconfig (it's strongly recommended for Windows
users).
Note: this plugin uses the lspconfig server names in the APIs it exposes - not mason.nvim package names. See this
table for a complete mapping.
Requirements
:h mason-lspconfig-requirements
- neovim
>= 0.7.0 mason.nvimlspconfig
Installation
Packer
use {
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
"neovim/nvim-lspconfig",
}
vim-plug
Plug 'williamboman/mason.nvim'
Plug 'williamboman/mason-lspconfig.nvim'
Plug 'neovim/nvim-lspconfig'
Setup
:h mason-lspconfig-quickstart
It's important that you set up the plugins in the following order:
mason.nvimmason-lspconfig.nvim- Setup servers via
lspconfig
Pay extra attention to this if you lazy-load plugins, or somehow "chain" the loading of plugins via your plugin manager.
require("mason").setup()
require("mason-lspconfig").setup()
-- After setting up mason-lspconfig you may set up servers via lspconfig
-- require("lspconfig").lua_ls.setup {}
-- require("lspconfig").rust_analyzer.setup {}
-- ...
Refer to the Configuration section for information about which settings are available.
Automatic server setup (advanced feature)
:h mason-lspconfig-automatic-server-setup
mason-lspconfig provides extra, opt-in, functionality that allows you to automatically set up LSP servers installed
via mason.nvim without having to manually add each server setup to your Neovim configuration.
Refer to :h mason-lspconfig-automatic-server-setup for more details.
Commands
:h mason-lspconfig-commands
:LspInstall [<server>...]- installs the provided servers:LspUninstall <server> ...- uninstalls the provided servers
Configuration
:h mason-lspconfig-settings
You may optionally configure certain behavior of mason-lspconfig.nvim when calling the .setup() function. Refer to
the default configuration for a list of all available settings.
Example:
require("mason-lspconfig").setup {
ensure_installed = { "lua_ls", "rust_analyzer" },
}
Default configuration
local DEFAULT_SETTINGS = {
-- A list of servers to automatically install if they're not already installed. Example: { "rust_analyzer@nightly", "lua_ls" }
-- This setting has no relation with the `automatic_installation` setting.
---@type string[]
ensure_installed = {},
-- Whether servers that are set up (via lspconfig) should be automatically installed if they're not already installed.
-- This setting has no relation with the `ensure_installed` setting.
-- Can either be:
-- - false: Servers are not automatically installed.
-- - true: All servers set up via lspconfig are automatically installed.
-- - { exclude: string[] }: All servers set up via lspconfig, except the ones provided in the list, are automatically installed.
-- Example: automatic_installation = { exclude = { "rust_analyzer", "solargraph" } }
---@type boolean
automatic_installation = false,
-- See `:h mason-lspconfig.setup_handlers()`
---@type table<string, fun(server_name: string)>?
handlers = nil,
}
Available LSP servers
| Language | Server name |
|---|---|
| AWK | awk_ls |
| Ada | als |
| Angular | angularls |
| Ansible | ansiblels |
| Antlers | antlersls |
| Apex | apex_ls |
| Arduino | arduino_language_server |
| Assembly (GAS/NASM, GO) | asm_lsp |
| Astro | astro |
| Azure Pipelines | azure_pipelines_ls |
| Bash | bashls |
| Bash | pkgbuild_language_server |
| Beancount | beancount |
| Bicep | bicep |
| BrighterScript | bright_script |
| Buf | bufls |
| C | clangd |
| C# | csharp_ls |
| C# (docs) | omnisharp_mono |
| C# (docs) | omnisharp |
| C++ | clangd |
| CMake | cmake |
| CMake | neocmake |
| CSS | cssls |
| CSS | cssmodules_ls |
| CSS | unocss |
| Clarity | clarity_lsp |
| Clojure | clojure_lsp |
| CodeQL | codeqlls |
| Crystal | crystalline |
| Cucumber | cucumber_language_server |
| Custom Elements Language Server | custom_elements_ls |
| Cue | dagger |
| Deno | denols |
| Dhall | dhall_lsp_server |
| Diagnostic (general purpose server) | diagnosticls |
| Dlang | serve_d |
| Docker | dockerls |
| Docker Compose | docker_compose_language_service |
| Dot | dotls |
| Drools | drools_lsp |
| EFM (general purpose server) | efm |
| ESLint | eslint |
| Elixir | elixirls |
| Elm | elmls |
| Ember | ember |
| Emmet | emmet_language_server |
| Emmet | emmet_ls |
| Erg | erg_language_server |
| Erlang | erlangls |
| F# | fsautocomplete |
| Fennel | fennel_language_server |
| Flux | flux_lsp |
| Foam (OpenFOAM) | foam_ls |
| Fortran | fortls |
| Gleam | gleam |
| Glint | glint |
| Go | golangci_lint_ls |
| Go | gopls |
| Gradle | gradle_ls |
| Grammarly | grammarly |
| GraphQL | graphql |
| Groovy | groovyls |
| HTML | html |
| Haskell | hls |
| Haxe | haxe_language_server |
| Helm | helm_ls |
| Hoon | hoon_ls |
| JSON | jsonls |
| JSON | biome |
| Java | jdtls |
| Java | java_language_server |
| JavaScript | quick_lint_js |
| JavaScript | tsserver |
| JavaScript | vtsls |
| JavaScript | biome |
| Jsonnet | jsonnet_ls |
| Julia (docs) | julials |
| jq | jqls |
| Kotlin | kotlin_language_server |
| LaTeX | ltex |
| LaTeX | texlab |
| Lelwel | lelwel_ls |
| Lua | lua_ls |
| Luau | luau_lsp |
| Markdown | marksman |
| Markdown | prosemd_lsp |
| Markdown | remark_ls |
| Markdown | vale_ls |
| Markdown | zk |
| Matlab | matlab_ls |
| MDX | mdx_analyzer |
| Metamath Zero | mm0_ls |
| Move | move_analyzer |
| Mutt | mutt_ls |
| Nickel | nickel_ls |
| Nim | nimls |
| Nix | nil_ls |
| Nix | rnix |
| OCaml | ocamllsp |
| Odin | ols |
| OneScript, 1C:Enterprise | bsl_ls |
| OpenAPI | spectral |
| OpenCL | opencl_ls |
| OpenSCAD | openscad_lsp |
| PHP | intelephense |
| PHP | phpactor |
| PHP | psalm |
| Perl | perlnavigator |
| Pest | pest_ls |
| Powershell | powershell_es |
| Prisma | prismals |
| Puppet | puppet |
| PureScript | purescriptls |
| Python | jedi_language_server |
| Python | pyre |
| Python | pyright |
| Python | pylyzer |
| Python | sourcery |
| Python (docs) | pylsp |
| Python | ruff_lsp |
| R | r_language_server |
| Raku | raku_navigator |
| ReScript | rescriptls |
| Reason | reason_ls |
| Robot Framework | robotframework_ls |
| Rome | rome |
| Ruby | ruby_ls |
| Ruby | solargraph |
| Ruby | sorbet |
| Ruby | standardrb |
| Rust | rust_analyzer |
| SQL | sqlls |
| SQL | sqls |
| Salt | salt_ls |
| Shopify Theme Check | theme_check |
| Slint | slint_lsp |
| Smithy | smithy_ls |
| Solidity | solang |
| Solidity | solc |
| Solidity | solidity |
| Solidity | solidity_ls_nomicfoundation |
| Sphinx | esbonio |
| Stylelint | stylelint_lsp |
| Svelte | svelte |
| SystemVerilog | svlangserver |
| SystemVerilog | svls |
| SystemVerilog | verible |
| TOML | taplo |
| Tailwind CSS | tailwindcss |
| Teal | teal_ls |
| Templ | templ |
| Terraform | terraformls |
| Terraform | tflint |
| Thrift | thriftls |
| TypeScript | biome |
| TypeScript | tsserver |
| TypeScript | vtsls |
| Typst | typst_lsp |
| V | vls |
| Vala | vala_ls |
| Veryl | veryl_ls |
| VimL | vimls |
| Visualforce | visualforce_ls |
| Vue | volar |
| Vue | vuels |
| WGSL | wgsl_analyzer |
| XML | lemminx |
| YAML | yamlls |
| Zig | zls |
