mason-lspconfig
bridges mason.nvim
with the lspconfig
plugin - making it easier to use both
plugins together.
:help mason-lspconfig.nvim
Latest version: v1.31.0
Introduction
Requirements
Installation
Setup
Automatic server setup (advanced feature)
Commands
Configuration
Default configuration
Available LSP servers
: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 lspconfig
that ensures servers installed with mason.nvim
are set up with the necessary
configuration
provide extra convenience APIs such as the :LspInstall
command
allow you to (i) automatically install, and (ii) automatically set up a predefined list of servers
translate between lspconfig
server names and mason.nvim
package 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.
:h mason-lspconfig-requirements
neovim >= 0.9.0
mason.nvim
lspconfig
use {"williamboman/mason.nvim","williamboman/mason-lspconfig.nvim","neovim/nvim-lspconfig", }
{"williamboman/mason.nvim","williamboman/mason-lspconfig.nvim","neovim/nvim-lspconfig", }
Plug 'williamboman/mason.nvim'Plug 'williamboman/mason-lspconfig.nvim'Plug 'neovim/nvim-lspconfig'
:h mason-lspconfig-quickstart
It's important that you set up the plugins in the following order:
mason.nvim
mason-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.
: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.
:h mason-lspconfig-commands
:LspInstall [<server>...]
- installs the provided servers
:LspUninstall <server> ...
- uninstalls the provided servers
: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" }, }
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 booleanautomatic_installation = false,-- See `:h mason-lspconfig.setup_handlers()`---@type table<string, fun(server_name: string)>?handlers = nil, }
Language | Server name |
---|---|
1С:Enterprise | bsl_ls |
Angular | angularls |
Ansible | ansiblels |
Antlers | antlersls |
Apex | apex_ls |
Arduino | arduino_language_server |
Assembly | asm_lsp |
Astro | astro |
AWK | awk_ls |
Azure Pipelines | azure_pipelines_ls |
Bash | bashls |
Bash | pkgbuild_language_server |
Beancount | beancount |
Bicep | bicep |
Blade | stimulus_ls |
BrighterScript | bright_script |
C# | ast_grep |
C# | csharp_ls |
C# | harper_ls |
C# (docs) | omnisharp |
C# | omnisharp_mono |
C++ | ast_grep |
C++ | clangd |
C++ | harper_ls |
Cairo | cairo_ls |
C | ast_grep |
C | clangd |
C | harper_ls |
Clarity | clarity_lsp |
Clojure | clojure_lsp |
ClojureScript | clojure_lsp |
CMake | cmake |
CMake | neocmake |
COBOL | cobol_ls |
CodeQL | codeqlls |
Coq | coq_lsp |
Crystal | crystalline |
CSS | ast_grep |
CSS | css_variables |
CSS | cssls |
CSS | cssmodules_ls |
CSS | tailwindcss |
CSS | unocss |
Cucumber | cucumber_language_server |
Cue | dagger |
Cypher | cypher_ls |
Dart | ast_grep |
Dhall | dhall_lsp_server |
Django | jinja_lsp |
Docker | docker_compose_language_service |
Docker | dockerls |
DOT | dotls |
Drools | drools_lsp |
D | serve_d |
Earthly | earthlyls |
Elixir | elixirls |
Elixir | lexical |
Elixir | nextls |
Elm | elmls |
Ember | ember |
Emmet | emmet_language_server |
Emmet | emmet_ls |
Erg | erg_language_server |
Erlang | elp |
Erlang | erlangls |
F# | fsautocomplete |
Facility Service Definition | facility_language_server |
Fennel | fennel_language_server |
Fennel | fennel_ls |
Flux | flux_lsp |
Fortran | fortls |
Glimmer | glint |
GLSL | glslls |
Go | ast_grep |
Go | golangci_lint_ls |
Go | gopls |
Go | harper_ls |
Go | templ |
Gradle | gradle_ls |
GraphQL | graphql |
Groovy | groovyls |
Handlebars | glint |
Haskell | hls |
Haxe | haxe_language_server |
Helm | helm_ls |
Hoon | hoon_ls |
HTML | ast_grep |
HTML | html |
HTML | lwc_ls |
HTML | stimulus_ls |
HTML | templ |
HTML | twiggy_language_server |
HTMX | htmx |
Hypr | hyprls |
Java | ast_grep |
Java | java_language_server |
Java | jdtls |
JavaScript | ast_grep |
JavaScript | biome |
JavaScript | denols |
JavaScript | eslint |
JavaScript | glint |
JavaScript | harper_ls |
JavaScript | lwc_ls |
JavaScript | quick_lint_js |
JavaScript | rome |
JavaScript | ts_ls |
JavaScript | vtsls |
Jinja | jinja_lsp |
Jq | jqls |
JSON | biome |
JSON | jsonls |
Jsonnet | jsonnet_ls |
JSON | rome |
JSON | spectral |
JSX | ast_grep |
Julia (docs) | julials |
Kotlin | ast_grep |
Kotlin | kotlin_language_server |
LaTeX | ltex |
LaTeX | texlab |
LaTeX | textlsp |
Lelwel | lelwel_ls |
LESS | css_variables |
LESS | cssls |
Liquid | shopify_theme_ls |
Liquid | theme_check |
Lua | ast_grep |
Lua | harper_ls |
Lua | lua_ls |
Luau | luau_lsp |
Markdown | grammarly |
Markdown | harper_ls |
Markdown | ltex |
Markdown | markdown_oxide |
Markdown | marksman |
Markdown | prosemd_lsp |
Markdown | remark_ls |
Markdown | vale_ls |
Markdown | zk |
Matlab | matlab_ls |
MDX | mdx_analyzer |
Meson | mesonlsp |
Meson | swift_mesonls |
Metamath Zero | mm0_ls |
Motoko | motoko_lsp |
Move | move_analyzer |
Nginx | nginx_language_server |
Nickel | nickel_ls |
Nim | nim_langserver |
Nim | nimls |
Nix | nil_ls |
Nix | rnix |
Nunjucks | jinja_lsp |
OCaml | ocamllsp |
Odin | ols |
OneScript | bsl_ls |
OpenAPI | vacuum |
OpenCL | opencl_ls |
OpenFOAM | foam_ls |
OpenGL | glsl_analyzer |
OpenSCAD | openscad_lsp |
Org | textlsp |
Perl | perlnavigator |
Pest | pest_ls |
PHP | intelephense |
PHP | phpactor |
PHP | psalm |
PHP | stimulus_ls |
PICO-8 | pico8_ls |
PowerShell | powershell_es |
Prisma | prismals |
Protobuf | bufls |
Protobuf | pbls |
Puppet | puppet |
PureScript | purescriptls |
Python | ast_grep |
Python | basedpyright |
Python | harper_ls |
Python | jedi_language_server |
Python | mutt_ls |
Python (docs) | pylsp |
Python | pylyzer |
Python | pyre |
Python | pyright |
Python | ruff |
Python | ruff_lsp |
Python | sourcery |
Raku | raku_navigator |
Reason | reason_ls |
Rego | regal |
Rego | regols |
ReScript | rescriptls |
reStructuredText | ltex |
Robot Framework | robotframework_ls |
R | r_language_server |
Ruby | harper_ls |
Ruby | rubocop |
Ruby | ruby_lsp |
Ruby | solargraph |
Ruby | sorbet |
Ruby | standardrb |
Ruby | steep |
Ruby | stimulus_ls |
Rust | ast_grep |
Rust | harper_ls |
Rust | rust_analyzer |
Salt | salt_ls |
SCSS | css_variables |
SCSS | cssls |
SCSS | somesass_ls |
Slint | slint_lsp |
Smithy | smithy_ls |
Snakeskin | snakeskin_ls |
Snyk | snyk_ls |
Solidity | solang |
Solidity | solc |
Solidity | solidity |
Solidity | solidity_ls |
Solidity | solidity_ls_nomicfoundation |
Sphinx | esbonio |
SQL | sqlls |
SQL | sqls |
Standard ML | millet |
Starlark | bzl |
Starlark | starlark_rust |
Starlark | starpls |
Stylelint | stylelint_lsp |
Svelte | svelte |
SystemVerilog | hdl_checker |
SystemVerilog | svlangserver |
SystemVerilog | svls |
SystemVerilog | verible |
Teal | teal_ls |
Terraform | terraformls |
Terraform | tflint |
Text | grammarly |
Text | ltex |
Text | textlsp |
Text | vale_ls |
Thrift | thriftls |
TOML | harper_ls |
TOML | taplo |
Twig | twiggy_language_server |
TypeScript | ast_grep |
TypeScript | biome |
TypeScript | denols |
TypeScript | eslint |
TypeScript | glint |
TypeScript | harper_ls |
TypeScript | quick_lint_js |
TypeScript | rome |
TypeScript | ts_ls |
TypeScript | vtsls |
Typespec | tsp_server |
Typst | tinymist |
Typst | typst_lsp |
Vala | vala_ls |
Verilog | hdl_checker |
Veryl | veryl_ls |
VHDL | hdl_checker |
VHDL | vhdl_ls |
VimScript | vimls |
Visualforce | visualforce_ls |
Vue | volar |
Vue | vuels |
V | v_analyzer |
V | vls |
WGSL | wgsl_analyzer |
XML | lemminx |
YAML | gitlab_ci_ls |
YAML | hydra_lsp |
YAML | spectral |
YAML | yamlls |
Zig | zls |
- | autotools_ls |
- | custom_elements_ls |
- | diagnosticls |
- | dprint |
- | efm |
- | typos_lsp |