aboutsummaryrefslogtreecommitdiffstats
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
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).
-rw-r--r--README.md1
-rw-r--r--lua/mason-lspconfig/init.lua8
-rw-r--r--lua/mason-lspconfig/mappings/filetype.lua4
-rw-r--r--lua/mason-lspconfig/mappings/server.lua1
-rw-r--r--lua/mason-lspconfig/server_config_extensions.lua5
-rw-r--r--lua/mason-lspconfig/server_configurations/julials/init.lua12
-rw-r--r--lua/mason-lspconfig/server_configurations/omnisharp/README.md13
-rw-r--r--lua/mason-lspconfig/server_configurations/omnisharp/init.lua4
-rw-r--r--lua/mason-lspconfig/server_configurations/omnisharp_mono/init.lua5
-rw-r--r--scripts/lua/mason-scripts/mason-lspconfig/generate.lua33
10 files changed, 49 insertions, 37 deletions
diff --git a/README.md b/README.md
index f4332c9..89b7970 100644
--- a/README.md
+++ b/README.md
@@ -140,6 +140,7 @@ local DEFAULT_SETTINGS = {
| C | `clangd` |
| C# | `csharp_ls` |
| C# [(docs)][omnisharp] | `omnisharp` |
+| C# [(docs)][omnisharp] | `omnisharp_mono` |
| C++ | `clangd` |
| CMake | `cmake` |
| CSS | `cssls` |
diff --git a/lua/mason-lspconfig/init.lua b/lua/mason-lspconfig/init.lua
index d6482b3..b57effe 100644
--- a/lua/mason-lspconfig/init.lua
+++ b/lua/mason-lspconfig/init.lua
@@ -11,7 +11,13 @@ function M.setup(config)
settings.set(config)
end
- require "mason-lspconfig.lspconfig_hook"()
+ local ok, err = pcall(function()
+ require "mason-lspconfig.lspconfig_hook"()
+ require "mason-lspconfig.server_config_extensions"()
+ end)
+ if not ok then
+ log.error("Failed to set up lspconfig integration.", err)
+ end
if #settings.current.ensure_installed > 0 then
require "mason-lspconfig.ensure_installed"()
diff --git a/lua/mason-lspconfig/mappings/filetype.lua b/lua/mason-lspconfig/mappings/filetype.lua
index 959ecb8..fe3ba6b 100644
--- a/lua/mason-lspconfig/mappings/filetype.lua
+++ b/lua/mason-lspconfig/mappings/filetype.lua
@@ -22,7 +22,7 @@ return {
cmake = { "cmake" },
cpp = { "clangd" },
crystal = { "crystalline" },
- cs = { "csharp_ls", "omnisharp" },
+ cs = { "csharp_ls", "omnisharp", "omnisharp_mono" },
css = { "cssls", "emmet_ls", "stylelint_lsp", "tailwindcss" },
cucumber = { "cucumber_language_server" },
cuda = { "clangd" },
@@ -144,7 +144,7 @@ return {
["typescript.tsx"] = { "angularls", "denols", "eslint", "rome", "tsserver" },
typescriptreact = { "angularls", "cssmodules_ls", "denols", "emmet_ls", "eslint", "graphql", "rome", "stylelint_lsp", "tailwindcss", "tsserver" },
vala = { "vala_ls" },
- vb = { "omnisharp" },
+ vb = { "omnisharp", "omnisharp_mono" },
verilog = { "svlangserver", "svls", "verible" },
vim = { "vimls" },
visualforce = { "visualforce_ls" },
diff --git a/lua/mason-lspconfig/mappings/server.lua b/lua/mason-lspconfig/mappings/server.lua
index d4cb423..518c5a9 100644
--- a/lua/mason-lspconfig/mappings/server.lua
+++ b/lua/mason-lspconfig/mappings/server.lua
@@ -68,6 +68,7 @@ M.lspconfig_to_package = {
["nimls"] = "nimlsp",
["ocamllsp"] = "ocaml-lsp",
["omnisharp"] = "omnisharp",
+ ["omnisharp_mono"] = "omnisharp-mono",
["opencl_ls"] = "opencl-language-server",
["perlnavigator"] = "perlnavigator",
["phpactor"] = "phpactor",
diff --git a/lua/mason-lspconfig/server_config_extensions.lua b/lua/mason-lspconfig/server_config_extensions.lua
new file mode 100644
index 0000000..2bdffc9
--- /dev/null
+++ b/lua/mason-lspconfig/server_config_extensions.lua
@@ -0,0 +1,5 @@
+return function()
+ local configs = require "lspconfig.configs"
+
+ configs.omnisharp_mono = require "lspconfig.server_configurations.omnisharp"
+end
diff --git a/lua/mason-lspconfig/server_configurations/julials/init.lua b/lua/mason-lspconfig/server_configurations/julials/init.lua
index 6166e35..e5bc6c4 100644
--- a/lua/mason-lspconfig/server_configurations/julials/init.lua
+++ b/lua/mason-lspconfig/server_configurations/julials/init.lua
@@ -31,20 +31,10 @@ return function(install_dir)
end
config.cmd = {
- "julia",
- "--startup-file=no",
- "--history-file=no",
- "--depwarn=no",
- ("--project=%s"):format(path.concat { install_dir, "scripts", "environments", "languageserver" }),
- path.concat { install_dir, "nvim-lsp.jl" },
+ "julia-lsp",
vim.env.JULIA_DEPOT_PATH or "",
- path.concat { install_dir, "symbolstorev5" },
env_path,
}
end,
- cmd_env = {
- JULIA_DEPOT_PATH = path.concat { install_dir, "lsdepot" },
- JULIA_LOAD_PATH = platform.is.win and ";" or ":",
- },
}
end
diff --git a/lua/mason-lspconfig/server_configurations/omnisharp/README.md b/lua/mason-lspconfig/server_configurations/omnisharp/README.md
index 7825578..2b7e601 100644
--- a/lua/mason-lspconfig/server_configurations/omnisharp/README.md
+++ b/lua/mason-lspconfig/server_configurations/omnisharp/README.md
@@ -1,16 +1,15 @@
# omnisharp
-## How to enable Omnisharp Mono
+## How to use Omnisharp Mono
-By default, the `omnisharp` server will use the `dotnet` (NET6) runtime to run the server.
-To run the server using the Mono runtime, set the `use_modern_net` setting to `false`, like so:
+The `omnisharp` server will use the `dotnet` (NET6) runtime to run the server. To run the server using the Mono runtime,
+use the `omnisharp_mono` server instead (**this requires the `omnisharp-mono` package to be installed**).
-__This requires the `omnisharp-mono` package to be installed.__
+**Note:** The `omnisharp_mono` server configuration doesn't exist in `lspconfig` but is provided by `mason-lspconfig`.
+This is done in order to separate the .NET and Mono variants, making both easily accessible.
```lua
local lspconfig = require("lspconfig")
-lspconfig.omnisharp.setup {
- use_modern_net = false
-}
+lspconfig.omnisharp_mono.setup {}
```
diff --git a/lua/mason-lspconfig/server_configurations/omnisharp/init.lua b/lua/mason-lspconfig/server_configurations/omnisharp/init.lua
index 274ff18..466bdfc 100644
--- a/lua/mason-lspconfig/server_configurations/omnisharp/init.lua
+++ b/lua/mason-lspconfig/server_configurations/omnisharp/init.lua
@@ -1,5 +1,5 @@
-return function(install_dir, config)
+return function()
return {
- cmd = { config.use_modern_net == false and "omnisharp-mono" or "omnisharp" },
+ cmd = { "omnisharp" },
}
end
diff --git a/lua/mason-lspconfig/server_configurations/omnisharp_mono/init.lua b/lua/mason-lspconfig/server_configurations/omnisharp_mono/init.lua
new file mode 100644
index 0000000..9512146
--- /dev/null
+++ b/lua/mason-lspconfig/server_configurations/omnisharp_mono/init.lua
@@ -0,0 +1,5 @@
+return function()
+ return {
+ cmd = { "omnisharp-mono" },
+ }
+end
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),