aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2025-04-21 21:06:36 +0200
committerWilliam Boman <william@redwill.se>2025-04-21 21:53:16 +0200
commit80f2cd7734ff21da4cf1489c9695e440cdcd139f (patch)
tree4e97c2a3b2a416c87985e8efdff6007eaf57823f /lua
parentrefactor!: remove `automatic_installation` setting (diff)
downloadmason-lspconfig-80f2cd7734ff21da4cf1489c9695e440cdcd139f.tar
mason-lspconfig-80f2cd7734ff21da4cf1489c9695e440cdcd139f.tar.gz
mason-lspconfig-80f2cd7734ff21da4cf1489c9695e440cdcd139f.tar.bz2
mason-lspconfig-80f2cd7734ff21da4cf1489c9695e440cdcd139f.tar.lz
mason-lspconfig-80f2cd7734ff21da4cf1489c9695e440cdcd139f.tar.xz
mason-lspconfig-80f2cd7734ff21da4cf1489c9695e440cdcd139f.tar.zst
mason-lspconfig-80f2cd7734ff21da4cf1489c9695e440cdcd139f.zip
refactor!: remove handler functionality, add automatic enable feature
This also removes all generated code/docs, including relevant scripts. Mappings are now also dynamically generated instead of compiled. These changes should reduce churn in this plugin and make it more resilient for external changes in Mason and/or nvim-lspconfig. Mappings have been centralized in the registry instead.
Diffstat (limited to 'lua')
-rw-r--r--lua/mason-lspconfig/api/command.lua23
-rw-r--r--lua/mason-lspconfig/automatic_enable.lua32
-rw-r--r--lua/mason-lspconfig/ensure_installed.lua14
-rw-r--r--lua/mason-lspconfig/init.lua88
-rw-r--r--lua/mason-lspconfig/install.lua12
-rw-r--r--lua/mason-lspconfig/lsp/bicep.lua3
-rw-r--r--lua/mason-lspconfig/lsp/bsl_ls.lua3
-rw-r--r--lua/mason-lspconfig/lsp/cobol_ls.lua10
-rw-r--r--lua/mason-lspconfig/lsp/elixirls.lua3
-rw-r--r--lua/mason-lspconfig/lsp/esbonio.lua3
-rw-r--r--lua/mason-lspconfig/lsp/gradle_ls.lua3
-rw-r--r--lua/mason-lspconfig/lsp/groovyls.lua3
-rw-r--r--lua/mason-lspconfig/lsp/java_language_server.lua3
-rw-r--r--lua/mason-lspconfig/lsp/lexical.lua3
-rw-r--r--lua/mason-lspconfig/lsp/nextls.lua3
-rw-r--r--lua/mason-lspconfig/lsp/omnisharp.lua12
-rw-r--r--lua/mason-lspconfig/lsp/r_language_server.lua3
-rw-r--r--lua/mason-lspconfig/lsp/raku_navigator.lua3
-rw-r--r--lua/mason-lspconfig/lsp/visualforce_ls.lua3
-rw-r--r--lua/mason-lspconfig/lspconfig_hook.lua73
-rw-r--r--lua/mason-lspconfig/mappings.lua78
-rw-r--r--lua/mason-lspconfig/mappings/filetype.lua250
-rw-r--r--lua/mason-lspconfig/mappings/language.lua26
-rw-r--r--lua/mason-lspconfig/mappings/server.lua231
-rw-r--r--lua/mason-lspconfig/server_config_extensions.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/bicep/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/bsl_ls/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/cobol_ls/init.lua12
-rw-r--r--lua/mason-lspconfig/server_configurations/elixirls/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/esbonio/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/gradle_ls/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/groovyls/init.lua3
-rw-r--r--lua/mason-lspconfig/server_configurations/java_language_server/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/julials/README.md28
-rw-r--r--lua/mason-lspconfig/server_configurations/kotlin_language_server/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/lexical/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/ltex/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/nextls/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/omnisharp/README.md15
-rw-r--r--lua/mason-lspconfig/server_configurations/omnisharp/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/omnisharp_mono/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/perlnavigator/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/pylsp/README.md16
-rw-r--r--lua/mason-lspconfig/server_configurations/r_language_server/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/raku_navigator/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/snakeskin_ls/init.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/visualforce_ls/init.lua5
-rw-r--r--lua/mason-lspconfig/settings.lua5
48 files changed, 204 insertions, 850 deletions
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