diff options
| author | William Boman <william@redwill.se> | 2022-08-12 22:17:23 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-12 22:17:23 +0200 |
| commit | 3364c6bbddfb5ffdc56a6688ce1865e23cf327d4 (patch) | |
| tree | 71a6fd0f6a7e10ea14ce7a2eba11200a7abd23c5 /scripts | |
| parent | docs: clarify how setup_handlers() deals with already installed servers (#29) (diff) | |
| download | mason-lspconfig-3364c6bbddfb5ffdc56a6688ce1865e23cf327d4.tar mason-lspconfig-3364c6bbddfb5ffdc56a6688ce1865e23cf327d4.tar.gz mason-lspconfig-3364c6bbddfb5ffdc56a6688ce1865e23cf327d4.tar.bz2 mason-lspconfig-3364c6bbddfb5ffdc56a6688ce1865e23cf327d4.tar.lz mason-lspconfig-3364c6bbddfb5ffdc56a6688ce1865e23cf327d4.tar.xz mason-lspconfig-3364c6bbddfb5ffdc56a6688ce1865e23cf327d4.tar.zst mason-lspconfig-3364c6bbddfb5ffdc56a6688ce1865e23cf327d4.zip | |
fix(omnisharp_mono): add dedicated server entry for omnisharp_mono (#32)
This is done in order to separate the .NET and Mono variants, making
them both equally accessible (you have to jump through hoops to use the
non-default [Mono] variant atm).
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), |
