diff options
| author | William Boman <william@redwill.se> | 2022-07-20 04:20:33 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-20 04:20:33 +0200 |
| commit | 18ba6237b5a9ed38ad82d8427c4d0d41fccdf205 (patch) | |
| tree | bd064d0c720acc50701a1cb0f644c005c53e3c71 /lua | |
| parent | fix(mason-lspconfig): patch some server's cmd on Windows (#100) (diff) | |
| download | mason-18ba6237b5a9ed38ad82d8427c4d0d41fccdf205.tar mason-18ba6237b5a9ed38ad82d8427c4d0d41fccdf205.tar.gz mason-18ba6237b5a9ed38ad82d8427c4d0d41fccdf205.tar.bz2 mason-18ba6237b5a9ed38ad82d8427c4d0d41fccdf205.tar.lz mason-18ba6237b5a9ed38ad82d8427c4d0d41fccdf205.tar.xz mason-18ba6237b5a9ed38ad82d8427c4d0d41fccdf205.tar.zst mason-18ba6237b5a9ed38ad82d8427c4d0d41fccdf205.zip | |
refactor(omnisharp)!: separate mono into its own package (#101)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/mason-lspconfig/mappings/server.lua | 2 | ||||
| -rw-r--r-- | lua/mason-lspconfig/server_configurations/omnisharp/README.md | 6 | ||||
| -rw-r--r-- | lua/mason-lspconfig/server_configurations/omnisharp/init.lua | 31 | ||||
| -rw-r--r-- | lua/mason-lspconfig/win-exepath-compat.lua | 1 | ||||
| -rw-r--r-- | lua/mason-registry/index.lua | 3 | ||||
| -rw-r--r-- | lua/mason-registry/omnisharp-mono/init.lua | 45 | ||||
| -rw-r--r-- | lua/mason-registry/omnisharp/init.lua (renamed from lua/mason-registry/omnisharp-roslyn/init.lua) | 31 | ||||
| -rw-r--r-- | lua/mason-registry/r-languageserver/init.lua | 2 | ||||
| -rw-r--r-- | lua/mason-schemas/lsp/omnisharp.lua (renamed from lua/mason-schemas/lsp/omnisharp-roslyn.lua) | 0 | ||||
| -rw-r--r-- | lua/mason/mappings/language.lua | 2 |
10 files changed, 73 insertions, 50 deletions
diff --git a/lua/mason-lspconfig/mappings/server.lua b/lua/mason-lspconfig/mappings/server.lua index f8d389e0..939042c9 100644 --- a/lua/mason-lspconfig/mappings/server.lua +++ b/lua/mason-lspconfig/mappings/server.lua @@ -66,7 +66,7 @@ M.lspconfig_to_package = { ["nickel_ls"] = "nickel-lang-lsp", ["nimls"] = "nimlsp", ["ocamllsp"] = "ocaml-lsp", - ["omnisharp"] = "omnisharp-roslyn", + ["omnisharp"] = "omnisharp", ["opencl_ls"] = "opencl-language-server", ["perlnavigator"] = "perlnavigator", ["phpactor"] = "phpactor", diff --git a/lua/mason-lspconfig/server_configurations/omnisharp/README.md b/lua/mason-lspconfig/server_configurations/omnisharp/README.md index 3aec548b..78255785 100644 --- a/lua/mason-lspconfig/server_configurations/omnisharp/README.md +++ b/lua/mason-lspconfig/server_configurations/omnisharp/README.md @@ -3,12 +3,14 @@ ## How to enable 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_mono` setting like so: +To run the server using the Mono runtime, set the `use_modern_net` setting to `false`, like so: + +__This requires the `omnisharp-mono` package to be installed.__ ```lua local lspconfig = require("lspconfig") lspconfig.omnisharp.setup { - use_mono = true + use_modern_net = false } ``` diff --git a/lua/mason-lspconfig/server_configurations/omnisharp/init.lua b/lua/mason-lspconfig/server_configurations/omnisharp/init.lua index cb925b3f..274ff182 100644 --- a/lua/mason-lspconfig/server_configurations/omnisharp/init.lua +++ b/lua/mason-lspconfig/server_configurations/omnisharp/init.lua @@ -1,32 +1,5 @@ -local path = require "mason-core.path" - ----@param install_dir string ----@param use_mono boolean -local function generate_cmd(install_dir, use_mono) - if use_mono then - return { - "mono", - path.concat { install_dir, "omnisharp-mono", "OmniSharp.exe" }, - "--languageserver", - "--hostPID", - tostring(vim.fn.getpid()), - } - else - return { - "dotnet", - path.concat { install_dir, "omnisharp", "OmniSharp.dll" }, - "--languageserver", - "--hostPID", - tostring(vim.fn.getpid()), - } - end -end - ----@param install_dir string -return function(install_dir) +return function(install_dir, config) return { - on_new_config = function(config) - config.cmd = generate_cmd(install_dir, config.use_mono) - end, + cmd = { config.use_modern_net == false and "omnisharp-mono" or "omnisharp" }, } end diff --git a/lua/mason-lspconfig/win-exepath-compat.lua b/lua/mason-lspconfig/win-exepath-compat.lua index c8743d62..995bb6db 100644 --- a/lua/mason-lspconfig/win-exepath-compat.lua +++ b/lua/mason-lspconfig/win-exepath-compat.lua @@ -43,6 +43,7 @@ return { ["nickel_ls"] = true, ["nimls"] = true, ["ocamllsp"] = true, + ["omnisharp"] = true, ["perlnavigator"] = true, ["phpactor"] = true, ["prosemd_lsp"] = true, diff --git a/lua/mason-registry/index.lua b/lua/mason-registry/index.lua index 21fb2514..ccc054d9 100644 --- a/lua/mason-registry/index.lua +++ b/lua/mason-registry/index.lua @@ -93,7 +93,8 @@ return { nimlsp = "mason-registry.nimlsp", ["node-debug2-adapter"] = "mason-registry.node-debug2-adapter", ["ocaml-lsp"] = "mason-registry.ocaml-lsp", - ["omnisharp-roslyn"] = "mason-registry.omnisharp-roslyn", + omnisharp = "mason-registry.omnisharp", + ["omnisharp-mono"] = "mason-registry.omnisharp-mono", ["opencl-language-server"] = "mason-registry.opencl-language-server", perlnavigator = "mason-registry.perlnavigator", ["php-debug-adapter"] = "mason-registry.php-debug-adapter", diff --git a/lua/mason-registry/omnisharp-mono/init.lua b/lua/mason-registry/omnisharp-mono/init.lua new file mode 100644 index 00000000..53dd8e4c --- /dev/null +++ b/lua/mason-registry/omnisharp-mono/init.lua @@ -0,0 +1,45 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "omnisharp-mono", + desc = [[OmniSharp language server based on Roslyn workspaces. This version of Omnisharp requires Mono to be installed on Linux & macOS.]], + homepage = "https://github.com/OmniSharp/omnisharp-roslyn", + languages = { Pkg.Lang["C#"] }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + platform.when { + unix = function() + github + .untargz_release_file({ + repo = "OmniSharp/omnisharp-roslyn", + asset_file = coalesce( + when(platform.is.mac, "omnisharp-osx.tar.gz"), + when(platform.is.linux_x64, "omnisharp-linux-x64.tar.gz"), + when(platform.is.linux_x86, "omnisharp-linux-x86.tar.gz") + ), + }) + .with_receipt() + ctx:link_bin("omnisharp-mono", "run") + end, + win = function() + github + .unzip_release_file({ + repo = "OmniSharp/omnisharp-roslyn", + asset_file = coalesce( + when(platform.is.win_x64, "omnisharp-win-x64.zip"), + when(platform.is.win_x86, "omnisharp-win-x86.zip") + ), + }) + .with_receipt() + ctx:link_bin("omnisharp-mono", "OmniSharp.exe") + end, + } + end, +} diff --git a/lua/mason-registry/omnisharp-roslyn/init.lua b/lua/mason-registry/omnisharp/init.lua index 1f349eac..73c52d58 100644 --- a/lua/mason-registry/omnisharp-roslyn/init.lua +++ b/lua/mason-registry/omnisharp/init.lua @@ -2,21 +2,21 @@ local Pkg = require "mason-core.package" local platform = require "mason-core.platform" local _ = require "mason-core.functional" local github = require "mason-core.managers.github" +local path = require "mason-core.path" local coalesce, when = _.coalesce, _.when return Pkg.new { - name = "omnisharp-roslyn", - desc = [[OmniSharp server (HTTP, STDIO) based on Roslyn workspaces]], + name = "omnisharp", + desc = [[OmniSharp language server based on Roslyn workspaces. This version of Omnisharp requires dotnet (.NET 6.0) to be installed.]], homepage = "https://github.com/OmniSharp/omnisharp-roslyn", languages = { Pkg.Lang["C#"] }, categories = { Pkg.Cat.LSP }, ---@async ---@param ctx InstallContext install = function(ctx) - ctx.fs:mkdir "omnisharp" - ctx:chdir("omnisharp", function() - github.unzip_release_file { + github + .unzip_release_file({ repo = "OmniSharp/omnisharp-roslyn", asset_file = coalesce( when(platform.is.mac_x64, "omnisharp-osx-x64-net6.0.zip"), @@ -26,17 +26,18 @@ return Pkg.new { when(platform.is.win_x64, "omnisharp-win-x64-net6.0.zip"), when(platform.is.win_arm64, "omnisharp-win-arm64-net6.0.zip") ), - } - end) + }) + .with_receipt() - ctx.fs:mkdir "omnisharp-mono" - ctx:chdir("omnisharp-mono", function() - github - .unzip_release_file({ - repo = "OmniSharp/omnisharp-roslyn", - asset_file = "omnisharp-mono.zip", + ctx:link_bin( + "omnisharp", + ctx:write_shell_exec_wrapper( + "omnisharp", + ("dotnet %q"):format(path.concat { + ctx.package:get_install_path(), + "OmniSharp.dll", }) - .with_receipt() - end) + ) + ) end, } diff --git a/lua/mason-registry/r-languageserver/init.lua b/lua/mason-registry/r-languageserver/init.lua index 77cc4c77..10d576b8 100644 --- a/lua/mason-registry/r-languageserver/init.lua +++ b/lua/mason-registry/r-languageserver/init.lua @@ -66,7 +66,7 @@ return Pkg.new { stdin:close() end, } - ctx.fs:write_file("server.R", create_server_script(ctx.handle.package:get_install_path())) + ctx.fs:write_file("server.R", create_server_script(ctx.package:get_install_path())) ctx.receipt:with_primary_source(ctx.receipt.r_package "languageserver") ctx:link_bin( diff --git a/lua/mason-schemas/lsp/omnisharp-roslyn.lua b/lua/mason-schemas/lsp/omnisharp.lua index 7adac3a5..7adac3a5 100644 --- a/lua/mason-schemas/lsp/omnisharp-roslyn.lua +++ b/lua/mason-schemas/lsp/omnisharp.lua diff --git a/lua/mason/mappings/language.lua b/lua/mason/mappings/language.lua index 4ab3babd..6dd8b337 100644 --- a/lua/mason/mappings/language.lua +++ b/lua/mason/mappings/language.lua @@ -14,7 +14,7 @@ return { beancount = { "beancount-language-server" }, bicep = { "bicep-lsp" }, c = { "clangd", "codelldb", "cpplint", "cpptools" }, - ["c#"] = { "csharp-language-server", "netcoredbg", "omnisharp-roslyn" }, + ["c#"] = { "csharp-language-server", "netcoredbg", "omnisharp", "omnisharp-mono" }, ["c++"] = { "clangd", "codelldb", "cpplint", "cpptools" }, clarity = { "clarity-lsp" }, clojure = { "clojure-lsp" }, |
