diff options
| author | William Boman <william@redwill.se> | 2021-11-06 16:01:31 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-06 16:01:31 +0100 |
| commit | b5059efeaadecbc96b042d0866e47f2fb3e7dff9 (patch) | |
| tree | f3fd452e6df1f98a682242cec9f261a1309ab9b6 /lua/nvim-lsp-installer.lua | |
| parent | moved add-opens and add-modules java options before jar option (#242) (diff) | |
| download | mason-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.lua | 36 |
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) |
