aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-08-12 22:17:23 +0200
committerGitHub <noreply@github.com>2022-08-12 22:17:23 +0200
commit3364c6bbddfb5ffdc56a6688ce1865e23cf327d4 (patch)
tree71a6fd0f6a7e10ea14ce7a2eba11200a7abd23c5 /scripts
parentdocs: clarify how setup_handlers() deals with already installed servers (#29) (diff)
downloadmason-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.lua33
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),