diff options
| author | William Boman <william@redwill.se> | 2022-07-16 16:46:23 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-16 16:46:23 +0200 |
| commit | f887633842d44307f260d6ea4b99c0ae24994cfb (patch) | |
| tree | a6b40aa4cd451b3000a6aea3d4a678857129c7a7 /lua/mason-lspconfig/api/command.lua | |
| parent | docs: updates (#83) (diff) | |
| download | mason-f887633842d44307f260d6ea4b99c0ae24994cfb.tar mason-f887633842d44307f260d6ea4b99c0ae24994cfb.tar.gz mason-f887633842d44307f260d6ea4b99c0ae24994cfb.tar.bz2 mason-f887633842d44307f260d6ea4b99c0ae24994cfb.tar.lz mason-f887633842d44307f260d6ea4b99c0ae24994cfb.tar.xz mason-f887633842d44307f260d6ea4b99c0ae24994cfb.tar.zst mason-f887633842d44307f260d6ea4b99c0ae24994cfb.zip | |
feat(mason-lspconfig): add get_installed_servers() method & add more tests (#84)
Diffstat (limited to 'lua/mason-lspconfig/api/command.lua')
| -rw-r--r-- | lua/mason-lspconfig/api/command.lua | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/lua/mason-lspconfig/api/command.lua b/lua/mason-lspconfig/api/command.lua index 814be0ed..5f0da4bf 100644 --- a/lua/mason-lspconfig/api/command.lua +++ b/lua/mason-lspconfig/api/command.lua @@ -3,8 +3,6 @@ local Optional = require "mason-core.optional" local notify = require "mason-core.notify" local _ = require "mason-core.functional" -local M = {} - ---@async ---@param user_args string[]: The arguments, as provided by the user. local function parse_packages_from_user_args(user_args) @@ -76,37 +74,41 @@ local parse_packages_to_install = _.cond { { _.T, _.always {} }, } -vim.api.nvim_create_user_command( - "LspInstall", - a.scope(function(opts) - local packages_to_install = parse_packages_to_install(opts.fargs) - if #packages_to_install > 0 then - local registry = require "mason-registry" - _.each(function(target) - local pkg = registry.get_package(target.package) - pkg:install { version = target.version } - end, packages_to_install) - require("mason.ui").open() - require("mason.ui").set_view "LSP" - end - end), - { - desc = "Install one or more LSP servers.", - nargs = "*", - complete = "custom,v:lua.mason_lspconfig_completion.available_server_completion", - } -) +local LspInstall = a.scope(function(servers) + local packages_to_install = parse_packages_to_install(servers) + if #packages_to_install > 0 then + local registry = require "mason-registry" + _.each(function(target) + local pkg = registry.get_package(target.package) + pkg:install { version = target.version } + end, packages_to_install) + require("mason.ui").open() + require("mason.ui").set_view "LSP" + end +end) -vim.api.nvim_create_user_command("LspUninstall", function(opts) +vim.api.nvim_create_user_command("LspInstall", function(opts) + LspInstall(opts.fargs) +end, { + desc = "Install one or more LSP servers.", + nargs = "*", + complete = "custom,v:lua.mason_lspconfig_completion.available_server_completion", +}) + +local function LspUninstall(servers) require("mason.ui").open() require("mason.ui").set_view "LSP" local registry = require "mason-registry" local server_mapping = require "mason-lspconfig.mappings.server" - for _, server_specifier in ipairs(opts.fargs) do + for _, server_specifier in ipairs(servers) do local package_name = server_mapping.lspconfig_to_package[server_specifier] local pkg = registry.get_package(package_name) pkg:uninstall() end +end + +vim.api.nvim_create_user_command("LspUninstall", function(opts) + LspUninstall(opts.fargs) end, { desc = "Uninstall one or more LSP servers.", nargs = "+", @@ -138,4 +140,7 @@ _G.mason_lspconfig_completion = { end, } -return M +return { + LspInstall = LspInstall, + LspUninstall = LspUninstall, +} |
