aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/autogenerate.yml42
-rw-r--r--.github/workflows/check-generated-code-state.yml29
-rw-r--r--.github/workflows/tests.yml9
-rw-r--r--README.md366
-rw-r--r--after/lsp/omnisharp_mono.lua3
-rw-r--r--doc/mason-lspconfig-mapping.txt227
-rw-r--r--doc/mason-lspconfig.txt176
-rw-r--r--doc/server-mapping.md222
-rw-r--r--lua/mason-lspconfig/api/command.lua23
-rw-r--r--lua/mason-lspconfig/automatic_enable.lua32
-rw-r--r--lua/mason-lspconfig/ensure_installed.lua14
-rw-r--r--lua/mason-lspconfig/init.lua88
-rw-r--r--lua/mason-lspconfig/install.lua12
-rw-r--r--lua/mason-lspconfig/lsp/bicep.lua3
-rw-r--r--lua/mason-lspconfig/lsp/bsl_ls.lua3
-rw-r--r--lua/mason-lspconfig/lsp/cobol_ls.lua10
-rw-r--r--lua/mason-lspconfig/lsp/elixirls.lua3
-rw-r--r--lua/mason-lspconfig/lsp/esbonio.lua3
-rw-r--r--lua/mason-lspconfig/lsp/gradle_ls.lua3
-rw-r--r--lua/mason-lspconfig/lsp/groovyls.lua3
-rw-r--r--lua/mason-lspconfig/lsp/java_language_server.lua3
-rw-r--r--lua/mason-lspconfig/lsp/lexical.lua3
-rw-r--r--lua/mason-lspconfig/lsp/nextls.lua3
-rw-r--r--lua/mason-lspconfig/lsp/omnisharp.lua12
-rw-r--r--lua/mason-lspconfig/lsp/r_language_server.lua3
-rw-r--r--lua/mason-lspconfig/lsp/raku_navigator.lua3
-rw-r--r--lua/mason-lspconfig/lsp/visualforce_ls.lua3
-rw-r--r--lua/mason-lspconfig/lspconfig_hook.lua73
-rw-r--r--lua/mason-lspconfig/mappings.lua78
-rw-r--r--lua/mason-lspconfig/mappings/filetype.lua250
-rw-r--r--lua/mason-lspconfig/mappings/language.lua26
-rw-r--r--lua/mason-lspconfig/mappings/server.lua231
-rw-r--r--lua/mason-lspconfig/server_config_extensions.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/bicep/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/bsl_ls/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/cobol_ls/init.lua12
-rw-r--r--lua/mason-lspconfig/server_configurations/elixirls/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/esbonio/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/gradle_ls/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/groovyls/init.lua3
-rw-r--r--lua/mason-lspconfig/server_configurations/java_language_server/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/julials/README.md28
-rw-r--r--lua/mason-lspconfig/server_configurations/kotlin_language_server/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/lexical/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/ltex/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/nextls/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/omnisharp/README.md15
-rw-r--r--lua/mason-lspconfig/server_configurations/omnisharp/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/omnisharp_mono/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/perlnavigator/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/pylsp/README.md16
-rw-r--r--lua/mason-lspconfig/server_configurations/r_language_server/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/raku_navigator/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/snakeskin_ls/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/visualforce_ls/init.lua5
-rw-r--r--lua/mason-lspconfig/settings.lua5
-rw-r--r--scripts/lua/mason-scripts/mason-lspconfig/generate.lua236
-rw-r--r--scripts/lua/mason-scripts/utils.lua40
-rwxr-xr-xscripts/nvim.sh14
-rw-r--r--tests/helpers/lua/dummy-registry/dummy2_package.lua3
-rw-r--r--tests/helpers/lua/dummy-registry/dummy_package.lua3
-rw-r--r--tests/helpers/lua/dummy-registry/fail_dummy.lua3
-rw-r--r--tests/mason-lspconfig/api/api_spec.lua26
-rw-r--r--tests/mason-lspconfig/api/command_spec.lua26
-rw-r--r--tests/mason-lspconfig/setup_spec.lua214
-rw-r--r--tests/minimal_init.vim22
-rw-r--r--vim.yml3
67 files changed, 316 insertions, 2402 deletions
diff --git a/.github/workflows/autogenerate.yml b/.github/workflows/autogenerate.yml
deleted file mode 100644
index d17d86c..0000000
--- a/.github/workflows/autogenerate.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-name: Autogenerate code
-
-on:
- workflow_dispatch:
- schedule:
- - cron: "0 10 * * *"
-
-jobs:
- autogenerate:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: rhysd/action-setup-vim@v1
- with:
- neovim: true
- version: v0.10.1
-
- - name: make generate
- run: make generate
-
- - name: Create Pull Request
- id: cpr
- uses: peter-evans/create-pull-request@v4
- with:
- token: ${{ secrets.PAT }}
- author: "William Botman <william+bot@redwill.se>"
- committer: "William Botman <william+bot@redwill.se>"
- add-paths: lua/mason-lspconfig
- commit-message: "chore: update generated code"
- branch: chore/generate
- branch-suffix: short-commit-hash
- delete-branch: true
- labels: automerge
- title: "chore: update generated code"
-
- - name: Enable Pull Request Automerge
- if: steps.cpr.outputs.pull-request-operation == 'created'
- uses: peter-evans/enable-pull-request-automerge@v2
- with:
- token: ${{ secrets.PAT }}
- pull-request-number: ${{ steps.cpr.outputs.pull-request-number }}
- merge-method: squash
diff --git a/.github/workflows/check-generated-code-state.yml b/.github/workflows/check-generated-code-state.yml
deleted file mode 100644
index 3bfd4a8..0000000
--- a/.github/workflows/check-generated-code-state.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-name: Check generated code state
-
-on:
- push:
- branches:
- - "main"
- pull_request:
-
-jobs:
- check-generated-code-state:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: rhysd/action-setup-vim@v1
- with:
- neovim: true
- version: v0.10.1
-
- - name: make generate
- run: make generate
-
- - name: Ensure there are no diffs
- run: |
- git update-index -q --refresh
- git diff
- git diff-index --exit-code --quiet HEAD -- || {
- echo '::error::Generated code is not up to date, run "make generate".';
- exit 1;
- }
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 844868f..2936692 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -14,14 +14,7 @@ jobs:
fail-fast: false
matrix:
nvim_version:
- - v0.9.0
- - v0.9.1
- - v0.9.2
- - v0.9.4
- - v0.9.5
- - v0.10.0
- - v0.10.1
- - v0.10.2
+ - v0.11.0
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
diff --git a/README.md b/README.md
index f8f5ab7..5a70133 100644
--- a/README.md
+++ b/README.md
@@ -25,50 +25,37 @@
- [Requirements](#requirements)
- [Installation](#installation)
- [Setup](#setup)
- - [Automatic server setup (advanced feature)](#automatic-server-setup-advanced-feature)
- [Commands](#commands)
- [Configuration](#configuration)
- [Default configuration](#default-configuration)
-- [Available LSP servers](#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:
+This plugin's main responsibilities are to:
-- register a setup hook with `lspconfig` that ensures servers installed with `mason.nvim` are set up with the necessary
- configuration
+- allow you to (i) automatically install, and (ii) automatically enable installed servers
- 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
+- provide additional LSP configurations for a few 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.](./doc/server-mapping.md)**
+> [!NOTE]
+> Since the introduction of [`:h vim.lsp.config`](https://neovim.io/doc/user/lsp.html#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()`](https://neovim.io/doc/user/lsp.html#vim.lsp.enable())) or have access to the `:LspInstall`
+> command.
# Requirements
> `:h mason-lspconfig-requirements`
-- neovim `>= 0.9.0`
-- `mason.nvim`
-- `lspconfig`
+- neovim `>= 0.11.0`
+- `mason.nvim >= 2.0.0`
+- `lspconfig >= 2.0.0`
# Installation
-## [Packer](https://github.com/wbthomason/packer.nvim)
-
-```lua
-use {
- "williamboman/mason.nvim",
- "williamboman/mason-lspconfig.nvim",
- "neovim/nvim-lspconfig",
-}
-```
-
## [lazy.nvim](https://github.com/folke/lazy.nvim)
```lua
@@ -91,34 +78,11 @@ Plug 'neovim/nvim-lspconfig'
> `: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.
-
-```lua
-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 {}
--- ...
-```
+It's important that you set up `mason.nvim` _and_ have `nvim-lspconfig` available in [`:h
+runtimepath`](https://neovim.io/doc/user/options.html#'runtimepath') before setting up `mason-lspconfig.nvim`.
Refer to the [Configuration](#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`
@@ -149,307 +113,7 @@ local DEFAULT_SETTINGS = {
---@type string[]
ensure_installed = {},
- -- See `:h mason-lspconfig.setup_handlers()`
- ---@type table<string, fun(server_name: string)>?
- handlers = nil,
+ -- Whether installed servers should automatically be enabled via `:h vim.lsp.enable()`.
+ automatic_enable = true
}
```
-
-# Available LSP servers
-
-<!-- available-lsp-servers:start -->
-| Language | Server name |
-| --- | --- |
-| 1ะก:Enterprise | [`bsl_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bsl_ls) |
-| Angular | [`angularls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#angularls) |
-| Ansible | [`ansiblels`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ansiblels) |
-| Antlers | [`antlersls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#antlersls) |
-| Apex | [`apex_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#apex_ls) |
-| Arduino | [`arduino_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#arduino_language_server) |
-| Assembly | [`asm_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#asm_lsp) |
-| Astro | [`astro`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#astro) |
-| AWK | [`awk_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#awk_ls) |
-| Azure Pipelines | [`azure_pipelines_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#azure_pipelines_ls) |
-| Bash | [`bashls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bashls) |
-| Bash | [`pkgbuild_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pkgbuild_language_server) |
-| Beancount | [`beancount`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#beancount) |
-| Bicep | [`bicep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bicep) |
-| Blade | [`stimulus_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#stimulus_ls) |
-| BrighterScript | [`bright_script`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bright_script) |
-| C# | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| C# | [`csharp_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#csharp_ls) |
-| C# | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| C# ([docs](lua/mason-lspconfig/server_configurations/omnisharp/README.md)) | [`omnisharp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#omnisharp) |
-| C# | [`omnisharp_mono`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#omnisharp_mono) |
-| C++ | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| C++ | [`clangd`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#clangd) |
-| C++ | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| Cairo | [`cairo_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cairo_ls) |
-| C | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| C | [`clangd`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#clangd) |
-| C | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| Clarity | [`clarity_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#clarity_lsp) |
-| Clojure | [`clojure_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#clojure_lsp) |
-| ClojureScript | [`clojure_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#clojure_lsp) |
-| CMake | [`cmake`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cmake) |
-| CMake | [`neocmake`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#neocmake) |
-| COBOL | [`cobol_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cobol_ls) |
-| CodeQL | [`codeqlls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#codeqlls) |
-| Coq | [`coq_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#coq_lsp) |
-| Crystal | [`crystalline`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#crystalline) |
-| Csh | [`bashls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bashls) |
-| CSS | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| CSS | [`css_variables`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#css_variables) |
-| CSS | [`cssls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cssls) |
-| CSS | [`cssmodules_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cssmodules_ls) |
-| CSS | [`tailwindcss`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#tailwindcss) |
-| CSS | [`unocss`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#unocss) |
-| Cucumber | [`cucumber_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cucumber_language_server) |
-| Cue | [`dagger`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#dagger) |
-| Cypher | [`cypher_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cypher_ls) |
-| Dart | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| Dhall | [`dhall_lsp_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#dhall_lsp_server) |
-| Django | [`jinja_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jinja_lsp) |
-| Docker | [`docker_compose_language_service`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#docker_compose_language_service) |
-| Docker | [`dockerls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#dockerls) |
-| DOT | [`dotls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#dotls) |
-| Drools | [`drools_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#drools_lsp) |
-| D | [`serve_d`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#serve_d) |
-| DTS | [`ginko_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ginko_ls) |
-| Earthly | [`earthlyls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#earthlyls) |
-| Elixir | [`elixirls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#elixirls) |
-| Elixir | [`lexical`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#lexical) |
-| Elixir | [`nextls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#nextls) |
-| Elm | [`elmls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#elmls) |
-| Ember | [`ember`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ember) |
-| Emmet | [`emmet_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#emmet_language_server) |
-| Emmet | [`emmet_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#emmet_ls) |
-| Erg | [`erg_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#erg_language_server) |
-| Erlang | [`elp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#elp) |
-| Erlang | [`erlangls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#erlangls) |
-| F# | [`fsautocomplete`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#fsautocomplete) |
-| Facility Service Definition | [`facility_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#facility_language_server) |
-| Fennel | [`fennel_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#fennel_language_server) |
-| Fennel | [`fennel_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#fennel_ls) |
-| Flux | [`flux_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#flux_lsp) |
-| Fortran | [`fortls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#fortls) |
-| Glimmer | [`glint`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#glint) |
-| GLSL | [`glslls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#glslls) |
-| Go | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| Go | [`golangci_lint_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#golangci_lint_ls) |
-| Go | [`gopls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#gopls) |
-| Go | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| Go | [`templ`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#templ) |
-| Gradle | [`gradle_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#gradle_ls) |
-| GraphQL | [`graphql`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#graphql) |
-| Groovy | [`groovyls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#groovyls) |
-| Handlebars | [`glint`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#glint) |
-| Haskell | [`hls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#hls) |
-| Haxe | [`haxe_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#haxe_language_server) |
-| Helm | [`helm_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#helm_ls) |
-| Hoon | [`hoon_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#hoon_ls) |
-| HTML | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| HTML | [`html`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#html) |
-| HTML | [`lwc_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#lwc_ls) |
-| HTML | [`stimulus_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#stimulus_ls) |
-| HTML | [`superhtml`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#superhtml) |
-| HTML | [`templ`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#templ) |
-| HTML | [`twiggy_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#twiggy_language_server) |
-| HTMX | [`htmx`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#htmx) |
-| Hypr | [`hyprls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#hyprls) |
-| Java | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| Java | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| Java | [`java_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#java_language_server) |
-| Java | [`jdtls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jdtls) |
-| JavaScript | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| JavaScript | [`biome`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#biome) |
-| JavaScript | [`denols`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#denols) |
-| JavaScript | [`eslint`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#eslint) |
-| JavaScript | [`glint`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#glint) |
-| JavaScript | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| JavaScript | [`lwc_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#lwc_ls) |
-| JavaScript | [`quick_lint_js`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#quick_lint_js) |
-| JavaScript | [`rome`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#rome) |
-| JavaScript | [`ts_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ts_ls) |
-| JavaScript | [`vtsls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vtsls) |
-| Jinja | [`jinja_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jinja_lsp) |
-| Jq | [`jqls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jqls) |
-| JSON | [`biome`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#biome) |
-| JSON | [`jsonls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jsonls) |
-| Jsonnet | [`jsonnet_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jsonnet_ls) |
-| JSON | [`rome`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#rome) |
-| JSON | [`spectral`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#spectral) |
-| JSX | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| Julia ([docs](lua/mason-lspconfig/server_configurations/julials/README.md)) | [`julials`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#julials) |
-| KCL | [`kcl`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#kcl) |
-| Kotlin | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| Kotlin | [`kotlin_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#kotlin_language_server) |
-| Ksh | [`bashls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bashls) |
-| LaTeX | [`ltex`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ltex) |
-| LaTeX | [`texlab`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#texlab) |
-| LaTeX | [`textlsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#textlsp) |
-| Lelwel | [`lelwel_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#lelwel_ls) |
-| LESS | [`css_variables`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#css_variables) |
-| LESS | [`cssls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cssls) |
-| Liquid | [`shopify_theme_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#shopify_theme_ls) |
-| Liquid | [`theme_check`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#theme_check) |
-| Lua | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| Lua | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| Lua | [`lua_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#lua_ls) |
-| Luau | [`luau_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#luau_lsp) |
-| Markdown | [`grammarly`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#grammarly) |
-| Markdown | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| Markdown | [`ltex`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ltex) |
-| Markdown | [`markdown_oxide`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#markdown_oxide) |
-| Markdown | [`marksman`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#marksman) |
-| Markdown | [`prosemd_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#prosemd_lsp) |
-| Markdown | [`remark_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#remark_ls) |
-| Markdown | [`vale_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vale_ls) |
-| Markdown | [`zk`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#zk) |
-| Matlab | [`matlab_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#matlab_ls) |
-| MDX | [`mdx_analyzer`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#mdx_analyzer) |
-| Meson | [`mesonlsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#mesonlsp) |
-| Meson | [`swift_mesonls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#swift_mesonls) |
-| Metamath Zero | [`mm0_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#mm0_ls) |
-| Motoko | [`motoko_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#motoko_lsp) |
-| Move | [`move_analyzer`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#move_analyzer) |
-| Nginx | [`nginx_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#nginx_language_server) |
-| Nickel | [`nickel_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#nickel_ls) |
-| Nim | [`nim_langserver`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#nim_langserver) |
-| Nim | [`nimls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#nimls) |
-| Nix | [`nil_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#nil_ls) |
-| Nix | [`rnix`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#rnix) |
-| Nunjucks | [`jinja_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jinja_lsp) |
-| OCaml | [`ocamllsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ocamllsp) |
-| Odin | [`ols`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ols) |
-| OneScript | [`bsl_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bsl_ls) |
-| OpenAPI | [`vacuum`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vacuum) |
-| OpenCL | [`opencl_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#opencl_ls) |
-| OpenFOAM | [`foam_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#foam_ls) |
-| OpenGL | [`glsl_analyzer`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#glsl_analyzer) |
-| OpenSCAD | [`openscad_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#openscad_lsp) |
-| Org | [`textlsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#textlsp) |
-| Perl | [`perlnavigator`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#perlnavigator) |
-| Pest | [`pest_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pest_ls) |
-| PHP | [`intelephense`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#intelephense) |
-| PHP | [`phpactor`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#phpactor) |
-| PHP | [`psalm`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#psalm) |
-| PHP | [`stimulus_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#stimulus_ls) |
-| PICO-8 | [`pico8_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pico8_ls) |
-| PowerShell | [`powershell_es`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#powershell_es) |
-| Prisma | [`prismals`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#prismals) |
-| Protobuf | [`buf_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#buf_ls) |
-| Protobuf | [`pbls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pbls) |
-| Puppet | [`puppet`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#puppet) |
-| PureScript | [`purescriptls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#purescriptls) |
-| Python | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| Python | [`basedpyright`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#basedpyright) |
-| Python | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| Python | [`jedi_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jedi_language_server) |
-| Python | [`mutt_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#mutt_ls) |
-| Python ([docs](lua/mason-lspconfig/server_configurations/pylsp/README.md)) | [`pylsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pylsp) |
-| Python | [`pylyzer`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pylyzer) |
-| Python | [`pyre`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pyre) |
-| Python | [`pyright`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pyright) |
-| Python | [`ruff`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ruff) |
-| Python | [`sourcery`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#sourcery) |
-| Raku | [`raku_navigator`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#raku_navigator) |
-| Reason | [`reason_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#reason_ls) |
-| Rego | [`regal`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#regal) |
-| Rego | [`regols`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#regols) |
-| ReScript | [`rescriptls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#rescriptls) |
-| reStructuredText | [`ltex`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ltex) |
-| Robot Framework | [`robotframework_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#robotframework_ls) |
-| R | [`r_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#r_language_server) |
-| Ruby | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| Ruby | [`rubocop`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#rubocop) |
-| Ruby | [`ruby_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ruby_lsp) |
-| Ruby | [`solargraph`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#solargraph) |
-| Ruby | [`sorbet`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#sorbet) |
-| Ruby | [`standardrb`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#standardrb) |
-| Ruby | [`steep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#steep) |
-| Ruby | [`stimulus_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#stimulus_ls) |
-| Rust | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| Rust | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| Rust | [`rust_analyzer`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#rust_analyzer) |
-| Salt | [`salt_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#salt_ls) |
-| SCSS | [`css_variables`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#css_variables) |
-| SCSS | [`cssls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cssls) |
-| SCSS | [`somesass_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#somesass_ls) |
-| Sh | [`bashls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bashls) |
-| Slint | [`slint_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#slint_lsp) |
-| Smithy | [`smithy_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#smithy_ls) |
-| Snakeskin | [`snakeskin_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#snakeskin_ls) |
-| Snyk | [`snyk_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#snyk_ls) |
-| Solidity | [`solang`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#solang) |
-| Solidity | [`solc`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#solc) |
-| Solidity | [`solidity`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#solidity) |
-| Solidity | [`solidity_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#solidity_ls) |
-| Solidity | [`solidity_ls_nomicfoundation`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#solidity_ls_nomicfoundation) |
-| Sphinx | [`esbonio`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#esbonio) |
-| SQL | [`sqlls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#sqlls) |
-| SQL | [`sqls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#sqls) |
-| Standard ML | [`millet`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#millet) |
-| Starlark | [`bzl`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bzl) |
-| Starlark | [`starlark_rust`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#starlark_rust) |
-| Starlark | [`starpls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#starpls) |
-| Stylelint | [`stylelint_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#stylelint_lsp) |
-| SuperHTML | [`superhtml`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#superhtml) |
-| Svelte | [`svelte`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#svelte) |
-| SystemVerilog | [`hdl_checker`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#hdl_checker) |
-| SystemVerilog | [`svlangserver`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#svlangserver) |
-| SystemVerilog | [`svls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#svls) |
-| SystemVerilog | [`verible`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#verible) |
-| Teal | [`teal_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#teal_ls) |
-| Terraform | [`terraformls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#terraformls) |
-| Terraform | [`tflint`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#tflint) |
-| Text | [`grammarly`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#grammarly) |
-| Text | [`ltex`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ltex) |
-| Text | [`textlsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#textlsp) |
-| Text | [`vale_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vale_ls) |
-| Thrift | [`thriftls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#thriftls) |
-| TOML | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| TOML | [`taplo`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#taplo) |
-| Twig | [`twiggy_language_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#twiggy_language_server) |
-| TypeScript | [`ast_grep`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) |
-| TypeScript | [`biome`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#biome) |
-| TypeScript | [`denols`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#denols) |
-| TypeScript | [`eslint`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#eslint) |
-| TypeScript | [`glint`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#glint) |
-| TypeScript | [`harper_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) |
-| TypeScript | [`quick_lint_js`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#quick_lint_js) |
-| TypeScript | [`rome`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#rome) |
-| TypeScript | [`ts_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ts_ls) |
-| TypeScript | [`vtsls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vtsls) |
-| Typespec | [`tsp_server`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#tsp_server) |
-| Typst | [`tinymist`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#tinymist) |
-| Vala | [`vala_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vala_ls) |
-| Verilog | [`hdl_checker`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#hdl_checker) |
-| Veryl | [`veryl_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#veryl_ls) |
-| VHDL | [`hdl_checker`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#hdl_checker) |
-| VHDL | [`vhdl_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vhdl_ls) |
-| VimScript | [`vimls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vimls) |
-| Visualforce | [`visualforce_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#visualforce_ls) |
-| Vue | [`volar`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#volar) |
-| Vue | [`vuels`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vuels) |
-| V | [`v_analyzer`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#v_analyzer) |
-| V | [`vls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vls) |
-| WGSL | [`wgsl_analyzer`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#wgsl_analyzer) |
-| XML | [`lemminx`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#lemminx) |
-| YAML | [`gitlab_ci_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#gitlab_ci_ls) |
-| YAML | [`hydra_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#hydra_lsp) |
-| YAML | [`spectral`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#spectral) |
-| YAML | [`yamlls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#yamlls) |
-| Zig | [`zls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#zls) |
-| Zsh | [`bashls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bashls) |
-| - | [`autotools_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#autotools_ls) |
-| - | [`custom_elements_ls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#custom_elements_ls) |
-| - | [`diagnosticls`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#diagnosticls) |
-| - | [`dprint`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#dprint) |
-| - | [`efm`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#efm) |
-| - | [`typos_lsp`](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#typos_lsp) |
-<!-- available-lsp-servers:end -->
-
-[julials]: ./lua/mason-lspconfig/configs/julials/README.md
-[omnisharp]: ./lua/mason-lspconfig/configs/omnisharp/README.md
-[pylsp]: ./lua/mason-lspconfig/configs/pylsp/README.md
diff --git a/after/lsp/omnisharp_mono.lua b/after/lsp/omnisharp_mono.lua
new file mode 100644
index 0000000..2c42a72
--- /dev/null
+++ b/after/lsp/omnisharp_mono.lua
@@ -0,0 +1,3 @@
+return vim.tbl_extend("force", vim.lsp.config.omnisharp or {}, {
+ cmd = { "omnisharp-mono" },
+})
diff --git a/doc/mason-lspconfig-mapping.txt b/doc/mason-lspconfig-mapping.txt
deleted file mode 100644
index 20daf5a..0000000
--- a/doc/mason-lspconfig-mapping.txt
+++ /dev/null
@@ -1,227 +0,0 @@
-*mason-lspconfig-mapping.txt*
-
-==============================================================================
-SERVER MAPPINGS *mason-lspconfig-server-map*
-
-`Mason name` `lspconfig name`
-angular-language-server angularls
-ansible-language-server ansiblels
-antlers-language-server antlersls
-apex-language-server apex_ls
-arduino-language-server arduino_language_server
-asm-lsp asm_lsp
-ast-grep ast_grep
-astro-language-server astro
-autotools-language-server autotools_ls
-awk-language-server awk_ls
-azure-pipelines-language-server azure_pipelines_ls
-basedpyright basedpyright
-bash-language-server bashls
-beancount-language-server beancount
-bicep-lsp bicep
-biome biome
-brighterscript bright_script
-bsl-language-server bsl_ls
-buf buf_ls
-bzl bzl
-cairo-language-server cairo_ls
-clangd clangd
-clarity-lsp clarity_lsp
-clojure-lsp clojure_lsp
-cmake-language-server cmake
-cobol-language-support cobol_ls
-codeql codeqlls
-coq-lsp coq_lsp
-crystalline crystalline
-csharp-language-server csharp_ls
-css-variables-language-server css_variables
-css-lsp cssls
-cssmodules-language-server cssmodules_ls
-cucumber-language-server cucumber_language_server
-custom-elements-languageserver custom_elements_ls
-cypher-language-server cypher_ls
-cuelsp dagger
-deno denols
-dhall-lsp dhall_lsp_server
-diagnostic-languageserver diagnosticls
-docker-compose-language-service docker_compose_language_service
-dockerfile-language-server dockerls
-dot-language-server dotls
-dprint dprint
-drools-lsp drools_lsp
-earthlyls earthlyls
-efm efm
-elixir-ls elixirls
-elm-language-server elmls
-elp elp
-ember-language-server ember
-emmet-language-server emmet_language_server
-emmet-ls emmet_ls
-erg-language-server erg_language_server
-erlang-ls erlangls
-esbonio esbonio
-eslint-lsp eslint
-facility-language-server facility_language_server
-fennel-language-server fennel_language_server
-fennel-ls fennel_ls
-flux-lsp flux_lsp
-foam-language-server foam_ls
-fortls fortls
-fsautocomplete fsautocomplete
-ginko_ls ginko_ls
-gitlab-ci-ls gitlab_ci_ls
-glint glint
-glsl_analyzer glsl_analyzer
-glslls glslls
-golangci-lint-langserver golangci_lint_ls
-gopls gopls
-gradle-language-server gradle_ls
-grammarly-languageserver grammarly
-graphql-language-service-cli graphql
-groovy-language-server groovyls
-harper-ls harper_ls
-haxe-language-server haxe_language_server
-hdl-checker hdl_checker
-helm-ls helm_ls
-haskell-language-server hls
-hoon-language-server hoon_ls
-html-lsp html
-htmx-lsp htmx
-hydra-lsp hydra_lsp
-hyprls hyprls
-intelephense intelephense
-java-language-server java_language_server
-jdtls jdtls
-jedi-language-server jedi_language_server
-jinja-lsp jinja_lsp
-jq-lsp jqls
-json-lsp jsonls
-jsonnet-language-server jsonnet_ls
-julia-lsp julials
-kcl kcl
-kotlin-language-server kotlin_language_server
-lelwel lelwel_ls
-lemminx lemminx
-lexical lexical
-ltex-ls ltex
-lua-language-server lua_ls
-luau-lsp luau_lsp
-lwc-language-server lwc_ls
-markdown-oxide markdown_oxide
-marksman marksman
-matlab-language-server matlab_ls
-mdx-analyzer mdx_analyzer
-mesonlsp mesonlsp
-millet millet
-metamath-zero-lsp mm0_ls
-motoko-lsp motoko_lsp
-move-analyzer move_analyzer
-mutt-language-server mutt_ls
-neocmakelsp neocmake
-nextls nextls
-nginx-language-server nginx_language_server
-nickel-lang-lsp nickel_ls
-nil nil_ls
-nimlangserver nim_langserver
-nimlsp nimls
-ocaml-lsp ocamllsp
-ols ols
-omnisharp omnisharp
-opencl-language-server opencl_ls
-openscad-lsp openscad_lsp
-pbls pbls
-perlnavigator perlnavigator
-pest-language-server pest_ls
-phpactor phpactor
-pico8-ls pico8_ls
-pkgbuild-language-server pkgbuild_language_server
-powershell-editor-services powershell_es
-prisma-language-server prismals
-prosemd-lsp prosemd_lsp
-psalm psalm
-puppet-editor-services puppet
-purescript-language-server purescriptls
-python-lsp-server pylsp
-pylyzer pylyzer
-pyre pyre
-pyright pyright
-quick-lint-js quick_lint_js
-r-languageserver r_language_server
-raku-navigator raku_navigator
-reason-language-server reason_ls
-regal regal
-regols regols
-remark-language-server remark_ls
-rescript-language-server rescriptls
-rnix-lsp rnix
-robotframework-lsp robotframework_ls
-rome rome
-rubocop rubocop
-ruby-lsp ruby_lsp
-ruff ruff
-rust-analyzer rust_analyzer
-salt-lsp salt_ls
-serve-d serve_d
-shopify-cli shopify_theme_ls
-slint-lsp slint_lsp
-smithy-language-server smithy_ls
-snakeskin-cli snakeskin_ls
-snyk-ls snyk_ls
-solang solang
-solargraph solargraph
-solidity solc
-solidity-ls solidity
-vscode-solidity-server solidity_ls
-nomicfoundation-solidity-language-server solidity_ls_nomicfoundation
-some-sass-language-server somesass_ls
-sorbet sorbet
-sourcery sourcery
-spectral-language-server spectral
-sqlls sqlls
-sqls sqls
-standardrb standardrb
-starlark-rust starlark_rust
-starpls starpls
-steep steep
-stimulus-language-server stimulus_ls
-stylelint-lsp stylelint_lsp
-superhtml superhtml
-svelte-language-server svelte
-svlangserver svlangserver
-svls svls
-swift-mesonlsp swift_mesonls
-tailwindcss-language-server tailwindcss
-taplo taplo
-teal-language-server teal_ls
-templ templ
-terraform-ls terraformls
-texlab texlab
-textlsp textlsp
-tflint tflint
-shopify-theme-check theme_check
-thriftls thriftls
-tinymist tinymist
-typescript-language-server ts_ls
-tsp-server tsp_server
-twiggy-language-server twiggy_language_server
-typos-lsp typos_lsp
-unocss-language-server unocss
-v-analyzer v_analyzer
-vacuum vacuum
-vala-language-server vala_ls
-vale-ls vale_ls
-verible verible
-veryl-ls veryl_ls
-rust_hdl vhdl_ls
-vim-language-server vimls
-visualforce-language-server visualforce_ls
-vls vls
-vue-language-server volar
-vtsls vtsls
-vetur-vls vuels
-wgsl-analyzer wgsl_analyzer
-yaml-language-server yamlls
-zk zk
-zls zls
-
-vim:tw=78:ft=help:norl:expandtab:sw=4 \ No newline at end of file
diff --git a/doc/mason-lspconfig.txt b/doc/mason-lspconfig.txt
index 44c437f..f3ccb04 100644
--- a/doc/mason-lspconfig.txt
+++ b/doc/mason-lspconfig.txt
@@ -1,6 +1,6 @@
*mason-lspconfig.nvim*
-Minimum version of neovim: 0.9.0
+Minimum version of Neovim: 0.11.0
Author: William Boman
Type |gO| to see the table of contents.
@@ -11,32 +11,18 @@ INTRODUCTION *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 these tables for a complete mapping:
- - :h |mason-lspconfig-server-map|
- - https://github.com/williamboman/mason-lspconfig.nvim/blob/main/doc/server-mapping.md
+- allow you to (i) automatically install, and (ii) automatically enable
+ installed servers
+- provide extra convenience APIs such as the `:LspInstall` command
+- provide additional LSP configurations for a few servers
+- translate between `lspconfig` server names and `mason.nvim` package names
+ (e.g. `lua_ls <-> lua-language-server`)
==============================================================================
REQUIREMENTS *mason-lspconfig-requirements*
-`mason-lspconfig` requires `mason.nvim` & `lspconfig` to be installed.
-Note that `lspconfig` needs to be available in |rtp| by the time you set up
-`mason-lspconfig`.
-
-Make sure to set up `mason` and `mason-lspconfig.nvim` before setting up
-servers via `lspconfig`.
+`mason-lspconfig` requires `mason.nvim` & `lspconfig` to be installed. Note
+that `lspconfig` needs to be available in |rtp| before you set up `mason-lspconfig`.
==============================================================================
QUICK START *mason-lspconfig-quickstart*
@@ -44,17 +30,8 @@ QUICK START *mason-lspconfig-quickstart*
-----------------
Setting up mason-lspconfig.nvim
-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`
-
-Note: ~
- `lspconfig` needs to be available in |rtp| so that `mason-lspconfig` can
- successfully call `require("lspconfig")` (|lua-require|) during setup.
- Pay extra attention to this if you lazy-load plugins, or somehow "chain"
- the loading of plugins via your plugin manager.
+It's important that you set up `mason.nvim` and have `nvim-lspconfig`
+available in |'runtimepath'| before setting up `mason-lspconfig.nvim`.
To enable the `mason-lspconfig` plugin, call the `setup()` function, like so:
>lua
@@ -68,14 +45,9 @@ Setting up servers
Next, you're ready to set up the servers you want to use. Refer to lspconfig's
documentation |lspconfig-quickstart| for more information on how to do so!
->lua
- require("lspconfig").lua_ls.setup {}
- require("lspconfig").rust_analyzer.setup {}
-<
-Automatic server setup (advanced feature): ~
- Refer to |mason-lspconfig-dynamic-server-setup| (advanced feature) for an
- alternative method of setting up servers that doesn't require you to
- imperatively set up each server one by one.
+
+`mason-lspconfig.nvim` will automatically enable (|vim.lsp.enable()|) installed
+servers for you by default, see |mason-automatic-enable|.
-----------------
Installation of servers
@@ -143,47 +115,29 @@ Example:
---@type string[]
ensure_installed = {},
- -- See `:h mason-lspconfig.setup_handlers()`
- ---@type table<string, fun(server_name: string)>?
- handlers = nil,
+ -- Whether installed servers should automatically be enabled via `:h vim.lsp.enable()`.
+ automatic_enable = true
}
<
==============================================================================
-AUTOMATIC SERVER SETUP *mason-lspconfig-automatic-server-setup*
- *mason-lspconfig-dynamic-server-setup*
-
+AUTOMATICALLY ENABLE SERVERS *mason-automatic-enable*
-`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. It also makes it
-possible to use newly installed servers without having to restart Neovim!
+By default, `mason-lspconfig` will automatically enable servers you have
+installed in Mason. This means you don't have to call |vim.lsp.enable()|
+yourself.
-Example:
+To disable this feature:
>lua
- require("mason").setup()
- require("mason-lspconfig").setup()
-
- require("mason-lspconfig").setup_handlers {
- -- The first entry (without a key) will be the default handler
- -- and will be called for each installed server that doesn't have
- -- a dedicated handler.
- function (server_name) -- default handler (optional)
- require("lspconfig")[server_name].setup {}
- end,
- -- Next, you can provide a dedicated handler for specific servers.
- -- For example, a handler override for the `rust_analyzer`:
- ["rust_analyzer"] = function ()
- require("rust-tools").setup {}
- end
- }
+ require("mason-lspconfig").setup({
+ automatic_enable = false
+ })
<
-Note: ~
- If you use this approach, make sure you don't also manually set up servers
- directly via `lspconfig` as this will cause servers to be set up more than
- once.
-Refer to |mason-lspconfig.setup_handlers()| for more information.
+Note: ~
+ Servers that you have installed outside of Mason will not be recognized by
+ this feature. You will still have to manually enable (|vim.lsp.enable()|)
+ such servers yourself.
==============================================================================
Lua module: mason-lspconfig
@@ -192,75 +146,6 @@ Lua module: mason-lspconfig
setup({config})
Sets up mason with the provided {config} (see |mason-lspconfig-settings|).
- *mason-lspconfig.setup_handlers()*
-setup_handlers({handlers})
- Advanced feature ~
- This is an advanced, opt-in, feature that requires some careful
- reading of the documentation.
-
- The recommended method to set up servers with lspconfig is to do so by
- following their guides, see |lspconfig-quickstart|.
-
- Registers the provided {handlers}, to be called by mason when an installed
- server supported by lspconfig is ready to be set up.
-
- When this function is called, all servers that are currently installed
- will be considered ready to be set up. When a new server is installed
- during a session, it will be considered ready to be set up when
- installation succeeds.
-
- {handlers} is a table where the keys are the name of an lspconfig server,
- and the values are the function to be called when that server is ready to
- be set up (i.e. is installed).
-
- You may also pass a default handler that will be called when no dedicated
- handler is provided. This is done by providing a function without a key
- (see example below).
-
- Note: ~
- The server names provided as keys are the lspconfig server names, not
- mason's package names, so for example instead of "lua-language-server"
- it's "lua_ls".
-
- Example: ~
->lua
- local handlers = {
- -- The first entry (without a key) will be the default handler
- -- and will be called for each installed server that doesn't have
- -- a dedicated handler.
- function (server_name) -- default handler (optional)
- require("lspconfig")[server_name].setup {}
- end,
- -- Next, you can provide targeted overrides for specific servers.
- ["rust_analyzer"] = function ()
- require("rust-tools").setup {}
- end,
- ["lua_ls"] = function ()
- local lspconfig = require("lspconfig")
- lspconfig.lua_ls.setup {
- settings = {
- Lua = {
- diagnostics = {
- globals = { "vim" }
- }
- }
- }
- }
- end,
- }
-
- -- alt 1. Either pass handlers when setting up mason-lspconfig:
- require("mason-lspconfig").setup({ handlers = handlers })
-
- -- alt 2. or call the .setup_handlers() function.
- require("mason-lspconfig").setup_handlers(handlers)
-<
-
- See also: ~
- You may achieve similar behaviour by manually looping through the
- installed servers (see |mason-lspconfig.get_installed_servers()|) and
- setting each one up.
-
*mason-lspconfig.get_installed_servers()*
get_installed_servers()
Returns the installed LSP servers supported by lspconfig.
@@ -309,8 +194,9 @@ get_mappings()
Returns: ~
{
- lspconfig_to_mason: table<string, string>,
- mason_to_lspconfig: table<string, string>
+ lspconfig_to_package: table<string, string>,
+ package_to_lspconfig: table<string, string>,
+ filetypes: table<string, string[]>
}
vim:tw=78:ft=help:norl:expandtab:sw=4
diff --git a/doc/server-mapping.md b/doc/server-mapping.md
deleted file mode 100644
index 555546f..0000000
--- a/doc/server-mapping.md
+++ /dev/null
@@ -1,222 +0,0 @@
-<!--- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY. -->
-| lspconfig server name | mason.nvim package name |
-| --------------------- | ----------------------- |
-| [angularls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#angularls) | [angular-language-server](https://mason-registry.dev/registry/list#angular-language-server) |
-| [ansiblels](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ansiblels) | [ansible-language-server](https://mason-registry.dev/registry/list#ansible-language-server) |
-| [antlersls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#antlersls) | [antlers-language-server](https://mason-registry.dev/registry/list#antlers-language-server) |
-| [apex_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#apex_ls) | [apex-language-server](https://mason-registry.dev/registry/list#apex-language-server) |
-| [arduino_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#arduino_language_server) | [arduino-language-server](https://mason-registry.dev/registry/list#arduino-language-server) |
-| [asm_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#asm_lsp) | [asm-lsp](https://mason-registry.dev/registry/list#asm-lsp) |
-| [ast_grep](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ast_grep) | [ast-grep](https://mason-registry.dev/registry/list#ast-grep) |
-| [astro](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#astro) | [astro-language-server](https://mason-registry.dev/registry/list#astro-language-server) |
-| [autotools_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#autotools_ls) | [autotools-language-server](https://mason-registry.dev/registry/list#autotools-language-server) |
-| [awk_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#awk_ls) | [awk-language-server](https://mason-registry.dev/registry/list#awk-language-server) |
-| [azure_pipelines_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#azure_pipelines_ls) | [azure-pipelines-language-server](https://mason-registry.dev/registry/list#azure-pipelines-language-server) |
-| [basedpyright](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#basedpyright) | [basedpyright](https://mason-registry.dev/registry/list#basedpyright) |
-| [bashls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bashls) | [bash-language-server](https://mason-registry.dev/registry/list#bash-language-server) |
-| [beancount](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#beancount) | [beancount-language-server](https://mason-registry.dev/registry/list#beancount-language-server) |
-| [bicep](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bicep) | [bicep-lsp](https://mason-registry.dev/registry/list#bicep-lsp) |
-| [biome](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#biome) | [biome](https://mason-registry.dev/registry/list#biome) |
-| [bright_script](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bright_script) | [brighterscript](https://mason-registry.dev/registry/list#brighterscript) |
-| [bsl_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bsl_ls) | [bsl-language-server](https://mason-registry.dev/registry/list#bsl-language-server) |
-| [buf_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#buf_ls) | [buf](https://mason-registry.dev/registry/list#buf) |
-| [bzl](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#bzl) | [bzl](https://mason-registry.dev/registry/list#bzl) |
-| [cairo_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cairo_ls) | [cairo-language-server](https://mason-registry.dev/registry/list#cairo-language-server) |
-| [clangd](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#clangd) | [clangd](https://mason-registry.dev/registry/list#clangd) |
-| [clarity_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#clarity_lsp) | [clarity-lsp](https://mason-registry.dev/registry/list#clarity-lsp) |
-| [clojure_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#clojure_lsp) | [clojure-lsp](https://mason-registry.dev/registry/list#clojure-lsp) |
-| [cmake](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cmake) | [cmake-language-server](https://mason-registry.dev/registry/list#cmake-language-server) |
-| [cobol_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cobol_ls) | [cobol-language-support](https://mason-registry.dev/registry/list#cobol-language-support) |
-| [codeqlls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#codeqlls) | [codeql](https://mason-registry.dev/registry/list#codeql) |
-| [coq_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#coq_lsp) | [coq-lsp](https://mason-registry.dev/registry/list#coq-lsp) |
-| [crystalline](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#crystalline) | [crystalline](https://mason-registry.dev/registry/list#crystalline) |
-| [csharp_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#csharp_ls) | [csharp-language-server](https://mason-registry.dev/registry/list#csharp-language-server) |
-| [css_variables](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#css_variables) | [css-variables-language-server](https://mason-registry.dev/registry/list#css-variables-language-server) |
-| [cssls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cssls) | [css-lsp](https://mason-registry.dev/registry/list#css-lsp) |
-| [cssmodules_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cssmodules_ls) | [cssmodules-language-server](https://mason-registry.dev/registry/list#cssmodules-language-server) |
-| [cucumber_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cucumber_language_server) | [cucumber-language-server](https://mason-registry.dev/registry/list#cucumber-language-server) |
-| [custom_elements_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#custom_elements_ls) | [custom-elements-languageserver](https://mason-registry.dev/registry/list#custom-elements-languageserver) |
-| [cypher_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#cypher_ls) | [cypher-language-server](https://mason-registry.dev/registry/list#cypher-language-server) |
-| [dagger](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#dagger) | [cuelsp](https://mason-registry.dev/registry/list#cuelsp) |
-| [denols](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#denols) | [deno](https://mason-registry.dev/registry/list#deno) |
-| [dhall_lsp_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#dhall_lsp_server) | [dhall-lsp](https://mason-registry.dev/registry/list#dhall-lsp) |
-| [diagnosticls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#diagnosticls) | [diagnostic-languageserver](https://mason-registry.dev/registry/list#diagnostic-languageserver) |
-| [docker_compose_language_service](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#docker_compose_language_service) | [docker-compose-language-service](https://mason-registry.dev/registry/list#docker-compose-language-service) |
-| [dockerls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#dockerls) | [dockerfile-language-server](https://mason-registry.dev/registry/list#dockerfile-language-server) |
-| [dotls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#dotls) | [dot-language-server](https://mason-registry.dev/registry/list#dot-language-server) |
-| [dprint](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#dprint) | [dprint](https://mason-registry.dev/registry/list#dprint) |
-| [drools_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#drools_lsp) | [drools-lsp](https://mason-registry.dev/registry/list#drools-lsp) |
-| [earthlyls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#earthlyls) | [earthlyls](https://mason-registry.dev/registry/list#earthlyls) |
-| [efm](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#efm) | [efm](https://mason-registry.dev/registry/list#efm) |
-| [elixirls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#elixirls) | [elixir-ls](https://mason-registry.dev/registry/list#elixir-ls) |
-| [elmls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#elmls) | [elm-language-server](https://mason-registry.dev/registry/list#elm-language-server) |
-| [elp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#elp) | [elp](https://mason-registry.dev/registry/list#elp) |
-| [ember](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ember) | [ember-language-server](https://mason-registry.dev/registry/list#ember-language-server) |
-| [emmet_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#emmet_language_server) | [emmet-language-server](https://mason-registry.dev/registry/list#emmet-language-server) |
-| [emmet_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#emmet_ls) | [emmet-ls](https://mason-registry.dev/registry/list#emmet-ls) |
-| [erg_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#erg_language_server) | [erg-language-server](https://mason-registry.dev/registry/list#erg-language-server) |
-| [erlangls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#erlangls) | [erlang-ls](https://mason-registry.dev/registry/list#erlang-ls) |
-| [esbonio](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#esbonio) | [esbonio](https://mason-registry.dev/registry/list#esbonio) |
-| [eslint](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#eslint) | [eslint-lsp](https://mason-registry.dev/registry/list#eslint-lsp) |
-| [facility_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#facility_language_server) | [facility-language-server](https://mason-registry.dev/registry/list#facility-language-server) |
-| [fennel_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#fennel_language_server) | [fennel-language-server](https://mason-registry.dev/registry/list#fennel-language-server) |
-| [fennel_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#fennel_ls) | [fennel-ls](https://mason-registry.dev/registry/list#fennel-ls) |
-| [flux_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#flux_lsp) | [flux-lsp](https://mason-registry.dev/registry/list#flux-lsp) |
-| [foam_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#foam_ls) | [foam-language-server](https://mason-registry.dev/registry/list#foam-language-server) |
-| [fortls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#fortls) | [fortls](https://mason-registry.dev/registry/list#fortls) |
-| [fsautocomplete](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#fsautocomplete) | [fsautocomplete](https://mason-registry.dev/registry/list#fsautocomplete) |
-| [ginko_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ginko_ls) | [ginko_ls](https://mason-registry.dev/registry/list#ginko_ls) |
-| [gitlab_ci_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#gitlab_ci_ls) | [gitlab-ci-ls](https://mason-registry.dev/registry/list#gitlab-ci-ls) |
-| [glint](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#glint) | [glint](https://mason-registry.dev/registry/list#glint) |
-| [glsl_analyzer](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#glsl_analyzer) | [glsl_analyzer](https://mason-registry.dev/registry/list#glsl_analyzer) |
-| [glslls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#glslls) | [glslls](https://mason-registry.dev/registry/list#glslls) |
-| [golangci_lint_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#golangci_lint_ls) | [golangci-lint-langserver](https://mason-registry.dev/registry/list#golangci-lint-langserver) |
-| [gopls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#gopls) | [gopls](https://mason-registry.dev/registry/list#gopls) |
-| [gradle_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#gradle_ls) | [gradle-language-server](https://mason-registry.dev/registry/list#gradle-language-server) |
-| [grammarly](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#grammarly) | [grammarly-languageserver](https://mason-registry.dev/registry/list#grammarly-languageserver) |
-| [graphql](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#graphql) | [graphql-language-service-cli](https://mason-registry.dev/registry/list#graphql-language-service-cli) |
-| [groovyls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#groovyls) | [groovy-language-server](https://mason-registry.dev/registry/list#groovy-language-server) |
-| [harper_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#harper_ls) | [harper-ls](https://mason-registry.dev/registry/list#harper-ls) |
-| [haxe_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#haxe_language_server) | [haxe-language-server](https://mason-registry.dev/registry/list#haxe-language-server) |
-| [hdl_checker](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#hdl_checker) | [hdl-checker](https://mason-registry.dev/registry/list#hdl-checker) |
-| [helm_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#helm_ls) | [helm-ls](https://mason-registry.dev/registry/list#helm-ls) |
-| [hls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#hls) | [haskell-language-server](https://mason-registry.dev/registry/list#haskell-language-server) |
-| [hoon_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#hoon_ls) | [hoon-language-server](https://mason-registry.dev/registry/list#hoon-language-server) |
-| [html](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#html) | [html-lsp](https://mason-registry.dev/registry/list#html-lsp) |
-| [htmx](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#htmx) | [htmx-lsp](https://mason-registry.dev/registry/list#htmx-lsp) |
-| [hydra_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#hydra_lsp) | [hydra-lsp](https://mason-registry.dev/registry/list#hydra-lsp) |
-| [hyprls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#hyprls) | [hyprls](https://mason-registry.dev/registry/list#hyprls) |
-| [intelephense](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#intelephense) | [intelephense](https://mason-registry.dev/registry/list#intelephense) |
-| [java_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#java_language_server) | [java-language-server](https://mason-registry.dev/registry/list#java-language-server) |
-| [jdtls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jdtls) | [jdtls](https://mason-registry.dev/registry/list#jdtls) |
-| [jedi_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jedi_language_server) | [jedi-language-server](https://mason-registry.dev/registry/list#jedi-language-server) |
-| [jinja_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jinja_lsp) | [jinja-lsp](https://mason-registry.dev/registry/list#jinja-lsp) |
-| [jqls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jqls) | [jq-lsp](https://mason-registry.dev/registry/list#jq-lsp) |
-| [jsonls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jsonls) | [json-lsp](https://mason-registry.dev/registry/list#json-lsp) |
-| [jsonnet_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#jsonnet_ls) | [jsonnet-language-server](https://mason-registry.dev/registry/list#jsonnet-language-server) |
-| [julials](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#julials) | [julia-lsp](https://mason-registry.dev/registry/list#julia-lsp) |
-| [kcl](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#kcl) | [kcl](https://mason-registry.dev/registry/list#kcl) |
-| [kotlin_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#kotlin_language_server) | [kotlin-language-server](https://mason-registry.dev/registry/list#kotlin-language-server) |
-| [lelwel_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#lelwel_ls) | [lelwel](https://mason-registry.dev/registry/list#lelwel) |
-| [lemminx](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#lemminx) | [lemminx](https://mason-registry.dev/registry/list#lemminx) |
-| [lexical](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#lexical) | [lexical](https://mason-registry.dev/registry/list#lexical) |
-| [ltex](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ltex) | [ltex-ls](https://mason-registry.dev/registry/list#ltex-ls) |
-| [lua_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#lua_ls) | [lua-language-server](https://mason-registry.dev/registry/list#lua-language-server) |
-| [luau_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#luau_lsp) | [luau-lsp](https://mason-registry.dev/registry/list#luau-lsp) |
-| [lwc_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#lwc_ls) | [lwc-language-server](https://mason-registry.dev/registry/list#lwc-language-server) |
-| [markdown_oxide](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#markdown_oxide) | [markdown-oxide](https://mason-registry.dev/registry/list#markdown-oxide) |
-| [marksman](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#marksman) | [marksman](https://mason-registry.dev/registry/list#marksman) |
-| [matlab_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#matlab_ls) | [matlab-language-server](https://mason-registry.dev/registry/list#matlab-language-server) |
-| [mdx_analyzer](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#mdx_analyzer) | [mdx-analyzer](https://mason-registry.dev/registry/list#mdx-analyzer) |
-| [mesonlsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#mesonlsp) | [mesonlsp](https://mason-registry.dev/registry/list#mesonlsp) |
-| [millet](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#millet) | [millet](https://mason-registry.dev/registry/list#millet) |
-| [mm0_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#mm0_ls) | [metamath-zero-lsp](https://mason-registry.dev/registry/list#metamath-zero-lsp) |
-| [motoko_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#motoko_lsp) | [motoko-lsp](https://mason-registry.dev/registry/list#motoko-lsp) |
-| [move_analyzer](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#move_analyzer) | [move-analyzer](https://mason-registry.dev/registry/list#move-analyzer) |
-| [mutt_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#mutt_ls) | [mutt-language-server](https://mason-registry.dev/registry/list#mutt-language-server) |
-| [neocmake](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#neocmake) | [neocmakelsp](https://mason-registry.dev/registry/list#neocmakelsp) |
-| [nextls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#nextls) | [nextls](https://mason-registry.dev/registry/list#nextls) |
-| [nginx_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#nginx_language_server) | [nginx-language-server](https://mason-registry.dev/registry/list#nginx-language-server) |
-| [nickel_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#nickel_ls) | [nickel-lang-lsp](https://mason-registry.dev/registry/list#nickel-lang-lsp) |
-| [nil_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#nil_ls) | [nil](https://mason-registry.dev/registry/list#nil) |
-| [nim_langserver](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#nim_langserver) | [nimlangserver](https://mason-registry.dev/registry/list#nimlangserver) |
-| [nimls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#nimls) | [nimlsp](https://mason-registry.dev/registry/list#nimlsp) |
-| [ocamllsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ocamllsp) | [ocaml-lsp](https://mason-registry.dev/registry/list#ocaml-lsp) |
-| [ols](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ols) | [ols](https://mason-registry.dev/registry/list#ols) |
-| [omnisharp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#omnisharp) | [omnisharp](https://mason-registry.dev/registry/list#omnisharp) |
-| [opencl_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#opencl_ls) | [opencl-language-server](https://mason-registry.dev/registry/list#opencl-language-server) |
-| [openscad_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#openscad_lsp) | [openscad-lsp](https://mason-registry.dev/registry/list#openscad-lsp) |
-| [pbls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pbls) | [pbls](https://mason-registry.dev/registry/list#pbls) |
-| [perlnavigator](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#perlnavigator) | [perlnavigator](https://mason-registry.dev/registry/list#perlnavigator) |
-| [pest_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pest_ls) | [pest-language-server](https://mason-registry.dev/registry/list#pest-language-server) |
-| [phpactor](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#phpactor) | [phpactor](https://mason-registry.dev/registry/list#phpactor) |
-| [pico8_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pico8_ls) | [pico8-ls](https://mason-registry.dev/registry/list#pico8-ls) |
-| [pkgbuild_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pkgbuild_language_server) | [pkgbuild-language-server](https://mason-registry.dev/registry/list#pkgbuild-language-server) |
-| [powershell_es](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#powershell_es) | [powershell-editor-services](https://mason-registry.dev/registry/list#powershell-editor-services) |
-| [prismals](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#prismals) | [prisma-language-server](https://mason-registry.dev/registry/list#prisma-language-server) |
-| [prosemd_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#prosemd_lsp) | [prosemd-lsp](https://mason-registry.dev/registry/list#prosemd-lsp) |
-| [psalm](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#psalm) | [psalm](https://mason-registry.dev/registry/list#psalm) |
-| [puppet](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#puppet) | [puppet-editor-services](https://mason-registry.dev/registry/list#puppet-editor-services) |
-| [purescriptls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#purescriptls) | [purescript-language-server](https://mason-registry.dev/registry/list#purescript-language-server) |
-| [pylsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pylsp) | [python-lsp-server](https://mason-registry.dev/registry/list#python-lsp-server) |
-| [pylyzer](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pylyzer) | [pylyzer](https://mason-registry.dev/registry/list#pylyzer) |
-| [pyre](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pyre) | [pyre](https://mason-registry.dev/registry/list#pyre) |
-| [pyright](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#pyright) | [pyright](https://mason-registry.dev/registry/list#pyright) |
-| [quick_lint_js](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#quick_lint_js) | [quick-lint-js](https://mason-registry.dev/registry/list#quick-lint-js) |
-| [r_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#r_language_server) | [r-languageserver](https://mason-registry.dev/registry/list#r-languageserver) |
-| [raku_navigator](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#raku_navigator) | [raku-navigator](https://mason-registry.dev/registry/list#raku-navigator) |
-| [reason_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#reason_ls) | [reason-language-server](https://mason-registry.dev/registry/list#reason-language-server) |
-| [regal](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#regal) | [regal](https://mason-registry.dev/registry/list#regal) |
-| [regols](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#regols) | [regols](https://mason-registry.dev/registry/list#regols) |
-| [remark_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#remark_ls) | [remark-language-server](https://mason-registry.dev/registry/list#remark-language-server) |
-| [rescriptls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#rescriptls) | [rescript-language-server](https://mason-registry.dev/registry/list#rescript-language-server) |
-| [rnix](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#rnix) | [rnix-lsp](https://mason-registry.dev/registry/list#rnix-lsp) |
-| [robotframework_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#robotframework_ls) | [robotframework-lsp](https://mason-registry.dev/registry/list#robotframework-lsp) |
-| [rome](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#rome) | [rome](https://mason-registry.dev/registry/list#rome) |
-| [rubocop](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#rubocop) | [rubocop](https://mason-registry.dev/registry/list#rubocop) |
-| [ruby_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ruby_lsp) | [ruby-lsp](https://mason-registry.dev/registry/list#ruby-lsp) |
-| [ruff](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ruff) | [ruff](https://mason-registry.dev/registry/list#ruff) |
-| [rust_analyzer](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#rust_analyzer) | [rust-analyzer](https://mason-registry.dev/registry/list#rust-analyzer) |
-| [salt_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#salt_ls) | [salt-lsp](https://mason-registry.dev/registry/list#salt-lsp) |
-| [serve_d](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#serve_d) | [serve-d](https://mason-registry.dev/registry/list#serve-d) |
-| [shopify_theme_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#shopify_theme_ls) | [shopify-cli](https://mason-registry.dev/registry/list#shopify-cli) |
-| [slint_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#slint_lsp) | [slint-lsp](https://mason-registry.dev/registry/list#slint-lsp) |
-| [smithy_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#smithy_ls) | [smithy-language-server](https://mason-registry.dev/registry/list#smithy-language-server) |
-| [snakeskin_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#snakeskin_ls) | [snakeskin-cli](https://mason-registry.dev/registry/list#snakeskin-cli) |
-| [snyk_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#snyk_ls) | [snyk-ls](https://mason-registry.dev/registry/list#snyk-ls) |
-| [solang](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#solang) | [solang](https://mason-registry.dev/registry/list#solang) |
-| [solargraph](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#solargraph) | [solargraph](https://mason-registry.dev/registry/list#solargraph) |
-| [solc](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#solc) | [solidity](https://mason-registry.dev/registry/list#solidity) |
-| [solidity](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#solidity) | [solidity-ls](https://mason-registry.dev/registry/list#solidity-ls) |
-| [solidity_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#solidity_ls) | [vscode-solidity-server](https://mason-registry.dev/registry/list#vscode-solidity-server) |
-| [solidity_ls_nomicfoundation](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#solidity_ls_nomicfoundation) | [nomicfoundation-solidity-language-server](https://mason-registry.dev/registry/list#nomicfoundation-solidity-language-server) |
-| [somesass_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#somesass_ls) | [some-sass-language-server](https://mason-registry.dev/registry/list#some-sass-language-server) |
-| [sorbet](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#sorbet) | [sorbet](https://mason-registry.dev/registry/list#sorbet) |
-| [sourcery](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#sourcery) | [sourcery](https://mason-registry.dev/registry/list#sourcery) |
-| [spectral](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#spectral) | [spectral-language-server](https://mason-registry.dev/registry/list#spectral-language-server) |
-| [sqlls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#sqlls) | [sqlls](https://mason-registry.dev/registry/list#sqlls) |
-| [sqls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#sqls) | [sqls](https://mason-registry.dev/registry/list#sqls) |
-| [standardrb](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#standardrb) | [standardrb](https://mason-registry.dev/registry/list#standardrb) |
-| [starlark_rust](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#starlark_rust) | [starlark-rust](https://mason-registry.dev/registry/list#starlark-rust) |
-| [starpls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#starpls) | [starpls](https://mason-registry.dev/registry/list#starpls) |
-| [steep](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#steep) | [steep](https://mason-registry.dev/registry/list#steep) |
-| [stimulus_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#stimulus_ls) | [stimulus-language-server](https://mason-registry.dev/registry/list#stimulus-language-server) |
-| [stylelint_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#stylelint_lsp) | [stylelint-lsp](https://mason-registry.dev/registry/list#stylelint-lsp) |
-| [superhtml](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#superhtml) | [superhtml](https://mason-registry.dev/registry/list#superhtml) |
-| [svelte](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#svelte) | [svelte-language-server](https://mason-registry.dev/registry/list#svelte-language-server) |
-| [svlangserver](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#svlangserver) | [svlangserver](https://mason-registry.dev/registry/list#svlangserver) |
-| [svls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#svls) | [svls](https://mason-registry.dev/registry/list#svls) |
-| [swift_mesonls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#swift_mesonls) | [swift-mesonlsp](https://mason-registry.dev/registry/list#swift-mesonlsp) |
-| [tailwindcss](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#tailwindcss) | [tailwindcss-language-server](https://mason-registry.dev/registry/list#tailwindcss-language-server) |
-| [taplo](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#taplo) | [taplo](https://mason-registry.dev/registry/list#taplo) |
-| [teal_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#teal_ls) | [teal-language-server](https://mason-registry.dev/registry/list#teal-language-server) |
-| [templ](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#templ) | [templ](https://mason-registry.dev/registry/list#templ) |
-| [terraformls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#terraformls) | [terraform-ls](https://mason-registry.dev/registry/list#terraform-ls) |
-| [texlab](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#texlab) | [texlab](https://mason-registry.dev/registry/list#texlab) |
-| [textlsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#textlsp) | [textlsp](https://mason-registry.dev/registry/list#textlsp) |
-| [tflint](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#tflint) | [tflint](https://mason-registry.dev/registry/list#tflint) |
-| [theme_check](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#theme_check) | [shopify-theme-check](https://mason-registry.dev/registry/list#shopify-theme-check) |
-| [thriftls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#thriftls) | [thriftls](https://mason-registry.dev/registry/list#thriftls) |
-| [tinymist](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#tinymist) | [tinymist](https://mason-registry.dev/registry/list#tinymist) |
-| [ts_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#ts_ls) | [typescript-language-server](https://mason-registry.dev/registry/list#typescript-language-server) |
-| [tsp_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#tsp_server) | [tsp-server](https://mason-registry.dev/registry/list#tsp-server) |
-| [twiggy_language_server](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#twiggy_language_server) | [twiggy-language-server](https://mason-registry.dev/registry/list#twiggy-language-server) |
-| [typos_lsp](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#typos_lsp) | [typos-lsp](https://mason-registry.dev/registry/list#typos-lsp) |
-| [unocss](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#unocss) | [unocss-language-server](https://mason-registry.dev/registry/list#unocss-language-server) |
-| [v_analyzer](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#v_analyzer) | [v-analyzer](https://mason-registry.dev/registry/list#v-analyzer) |
-| [vacuum](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vacuum) | [vacuum](https://mason-registry.dev/registry/list#vacuum) |
-| [vala_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vala_ls) | [vala-language-server](https://mason-registry.dev/registry/list#vala-language-server) |
-| [vale_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vale_ls) | [vale-ls](https://mason-registry.dev/registry/list#vale-ls) |
-| [verible](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#verible) | [verible](https://mason-registry.dev/registry/list#verible) |
-| [veryl_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#veryl_ls) | [veryl-ls](https://mason-registry.dev/registry/list#veryl-ls) |
-| [vhdl_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vhdl_ls) | [rust_hdl](https://mason-registry.dev/registry/list#rust_hdl) |
-| [vimls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vimls) | [vim-language-server](https://mason-registry.dev/registry/list#vim-language-server) |
-| [visualforce_ls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#visualforce_ls) | [visualforce-language-server](https://mason-registry.dev/registry/list#visualforce-language-server) |
-| [vls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vls) | [vls](https://mason-registry.dev/registry/list#vls) |
-| [volar](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#volar) | [vue-language-server](https://mason-registry.dev/registry/list#vue-language-server) |
-| [vtsls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vtsls) | [vtsls](https://mason-registry.dev/registry/list#vtsls) |
-| [vuels](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#vuels) | [vetur-vls](https://mason-registry.dev/registry/list#vetur-vls) |
-| [wgsl_analyzer](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#wgsl_analyzer) | [wgsl-analyzer](https://mason-registry.dev/registry/list#wgsl-analyzer) |
-| [yamlls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#yamlls) | [yaml-language-server](https://mason-registry.dev/registry/list#yaml-language-server) |
-| [zk](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#zk) | [zk](https://mason-registry.dev/registry/list#zk) |
-| [zls](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#zls) | [zls](https://mason-registry.dev/registry/list#zls) | \ No newline at end of file
diff --git a/lua/mason-lspconfig/api/command.lua b/lua/mason-lspconfig/api/command.lua
index b0b100d..70486e2 100644
--- a/lua/mason-lspconfig/api/command.lua
+++ b/lua/mason-lspconfig/api/command.lua
@@ -2,15 +2,15 @@ local Optional = require "mason-core.optional"
local _ = require "mason-core.functional"
local a = require "mason-core.async"
local notify = require "mason-lspconfig.notify"
+local registry = require "mason-registry"
---@async
---@param user_args string[]: The arguments, as provided by the user.
local function parse_packages_from_user_args(user_args)
- local registry = require "mason-registry"
local Package = require "mason-core.package"
- local server_mapping = require "mason-lspconfig.mappings.server"
- local language_mapping = require "mason-lspconfig.mappings.language"
- local language_map = language_mapping.get_language_map()
+ local mappings = require "mason-lspconfig.mappings"
+ local server_mapping = mappings.get_mason_map()
+ local language_map = mappings.get_language_map()
return _.filter_map(function(server_specifier)
local server_name, version = Package.Parse(server_specifier)
@@ -55,13 +55,13 @@ end
---@async
local function parse_packages_from_heuristics()
- local server_mapping = require "mason-lspconfig.mappings.server"
- local registry = require "mason-registry"
+ local mappings = require "mason-lspconfig.mappings"
+ local server_mapping = mappings.get_mason_map()
+ local filetype_mapping = mappings.get_filetype_map()
-- Prompt user which server they want to install (based on the current filetype)
local current_ft = vim.api.nvim_buf_get_option(vim.api.nvim_get_current_buf(), "filetype")
- local filetype_mapping = require "mason-lspconfig.mappings.filetype"
- local server_names = _.flatten(_.concat(filetype_mapping[current_ft] or {}, filetype_mapping["*"] or {}))
+ local server_names = filetype_mapping[current_ft] or {}
if #server_names == 0 then
notify(("No LSP servers found for filetype %q."):format(current_ft), vim.log.levels.ERROR)
return {}
@@ -90,6 +90,7 @@ local parse_packages_to_install = _.cond {
}
local LspInstall = a.scope(function(servers)
+ a.wait(registry.refresh)
local packages_to_install = parse_packages_to_install(servers)
if #packages_to_install > 0 then
require("mason.api.command").MasonInstall(_.map(function(target)
@@ -113,7 +114,7 @@ end, {
})
local function LspUninstall(servers)
- local server_mapping = require "mason-lspconfig.mappings.server"
+ local server_mapping = require("mason-lspconfig.mappings").get_mason_map()
require("mason.api.command").MasonUninstall(_.map(function(lspconfig_name)
return server_mapping.lspconfig_to_package[lspconfig_name] or lspconfig_name
end, servers))
@@ -132,9 +133,9 @@ end, {
_G.mason_lspconfig_completion = {
available_server_completion = function()
local available_servers = require("mason-lspconfig").get_available_servers()
- local language_mapping = require "mason-lspconfig.mappings.language"
+ local mappings = require "mason-lspconfig.mappings"
local sort_deduped = _.compose(_.sort_by(_.identity), _.uniq_by(_.identity))
- local completions = sort_deduped(_.concat(_.keys(language_mapping.get_language_map()), available_servers))
+ local completions = sort_deduped(_.concat(_.keys(mappings.get_language_map()), available_servers))
return table.concat(completions, "\n")
end,
installed_server_completion = function()
diff --git a/lua/mason-lspconfig/automatic_enable.lua b/lua/mason-lspconfig/automatic_enable.lua
new file mode 100644
index 0000000..b1f0046
--- /dev/null
+++ b/lua/mason-lspconfig/automatic_enable.lua
@@ -0,0 +1,32 @@
+local _ = require "mason-core.functional"
+local mappings = require "mason-lspconfig.mappings"
+local registry = require "mason-registry"
+local settings = require "mason-lspconfig.settings"
+
+---@param mason_pkg string
+local function setup_server(mason_pkg)
+ local lspconfig_name = mappings.get_mason_map().package_to_lspconfig[mason_pkg]
+ if not lspconfig_name then
+ return
+ end
+
+ -- We don't provide LSP configurations in the lsp/ directory because it risks overriding configurations in a way the
+ -- user doesn't want. Instead we only override LSP configurations for servers that are installed via Mason.
+ local ok, config = pcall(require, ("mason-lspconfig.lsp.%s"):format(lspconfig_name))
+ if ok then
+ vim.lsp.config(lspconfig_name, config)
+ end
+
+ if settings.current.automatic_enable then
+ vim.lsp.enable(lspconfig_name)
+ end
+end
+
+_.each(setup_server, registry.get_installed_package_names())
+
+registry:on(
+ "package:install:success",
+ vim.schedule_wrap(function(pkg)
+ setup_server(pkg.name)
+ end)
+)
diff --git a/lua/mason-lspconfig/ensure_installed.lua b/lua/mason-lspconfig/ensure_installed.lua
index cdb30eb..583feec 100644
--- a/lua/mason-lspconfig/ensure_installed.lua
+++ b/lua/mason-lspconfig/ensure_installed.lua
@@ -5,7 +5,7 @@ local settings = require "mason-lspconfig.settings"
---@param lspconfig_server_name string
local function resolve_package(lspconfig_server_name)
local Optional = require "mason-core.optional"
- local server_mapping = require "mason-lspconfig.mappings.server"
+ local server_mapping = require("mason-lspconfig.mappings").get_mason_map()
return Optional.of_nilable(server_mapping.lspconfig_to_package[lspconfig_server_name]):map(function(package_name)
local ok, pkg = pcall(registry.get_package, package_name)
@@ -15,7 +15,7 @@ local function resolve_package(lspconfig_server_name)
end)
end
-local function ensure_installed()
+return function()
for _, server_identifier in ipairs(settings.current.ensure_installed) do
local Package = require "mason-core.package"
@@ -24,7 +24,7 @@ local function ensure_installed()
:if_present(
---@param pkg Package
function(pkg)
- if not pkg:is_installed() then
+ if not pkg:is_installed() and not pkg:is_installing() then
require("mason-lspconfig.install").install(pkg, version)
end
end
@@ -39,11 +39,3 @@ local function ensure_installed()
end)
end
end
-
-if registry.refresh then
- return function()
- registry.refresh(vim.schedule_wrap(ensure_installed))
- end
-else
- return ensure_installed
-end
diff --git a/lua/mason-lspconfig/init.lua b/lua/mason-lspconfig/init.lua
index 5579a41..1267df7 100644
--- a/lua/mason-lspconfig/init.lua
+++ b/lua/mason-lspconfig/init.lua
@@ -25,84 +25,25 @@ function M.setup(config)
check_and_notify_bad_setup_order()
- local ok, err = pcall(function()
- require "mason-lspconfig.lspconfig_hook"()
- require "mason-lspconfig.server_config_extensions"()
- end)
- if not ok then
- log.error("Failed to set up lspconfig integration.", err)
- end
-
- if not platform.is_headless and #settings.current.ensure_installed > 0 then
- require "mason-lspconfig.ensure_installed"()
- end
-
local registry = require "mason-registry"
- if registry.register_package_aliases then
+ registry.refresh(vim.schedule_wrap(function()
+ if not platform.is_headless and #settings.current.ensure_installed > 0 then
+ require "mason-lspconfig.ensure_installed"()
+ end
+ require "mason-lspconfig.automatic_enable"
registry.register_package_aliases(_.map(function(server_name)
return { server_name }
- end, require("mason-lspconfig.mappings.server").package_to_lspconfig))
- end
+ end, require("mason-lspconfig.mappings").get_mason_map().package_to_lspconfig))
+ end))
require "mason-lspconfig.api.command"
-
- if settings.current.handlers then
- M.setup_handlers(settings.current.handlers)
- end
-end
-
----See `:h mason-lspconfig.setup_handlers()`
----@param handlers table<string, fun(server_name: string)>
-function M.setup_handlers(handlers)
- local Optional = require "mason-core.optional"
- local server_mapping = require "mason-lspconfig.mappings.server"
- local registry = require "mason-registry"
- local notify = require "mason-lspconfig.notify"
-
- local default_handler = Optional.of_nilable(handlers[1])
-
- _.each(function(handler)
- if type(handler) == "string" and not server_mapping.lspconfig_to_package[handler] then
- notify(
- ("mason-lspconfig.setup_handlers: Received handler for unknown lspconfig server name: %s."):format(
- handler
- ),
- vim.log.levels.WARN
- )
- end
- end, _.keys(handlers))
-
- ---@param pkg_name string
- local function get_server_name(pkg_name)
- return Optional.of_nilable(server_mapping.package_to_lspconfig[pkg_name])
- end
-
- local function call_handler(server_name)
- log.fmt_trace("Checking handler for %s", server_name)
- Optional.of_nilable(handlers[server_name]):or_(_.always(default_handler)):if_present(function(handler)
- log.fmt_trace("Calling handler for %s", server_name)
- local ok, err = pcall(handler, server_name)
- if not ok then
- notify(err, vim.log.levels.ERROR)
- end
- end)
- end
-
- local installed_servers = _.filter_map(get_server_name, registry.get_installed_package_names())
- _.each(call_handler, installed_servers)
- registry:on(
- "package:install:success",
- vim.schedule_wrap(function(pkg)
- get_server_name(pkg.name):if_present(call_handler)
- end)
- )
end
---@return string[]
function M.get_installed_servers()
local Optional = require "mason-core.optional"
local registry = require "mason-registry"
- local server_mapping = require "mason-lspconfig.mappings.server"
+ local server_mapping = require("mason-lspconfig.mappings").get_mason_map()
return _.filter_map(function(pkg_name)
return Optional.of_nilable(server_mapping.package_to_lspconfig[pkg_name])
@@ -111,7 +52,7 @@ end
---@param filetype string | string[]
local function is_server_in_filetype(filetype)
- local filetype_mapping = require "mason-lspconfig.mappings.filetype"
+ local filetype_mapping = require("mason-lspconfig.mappings").get_filetype_map()
local function get_servers_by_filetype(ft)
return filetype_mapping[ft] or {}
@@ -140,7 +81,7 @@ end
---@return string[]
function M.get_available_servers(filter)
local registry = require "mason-registry"
- local server_mapping = require "mason-lspconfig.mappings.server"
+ local server_mapping = require("mason-lspconfig.mappings").get_mason_map()
local Optional = require "mason-core.optional"
filter = filter or {}
local predicates = {}
@@ -159,13 +100,10 @@ function M.get_available_servers(filter)
end
---Returns the "lspconfig <-> mason" mapping tables.
----@return { lspconfig_to_mason: table<string, string>, mason_to_lspconfig: table<string, string> }
+---@return { lspconfig_to_package: table<string, string>, package_to_lspconfig: table<string, string> }
function M.get_mappings()
- local mappings = require "mason-lspconfig.mappings.server"
- return {
- lspconfig_to_mason = mappings.lspconfig_to_package,
- mason_to_lspconfig = mappings.package_to_lspconfig,
- }
+ local mappings = require "mason-lspconfig.mappings"
+ return mappings.get_all()
end
return M
diff --git a/lua/mason-lspconfig/install.lua b/lua/mason-lspconfig/install.lua
index 7d5320a..8e99aa2 100644
--- a/lua/mason-lspconfig/install.lua
+++ b/lua/mason-lspconfig/install.lua
@@ -1,5 +1,5 @@
+local mappings = require "mason-lspconfig.mappings"
local notify = require "mason-lspconfig.notify"
-local server_mapping = require "mason-lspconfig.mappings.server"
local M = {}
@@ -7,12 +7,12 @@ local M = {}
---@param version string?
---@return InstallHandle
function M.install(pkg, version)
- local lspconfig_name = server_mapping.package_to_lspconfig[pkg.name]
+ local lspconfig_name = mappings.get_mason_map().package_to_lspconfig[pkg.name]
notify(("[mason-lspconfig.nvim] installing %s"):format(lspconfig_name))
- return pkg:install({ version = version }):once(
- "closed",
- vim.schedule_wrap(function()
- if pkg:is_installed() then
+ return pkg:install(
+ { version = version },
+ vim.schedule_wrap(function(success, err)
+ if success then
notify(("[mason-lspconfig.nvim] %s was successfully installed"):format(lspconfig_name))
else
notify(
diff --git a/lua/mason-lspconfig/lsp/bicep.lua b/lua/mason-lspconfig/lsp/bicep.lua
new file mode 100644
index 0000000..02bdd3f
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/bicep.lua
@@ -0,0 +1,3 @@
+return {
+ cmd = { "bicep-lsp" },
+}
diff --git a/lua/mason-lspconfig/lsp/bsl_ls.lua b/lua/mason-lspconfig/lsp/bsl_ls.lua
new file mode 100644
index 0000000..4491768
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/bsl_ls.lua
@@ -0,0 +1,3 @@
+return {
+ cmd = { "bsl-language-server" },
+}
diff --git a/lua/mason-lspconfig/lsp/cobol_ls.lua b/lua/mason-lspconfig/lsp/cobol_ls.lua
new file mode 100644
index 0000000..fc62914
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/cobol_ls.lua
@@ -0,0 +1,10 @@
+-- https://github.com/eclipse-che4z/che-che4z-lsp-for-cobol/blob/59132a8d04349720a0ba0f87f5fb757d9d5e79a3/clients/cobol-lsp-vscode-extension/src/services/nativeLanguageClient/linuxlanguageClient.ts#L30-L35
+return {
+ cmd = {
+ "cobol-language-support",
+ "pipeEnabled",
+ "-Dline.separator=\r\n",
+ "-Dlogback.statusListenerClass=ch.qos.logback.core.status.NopStatusListener",
+ "-DserverType=NATIVE",
+ },
+}
diff --git a/lua/mason-lspconfig/lsp/elixirls.lua b/lua/mason-lspconfig/lsp/elixirls.lua
new file mode 100644
index 0000000..24eae2e
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/elixirls.lua
@@ -0,0 +1,3 @@
+return {
+ cmd = { "elixir-ls" },
+}
diff --git a/lua/mason-lspconfig/lsp/esbonio.lua b/lua/mason-lspconfig/lsp/esbonio.lua
new file mode 100644
index 0000000..419b355
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/esbonio.lua
@@ -0,0 +1,3 @@
+return {
+ cmd = { "esbonio" },
+}
diff --git a/lua/mason-lspconfig/lsp/gradle_ls.lua b/lua/mason-lspconfig/lsp/gradle_ls.lua
new file mode 100644
index 0000000..c48282a
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/gradle_ls.lua
@@ -0,0 +1,3 @@
+return {
+ cmd = { "gradle-language-server" },
+}
diff --git a/lua/mason-lspconfig/lsp/groovyls.lua b/lua/mason-lspconfig/lsp/groovyls.lua
new file mode 100644
index 0000000..5e2f697
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/groovyls.lua
@@ -0,0 +1,3 @@
+return {
+ cmd = { "groovy-language-server" },
+}
diff --git a/lua/mason-lspconfig/lsp/java_language_server.lua b/lua/mason-lspconfig/lsp/java_language_server.lua
new file mode 100644
index 0000000..b525a34
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/java_language_server.lua
@@ -0,0 +1,3 @@
+return {
+ cmd = { "java-language-server" },
+}
diff --git a/lua/mason-lspconfig/lsp/lexical.lua b/lua/mason-lspconfig/lsp/lexical.lua
new file mode 100644
index 0000000..3f5a84a
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/lexical.lua
@@ -0,0 +1,3 @@
+return {
+ cmd = { "lexical" },
+}
diff --git a/lua/mason-lspconfig/lsp/nextls.lua b/lua/mason-lspconfig/lsp/nextls.lua
new file mode 100644
index 0000000..8a941cb
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/nextls.lua
@@ -0,0 +1,3 @@
+return {
+ cmd = { "nextls", "--stdio" },
+}
diff --git a/lua/mason-lspconfig/lsp/omnisharp.lua b/lua/mason-lspconfig/lsp/omnisharp.lua
new file mode 100644
index 0000000..2c70c6b
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/omnisharp.lua
@@ -0,0 +1,12 @@
+return {
+ cmd = {
+ "omnisharp",
+ "-z", -- https://github.com/OmniSharp/omnisharp-vscode/pull/4300
+ "--hostPID",
+ tostring(vim.fn.getpid()),
+ "DotNet:enablePackageRestore=false",
+ "--encoding",
+ "utf-8",
+ "--languageserver",
+ },
+}
diff --git a/lua/mason-lspconfig/lsp/r_language_server.lua b/lua/mason-lspconfig/lsp/r_language_server.lua
new file mode 100644
index 0000000..ba33caf
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/r_language_server.lua
@@ -0,0 +1,3 @@
+return {
+ cmd = { "r-languageserver" },
+}
diff --git a/lua/mason-lspconfig/lsp/raku_navigator.lua b/lua/mason-lspconfig/lsp/raku_navigator.lua
new file mode 100644
index 0000000..a86cbc6
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/raku_navigator.lua
@@ -0,0 +1,3 @@
+return {
+ cmd = { "raku-navigator", "--stdio" },
+}
diff --git a/lua/mason-lspconfig/lsp/visualforce_ls.lua b/lua/mason-lspconfig/lsp/visualforce_ls.lua
new file mode 100644
index 0000000..62ae054
--- /dev/null
+++ b/lua/mason-lspconfig/lsp/visualforce_ls.lua
@@ -0,0 +1,3 @@
+return {
+ cmd = { "visualforce-language-server", "--stdio" },
+}
diff --git a/lua/mason-lspconfig/lspconfig_hook.lua b/lua/mason-lspconfig/lspconfig_hook.lua
deleted file mode 100644
index 04010f1..0000000
--- a/lua/mason-lspconfig/lspconfig_hook.lua
+++ /dev/null
@@ -1,73 +0,0 @@
-local _ = require "mason-core.functional"
-local log = require "mason-core.log"
-local notify = require "mason-lspconfig.notify"
-local platform = require "mason-core.platform"
-
-local memoized_set = _.memoize(_.set_of)
-
----@param lspconfig_server_name string
-local function resolve_server_config_factory(lspconfig_server_name)
- local Optional = require "mason-core.optional"
-
- local ok, server_config = pcall(require, ("mason-lspconfig.server_configurations.%s"):format(lspconfig_server_name))
- if ok then
- return Optional.of(server_config)
- end
- return Optional.empty()
-end
-
-local merge_in_place
----@param t1 table
----@param t2 table
-merge_in_place = _.curryN(function(t1, t2)
- local islist = vim.islist or vim.tbl_islist
- for k, v in pairs(t2) do
- if type(v) == "table" then
- if type(t1[k]) == "table" and not islist(t1[k]) then
- merge_in_place(t1[k], v)
- else
- t1[k] = v
- end
- else
- t1[k] = v
- end
- end
- return t1
-end, 2)
-
-return function()
- local util = require "lspconfig.util"
- local server_mapping = require "mason-lspconfig.mappings.server"
- local registry = require "mason-registry"
-
- util.on_setup = util.add_hook_before(util.on_setup, function(config, user_config)
- local pkg_name = server_mapping.lspconfig_to_package[config.name]
- if not pkg_name then
- return
- end
-
- if require("mason").has_setup == false then
- notify(
- ("Server %q is being set up before mason.nvim is set up. :h mason-lspconfig-quickstart"):format(
- config.name
- ),
- vim.log.levels.WARN
- )
- end
-
- if registry.is_installed(pkg_name) then
- resolve_server_config_factory(config.name):if_present(function(config_factory)
- local mason_config = config_factory(vim.fn.expand("$MASON/packages/" .. pkg_name), config)
- _.reduce(merge_in_place, config, { mason_config, user_config or {} })
- end)
- if platform.is.win and (config.cmd and config.cmd[1] ~= "cmd.exe") then
- local exepath = vim.fn.exepath(config.cmd[1])
- if exepath ~= "" then
- config.cmd[1] = exepath
- else
- log.error("Failed to expand cmd path", config.name, config.cmd)
- end
- end
- end
- end)
-end
diff --git a/lua/mason-lspconfig/mappings.lua b/lua/mason-lspconfig/mappings.lua
new file mode 100644
index 0000000..e437b8b
--- /dev/null
+++ b/lua/mason-lspconfig/mappings.lua
@@ -0,0 +1,78 @@
+local _ = require "mason-core.functional"
+local registry = require "mason-registry"
+
+local M = {}
+
+---Returns a map of language (lowercased) to one or more corresponding Mason package names.
+---@return table<string, string[]>
+function M.get_language_map()
+ if not registry.get_all_package_specs then
+ return {}
+ end
+ ---@type table<string, string[]>
+ local languages = {}
+ for _, pkg_spec in ipairs(registry.get_all_package_specs()) do
+ for _, language in ipairs(pkg_spec.languages) do
+ language = language:lower()
+ if not languages[language] then
+ languages[language] = {}
+ end
+ table.insert(languages[language], pkg_spec.name)
+ end
+ end
+ return languages
+end
+
+function M.get_mason_map()
+ if not registry.get_all_package_specs then
+ return {
+ lspconfig_to_package = {},
+ package_to_lspconfig = {},
+ }
+ end
+
+ ---@type table<string, string>
+ local package_to_lspconfig = {}
+ for _, pkg_spec in ipairs(registry.get_all_package_specs()) do
+ local lspconfig = vim.tbl_get(pkg_spec, "neovim", "lspconfig")
+ if lspconfig then
+ package_to_lspconfig[pkg_spec.name] = lspconfig
+ end
+ end
+
+ return {
+ package_to_lspconfig = package_to_lspconfig,
+ lspconfig_to_package = _.invert(package_to_lspconfig),
+ }
+end
+
+function M.get_filetype_map()
+ local server_names = vim.tbl_keys(M.get_mason_map().lspconfig_to_package)
+
+ ---@type table<string, string[]>
+ local filetype_map = {}
+ for _, server_name in ipairs(server_names) do
+ local filetypes = vim.tbl_get(vim.lsp.config, server_name, "filetypes")
+ if filetypes then
+ for _, filetype in ipairs(filetypes) do
+ if not filetype_map[filetype] then
+ filetype_map[filetype] = {}
+ end
+ table.insert(filetype_map[filetype], server_name)
+ end
+ end
+ end
+ return filetype_map
+end
+
+function M.get_all()
+ local mason_map = M.get_mason_map()
+ return {
+ filetypes = M.get_filetype_map(),
+ languages = M.get_language_map(),
+ lspconfig_to_package = mason_map.lspconfig_to_package,
+ package_to_lspconfig = mason_map.package_to_lspconfig,
+ }
+end
+
+return M
diff --git a/lua/mason-lspconfig/mappings/filetype.lua b/lua/mason-lspconfig/mappings/filetype.lua
deleted file mode 100644
index c053e4f..0000000
--- a/lua/mason-lspconfig/mappings/filetype.lua
+++ /dev/null
@@ -1,250 +0,0 @@
--- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY.
--- stylua: ignore start
-return {
- ["BUILD.bazel"] = { "starlark_rust" },
- OpenFOAM = { "foam_ls" },
- PKGBUILD = { "pkgbuild_language_server" },
- antlers = { "antlersls" },
- apexcode = { "apex_ls" },
- arduino = { "arduino_language_server" },
- asm = { "asm_lsp" },
- aspnetcorerazor = { "htmx", "tailwindcss" },
- astro = { "astro", "biome", "emmet_ls", "eslint", "htmx", "tailwindcss", "unocss" },
- ["astro-markdown"] = { "htmx", "tailwindcss" },
- automake = { "autotools_ls" },
- awk = { "awk_ls" },
- bash = { "bashls" },
- bean = { "beancount" },
- beancount = { "beancount" },
- bib = { "ltex", "texlab" },
- bicep = { "bicep" },
- blade = { "htmx", "stimulus_ls", "tailwindcss" },
- brs = { "bright_script" },
- bsl = { "bsl_ls" },
- bzl = { "bzl", "starlark_rust", "starpls" },
- c = { "ast_grep", "clangd", "harper_ls" },
- cairo = { "cairo_ls" },
- clar = { "clarity_lsp" },
- clarity = { "clarity_lsp" },
- clojure = { "clojure_lsp", "htmx", "tailwindcss" },
- cmake = { "cmake", "harper_ls", "neocmake" },
- cobol = { "cobol_ls" },
- comp = { "glsl_analyzer", "glslls" },
- config = { "autotools_ls" },
- context = { "ltex" },
- coq = { "coq_lsp" },
- cpp = { "ast_grep", "clangd", "harper_ls" },
- crystal = { "crystalline" },
- cs = { "csharp_ls", "harper_ls", "omnisharp", "omnisharp_mono" },
- css = { "ast_grep", "biome", "css_variables", "cssls", "emmet_language_server", "emmet_ls", "stylelint_lsp", "tailwindcss", "unocss" },
- cucumber = { "cucumber_language_server" },
- cuda = { "clangd" },
- cue = { "dagger" },
- cypher = { "cypher_ls" },
- d = { "serve_d" },
- dart = { "ast_grep", "harper_ls" },
- dhall = { "dhall_lsp_server" },
- ["django-html"] = { "htmx", "tailwindcss" },
- dockerfile = { "dockerls" },
- dot = { "dotls" },
- drools = { "drools_lsp" },
- dts = { "ginko_ls" },
- dune = { "ocamllsp" },
- earthfile = { "earthlyls" },
- edge = { "htmx", "tailwindcss" },
- edn = { "clojure_lsp" },
- eelixir = { "elixirls", "htmx", "lexical", "nextls", "tailwindcss" },
- ejs = { "htmx", "tailwindcss", "unocss" },
- elixir = { "elixirls", "htmx", "lexical", "nextls", "tailwindcss" },
- elm = { "elmls" },
- erb = { "htmx", "tailwindcss", "unocss" },
- erg = { "erg_language_server" },
- erlang = { "elp", "erlangls" },
- eruby = { "emmet_language_server", "emmet_ls", "htmx", "ruby_lsp", "steep", "stimulus_ls", "tailwindcss" },
- fennel = { "fennel_language_server", "fennel_ls" },
- flux = { "flux_lsp" },
- foam = { "foam_ls" },
- fortran = { "fortls" },
- frag = { "glsl_analyzer", "glslls" },
- fsd = { "facility_language_server" },
- fsharp = { "fsautocomplete" },
- genie = { "vala_ls" },
- geom = { "glsl_analyzer", "glslls" },
- gitcommit = { "harper_ls", "ltex" },
- glsl = { "glsl_analyzer", "glslls" },
- go = { "ast_grep", "golangci_lint_ls", "gopls", "harper_ls", "snyk_ls" },
- gohtml = { "htmx", "tailwindcss" },
- gohtmltmpl = { "htmx", "tailwindcss" },
- gomod = { "golangci_lint_ls", "gopls", "snyk_ls" },
- gotmpl = { "gopls" },
- gowork = { "gopls" },
- graphql = { "biome", "dprint", "graphql" },
- groovy = { "gradle_ls", "groovyls" },
- haml = { "htmx", "tailwindcss", "unocss" },
- handlebars = { "ember", "glint", "htmx", "tailwindcss" },
- haskell = { "harper_ls", "hls" },
- haxe = { "haxe_language_server" },
- hbs = { "htmx", "tailwindcss", "unocss" },
- heex = { "elixirls", "htmx", "lexical", "nextls", "tailwindcss" },
- helm = { "helm_ls", "snyk_ls" },
- hoon = { "hoon_ls" },
- html = { "angularls", "antlersls", "ast_grep", "emmet_language_server", "emmet_ls", "harper_ls", "html", "htmx", "ltex", "lwc_ls", "stimulus_ls", "superhtml", "tailwindcss", "unocss" },
- ["html-eex"] = { "htmx", "tailwindcss" },
- ["html.handlebars"] = { "glint" },
- htmlangular = { "angularls", "emmet_language_server", "emmet_ls", "htmx", "tailwindcss" },
- htmldjango = { "emmet_language_server", "emmet_ls", "htmx", "tailwindcss" },
- hyprlang = { "hyprls" },
- jade = { "htmx", "tailwindcss" },
- java = { "ast_grep", "harper_ls", "java_language_server", "jdtls" },
- javascript = { "ast_grep", "biome", "cssmodules_ls", "denols", "dprint", "ember", "eslint", "glint", "harper_ls", "htmx", "lwc_ls", "quick_lint_js", "rome", "snyk_ls", "sourcery", "tailwindcss", "ts_ls", "unocss", "vtsls" },
- ["javascript.glimmer"] = { "ember", "glint" },
- ["javascript.jsx"] = { "denols", "eslint", "ts_ls", "vtsls" },
- javascriptreact = { "biome", "cssmodules_ls", "denols", "dprint", "emmet_language_server", "emmet_ls", "eslint", "graphql", "htmx", "rome", "sourcery", "tailwindcss", "ts_ls", "unocss", "vtsls" },
- jinja = { "jinja_lsp" },
- jq = { "jqls" },
- json = { "biome", "dprint", "jsonls", "rome", "snyk_ls", "spectral" },
- ["json.openapi"] = { "vacuum" },
- jsonc = { "biome", "dprint", "jsonls" },
- jsonnet = { "jsonnet_ls" },
- julia = { "julials" },
- kcl = { "kcl" },
- kotlin = { "ast_grep", "kotlin_language_server" },
- leaf = { "htmx", "tailwindcss" },
- less = { "css_variables", "cssls", "emmet_language_server", "emmet_ls", "stylelint_lsp", "tailwindcss", "unocss" },
- lhaskell = { "hls" },
- libsonnet = { "jsonnet_ls" },
- liquid = { "htmx", "shopify_theme_ls", "tailwindcss", "theme_check" },
- llw = { "lelwel_ls" },
- lua = { "ast_grep", "harper_ls", "lua_ls" },
- luau = { "luau_lsp" },
- mail = { "ltex" },
- make = { "autotools_ls" },
- markdown = { "dprint", "grammarly", "harper_ls", "htmx", "ltex", "markdown_oxide", "marksman", "prosemd_lsp", "remark_ls", "tailwindcss", "unocss", "vale_ls", "zk" },
- ["markdown.mdx"] = { "marksman" },
- matlab = { "matlab_ls" },
- mdx = { "htmx", "mdx_analyzer", "tailwindcss" },
- menhir = { "ocamllsp" },
- meson = { "mesonlsp", "swift_mesonls" },
- ["metamath-zero"] = { "mm0_ls" },
- motoko = { "motoko_lsp" },
- move = { "move_analyzer" },
- mustache = { "htmx", "tailwindcss" },
- muttrc = { "mutt_ls" },
- mysql = { "sqlls", "sqls" },
- ncl = { "nickel_ls" },
- neomuttrc = { "mutt_ls" },
- nginx = { "nginx_language_server" },
- nickel = { "nickel_ls" },
- nim = { "nim_langserver", "nimls" },
- nix = { "harper_ls", "nil_ls", "rnix" },
- njk = { "htmx", "tailwindcss" },
- nunjucks = { "htmx", "tailwindcss" },
- objc = { "clangd" },
- objcpp = { "clangd" },
- ocaml = { "ocamllsp" },
- ocamlinterface = { "ocamllsp" },
- ocamllex = { "ocamllsp" },
- odin = { "ols" },
- opencl = { "opencl_ls" },
- openscad = { "openscad_lsp" },
- org = { "ltex", "textlsp" },
- os = { "bsl_ls" },
- p8 = { "pico8_ls" },
- pandoc = { "ltex" },
- perl = { "perlnavigator" },
- pest = { "pest_ls" },
- php = { "harper_ls", "htmx", "intelephense", "phpactor", "psalm", "stimulus_ls", "tailwindcss", "unocss" },
- plaintex = { "ltex", "texlab" },
- postcss = { "tailwindcss", "unocss" },
- prisma = { "prismals" },
- proto = { "buf_ls", "clangd", "pbls" },
- ps1 = { "powershell_es" },
- pug = { "emmet_language_server", "emmet_ls" },
- puppet = { "puppet" },
- purescript = { "purescriptls" },
- python = { "ast_grep", "basedpyright", "dprint", "harper_ls", "jedi_language_server", "pylsp", "pylyzer", "pyre", "pyright", "ruff", "snyk_ls", "sourcery" },
- ql = { "codeqlls" },
- quarto = { "ltex", "r_language_server" },
- r = { "r_language_server" },
- raku = { "raku_navigator" },
- razor = { "htmx", "tailwindcss" },
- reason = { "htmx", "ocamllsp", "reason_ls", "tailwindcss" },
- rego = { "regal", "regols" },
- requirements = { "snyk_ls" },
- rescript = { "htmx", "rescriptls", "tailwindcss", "unocss" },
- rmd = { "ltex", "r_language_server" },
- rnoweb = { "ltex" },
- robot = { "robotframework_ls" },
- roslyn = { "dprint" },
- rst = { "esbonio", "ltex", "vale_ls" },
- ruby = { "harper_ls", "rubocop", "ruby_lsp", "solargraph", "sorbet", "standardrb", "steep", "stimulus_ls" },
- rust = { "ast_grep", "dprint", "harper_ls", "rust_analyzer", "unocss" },
- sass = { "emmet_language_server", "emmet_ls", "somesass_ls", "tailwindcss", "unocss" },
- scss = { "css_variables", "cssls", "emmet_language_server", "emmet_ls", "somesass_ls", "stylelint_lsp", "tailwindcss", "unocss" },
- sh = { "bashls" },
- slim = { "htmx", "tailwindcss" },
- slint = { "slint_lsp" },
- sls = { "salt_ls" },
- smithy = { "smithy_ls" },
- sml = { "millet" },
- solidity = { "solang", "solc", "solidity", "solidity_ls", "solidity_ls_nomicfoundation" },
- sql = { "sqlls", "sqls" },
- ss = { "snakeskin_ls" },
- star = { "starlark_rust" },
- stylus = { "tailwindcss", "unocss" },
- sugarss = { "stylelint_lsp", "tailwindcss" },
- superhtml = { "superhtml" },
- surface = { "elixirls", "lexical", "nextls" },
- svelte = { "biome", "emmet_ls", "eslint", "htmx", "svelte", "tailwindcss", "unocss" },
- svg = { "lemminx" },
- swift = { "harper_ls" },
- systemverilog = { "hdl_checker", "svlangserver", "svls", "verible" },
- teal = { "teal_ls" },
- templ = { "html", "htmx", "tailwindcss", "templ" },
- terraform = { "snyk_ls", "terraformls", "tflint" },
- ["terraform-vars"] = { "snyk_ls", "terraformls" },
- tesc = { "glsl_analyzer", "glslls" },
- tese = { "glsl_analyzer", "glslls" },
- tex = { "ltex", "texlab", "textlsp", "vale_ls" },
- text = { "ltex", "textlsp", "vale_ls" },
- thrift = { "thriftls" },
- toml = { "dprint", "harper_ls", "taplo" },
- twig = { "htmx", "tailwindcss", "twiggy_language_server" },
- typescript = { "angularls", "ast_grep", "biome", "cssmodules_ls", "denols", "dprint", "ember", "eslint", "glint", "harper_ls", "htmx", "quick_lint_js", "rome", "snyk_ls", "sourcery", "tailwindcss", "ts_ls", "unocss", "vtsls" },
- ["typescript.glimmer"] = { "ember", "glint" },
- ["typescript.tsx"] = { "angularls", "biome", "denols", "eslint", "rome", "ts_ls", "vtsls" },
- typescriptreact = { "angularls", "biome", "cssmodules_ls", "denols", "dprint", "emmet_language_server", "emmet_ls", "eslint", "graphql", "harper_ls", "htmx", "rome", "sourcery", "tailwindcss", "ts_ls", "unocss", "vtsls" },
- typespec = { "tsp_server" },
- typst = { "harper_ls", "tinymist" },
- v = { "v_analyzer", "vls" },
- vala = { "vala_ls" },
- vb = { "omnisharp", "omnisharp_mono" },
- verilog = { "hdl_checker", "svlangserver", "svls", "verible" },
- vert = { "glsl_analyzer", "glslls" },
- veryl = { "veryl_ls" },
- vhd = { "vhdl_ls" },
- vhdl = { "hdl_checker", "vhdl_ls" },
- vim = { "vimls" },
- visualforce = { "visualforce_ls" },
- vlang = { "vls" },
- vmasm = { "asm_lsp" },
- vsh = { "v_analyzer" },
- vue = { "biome", "emmet_ls", "eslint", "htmx", "stylelint_lsp", "tailwindcss", "unocss", "volar", "vuels" },
- ["vue-html"] = { "unocss" },
- vv = { "v_analyzer" },
- wgsl = { "wgsl_analyzer" },
- wxss = { "stylelint_lsp" },
- xhtml = { "ltex" },
- xml = { "lemminx" },
- xsd = { "lemminx" },
- xsl = { "lemminx" },
- xslt = { "lemminx" },
- yaml = { "azure_pipelines_ls", "hydra_lsp", "snyk_ls", "spectral", "yamlls" },
- ["yaml.ansible"] = { "ansiblels" },
- ["yaml.docker-compose"] = { "docker_compose_language_service", "yamlls" },
- ["yaml.gitlab"] = { "gitlab_ci_ls", "yamlls" },
- ["yaml.openapi"] = { "vacuum" },
- yml = { "spectral" },
- zig = { "zls" },
- zir = { "zls" }
-} \ No newline at end of file
diff --git a/lua/mason-lspconfig/mappings/language.lua b/lua/mason-lspconfig/mappings/language.lua
deleted file mode 100644
index 380f25d..0000000
--- a/lua/mason-lspconfig/mappings/language.lua
+++ /dev/null
@@ -1,26 +0,0 @@
-local _ = require "mason-core.functional"
-local registry = require "mason-registry"
-
-local M = {}
-
----Returns a map of language (lowercased) to one or more corresponding Mason package names.
----@return table<string, string[]>
-function M.get_language_map()
- if not registry.get_all_package_specs then
- return {}
- end
- ---@type table<string, string[]>
- local languages = {}
- for _, pkg_spec in ipairs(registry.get_all_package_specs()) do
- for _, language in ipairs(pkg_spec.languages) do
- language = language:lower()
- if not languages[language] then
- languages[language] = {}
- end
- table.insert(languages[language], pkg_spec.name)
- end
- end
- return languages
-end
-
-return M
diff --git a/lua/mason-lspconfig/mappings/server.lua b/lua/mason-lspconfig/mappings/server.lua
deleted file mode 100644
index 71f7235..0000000
--- a/lua/mason-lspconfig/mappings/server.lua
+++ /dev/null
@@ -1,231 +0,0 @@
-local _ = require "mason-core.functional"
-
-local M = {}
-
----Maps lspconfig server config name to its corresponding package name.
-M.lspconfig_to_package = {
- ["angularls"] = "angular-language-server",
- ["ansiblels"] = "ansible-language-server",
- ["antlersls"] = "antlers-language-server",
- ["apex_ls"] = "apex-language-server",
- ["arduino_language_server"] = "arduino-language-server",
- ["asm_lsp"] = "asm-lsp",
- ["ast_grep"] = "ast-grep",
- ["astro"] = "astro-language-server",
- ["autotools_ls"] = "autotools-language-server",
- ["awk_ls"] = "awk-language-server",
- ["azure_pipelines_ls"] = "azure-pipelines-language-server",
- ["basedpyright"] = "basedpyright",
- ["bashls"] = "bash-language-server",
- ["beancount"] = "beancount-language-server",
- ["bicep"] = "bicep-lsp",
- ["biome"] = "biome",
- ["bright_script"] = "brighterscript",
- ["bsl_ls"] = "bsl-language-server",
- ["buf_ls"] = "buf",
- ["bzl"] = "bzl",
- ["cairo_ls"] = "cairo-language-server",
- ["clangd"] = "clangd",
- ["clarity_lsp"] = "clarity-lsp",
- ["clojure_lsp"] = "clojure-lsp",
- ["cmake"] = "cmake-language-server",
- ["cobol_ls"] = "cobol-language-support",
- ["codeqlls"] = "codeql",
- ["coq_lsp"] = "coq-lsp",
- ["crystalline"] = "crystalline",
- ["csharp_ls"] = "csharp-language-server",
- ["cssls"] = "css-lsp",
- ["cssmodules_ls"] = "cssmodules-language-server",
- ["css_variables"] = "css-variables-language-server",
- ["cucumber_language_server"] = "cucumber-language-server",
- ["custom_elements_ls"] = "custom-elements-languageserver",
- ["cypher_ls"] = "cypher-language-server",
- ["dagger"] = "cuelsp",
- ["denols"] = "deno",
- ["dhall_lsp_server"] = "dhall-lsp",
- ["diagnosticls"] = "diagnostic-languageserver",
- ["docker_compose_language_service"] = "docker-compose-language-service",
- ["dockerls"] = "dockerfile-language-server",
- ["dotls"] = "dot-language-server",
- ["dprint"] = "dprint",
- ["drools_lsp"] = "drools-lsp",
- ["earthlyls"] = "earthlyls",
- ["efm"] = "efm",
- ["elixirls"] = "elixir-ls",
- ["elmls"] = "elm-language-server",
- ["elp"] = "elp",
- ["ember"] = "ember-language-server",
- ["emmet_language_server"] = "emmet-language-server",
- ["emmet_ls"] = "emmet-ls",
- ["erg_language_server"] = "erg-language-server",
- ["erlangls"] = "erlang-ls",
- ["esbonio"] = "esbonio",
- ["eslint"] = "eslint-lsp",
- ["facility_language_server"] = "facility-language-server",
- ["fennel_language_server"] = "fennel-language-server",
- ["fennel_ls"] = "fennel-ls",
- ["flux_lsp"] = "flux-lsp",
- ["foam_ls"] = "foam-language-server",
- ["fortls"] = "fortls",
- ["fsautocomplete"] = "fsautocomplete",
- ["gitlab_ci_ls"] = "gitlab-ci-ls",
- ["ginko_ls"] = "ginko_ls",
- ["glint"] = "glint",
- ["glsl_analyzer"] = "glsl_analyzer",
- ["glslls"] = "glslls",
- ["golangci_lint_ls"] = "golangci-lint-langserver",
- ["gopls"] = "gopls",
- ["gradle_ls"] = "gradle-language-server",
- ["grammarly"] = "grammarly-languageserver",
- ["graphql"] = "graphql-language-service-cli",
- ["groovyls"] = "groovy-language-server",
- ["harper_ls"] = "harper-ls",
- ["haxe_language_server"] = "haxe-language-server",
- ["hdl_checker"] = "hdl-checker",
- ["helm_ls"] = "helm-ls",
- ["hls"] = "haskell-language-server",
- ["hoon_ls"] = "hoon-language-server",
- ["html"] = "html-lsp",
- ["htmx"] = "htmx-lsp",
- ["hydra_lsp"] = "hydra-lsp",
- ["hyprls"] = "hyprls",
- ["intelephense"] = "intelephense",
- ["java_language_server"] = "java-language-server",
- ["jdtls"] = "jdtls",
- ["jedi_language_server"] = "jedi-language-server",
- ["jinja_lsp"] = "jinja-lsp",
- ["jqls"] = "jq-lsp",
- ["jsonls"] = "json-lsp",
- ["jsonnet_ls"] = "jsonnet-language-server",
- ["julials"] = "julia-lsp",
- ["kcl"] = "kcl",
- ["kotlin_language_server"] = "kotlin-language-server",
- ["lelwel_ls"] = "lelwel",
- ["lemminx"] = "lemminx",
- ["lexical"] = "lexical",
- ["ltex"] = "ltex-ls",
- ["lua_ls"] = "lua-language-server",
- ["luau_lsp"] = "luau-lsp",
- ["lwc_ls"] = "lwc-language-server",
- ["markdown_oxide"] = "markdown-oxide",
- ["marksman"] = "marksman",
- ["matlab_ls"] = "matlab-language-server",
- ["mdx_analyzer"] = "mdx-analyzer",
- ["millet"] = "millet",
- ["mm0_ls"] = "metamath-zero-lsp",
- ["motoko_lsp"] = "motoko-lsp",
- ["move_analyzer"] = "move-analyzer",
- ["mutt_ls"] = "mutt-language-server",
- ["neocmake"] = "neocmakelsp",
- ["nextls"] = "nextls",
- ["nickel_ls"] = "nickel-lang-lsp",
- ["nginx_language_server"] = "nginx-language-server",
- ["nil_ls"] = "nil",
- ["nim_langserver"] = "nimlangserver",
- ["nimls"] = "nimlsp",
- ["ocamllsp"] = "ocaml-lsp",
- ["ols"] = "ols",
- ["omnisharp"] = "omnisharp",
- ["omnisharp_mono"] = "omnisharp-mono",
- ["opencl_ls"] = "opencl-language-server",
- ["openscad_lsp"] = "openscad-lsp",
- ["pbls"] = "pbls",
- ["perlnavigator"] = "perlnavigator",
- ["pest_ls"] = "pest-language-server",
- ["phpactor"] = "phpactor",
- ["pico8_ls"] = "pico8-ls",
- ["pkgbuild_language_server"] = "pkgbuild-language-server",
- ["powershell_es"] = "powershell-editor-services",
- ["prismals"] = "prisma-language-server",
- ["prosemd_lsp"] = "prosemd-lsp",
- ["psalm"] = "psalm",
- ["puppet"] = "puppet-editor-services",
- ["purescriptls"] = "purescript-language-server",
- ["pylsp"] = "python-lsp-server",
- ["pylyzer"] = "pylyzer",
- ["pyre"] = "pyre",
- ["pyright"] = "pyright",
- ["quick_lint_js"] = "quick-lint-js",
- ["r_language_server"] = "r-languageserver",
- ["raku_navigator"] = "raku-navigator",
- ["reason_ls"] = "reason-language-server",
- ["regols"] = "regols",
- ["regal"] = "regal",
- ["remark_ls"] = "remark-language-server",
- ["rescriptls"] = "rescript-language-server",
- ["rnix"] = "rnix-lsp",
- ["robotframework_ls"] = "robotframework-lsp",
- ["rome"] = "rome",
- ["rubocop"] = "rubocop",
- ["ruby_lsp"] = "ruby-lsp",
- ["ruff"] = "ruff",
- ["rust_analyzer"] = "rust-analyzer",
- ["salt_ls"] = "salt-lsp",
- ["serve_d"] = "serve-d",
- ["shopify_theme_ls"] = "shopify-cli",
- ["slint_lsp"] = "slint-lsp",
- ["smithy_ls"] = "smithy-language-server",
- ["snakeskin_ls"] = "snakeskin-cli",
- ["snyk_ls"] = "snyk-ls",
- ["solang"] = "solang",
- ["solargraph"] = "solargraph",
- ["solc"] = "solidity",
- ["solidity"] = "solidity-ls",
- ["solidity_ls"] = "vscode-solidity-server",
- ["solidity_ls_nomicfoundation"] = "nomicfoundation-solidity-language-server",
- ["somesass_ls"] = "some-sass-language-server",
- ["sorbet"] = "sorbet",
- ["sourcery"] = "sourcery",
- ["spectral"] = "spectral-language-server",
- ["sqlls"] = "sqlls",
- ["sqls"] = "sqls",
- ["standardrb"] = "standardrb",
- ["starlark_rust"] = "starlark-rust",
- ["starpls"] = "starpls",
- ["steep"] = "steep",
- ["stimulus_ls"] = "stimulus-language-server",
- ["stylelint_lsp"] = "stylelint-lsp",
- ["svelte"] = "svelte-language-server",
- ["svlangserver"] = "svlangserver",
- ["svls"] = "svls",
- ["swift_mesonls"] = "swift-mesonlsp",
- ["mesonlsp"] = "mesonlsp",
- ["tailwindcss"] = "tailwindcss-language-server",
- ["taplo"] = "taplo",
- ["teal_ls"] = "teal-language-server",
- ["templ"] = "templ",
- ["terraformls"] = "terraform-ls",
- ["texlab"] = "texlab",
- ["textlsp"] = "textlsp",
- ["tflint"] = "tflint",
- ["theme_check"] = "shopify-theme-check",
- ["thriftls"] = "thriftls",
- ["ts_ls"] = "typescript-language-server",
- ["tsp_server"] = "tsp-server",
- ["twiggy_language_server"] = "twiggy-language-server",
- ["typos_lsp"] = "typos-lsp",
- ["tinymist"] = "tinymist",
- ["superhtml"] = "superhtml",
- ["unocss"] = "unocss-language-server",
- ["v_analyzer"] = "v-analyzer",
- ["vacuum"] = "vacuum",
- ["vala_ls"] = "vala-language-server",
- ["vale_ls"] = "vale-ls",
- ["verible"] = "verible",
- ["veryl_ls"] = "veryl-ls",
- ["vhdl_ls"] = "rust_hdl",
- ["vimls"] = "vim-language-server",
- ["visualforce_ls"] = "visualforce-language-server",
- ["vls"] = "vls",
- ["volar"] = "vue-language-server",
- ["vtsls"] = "vtsls",
- ["vuels"] = "vetur-vls",
- ["wgsl_analyzer"] = "wgsl-analyzer",
- ["yamlls"] = "yaml-language-server",
- ["zk"] = "zk",
- ["zls"] = "zls",
-}
-
-M.package_to_lspconfig = _.invert(M.lspconfig_to_package)
-
-return M
diff --git a/lua/mason-lspconfig/server_config_extensions.lua b/lua/mason-lspconfig/server_config_extensions.lua
deleted file mode 100644
index 48b45fb..0000000
--- a/lua/mason-lspconfig/server_config_extensions.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- local configs = require "lspconfig.configs"
-
- configs.omnisharp_mono = require "lspconfig.configs.omnisharp"
-end
diff --git a/lua/mason-lspconfig/server_configurations/bicep/init.lua b/lua/mason-lspconfig/server_configurations/bicep/init.lua
deleted file mode 100644
index ddc0a2a..0000000
--- a/lua/mason-lspconfig/server_configurations/bicep/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "bicep-lsp" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/bsl_ls/init.lua b/lua/mason-lspconfig/server_configurations/bsl_ls/init.lua
deleted file mode 100644
index 62dfa5c..0000000
--- a/lua/mason-lspconfig/server_configurations/bsl_ls/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "bsl-language-server" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/cobol_ls/init.lua b/lua/mason-lspconfig/server_configurations/cobol_ls/init.lua
deleted file mode 100644
index 2d0d0c2..0000000
--- a/lua/mason-lspconfig/server_configurations/cobol_ls/init.lua
+++ /dev/null
@@ -1,12 +0,0 @@
-return function()
- -- https://github.com/eclipse-che4z/che-che4z-lsp-for-cobol/blob/59132a8d04349720a0ba0f87f5fb757d9d5e79a3/clients/cobol-lsp-vscode-extension/src/services/nativeLanguageClient/linuxlanguageClient.ts#L30-L35
- return {
- cmd = {
- "cobol-language-support",
- "pipeEnabled",
- "-Dline.separator=\r\n",
- "-Dlogback.statusListenerClass=ch.qos.logback.core.status.NopStatusListener",
- "-DserverType=NATIVE",
- },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/elixirls/init.lua b/lua/mason-lspconfig/server_configurations/elixirls/init.lua
deleted file mode 100644
index 0c424b1..0000000
--- a/lua/mason-lspconfig/server_configurations/elixirls/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "elixir-ls" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/esbonio/init.lua b/lua/mason-lspconfig/server_configurations/esbonio/init.lua
deleted file mode 100644
index e9d8d98..0000000
--- a/lua/mason-lspconfig/server_configurations/esbonio/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "esbonio" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/gradle_ls/init.lua b/lua/mason-lspconfig/server_configurations/gradle_ls/init.lua
deleted file mode 100644
index 09a8735..0000000
--- a/lua/mason-lspconfig/server_configurations/gradle_ls/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "gradle-language-server" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/groovyls/init.lua b/lua/mason-lspconfig/server_configurations/groovyls/init.lua
deleted file mode 100644
index f75a3b2..0000000
--- a/lua/mason-lspconfig/server_configurations/groovyls/init.lua
+++ /dev/null
@@ -1,3 +0,0 @@
-return function()
- return { cmd = { "groovy-language-server" } }
-end
diff --git a/lua/mason-lspconfig/server_configurations/java_language_server/init.lua b/lua/mason-lspconfig/server_configurations/java_language_server/init.lua
deleted file mode 100644
index 9f39df7..0000000
--- a/lua/mason-lspconfig/server_configurations/java_language_server/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "java-language-server" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/julials/README.md b/lua/mason-lspconfig/server_configurations/julials/README.md
deleted file mode 100644
index cb54b56..0000000
--- a/lua/mason-lspconfig/server_configurations/julials/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# julials
-
-## Configuring the Julia Environment
-
-The Julia Environment will be identified in the following order:
-
-1) user configuration (`lspconfig.julials.setup { julia_env_path = "/my/env" }`)
-2) if the `Project.toml` & `Manifest.toml` (or `JuliaProject.toml` & `JuliaManifest.toml`) files exists in the current project working directory, the current project working directory is used as the environment
-3) the result of `Pkg.Types.Context().env.project_file`
-
-## Configuring symbol cache
-
-By default, the language server is configured to download symbol caches from Julia's symbol server. To disable this, set
-`symbol_cache_download` to `false`:
-
-```lua
-lspconfig.julials.setup {
- symbol_cache_download = false,
-}
-```
-
-To change the symbol server URL, set the `symbol_server` configuration:
-
-```lua
-lspconfig.julials.setup {
- symbol_server = "https://symbol-server",
-}
-```
diff --git a/lua/mason-lspconfig/server_configurations/kotlin_language_server/init.lua b/lua/mason-lspconfig/server_configurations/kotlin_language_server/init.lua
deleted file mode 100644
index 585797f..0000000
--- a/lua/mason-lspconfig/server_configurations/kotlin_language_server/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "kotlin-language-server" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/lexical/init.lua b/lua/mason-lspconfig/server_configurations/lexical/init.lua
deleted file mode 100644
index e7e9639..0000000
--- a/lua/mason-lspconfig/server_configurations/lexical/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "lexical" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/ltex/init.lua b/lua/mason-lspconfig/server_configurations/ltex/init.lua
deleted file mode 100644
index f24d86f..0000000
--- a/lua/mason-lspconfig/server_configurations/ltex/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "ltex-ls" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/nextls/init.lua b/lua/mason-lspconfig/server_configurations/nextls/init.lua
deleted file mode 100644
index 386c1eb..0000000
--- a/lua/mason-lspconfig/server_configurations/nextls/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "nextls", "--stdio" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/omnisharp/README.md b/lua/mason-lspconfig/server_configurations/omnisharp/README.md
deleted file mode 100644
index f74344e..0000000
--- a/lua/mason-lspconfig/server_configurations/omnisharp/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# omnisharp
-
-## How to use Omnisharp Mono
-
-The `omnisharp` server will use the `dotnet` (NET6) runtime to run the server. To run the server using the Mono runtime,
-use the `omnisharp_mono` server instead (**this requires the `omnisharp-mono` package to be installed**).
-
-**Note:** The `omnisharp_mono` server configuration doesn't exist in `lspconfig` but is provided by `mason-lspconfig`.
-This is done in order to separate the .NET and Mono variants, making both easily accessible.
-
-```lua
-local lspconfig = require "lspconfig"
-
-lspconfig.omnisharp_mono.setup {}
-```
diff --git a/lua/mason-lspconfig/server_configurations/omnisharp/init.lua b/lua/mason-lspconfig/server_configurations/omnisharp/init.lua
deleted file mode 100644
index 466bdfc..0000000
--- a/lua/mason-lspconfig/server_configurations/omnisharp/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "omnisharp" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/omnisharp_mono/init.lua b/lua/mason-lspconfig/server_configurations/omnisharp_mono/init.lua
deleted file mode 100644
index 9512146..0000000
--- a/lua/mason-lspconfig/server_configurations/omnisharp_mono/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "omnisharp-mono" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/perlnavigator/init.lua b/lua/mason-lspconfig/server_configurations/perlnavigator/init.lua
deleted file mode 100644
index c376dc7..0000000
--- a/lua/mason-lspconfig/server_configurations/perlnavigator/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "perlnavigator", "--stdio" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/pylsp/README.md b/lua/mason-lspconfig/server_configurations/pylsp/README.md
deleted file mode 100644
index 2434bb4..0000000
--- a/lua/mason-lspconfig/server_configurations/pylsp/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Pylsp
-
-## Installing pylsp plugins
-
-Pylsp has [third party plugins](https://github.com/python-lsp/python-lsp-server#3rd-party-plugins) which are not installed by default.
-
-In order for these plugins to work with the `pylsp` server managed by this plugin, they need to be installed in the same [virtual environment](https://docs.python.org/3/library/venv.html) as `pylsp`. For these reasons, there's a convenient `:PylspInstall <packages>` command that does this for you, for example:
-
-```vim
-:PylspInstall pyls-flake8 pylsp-mypy pyls-isort
-```
-
-The `:PylspInstall` command will only be available once the `pylsp` server has been set up.
-
-**Note that these extra pylsp plugins will not be reinstalled if you update/reinstall the `pylsp` server, you will have to manage
-them manually.**
diff --git a/lua/mason-lspconfig/server_configurations/r_language_server/init.lua b/lua/mason-lspconfig/server_configurations/r_language_server/init.lua
deleted file mode 100644
index 84b004c..0000000
--- a/lua/mason-lspconfig/server_configurations/r_language_server/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "r-languageserver" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/raku_navigator/init.lua b/lua/mason-lspconfig/server_configurations/raku_navigator/init.lua
deleted file mode 100644
index 6f3bc2c..0000000
--- a/lua/mason-lspconfig/server_configurations/raku_navigator/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "raku-navigator", "--stdio" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/snakeskin_ls/init.lua b/lua/mason-lspconfig/server_configurations/snakeskin_ls/init.lua
deleted file mode 100644
index dd48b5b..0000000
--- a/lua/mason-lspconfig/server_configurations/snakeskin_ls/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "snakeskin-cli", "lsp", "--stdio" },
- }
-end
diff --git a/lua/mason-lspconfig/server_configurations/visualforce_ls/init.lua b/lua/mason-lspconfig/server_configurations/visualforce_ls/init.lua
deleted file mode 100644
index 7d4c0ec..0000000
--- a/lua/mason-lspconfig/server_configurations/visualforce_ls/init.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-return function()
- return {
- cmd = { "visualforce-language-server", "--stdio" },
- }
-end
diff --git a/lua/mason-lspconfig/settings.lua b/lua/mason-lspconfig/settings.lua
index e852a3d..cadc31e 100644
--- a/lua/mason-lspconfig/settings.lua
+++ b/lua/mason-lspconfig/settings.lua
@@ -6,9 +6,8 @@ local DEFAULT_SETTINGS = {
---@type string[]
ensure_installed = {},
- -- See `:h mason-lspconfig.setup_handlers()`
- ---@type table<string, fun(server_name: string)>?
- handlers = nil,
+ -- Whether installed servers should automatically be enabled via `:h vim.lsp.enable()`.
+ automatic_enable = true,
}
M._DEFAULT_SETTINGS = DEFAULT_SETTINGS
diff --git a/scripts/lua/mason-scripts/mason-lspconfig/generate.lua b/scripts/lua/mason-scripts/mason-lspconfig/generate.lua
deleted file mode 100644
index 61356ef..0000000
--- a/scripts/lua/mason-scripts/mason-lspconfig/generate.lua
+++ /dev/null
@@ -1,236 +0,0 @@
-require "mason-lspconfig.server_config_extensions"()
-local Optional = require "mason-core.optional"
-
-local _ = require "mason-core.functional"
-local a = require "mason-core.async"
-local fs = require "mason-core.fs"
-local lspconfig = require "lspconfig"
-local lspconfig_server_mapping = require "mason-lspconfig.mappings.server"
-local path = require "mason-core.path"
-local script_utils = require "mason-scripts.utils"
-
-local DOCS_DIR = "doc"
-local MASON_LSPCONFIG_DIR = path.concat { "lua", "mason-lspconfig" }
-
-require("mason").setup()
-require("mason-registry").refresh()
-
----@async
-local function create_lspconfig_filetype_map()
- local filetype_map = {}
-
- for _, server_name in ipairs(_.keys(lspconfig_server_mapping.lspconfig_to_package)) do
- local config = assert(
- lspconfig[server_name] and lspconfig[server_name].document_config,
- ("Failed to get config for %s"):format(server_name)
- )
- for _, filetype in ipairs(config.default_config.filetypes or {}) do
- if not filetype_map[filetype] then
- filetype_map[filetype] = {}
- end
- table.insert(filetype_map[filetype], server_name)
- table.sort(filetype_map[filetype])
- end
- end
-
- script_utils.write_file(
- path.concat { MASON_LSPCONFIG_DIR, "mappings", "filetype.lua" },
- "return " .. vim.inspect(filetype_map),
- "w"
- )
-end
-
----@async
-local function ensure_valid_package_name_translations()
- local server_mappings = require "mason-lspconfig.mappings.server"
- local registry = require "mason-registry"
-
- for lspconfig_server, mason_package in pairs(server_mappings.lspconfig_to_package) do
- local server_config = lspconfig[lspconfig_server]
- local mason_ok, pkg = pcall(registry.get_package, mason_package)
- assert(server_config ~= nil, lspconfig_server .. " is not a valid lspconfig server name.")
- assert(mason_ok and pkg ~= nil, mason_package .. " is not a valid Mason package name.")
- end
-end
-
-local get_lspconfig_url = _.format "https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#%s"
-
-local get_server_mappings = _.compose(
- _.filter_map(function(pair)
- local lspconfig_name, mason_name =
- assert(pair[1], "missing lspconfig name"), assert(pair[2], "missing mason name")
- if not pcall(require, "lspconfig.configs." .. lspconfig_name) then
- return Optional.empty()
- end
- local mason_url = ("https://mason-registry.dev/registry/list#%s"):format(mason_name)
- return Optional.of {
- lspconfig_name = lspconfig_name,
- mason_name = mason_name,
- lspconfig_url = get_lspconfig_url(lspconfig_name),
- mason_url = mason_url,
- }
- end),
- _.sort_by(_.head),
- _.to_pairs
-)
-
----@async
-local function create_server_mapping_docs()
- local server_mappings = get_server_mappings(require("mason-lspconfig.mappings.server").lspconfig_to_package)
-
- do
- local markdown_header = {
- "| lspconfig server name | mason.nvim package name |",
- "| --------------------- | ----------------------- |",
- }
-
- local markdown_table = _.map(function(map)
- return string.format(
- "| [%s](%s) | [%s](%s) |",
- map.lspconfig_name,
- map.lspconfig_url,
- map.mason_name,
- map.mason_url
- )
- end, server_mappings)
-
- local markdown = _.join("\n", _.concat(markdown_header, markdown_table))
- script_utils.write_file(path.concat { DOCS_DIR, "server-mapping.md" }, markdown)
- end
-
- do
- local vimdoc_header = {
- "*mason-lspconfig-mapping.txt*",
- "",
- "==============================================================================",
- "SERVER MAPPINGS *mason-lspconfig-server-map*",
- "",
- }
-
- local vimdoc_footer = {
- "",
- "vim:tw=78:ft=help:norl:expandtab:sw=4",
- }
-
- local col_width = _.apply(math.max, _.map(_.compose(_.length, _.prop "mason_name"), server_mappings)) + 2
-
- local vimdoc_table = _.concat(
- {
- "`Mason name`" .. (" "):rep(col_width - #"Mason name") .. "`lspconfig name`",
- },
- _.map(function(map)
- return ("%s%s%s"):format(map.mason_name, (" "):rep(col_width - #map.mason_name), map.lspconfig_name)
- end, server_mappings)
- )
-
- local concat = _.reduce(_.concat, {})
-
- local vimdoc = _.join("\n", concat { vimdoc_header, vimdoc_table, vimdoc_footer })
- script_utils.write_file(path.concat { DOCS_DIR, "mason-lspconfig-mapping.txt" }, vimdoc)
- end
-end
-
-local find_index = _.curryN(function(predicate, list)
- for i, item in ipairs(list) do
- if predicate(item) then
- return i
- end
- end
- return -1
-end, 2)
-
----@async
-local function update_available_lsp_servers()
- local readme_path = "README.md"
- local readme_contents = fs.sync.read_file(readme_path)
- local readme_lines = _.split("\n", readme_contents)
-
- local start = find_index(_.equals "<!-- available-lsp-servers:start -->", readme_lines) + 1
- local stop = find_index(_.equals "<!-- available-lsp-servers:end -->", readme_lines) - 1
-
- for i = stop, start, -1 do
- table.remove(readme_lines, i)
- end
-
- local server_mappings = require("mason-lspconfig.mappings.server").lspconfig_to_package
- local registry = require "mason-registry"
-
- ---@type {languages: string[], name: string}[]
- local servers = {}
-
- for lspconfig_name, mason_name in pairs(server_mappings) do
- local pkg = registry.get_package(mason_name)
- table.insert(servers, {
- languages = pkg.spec.languages,
- name = lspconfig_name,
- })
- end
-
- local servers_markdown_list = _.compose(
- _.map(function(entry)
- local server_docs = path.concat { MASON_LSPCONFIG_DIR, "server_configurations", entry.server, "README.md" }
- if fs.sync.file_exists(server_docs) then
- return ("| %s ([docs](%s)) | [`%s`](%s) |"):format(
- entry.language,
- server_docs,
- entry.server,
- get_lspconfig_url(entry.server)
- )
- else
- return ("| %s | [`%s`](%s) |"):format(entry.language, entry.server, get_lspconfig_url(entry.server))
- end
- end),
- _.sort_by(function(entry)
- if entry.language == "-" then
- -- brother eww
- return "zzzz" .. (entry.language .. entry.server):lower()
- else
- return (entry.language .. entry.server):lower()
- end
- end),
- function(tbl)
- return vim.iter(tbl):flatten():totable()
- end,
- _.map(function(server)
- if #server.languages == 0 then
- return {
- {
- server = server.name,
- language = "-",
- },
- }
- else
- return _.map(function(language)
- return {
- server = server.name,
- language = language,
- }
- end, server.languages)
- end
- end)
- )(servers)
-
- for i = #servers_markdown_list, 1, -1 do
- table.insert(readme_lines, start, servers_markdown_list[i])
- end
-
- for _, line in
- ipairs(_.reverse {
- "| Language | Server name |",
- "| --- | --- |",
- })
- do
- table.insert(readme_lines, start, line)
- end
-
- fs.sync.write_file(readme_path, _.join("\n", readme_lines))
-end
-
-a.run_blocking(function()
- a.wait_all {
- create_lspconfig_filetype_map,
- ensure_valid_package_name_translations,
- create_server_mapping_docs,
- update_available_lsp_servers,
- }
-end)
diff --git a/scripts/lua/mason-scripts/utils.lua b/scripts/lua/mason-scripts/utils.lua
deleted file mode 100644
index ee6ab10..0000000
--- a/scripts/lua/mason-scripts/utils.lua
+++ /dev/null
@@ -1,40 +0,0 @@
-local _ = require "mason-core.functional"
-local fs = require "mason-core.fs"
-
-local M = {}
-
----@async
----@param path string
----@param contents string
----@param flags string?
-function M.write_file(path, contents, flags)
- local header = _.cond({
- {
- _.matches "%.lua$",
- _.always {
- "-- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY.",
- "-- stylua: ignore start",
- },
- },
- {
- _.matches "%.md$",
- _.always {
- "<!--- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY. -->",
- },
- },
- {
- _.matches "doc/.+%.txt$",
- _.always {},
- },
- {
- _.T,
- _.always {
- "# THIS FILE IS GENERATED. DO NOT EDIT MANUALLY.",
- },
- },
- }, path)
-
- fs.async.write_file(path, table.concat(_.concat(header, { contents }), "\n"), flags)
-end
-
-return M
diff --git a/scripts/nvim.sh b/scripts/nvim.sh
deleted file mode 100755
index c2dcb6b..0000000
--- a/scripts/nvim.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env bash
-
-set -exuo pipefail
-
-declare -x DEPENDENCIES="${PWD}/dependencies"
-declare -x MASON_DIR="$PWD"
-declare -x MASON_SCRIPT_DIR="${PWD}/scripts"
-
-nvim -u NONE -E -R --headless \
- --cmd "set rtp^=${MASON_SCRIPT_DIR},${MASON_DIR}" \
- --cmd "set packpath^=${DEPENDENCIES}" \
- --cmd "packloadall" \
- --cmd "luafile $1" \
- --cmd "q"
diff --git a/tests/helpers/lua/dummy-registry/dummy2_package.lua b/tests/helpers/lua/dummy-registry/dummy2_package.lua
index c307843..8ddee8d 100644
--- a/tests/helpers/lua/dummy-registry/dummy2_package.lua
+++ b/tests/helpers/lua/dummy-registry/dummy2_package.lua
@@ -12,4 +12,7 @@ return Pkg:new {
id = "pkg:mason/dummy2@1.0.0",
install = function() end,
},
+ neovim = {
+ lspconfig = "dummy2lsp",
+ },
}
diff --git a/tests/helpers/lua/dummy-registry/dummy_package.lua b/tests/helpers/lua/dummy-registry/dummy_package.lua
index 6eb7799..bab0254 100644
--- a/tests/helpers/lua/dummy-registry/dummy_package.lua
+++ b/tests/helpers/lua/dummy-registry/dummy_package.lua
@@ -12,4 +12,7 @@ return Pkg:new {
id = "pkg:mason/dummy@1.0.0",
install = function() end,
},
+ neovim = {
+ lspconfig = "dummylsp",
+ },
}
diff --git a/tests/helpers/lua/dummy-registry/fail_dummy.lua b/tests/helpers/lua/dummy-registry/fail_dummy.lua
index c2fb642..43ed559 100644
--- a/tests/helpers/lua/dummy-registry/fail_dummy.lua
+++ b/tests/helpers/lua/dummy-registry/fail_dummy.lua
@@ -14,4 +14,7 @@ return Pkg:new {
error("fail-dummy doesn't want to be installed", 0)
end,
},
+ neovim = {
+ lspconfig = "fail_dummylsp",
+ },
}
diff --git a/tests/mason-lspconfig/api/api_spec.lua b/tests/mason-lspconfig/api/api_spec.lua
index b842941..53b3a27 100644
--- a/tests/mason-lspconfig/api/api_spec.lua
+++ b/tests/mason-lspconfig/api/api_spec.lua
@@ -2,18 +2,22 @@ local _ = require "mason-core.functional"
local mason_lspconfig = require "mason-lspconfig"
describe("mason-lspconfig API", function()
+ local dummy_config = vim.lsp.config.dummylsp
+ local dummy2_config = vim.lsp.config.dummy2lsp
+
+ after_each(function()
+ vim.lsp.config("dummylsp", dummy_config)
+ vim.lsp.config("dummy2lsp", dummy2_config)
+ end)
+
it("should return all available servers", function()
local available_servers = mason_lspconfig.get_available_servers()
assert.equals(vim.tbl_count(require "dummy-registry.index"), #available_servers)
end)
it("should return all available servers for given filetype", function()
- require("mason-lspconfig.mappings.filetype").dummylang = {
- "dummylsp",
- "dummy2lsp",
- }
assert.same(
- { "dummy2lsp", "dummylsp" },
+ { "dummylsp" },
_.sort_by(
_.identity,
mason_lspconfig.get_available_servers {
@@ -24,12 +28,12 @@ describe("mason-lspconfig API", function()
end)
it("should return all available servers for given filetypes", function()
- require("mason-lspconfig.mappings.filetype").dummylang = {
- "dummylsp",
- }
- require("mason-lspconfig.mappings.filetype").madeuplang = {
- "dummy2lsp",
- }
+ vim.lsp.config("dummylsp", {
+ filetypes = { "dummylang" },
+ })
+ vim.lsp.config("dummy2lsp", {
+ filetypes = { "madeuplang" },
+ })
assert.same(
{ "dummy2lsp", "dummylsp" },
_.sort_by(
diff --git a/tests/mason-lspconfig/api/command_spec.lua b/tests/mason-lspconfig/api/command_spec.lua
index 0eeddea..3cd6679 100644
--- a/tests/mason-lspconfig/api/command_spec.lua
+++ b/tests/mason-lspconfig/api/command_spec.lua
@@ -4,18 +4,9 @@ local stub = require "luassert.stub"
local Pkg = require "mason-core.package"
local api = require "mason-lspconfig.api.command"
-local filetype_mappings = require "mason-lspconfig.mappings.filetype"
local registry = require "mason-registry"
-local server_mappings = require "mason-lspconfig.mappings.server"
describe(":LspInstall", function()
- before_each(function()
- server_mappings.lspconfig_to_package["dummylsp"] = "dummy"
- server_mappings.package_to_lspconfig["dummy"] = "dummylsp"
- filetype_mappings.dummylang = { "dummylsp" }
- filetype_mappings["*"] = {}
- end)
-
it("should install the provided servers", function()
local dummy = registry.get_package "dummy"
spy.on(Pkg, "install")
@@ -23,7 +14,7 @@ describe(":LspInstall", function()
assert.spy(Pkg.install).was_called(1)
assert.spy(Pkg.install).was_called_with(match.ref(dummy), {
version = "1.0.0",
- })
+ }, match.is_function())
end)
it(
@@ -40,7 +31,7 @@ describe(":LspInstall", function()
assert.spy(Pkg.install).was_called(1)
assert.spy(Pkg.install).was_called_with(match.ref(dummy), {
version = nil,
- })
+ }, match.is_function())
assert.spy(vim.ui.select).was_called(1)
assert.spy(vim.ui.select).was_called_with({ "dummylsp" }, match.is_table(), match.is_function())
end)
@@ -57,22 +48,9 @@ describe(":LspInstall", function()
assert.spy(vim.ui.select).was_called(0)
end)
)
-
- it("should consider servers mapped to all filetypes", function()
- filetype_mappings["*"] = { "omnilsp" }
- spy.on(vim.ui, "select")
- vim.cmd [[new | setf nolsplang]]
- api.LspInstall {}
- assert.spy(vim.ui.select).was_called(1)
- assert.spy(vim.ui.select).was_called_with({ "omnilsp" }, match.is_table(), match.is_function())
- end)
end)
describe(":LspUninstall", function()
- server_mappings.lspconfig_to_package["dummylsp"] = "dummy"
- server_mappings.package_to_lspconfig["dummy"] = "dummylsp"
- filetype_mappings.dummylang = { "dummylsp" }
-
it("should uninstall the provided servers", function()
local dummy = registry.get_package "dummy"
spy.on(Pkg, "uninstall")
diff --git a/tests/mason-lspconfig/setup_spec.lua b/tests/mason-lspconfig/setup_spec.lua
index c5a3fee..88a0a28 100644
--- a/tests/mason-lspconfig/setup_spec.lua
+++ b/tests/mason-lspconfig/setup_spec.lua
@@ -4,15 +4,12 @@ local stub = require "luassert.stub"
local Pkg = require "mason-core.package"
local a = require "mason-core.async"
-local filetype_mappings = require "mason-lspconfig.mappings.filetype"
local mason_lspconfig = require "mason-lspconfig"
local platform = require "mason-core.platform"
local registry = require "mason-registry"
describe("mason-lspconfig setup", function()
before_each(function()
- filetype_mappings.dummylang = { "dummylsp", "dummy2lsp" }
- require("lspconfig.util").on_setup = nil
local settings = require "mason-lspconfig.settings"
settings.set(settings._DEFAULT_SETTINGS)
@@ -56,8 +53,8 @@ describe("mason-lspconfig setup", function()
a.wait(vim.schedule)
assert.spy(Pkg.install).was_called(2)
- assert.spy(Pkg.install).was_called_with(match.ref(dummy), { version = "1.0.0" })
- assert.spy(Pkg.install).was_called_with(match.ref(fail_dummy), { version = nil })
+ assert.spy(Pkg.install).was_called_with(match.ref(dummy), { version = "1.0.0" }, match.is_function())
+ assert.spy(Pkg.install).was_called_with(match.ref(fail_dummy), { version = nil }, match.is_function())
assert.wait_for(function()
assert.is_true(dummy.install_handle:is_closed())
assert.is_true(fail_dummy.install_handle:is_closed())
@@ -117,196 +114,31 @@ describe("mason-lspconfig setup", function()
end)
)
- it("should apply mason-lspconfig server configs", function()
- stub(registry, "is_installed")
- registry.is_installed.on_call_with("dummy").returns(true)
- package.loaded["mason-lspconfig.server_configurations.dummylsp"] = function()
- return { cmd = { "mason-cmd" } }
- end
- local config = { name = "dummylsp" }
-
- mason_lspconfig.setup()
- local on_setup = require("lspconfig.util").on_setup
- on_setup(config)
-
- assert.same({ name = "dummylsp", cmd = { "mason-cmd" } }, config)
- end)
-
- it("should let user config take precedence", function()
- stub(registry, "is_installed")
- registry.is_installed.on_call_with("dummy").returns(true)
- local server_config = spy.new(function()
- return { cmd = { "mason-cmd" } }
- end)
- package.loaded["mason-lspconfig.server_configurations.dummylsp"] = server_config
- local config = { name = "dummylsp" }
- local user_config = { cmd = { "user-cmd" } }
-
- mason_lspconfig.setup()
- local on_setup = require("lspconfig.util").on_setup
- on_setup(config, user_config)
-
- assert.same({ name = "dummylsp", cmd = { "user-cmd" } }, config)
- assert.spy(server_config).was_called(1)
- assert
- .spy(server_config)
- .was_called_with(vim.fn.expand "$MASON/packages/dummy", match.same { name = "dummylsp" })
- end)
-
- it("should set up package aliases", function()
- stub(registry, "register_package_aliases")
-
- local mapping_mock = mockx.table(require "mason-lspconfig.mappings.server", "package_to_lspconfig", {
- ["rust-analyzer"] = "rust_analyzer",
- ["typescript-language-server"] = "ts_ls",
- })
-
- mason_lspconfig.setup {}
-
- assert.spy(registry.register_package_aliases).was_called(1)
- assert.spy(registry.register_package_aliases).was_called_with {
- ["rust-analyzer"] = { "rust_analyzer" },
- ["typescript-language-server"] = { "ts_ls" },
- }
- mapping_mock:revert()
- end)
-end)
-
-describe("mason-lspconfig setup_handlers", function()
- before_each(function()
- filetype_mappings.dummylang = { "dummylsp", "dummy2lsp" }
- require("lspconfig.util").on_setup = nil
- local settings = require "mason-lspconfig.settings"
- settings.set(settings._DEFAULT_SETTINGS)
- end)
-
- it("should call default handler", function()
- stub(registry, "get_installed_package_names")
- registry.get_installed_package_names.returns { "dummy" }
- local default_handler = spy.new()
-
- mason_lspconfig.setup_handlers { default_handler }
-
- assert.spy(default_handler).was_called(1)
- assert.spy(default_handler).was_called_with "dummylsp"
- end)
-
- it("should call dedicated handler", function()
- stub(registry, "get_installed_package_names")
- registry.get_installed_package_names.returns { "dummy" }
- local dedicated_handler = spy.new()
- local default_handler = spy.new()
-
- mason_lspconfig.setup_handlers {
- default_handler,
- ["dummylsp"] = dedicated_handler,
- }
-
- assert.spy(default_handler).was_called(0)
- assert.spy(dedicated_handler).was_called(1)
- assert.spy(dedicated_handler).was_called_with "dummylsp"
- end)
-
- it("(via .setup {}) should call default handler", function()
- stub(registry, "get_installed_package_names")
- registry.get_installed_package_names.returns { "dummy" }
- local default_handler = spy.new()
-
- mason_lspconfig.setup { handlers = { default_handler } }
-
- assert.spy(default_handler).was_called(1)
- assert.spy(default_handler).was_called_with "dummylsp"
- end)
-
- it("(via .setup {}) should call dedicated handler", function()
- stub(registry, "get_installed_package_names")
- registry.get_installed_package_names.returns { "dummy" }
- local dedicated_handler = spy.new()
- local default_handler = spy.new()
-
- mason_lspconfig.setup {
- handlers = {
- default_handler,
- ["dummylsp"] = dedicated_handler,
- },
- }
-
- assert.spy(default_handler).was_called(0)
- assert.spy(dedicated_handler).was_called(1)
- assert.spy(dedicated_handler).was_called_with "dummylsp"
- end)
-
- it("should print warning if registering handler for non-existent server name", function()
- spy.on(vim, "notify")
- mason_lspconfig.setup_handlers {
- doesnt_exist_server = spy.new(),
- }
- assert.spy(vim.notify).was_called(1)
- assert.spy(vim.notify).was_called_with(
- "mason-lspconfig.setup_handlers: Received handler for unknown lspconfig server name: doesnt_exist_server.",
- vim.log.levels.WARN,
- { title = "mason-lspconfig.nvim" }
- )
- end)
-
it(
- "should print warning when providing invalid server entries in ensure_installed",
+ "should set up package aliases",
async_test(function()
- spy.on(vim, "notify")
- platform.is_headless = false
- mason_lspconfig.setup {
- ensure_installed = { "yamllint", "hadolint" },
- }
+ stub(registry, "register_package_aliases")
- a.wait(vim.schedule)
- assert.spy(vim.notify).was_called(2)
- assert.spy(vim.notify).was_called_with(
- [[[mason-lspconfig.nvim] Server "yamllint" is not a valid entry in ensure_installed. Make sure to only provide lspconfig server names.]],
- vim.log.levels.WARN,
- { title = "mason-lspconfig.nvim" }
- )
- assert.spy(vim.notify).was_called_with(
- [[[mason-lspconfig.nvim] Server "hadolint" is not a valid entry in ensure_installed. Make sure to only provide lspconfig server names.]],
- vim.log.levels.WARN,
- { title = "mason-lspconfig.nvim" }
+ local mapping_mock = stub(
+ require "mason-lspconfig.mappings",
+ "get_mason_map",
+ mockx.returns {
+ package_to_lspconfig = {
+ ["rust-analyzer"] = "rust_analyzer",
+ ["typescript-language-server"] = "ts_ls",
+ },
+ }
)
- end)
- )
-
- it("should notify if mason.nvim has not been set up and using ensure_installed feature", function()
- package.loaded["mason"] = nil
- spy.on(vim, "notify")
-
- mason_lspconfig.setup { ensure_installed = { "dummylsp" } }
- assert.spy(vim.notify).was_called(1)
- assert.spy(vim.notify).was_called_with(
- [[mason.nvim has not been set up. Make sure to set up 'mason' before 'mason-lspconfig'. :h mason-lspconfig-quickstart]],
- vim.log.levels.WARN,
- { title = "mason-lspconfig.nvim" }
- )
- end)
-
- it("should not notify if mason.nvim has not been set up and not using ensure_installed feature", function()
- package.loaded["mason"] = nil
- spy.on(vim, "notify")
-
- mason_lspconfig.setup()
- assert.spy(vim.notify).was_called(0)
- end)
-
- it("should notify is server is set up before mason.nvim", function()
- package.loaded["mason"] = nil
- local lspconfig = require "lspconfig"
- spy.on(vim, "notify")
- mason_lspconfig.setup()
- lspconfig.dummylsp.setup {}
+ mason_lspconfig.setup {}
+ a.wait(vim.schedule)
- assert.spy(vim.notify).was_called(1)
- assert.spy(vim.notify).was_called_with(
- [[Server "dummylsp" is being set up before mason.nvim is set up. :h mason-lspconfig-quickstart]],
- vim.log.levels.WARN,
- { title = "mason-lspconfig.nvim" }
- )
- end)
+ assert.spy(registry.register_package_aliases).was_called(1)
+ assert.spy(registry.register_package_aliases).was_called_with {
+ ["rust-analyzer"] = { "rust_analyzer" },
+ ["typescript-language-server"] = { "ts_ls" },
+ }
+ mapping_mock:revert()
+ end)
+ )
end)
diff --git a/tests/minimal_init.vim b/tests/minimal_init.vim
index eb0845a..e81ed89 100644
--- a/tests/minimal_init.vim
+++ b/tests/minimal_init.vim
@@ -16,18 +16,16 @@ lua require("luassertx")
lua require("test_helpers")
lua <<EOF
-local configs = require 'lspconfig.configs'
-configs.dummylsp = { default_config = { cmd = { "dummylsp" } } }
-configs.dummy2lsp = { default_config = { cmd = { "dummy2lsp"} } }
-configs.fail_dummylsp = { default_config = { cmd = { "fail_dummylsp"} } }
-
-local server_mappings = require "mason-lspconfig.mappings.server"
-server_mappings.lspconfig_to_package["dummylsp"] = "dummy"
-server_mappings.lspconfig_to_package["dummy2lsp"] = "dummy2"
-server_mappings.lspconfig_to_package["fail_dummylsp"] = "fail_dummy"
-server_mappings.package_to_lspconfig["dummy"] = "dummylsp"
-server_mappings.package_to_lspconfig["dummy2"] = "dummy2lsp"
-server_mappings.package_to_lspconfig["fail_dummy"] = "fail_dummylsp"
+vim.lsp.config("dummylsp", {
+ cmd = { "dummylsp" },
+ filetypes = { "dummylang" }
+})
+vim.lsp.config("dummy2lsp", {
+ cmd = { "dummy2lsp" },
+})
+vim.lsp.config("fail_dummylsp", {
+ cmd = { "fail_dummylsp" }
+})
require("mason").setup {
install_root_dir = vim.env.INSTALL_ROOT_DIR,
diff --git a/vim.yml b/vim.yml
index 2fb8959..21f7a12 100644
--- a/vim.yml
+++ b/vim.yml
@@ -44,6 +44,9 @@ globals:
before_each:
args:
- type: function
+ after_each:
+ args:
+ - type: function
it:
args:
- type: string