diff options
| author | William Boman <william@redwill.se> | 2023-04-22 19:21:27 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-22 19:21:27 +0200 |
| commit | 6cf89e7b1cb62c7d0b097910eb37c7c3ac2f32b2 (patch) | |
| tree | e5841306d268eb1c65b1e3e76a58fb46ce630ae7 /lua | |
| parent | chore: add version module (#201) (diff) | |
| download | mason-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.lua | 9 | ||||
| -rw-r--r-- | lua/mason-lspconfig/mappings/language.lua | 26 |
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 |
