GithubHelp home page GithubHelp logo

rayjameson / mason-lspconfig.nvim Goto Github PK

View Code? Open in Web Editor NEW

This project forked from williamboman/mason-lspconfig.nvim

0.0 0.0 0.0 237 KB

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

License: Apache License 2.0

Shell 0.45% Lua 96.44% Makefile 1.29% Vim Script 1.82%

mason-lspconfig.nvim's Introduction

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: v1.12.0

Table of Contents

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

Requirements

:h mason-lspconfig-requirements

  • neovim >= 0.7.0
  • mason.nvim
  • lspconfig

Installation

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:

  1. mason.nvim
  2. mason-lspconfig.nvim
  3. 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
Java jdtls
Java java_language_server
JavaScript quick_lint_js
JavaScript tsserver
JavaScript vtsls
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
Metamath Zero mm0_ls
Move move_analyzer
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
Terraform terraformls
Terraform tflint
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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.