diff options
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 @@ -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, @@ -44,6 +44,9 @@ globals: before_each: args: - type: function + after_each: + args: + - type: function it: args: - type: string |
