Skip to content

Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim.

License

Notifications You must be signed in to change notification settings

mason-org/mason-lspconfig.nvim

Repository files navigation

Linux macOS Windows GitHub CI Sponsors

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.0.0

Table of Contents

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 :LspInstall command
  • provide additional LSP configurations for a few servers
  • translate between nvim-lspconfig server names and mason.nvim package names (e.g. lua_ls <-> lua-language-server)

Note

Since the introduction of :h vim.lsp.config in 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 :LspInstall command.

Requirements

:h mason-lspconfig-requirements

  • neovim >= 0.11.0
  • mason.nvim >= 2.0.0
  • nvim-lspconfig >= 2.0.0

Installation

{
    "mason-org/mason.nvim",
    "mason-org/mason-lspconfig.nvim",
    "neovim/nvim-lspconfig",
}

vim-plug

Plug 'mason-org/mason.nvim'
Plug 'mason-org/mason-lspconfig.nvim'
Plug 'neovim/nvim-lspconfig'

Setup

:h mason-lspconfig-quickstart

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.

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" },
}

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,
}