From cee25503cd6df85366c5106c40cc5240634e647e Mon Sep 17 00:00:00 2001 From: William Boman Date: Mon, 18 Oct 2021 13:59:43 +0200 Subject: speed up :LspInstall, :LspUninstall, :LspUninstallAll commands (#175) - `:LspUninstallAll` now just nukes the entire install directory immediately, instead of uninstalling each server one by one. There's also a confirmation prompt now. - `:LspInstall` & `:LspUninstall` now sources its autocompletion directly from a Lua table, instead of sourcing the server names from each server module (thus avoiding unnecessary `require` calls). --- lua/nvim-lsp-installer/servers/init.lua | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) (limited to 'lua/nvim-lsp-installer/servers/init.lua') diff --git a/lua/nvim-lsp-installer/servers/init.lua b/lua/nvim-lsp-installer/servers/init.lua index 64359520..94a67b3c 100644 --- a/lua/nvim-lsp-installer/servers/init.lua +++ b/lua/nvim-lsp-installer/servers/init.lua @@ -176,10 +176,6 @@ function M.get_server(server_name) ):format(server_name, "https://github.com/williamboman/nvim-lsp-installer", server_factory) end -local function get_available_server_names() - return vim.tbl_keys(vim.tbl_extend("force", CORE_SERVERS, INITIALIZED_SERVERS)) -end - local function resolve_servers(server_names) return Data.list_map(function(server_name) local ok, server = M.get_server(server_name) @@ -190,20 +186,35 @@ local function resolve_servers(server_names) end, server_names) end +function M.get_available_server_names() + return vim.tbl_keys(vim.tbl_extend("force", CORE_SERVERS, INITIALIZED_SERVERS)) +end + +function M.get_installed_server_names() + return vim.tbl_filter(function(server_name) + return M.is_server_installed(server_name) + end, M.get_available_server_names()) +end + +function M.get_uninstalled_server_names() + return vim.tbl_filter(function(server_name) + return not M.is_server_installed(server_name) + end, M.get_available_server_names()) +end + +-- Expensive to call the first time - loads all server modules. function M.get_available_servers() - return resolve_servers(get_available_server_names()) + return resolve_servers(M.get_available_server_names()) end +-- Somewhat expensive to call the first time (depends on how many servers are currently installed). function M.get_installed_servers() - return resolve_servers(vim.tbl_filter(function(server_name) - return M.is_server_installed(server_name) - end, get_available_server_names())) + return resolve_servers(M.get_installed_server_names()) end +-- Expensive to call the first time (depends on how many servers are currently not installed). function M.get_uninstalled_servers() - return resolve_servers(vim.tbl_filter(function(server_name) - return not M.is_server_installed(server_name) - end, get_available_server_names())) + return resolve_servers(M.get_uninstalled_server_names()) end function M.register(server) -- cgit v1.2.3-70-g09d2