aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/servers/init.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-10-18 13:59:43 +0200
committerGitHub <noreply@github.com>2021-10-18 13:59:43 +0200
commitcee25503cd6df85366c5106c40cc5240634e647e (patch)
tree6e242bc0b0c5a6c3e40b165323a6c1a9c20576a1 /lua/nvim-lsp-installer/servers/init.lua
parentRemove the pdflatex check (#174) (diff)
downloadmason-cee25503cd6df85366c5106c40cc5240634e647e.tar
mason-cee25503cd6df85366c5106c40cc5240634e647e.tar.gz
mason-cee25503cd6df85366c5106c40cc5240634e647e.tar.bz2
mason-cee25503cd6df85366c5106c40cc5240634e647e.tar.lz
mason-cee25503cd6df85366c5106c40cc5240634e647e.tar.xz
mason-cee25503cd6df85366c5106c40cc5240634e647e.tar.zst
mason-cee25503cd6df85366c5106c40cc5240634e647e.zip
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).
Diffstat (limited to 'lua/nvim-lsp-installer/servers/init.lua')
-rw-r--r--lua/nvim-lsp-installer/servers/init.lua33
1 files changed, 22 insertions, 11 deletions
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)