diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/lua/mason-scripts/mason-lspconfig/generate.lua | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/scripts/lua/mason-scripts/mason-lspconfig/generate.lua b/scripts/lua/mason-scripts/mason-lspconfig/generate.lua index 88fdc9d..464de50 100644 --- a/scripts/lua/mason-scripts/mason-lspconfig/generate.lua +++ b/scripts/lua/mason-scripts/mason-lspconfig/generate.lua @@ -1,3 +1,7 @@ +require "mason-lspconfig.server_config_extensions"() +local Optional = require "mason-core.optional" + +local lspconfig = require "lspconfig" local a = require "mason-core.async" local path = require "mason-core.path" local _ = require "mason-core.functional" @@ -7,16 +11,13 @@ local script_utils = require "mason-scripts.utils" local DOCS_DIR = path.concat { vim.loop.cwd(), "doc" } local MASON_LSPCONFIG_DIR = path.concat { vim.loop.cwd(), "lua", "mason-lspconfig" } -local function get_lspconfig(name) - return require(("lspconfig.server_configurations.%s"):format(name)) -end - ---@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 = get_lspconfig(server_name) + local config = + assert(lspconfig[server_name], ("Failed to get config for %s"):format(server_name)).document_config for _, filetype in ipairs(config.default_config.filetypes or {}) do if not filetype_map[filetype] then filetype_map[filetype] = {} @@ -39,10 +40,9 @@ local function ensure_valid_package_name_translations() local registry = require "mason-registry" for lspconfig_server, mason_package in pairs(server_mappings.lspconfig_to_package) do - local lspconfig_ok, server_config = - pcall(require, ("lspconfig.server_configurations.%s"):format(lspconfig_server)) + local server_config = lspconfig[lspconfig_server] local mason_ok, pkg = pcall(registry.get_package, mason_package) - assert(lspconfig_ok and server_config ~= nil, lspconfig_server .. " is not a valid lspconfig server name.") + 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 @@ -52,13 +52,18 @@ local function create_server_mapping_docs() local server_mappings = require "mason-lspconfig.mappings.server" local table_body = _.compose( - _.map(function(pair) + _.filter_map(function(pair) local lspconfig_name, mason_name = assert(pair[1]), assert(pair[2]) - return string.format( - "| [%s](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#%s) | %s |", - lspconfig_name, - lspconfig_name, - mason_name + if not pcall(require, ("lspconfig.server_configurations.%s"):format(lspconfig_name)) then + return Optional.empty() + end + return Optional.of( + string.format( + "| [%s](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#%s) | %s |", + lspconfig_name, + lspconfig_name, + mason_name + ) ) end), _.sort_by(_.head), |
