aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2023-04-22 19:21:27 +0200
committerGitHub <noreply@github.com>2023-04-22 19:21:27 +0200
commit6cf89e7b1cb62c7d0b097910eb37c7c3ac2f32b2 (patch)
treee5841306d268eb1c65b1e3e76a58fb46ce630ae7 /lua
parentchore: add version module (#201) (diff)
downloadmason-lspconfig-6cf89e7b1cb62c7d0b097910eb37c7c3ac2f32b2.tar
mason-lspconfig-6cf89e7b1cb62c7d0b097910eb37c7c3ac2f32b2.tar.gz
mason-lspconfig-6cf89e7b1cb62c7d0b097910eb37c7c3ac2f32b2.tar.bz2
mason-lspconfig-6cf89e7b1cb62c7d0b097910eb37c7c3ac2f32b2.tar.lz
mason-lspconfig-6cf89e7b1cb62c7d0b097910eb37c7c3ac2f32b2.tar.xz
mason-lspconfig-6cf89e7b1cb62c7d0b097910eb37c7c3ac2f32b2.tar.zst
mason-lspconfig-6cf89e7b1cb62c7d0b097910eb37c7c3ac2f32b2.zip
fix: fix language map (#202)
This module was removed from mason, didn't realize it was being used elsewhere.
Diffstat (limited to 'lua')
-rw-r--r--lua/mason-lspconfig/api/command.lua9
-rw-r--r--lua/mason-lspconfig/mappings/language.lua26
2 files changed, 31 insertions, 4 deletions
diff --git a/lua/mason-lspconfig/api/command.lua b/lua/mason-lspconfig/api/command.lua
index 7a7d623..a64c768 100644
--- a/lua/mason-lspconfig/api/command.lua
+++ b/lua/mason-lspconfig/api/command.lua
@@ -9,7 +9,8 @@ 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.mappings.language"
+ local language_mapping = require "mason-lspconfig.mappings.language"
+ local language_map = language_mapping.get_language_map()
return _.filter_map(function(server_specifier)
local server_name, version = Package.Parse(server_specifier)
@@ -18,7 +19,7 @@ local function parse_packages_from_user_args(user_args)
.of_nilable(server_mapping.lspconfig_to_package[server_name])
-- 2. if not, check if it's a language specifier (e.g., "typescript" or "java")
:or_(function()
- return Optional.of_nilable(language_mapping[server_name]):map(function(package_names)
+ return Optional.of_nilable(language_map[server_name]):map(function(package_names)
local package_names = _.filter(function(package_name)
return server_mapping.package_to_lspconfig[package_name] ~= nil
end, package_names)
@@ -131,9 +132,9 @@ end, {
_G.mason_lspconfig_completion = {
available_server_completion = function()
local available_servers = require("mason-lspconfig").get_available_servers()
- local language_mapping = require "mason.mappings.language"
+ local language_mapping = require "mason-lspconfig.mappings.language"
local sort_deduped = _.compose(_.sort_by(_.identity), _.uniq_by(_.identity))
- local completions = sort_deduped(_.concat(_.keys(language_mapping), available_servers))
+ local completions = sort_deduped(_.concat(_.keys(language_mapping.get_language_map()), available_servers))
return table.concat(completions, "\n")
end,
installed_server_completion = function()
diff --git a/lua/mason-lspconfig/mappings/language.lua b/lua/mason-lspconfig/mappings/language.lua
new file mode 100644
index 0000000..380f25d
--- /dev/null
+++ b/lua/mason-lspconfig/mappings/language.lua
@@ -0,0 +1,26 @@
+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