aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-11-06 16:01:31 +0100
committerGitHub <noreply@github.com>2021-11-06 16:01:31 +0100
commitb5059efeaadecbc96b042d0866e47f2fb3e7dff9 (patch)
treef3fd452e6df1f98a682242cec9f261a1309ab9b6 /lua/nvim-lsp-installer.lua
parentmoved add-opens and add-modules java options before jar option (#242) (diff)
downloadmason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.tar
mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.tar.gz
mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.tar.bz2
mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.tar.lz
mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.tar.xz
mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.tar.zst
mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.zip
add language aliases to :LspInstall (#232)
Diffstat (limited to 'lua/nvim-lsp-installer.lua')
-rw-r--r--lua/nvim-lsp-installer.lua36
1 files changed, 35 insertions, 1 deletions
diff --git a/lua/nvim-lsp-installer.lua b/lua/nvim-lsp-installer.lua
index 52f8289a..6c2a9f2b 100644
--- a/lua/nvim-lsp-installer.lua
+++ b/lua/nvim-lsp-installer.lua
@@ -7,6 +7,7 @@ local servers = require "nvim-lsp-installer.servers"
local settings = require "nvim-lsp-installer.settings"
local log = require "nvim-lsp-installer.log"
local platform = require "nvim-lsp-installer.platform"
+local language_autocomplete_map = require "nvim-lsp-installer._generated.language_autocomplete_map"
local M = {}
@@ -32,6 +33,14 @@ function M.display()
status_win().open()
end
+function M.get_install_completion()
+ local result = {}
+ local server_names = servers.get_available_server_names()
+ vim.list_extend(result, server_names)
+ vim.list_extend(result, vim.tbl_keys(language_autocomplete_map))
+ return result
+end
+
---Raises an error with the provided message. If in a headless environment,
---will also schedule an immediate shutdown with the provided exit code.
---@param msg string
@@ -114,11 +123,36 @@ function M.uninstall_sync(server_identifiers)
end
end
+---@param server_identifier string
+---@return string,string|nil
+local function translate_language_alias(server_identifier, version)
+ local language_aliases = language_autocomplete_map[server_identifier]
+ if language_aliases then
+ local choices = {}
+ for idx, server_alias in ipairs(language_aliases) do
+ table.insert(choices, ("&%d %s"):format(idx, server_alias))
+ end
+ local choice = vim.fn.confirm(
+ ("The following servers were found for language %q, please select which one you want to install:"):format(
+ server_identifier
+ ),
+ table.concat(choices, "\n"),
+ 0
+ )
+ return language_aliases[choice]
+ end
+ return server_identifier, version
+end
+
--- Queues a server to be installed. Will also open the status window.
--- Use the .on_server_ready(cb) function to register a handler to be executed when a server is ready to be set up.
---@param server_identifier string @The server to install. This can also include a requested version, for example "rust_analyzer@nightly".
function M.install(server_identifier)
- local server_name, version = servers.parse_server_identifier(server_identifier)
+ local server_name, version = translate_language_alias(servers.parse_server_identifier(server_identifier))
+ if not server_name then
+ -- No selection was made
+ return
+ end
local ok, server = servers.get_server(server_name)
if not ok then
return notify(("Unable to find LSP server %s.\n\n%s"):format(server_name, server), vim.log.levels.ERROR)