From d19ea3cbbda96db3099c2c27f4e070f90e14e1cb Mon Sep 17 00:00:00 2001 From: Dmitry Kudryavtsev Date: Wed, 1 Jun 2022 21:32:59 +0300 Subject: [PATCH] added wgsl_analyzer server (#719) --- .../_generated/filetype_map.lua | 1 + .../_generated/metadata.lua | 3 +++ .../core/managers/cargo/init.lua | 12 +++++++++++- lua/nvim-lsp-installer/servers/init.lua | 1 + .../servers/wgsl_analyzer/init.lua | 19 +++++++++++++++++++ tests/core/managers/cargo_spec.lua | 17 +++++++++++++++++ 6 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 lua/nvim-lsp-installer/servers/wgsl_analyzer/init.lua diff --git a/lua/nvim-lsp-installer/_generated/filetype_map.lua b/lua/nvim-lsp-installer/_generated/filetype_map.lua index 24057ae716..31470631f6 100644 --- a/lua/nvim-lsp-installer/_generated/filetype_map.lua +++ b/lua/nvim-lsp-installer/_generated/filetype_map.lua @@ -150,6 +150,7 @@ return { vlang = { "vls" }, vmasm = { "asm_lsp" }, vue = { "eslint", "stylelint_lsp", "tailwindcss", "volar", "vuels" }, + wgsl = { "wgsl_analyzer" }, wxss = { "stylelint_lsp" }, xml = { "lemminx" }, xsd = { "lemminx" }, diff --git a/lua/nvim-lsp-installer/_generated/metadata.lua b/lua/nvim-lsp-installer/_generated/metadata.lua index 10cddde2b6..4de4b005c8 100644 --- a/lua/nvim-lsp-installer/_generated/metadata.lua +++ b/lua/nvim-lsp-installer/_generated/metadata.lua @@ -346,6 +346,9 @@ return { vuels = { filetypes = { "vue" } }, + wgsl_analyzer = { + filetypes = { "wgsl" } + }, yamlls = { filetypes = { "yaml", "yaml.docker-compose" } }, diff --git a/lua/nvim-lsp-installer/core/managers/cargo/init.lua b/lua/nvim-lsp-installer/core/managers/cargo/init.lua index 7f9dd0f053..77ec5ae8b3 100644 --- a/lua/nvim-lsp-installer/core/managers/cargo/init.lua +++ b/lua/nvim-lsp-installer/core/managers/cargo/init.lua @@ -35,6 +35,16 @@ function M.install(crate, opts) assert(not opts.git, "Providing a version when installing a git crate is not allowed.") end) + local final_crate = crate + + if opts.git then + final_crate = { "--git" } + if type(opts.git) == "string" then + table.insert(final_crate, opts.git) + end + table.insert(final_crate, crate) + end + ctx.spawn.cargo { "install", "--root", @@ -46,7 +56,7 @@ function M.install(crate, opts) end) :or_else(vim.NIL), opts.features and { "--features", opts.features } or vim.NIL, - opts.git and { "--git", crate } or crate, + final_crate, } return { diff --git a/lua/nvim-lsp-installer/servers/init.lua b/lua/nvim-lsp-installer/servers/init.lua index 6c385675d5..fc049589df 100644 --- a/lua/nvim-lsp-installer/servers/init.lua +++ b/lua/nvim-lsp-installer/servers/init.lua @@ -147,6 +147,7 @@ local CORE_SERVERS = _.set_of { "vls", "volar", "vuels", + "wgsl_analyzer", "yamlls", "zk", "zls", diff --git a/lua/nvim-lsp-installer/servers/wgsl_analyzer/init.lua b/lua/nvim-lsp-installer/servers/wgsl_analyzer/init.lua new file mode 100644 index 0000000000..b7bd9554aa --- /dev/null +++ b/lua/nvim-lsp-installer/servers/wgsl_analyzer/init.lua @@ -0,0 +1,19 @@ +local server = require "nvim-lsp-installer.server" +local cargo = require "nvim-lsp-installer.core.managers.cargo" + +return function(name, root_dir) + local homepage = "https://github.com/wgsl-analyzer/wgsl-analyzer" + + return server.Server:new { + name = name, + root_dir = root_dir, + languages = { "wgsl" }, + homepage = homepage, + installer = cargo.crate("wgsl_analyzer", { + git = homepage, + }), + default_options = { + cmd_env = cargo.env(root_dir), + }, + } +end diff --git a/tests/core/managers/cargo_spec.lua b/tests/core/managers/cargo_spec.lua index eb65aeadb2..a473fe75ce 100644 --- a/tests/core/managers/cargo_spec.lua +++ b/tests/core/managers/cargo_spec.lua @@ -53,6 +53,23 @@ describe("cargo manager", function() end) ) + it( + "should call cargo install with git source and a specific crate", + async_test(function() + installer.run_installer(ctx, cargo.crate("crate-name", { git = "https://my-crate.git" })) + assert.spy(ctx.spawn.cargo).was_called(1) + assert.spy(ctx.spawn.cargo).was_called_with { + "install", + "--root", + ".", + "--locked", + vim.NIL, + vim.NIL, -- --features + { "--git", "https://my-crate.git", "crate-name" }, + } + end) + ) + it( "should respect options", async_test(function()