aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2025-05-19 07:56:31 +0200
committerGitHub <noreply@github.com>2025-05-19 07:56:31 +0200
commit1d6730459c42f591602500da994f01ae43a97dbc (patch)
treec78417dd383456d2ef8a00600375534d17a9cd45 /lua
parentchore: fix references to williamboman/mason.nvim (#542) (diff)
downloadmason-lspconfig-1d6730459c42f591602500da994f01ae43a97dbc.tar
mason-lspconfig-1d6730459c42f591602500da994f01ae43a97dbc.tar.gz
mason-lspconfig-1d6730459c42f591602500da994f01ae43a97dbc.tar.bz2
mason-lspconfig-1d6730459c42f591602500da994f01ae43a97dbc.tar.lz
mason-lspconfig-1d6730459c42f591602500da994f01ae43a97dbc.tar.xz
mason-lspconfig-1d6730459c42f591602500da994f01ae43a97dbc.tar.zst
mason-lspconfig-1d6730459c42f591602500da994f01ae43a97dbc.zip
perf: host pre-compiled filetype mappings (#555)
Generating the filetype mappings by accessing `vim.lsp.config` turns out to be a bad idea because: 1) performance 2) some `lsp/` configurations in nvim-lspconfig execute code immediately (see angularls) 3) accessing `vim.lsp.config[server_name]` seems to populate `:checkhealth vim.lsp`
Diffstat (limited to 'lua')
-rw-r--r--lua/mason-lspconfig/filetype_mappings.lua249
-rw-r--r--lua/mason-lspconfig/mappings.lua17
2 files changed, 250 insertions, 16 deletions
diff --git a/lua/mason-lspconfig/filetype_mappings.lua b/lua/mason-lspconfig/filetype_mappings.lua
new file mode 100644
index 0000000..1db0de6
--- /dev/null
+++ b/lua/mason-lspconfig/filetype_mappings.lua
@@ -0,0 +1,249 @@
+-- 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" },
+ arduino = { "arduino_language_server" },
+ asm = { "asm_lsp" },
+ aspnetcorerazor = { "tailwindcss", "htmx" },
+ astro = { "astro", "stylelint_lsp", "tailwindcss", "unocss", "biome", "emmet_ls", "eslint", "htmx" },
+ ["astro-markdown"] = { "tailwindcss", "htmx" },
+ automake = { "autotools_ls" },
+ awk = { "awk_ls" },
+ bash = { "bashls" },
+ bazelrc = { "bazelrc_lsp" },
+ bean = { "beancount" },
+ beancount = { "beancount" },
+ bib = { "ltex_plus", "ltex", "texlab" },
+ bicep = { "bicep" },
+ blade = { "stimulus_ls", "tailwindcss", "htmx" },
+ 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 = { "tailwindcss", "clojure_lsp", "htmx" },
+ cmake = { "cmake", "neocmake", "harper_ls" },
+ cobol = { "cobol_ls" },
+ comp = { "glsl_analyzer", "glslls" },
+ config = { "autotools_ls" },
+ context = { "ltex_plus", "ltex" },
+ coq = { "coq_lsp" },
+ cpp = { "ast_grep", "clangd", "harper_ls" },
+ crystal = { "crystalline" },
+ cs = { "harper_ls", "csharp_ls", "omnisharp_mono", "omnisharp" },
+ css = { "ast_grep", "stylelint_lsp", "tailwindcss", "unocss", "biome", "emmet_language_server", "emmet_ls", "cssls", "css_variables" },
+ 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"] = { "tailwindcss", "htmx" },
+ dockerfile = { "dockerls" },
+ dot = { "dotls" },
+ dts = { "ginko_ls" },
+ dune = { "ocamllsp" },
+ earthfile = { "earthlyls" },
+ edge = { "tailwindcss", "htmx" },
+ edn = { "clojure_lsp" },
+ eelixir = { "tailwindcss", "elixirls", "nextls", "lexical", "htmx" },
+ ejs = { "tailwindcss", "unocss", "htmx" },
+ elixir = { "tailwindcss", "elixirls", "nextls", "lexical", "htmx" },
+ elm = { "elmls" },
+ erb = { "tailwindcss", "unocss", "htmx" },
+ erg = { "erg_language_server" },
+ erlang = { "elp", "erlangls" },
+ eruby = { "stimulus_ls", "tailwindcss", "emmet_language_server", "emmet_ls", "ruby_lsp", "steep", "htmx" },
+ 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 = { "ltex_plus", "ltex", "harper_ls" },
+ glsl = { "glsl_analyzer", "glslls" },
+ go = { "ast_grep", "snyk_ls", "harper_ls", "gopls", "golangci_lint_ls" },
+ gohtml = { "tailwindcss", "htmx" },
+ gohtmltmpl = { "tailwindcss", "htmx" },
+ gomod = { "snyk_ls", "gopls", "golangci_lint_ls" },
+ gotmpl = { "gopls" },
+ gowork = { "gopls" },
+ graphql = { "biome", "dprint", "graphql" },
+ groovy = { "groovyls", "gradle_ls" },
+ haml = { "tailwindcss", "unocss", "htmx" },
+ handlebars = { "tailwindcss", "ember", "htmx" },
+ haskell = { "harper_ls", "hls" },
+ hbs = { "tailwindcss", "unocss", "htmx" },
+ heex = { "tailwindcss", "elixirls", "nextls", "lexical", "htmx" },
+ helm = { "snyk_ls", "helm_ls" },
+ hlsl = { "slangd" },
+ hoon = { "hoon_ls" },
+ html = { "ast_grep", "stimulus_ls", "stylelint_lsp", "tailwindcss", "unocss", "emmet_language_server", "emmet_ls", "ltex_plus", "ltex", "lwc_ls", "html", "harper_ls", "angularls", "antlersls", "superhtml", "htmx" },
+ ["html-eex"] = { "tailwindcss", "htmx" },
+ htmlangular = { "tailwindcss", "emmet_language_server", "emmet_ls", "angularls", "htmx" },
+ htmldjango = { "tailwindcss", "emmet_language_server", "emmet_ls", "htmx" },
+ hyprlang = { "hyprls" },
+ jade = { "tailwindcss", "htmx" },
+ java = { "java_language_server", "ast_grep", "jdtls", "harper_ls" },
+ javascript = { "oxlint", "ast_grep", "vtsls", "denols", "tailwindcss", "ts_ls", "unocss", "quick_lint_js", "biome", "ember", "rome", "snyk_ls", "lwc_ls", "harper_ls", "eslint", "dprint", "cssmodules_ls", "htmx" },
+ ["javascript.glimmer"] = { "ember" },
+ ["javascript.jsx"] = { "oxlint", "ast_grep", "vtsls", "denols", "ts_ls", "eslint" },
+ javascriptreact = { "oxlint", "ast_grep", "vtsls", "denols", "tailwindcss", "ts_ls", "unocss", "biome", "emmet_language_server", "emmet_ls", "rome", "eslint", "dprint", "cssmodules_ls", "graphql", "htmx" },
+ jinja = { "jinja_lsp" },
+ jq = { "jqls" },
+ json = { "biome", "rome", "snyk_ls", "jsonls", "spectral", "dprint" },
+ ["json.openapi"] = { "vacuum" },
+ jsonc = { "biome", "jsonls", "dprint" },
+ julia = { "julials" },
+ just = { "just" },
+ kcl = { "kcl" },
+ kotlin = { "ast_grep", "kotlin_language_server" },
+ leaf = { "tailwindcss", "htmx" },
+ less = { "stylelint_lsp", "tailwindcss", "unocss", "emmet_language_server", "emmet_ls", "cssls", "css_variables" },
+ lhaskell = { "hls" },
+ liquid = { "tailwindcss", "shopify_theme_ls", "theme_check", "htmx" },
+ llw = { "lelwel_ls" },
+ lua = { "ast_grep", "emmylua_ls", "lua_ls", "harper_ls" },
+ luau = { "luau_lsp" },
+ mail = { "ltex_plus", "ltex" },
+ make = { "autotools_ls" },
+ markdown = { "tailwindcss", "unocss", "vale_ls", "remark_ls", "zk", "ltex_plus", "ltex", "markdown_oxide", "marksman", "harper_ls", "prosemd_lsp", "dprint", "grammarly", "htmx" },
+ ["markdown.mdx"] = { "marksman" },
+ mdx = { "tailwindcss", "ltex_plus", "mdx_analyzer", "htmx" },
+ menhir = { "ocamllsp" },
+ meson = { "swift_mesonls", "mesonlsp" },
+ ["metamath-zero"] = { "mm0_ls" },
+ motoko = { "motoko_lsp" },
+ move = { "move_analyzer" },
+ mustache = { "tailwindcss", "htmx" },
+ muttrc = { "mutt_ls" },
+ mysql = { "sqlls", "sqls" },
+ ncl = { "nickel_ls" },
+ neomuttrc = { "mutt_ls" },
+ nextflow = { "nextflow_ls" },
+ nginx = { "nginx_language_server" },
+ nickel = { "nickel_ls" },
+ nim = { "nim_langserver", "nimls" },
+ nix = { "nil_ls", "rnix", "harper_ls" },
+ njk = { "tailwindcss", "htmx" },
+ nunjucks = { "tailwindcss", "htmx" },
+ objc = { "clangd" },
+ objcpp = { "clangd" },
+ ocaml = { "ocamllsp" },
+ ocamlinterface = { "ocamllsp" },
+ ocamllex = { "ocamllsp" },
+ odin = { "ols" },
+ opencl = { "opencl_ls" },
+ openscad = { "openscad_lsp" },
+ org = { "ltex_plus", "ltex", "textlsp" },
+ os = { "bsl_ls" },
+ p8 = { "pico8_ls" },
+ pandoc = { "ltex_plus", "ltex" },
+ perl = { "perlnavigator" },
+ pest = { "pest_ls" },
+ php = { "intelephense", "phpactor", "stimulus_ls", "tailwindcss", "unocss", "harper_ls", "psalm", "htmx" },
+ plaintex = { "ltex_plus", "ltex", "texlab" },
+ postcss = { "tailwindcss", "unocss" },
+ prisma = { "prismals" },
+ proto = { "buf_ls", "clangd", "pbls", "protols" },
+ ps1 = { "powershell_es" },
+ pug = { "emmet_language_server", "emmet_ls" },
+ puppet = { "puppet" },
+ purescript = { "purescriptls" },
+ python = { "ast_grep", "basedpyright", "pyre", "pyright", "pylsp", "snyk_ls", "jedi_language_server", "ruff", "harper_ls", "pylyzer", "dprint" },
+ quarto = { "r_language_server", "ltex_plus", "ltex" },
+ query = { "ts_query_ls" },
+ r = { "r_language_server", "air" },
+ raku = { "raku_navigator" },
+ razor = { "tailwindcss", "htmx" },
+ reason = { "tailwindcss", "reason_ls", "ocamllsp", "htmx" },
+ rego = { "regal", "regols" },
+ requirements = { "snyk_ls" },
+ rescript = { "tailwindcss", "unocss", "rescriptls", "htmx" },
+ rmd = { "r_language_server", "ltex_plus", "ltex" },
+ rnoweb = { "ltex_plus", "ltex" },
+ robot = { "robotframework_ls" },
+ roslyn = { "dprint" },
+ rst = { "vale_ls", "ltex_plus", "ltex", "esbonio" },
+ ruby = { "standardrb", "stimulus_ls", "rubocop", "ruby_lsp", "solargraph", "steep", "harper_ls", "sorbet" },
+ rust = { "ast_grep", "unocss", "rust_analyzer", "harper_ls", "dprint" },
+ sass = { "tailwindcss", "unocss", "emmet_language_server", "emmet_ls", "somesass_ls" },
+ scss = { "stylelint_lsp", "tailwindcss", "unocss", "emmet_language_server", "emmet_ls", "somesass_ls", "cssls", "css_variables" },
+ sh = { "bashls" },
+ shaderslang = { "slangd" },
+ slim = { "tailwindcss", "htmx" },
+ slint = { "slint_lsp" },
+ sls = { "salt_ls" },
+ smithy = { "smithy_ls" },
+ sml = { "millet" },
+ solidity = { "solidity_ls", "solang", "solidity", "solidity_ls_nomicfoundation", "solc" },
+ sql = { "sqlls", "sqls", "postgres_lsp" },
+ ss = { "snakeskin_ls" },
+ star = { "starlark_rust" },
+ stylus = { "tailwindcss", "unocss" },
+ sugarss = { "stylelint_lsp", "tailwindcss" },
+ superhtml = { "superhtml" },
+ surface = { "elixirls", "nextls", "lexical" },
+ svelte = { "svelte", "tailwindcss", "unocss", "biome", "emmet_ls", "eslint", "htmx" },
+ svg = { "lemminx" },
+ swift = { "harper_ls" },
+ systemd = { "systemd_ls" },
+ systemverilog = { "svlangserver", "svls", "verible", "hdl_checker" },
+ teal = { "teal_ls" },
+ templ = { "tailwindcss", "html", "htmx", "templ" },
+ terraform = { "terraformls", "snyk_ls", "tflint" },
+ ["terraform-vars"] = { "terraformls", "snyk_ls" },
+ tesc = { "glsl_analyzer", "glslls" },
+ tese = { "glsl_analyzer", "glslls" },
+ tex = { "vale_ls", "ltex_plus", "ltex", "texlab", "textlsp" },
+ text = { "vale_ls", "ltex_plus", "ltex", "textlsp" },
+ thrift = { "thriftls" },
+ toml = { "taplo", "harper_ls", "dprint" },
+ twig = { "tailwindcss", "twiggy_language_server", "htmx" },
+ typescript = { "oxlint", "ast_grep", "vtsls", "denols", "tailwindcss", "ts_ls", "unocss", "quick_lint_js", "biome", "ember", "rome", "snyk_ls", "harper_ls", "eslint", "dprint", "cssmodules_ls", "angularls", "htmx" },
+ ["typescript.glimmer"] = { "ember" },
+ ["typescript.tsx"] = { "oxlint", "ast_grep", "vtsls", "denols", "ts_ls", "biome", "rome", "eslint", "angularls" },
+ typescriptreact = { "oxlint", "ast_grep", "vtsls", "denols", "tailwindcss", "ts_ls", "unocss", "biome", "emmet_language_server", "emmet_ls", "rome", "harper_ls", "eslint", "dprint", "cssmodules_ls", "graphql", "angularls", "htmx" },
+ typespec = { "tsp_server" },
+ typst = { "ltex_plus", "tinymist", "harper_ls" },
+ v = { "v_analyzer", "vls" },
+ vala = { "vala_ls" },
+ vb = { "omnisharp_mono", "omnisharp" },
+ verilog = { "svlangserver", "svls", "verible", "hdl_checker" },
+ vert = { "glsl_analyzer", "glslls" },
+ veryl = { "veryl_ls" },
+ vhd = { "vhdl_ls" },
+ vhdl = { "vhdl_ls", "hdl_checker" },
+ vim = { "vimls" },
+ visualforce = { "visualforce_ls" },
+ vlang = { "vls" },
+ vmasm = { "asm_lsp" },
+ vsh = { "v_analyzer" },
+ vue = { "vuels", "volar", "stylelint_lsp", "tailwindcss", "unocss", "biome", "emmet_ls", "eslint", "htmx" },
+ ["vue-html"] = { "unocss" },
+ vv = { "v_analyzer" },
+ wgsl = { "wgsl_analyzer" },
+ wxss = { "stylelint_lsp" },
+ xhtml = { "ltex_plus", "ltex" },
+ xml = { "lemminx" },
+ xsd = { "lemminx" },
+ xsl = { "lemminx" },
+ xslt = { "lemminx" },
+ yaml = { "azure_pipelines_ls", "gh_actions_ls", "yamlls", "snyk_ls", "spectral", "hydra_lsp" },
+ ["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.lua b/lua/mason-lspconfig/mappings.lua
index 2523aed..c40853f 100644
--- a/lua/mason-lspconfig/mappings.lua
+++ b/lua/mason-lspconfig/mappings.lua
@@ -20,22 +20,7 @@ function M.get_mason_map()
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
+ return require "mason-lspconfig.filetype_mappings"
end
function M.get_all()