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: v2.1.0
Table of Contents
- Introduction
- Requirements
- Installation & Usage
- Automatically enable installed servers
- Commands
- Configuration
- Default configuration
Introduction
:h mason-lspconfig-introduction
This plugin's main responsibilities are to:
- allow you to (i) automatically install, and (ii) automatically enable (
vim.lsp.enable()) installed servers - provide extra convenience APIs such as the
:LspInstallcommand - provide additional LSP configurations for a few servers
- translate between
nvim-lspconfigserver names andmason.nvimpackage names (e.g.lua_ls <-> lua-language-server)
[!NOTE] Since the introduction of
:h vim.lsp.configin Neovim 0.11, this plugin's feature set has been reduced. Use this plugin if you want to automatically enable installed servers (:h vim.lsp.enable()) or have access to the:LspInstallcommand.
Requirements
:h mason-lspconfig-requirements
neovim >= 0.11.0mason.nvim >= 2.0.0nvim-lspconfig >= 2.0.0
Installation & Usage
:h mason-lspconfig-quickstart
Install using your plugin manager of choice. Setup is required:
require("mason-lspconfig").setup()
It's important that you set up mason.nvim and have nvim-lspconfig available in :h
runtimepath before setting up mason-lspconfig.nvim.
Refer to the Configuration section for information about which settings are available.
Recommended setup for lazy.nvim
The following is the recommended setup when using lazy.nvim. It will set up the plugin for you, meaning you don't have
to call require("mason-lspconfig").setup() yourself.
{
"mason-org/mason-lspconfig.nvim",
opts = {},
dependencies = {
{ "mason-org/mason.nvim", opts = {} },
"neovim/nvim-lspconfig",
},
}
Automatically enable installed servers
mason-lspconfig.nvim will automatically enable (vim.lsp.enable()) installed servers for you by default.
To disable this feature:
require("mason-lspconfig").setup {
automatic_enable = false
}
To exclude certain servers from being enabled:
require("mason-lspconfig").setup {
automatic_enable = {
exclude = {
"rust_analyzer",
"ts_ls"
}
}
}
Alternatively, to only enable specific servers:
require("mason-lspconfig").setup {
automatic_enable = {
"lua_ls",
"vimls"
}
}
[!NOTE] This will only enable servers that are installed via Mason. It will not recognize servers installed elsewhere on your system.
Commands
:h mason-lspconfig-commands
:LspInstall [<server> ...]: Installs the provided servers. If no server is provided you will be prompted to select a server based on the current buffer's&filetype.: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" },
}
Configuration using lazy.nvim
{
"mason-org/mason-lspconfig.nvim",
opts = {
ensure_installed = { "lua_ls", "rust_analyzer" },
},
dependencies = {
{ "mason-org/mason.nvim", opts = {} },
"neovim/nvim-lspconfig",
},
}
Default configuration
local DEFAULT_SETTINGS = {
-- A list of servers to automatically install if they're not already installed. Example: { "rust_analyzer@nightly", "lua_ls" }
---@type string[]
ensure_installed = {},
-- Whether installed servers should automatically be enabled via `:h vim.lsp.enable()`.
--
-- To exclude certain servers from being automatically enabled:
-- ```lua
-- automatic_enable = {
-- exclude = { "rust_analyzer", "ts_ls" }
-- }
-- ```
--
-- To only enable certain servers to be automatically enabled:
-- ```lua
-- automatic_enable = {
-- "lua_ls",
-- "vimls"
-- }
-- ```
---@type boolean | string[] | { exclude: string[] }
automatic_enable = true,
}
