aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-09-07 02:44:09 +0200
committerGitHub <noreply@github.com>2021-09-07 02:44:09 +0200
commit00294b84031711013a385f18c0fb0e8db84ebaf9 (patch)
treee45de668229c6b41643c5d1fa0fdb5beb0ff60fa /lua/nvim-lsp-installer.lua
parentlazily require servers for faster startup times (#77) (diff)
downloadmason-00294b84031711013a385f18c0fb0e8db84ebaf9.tar
mason-00294b84031711013a385f18c0fb0e8db84ebaf9.tar.gz
mason-00294b84031711013a385f18c0fb0e8db84ebaf9.tar.bz2
mason-00294b84031711013a385f18c0fb0e8db84ebaf9.tar.lz
mason-00294b84031711013a385f18c0fb0e8db84ebaf9.tar.xz
mason-00294b84031711013a385f18c0fb0e8db84ebaf9.tar.zst
mason-00294b84031711013a385f18c0fb0e8db84ebaf9.zip
add direct integration with libuv instead of going through termopen, also implement a UI (#79)
* add direct integration with libuv instead of going through termopen, also implement a UI * alleged free perf boosts yo that's free cycles
Diffstat (limited to 'lua/nvim-lsp-installer.lua')
-rw-r--r--lua/nvim-lsp-installer.lua138
1 files changed, 18 insertions, 120 deletions
diff --git a/lua/nvim-lsp-installer.lua b/lua/nvim-lsp-installer.lua
index ba61d462..27727370 100644
--- a/lua/nvim-lsp-installer.lua
+++ b/lua/nvim-lsp-installer.lua
@@ -1,145 +1,36 @@
local notify = require "nvim-lsp-installer.notify"
local dispatcher = require "nvim-lsp-installer.dispatcher"
+local status_win = require "nvim-lsp-installer.ui.status-win"
+local servers = require "nvim-lsp-installer.servers"
local M = {}
-function Set(list)
- local set = {}
- for _, l in ipairs(list) do
- set[l] = true
- end
- return set
-end
-
--- :'<,'>!sort
-local CORE_SERVERS = Set {
- "angularls",
- "ansiblels",
- "bashls",
- "clangd",
- "clojure_lsp",
- "cmake",
- "cssls",
- "denols",
- "diagnosticls",
- "dockerls",
- "efm",
- "elixirls",
- "elmls",
- "ember",
- "eslintls",
- "fortls",
- "gopls",
- "graphql",
- "groovyls",
- "hls",
- "html",
- "intelephense",
- "jedi_language_server",
- "jsonls",
- "kotlin_language_server",
- "omnisharp",
- "purescriptls",
- "pylsp",
- "pyright",
- "rescriptls",
- "rome",
- "rust_analyzer",
- "solargraph",
- "sqlls",
- "sqls",
- "stylelint_lsp",
- "sumneko_lua",
- "svelte",
- "tailwindcss",
- "terraformls",
- "texlab",
- "tflint",
- "tsserver",
- "vimls",
- "vuels",
- "yamlls",
-}
-
-local CUSTOM_SERVERS_MAP = {}
-
-function M.get_server(server_name)
- -- Registered custom servers have precedence
- if CUSTOM_SERVERS_MAP[server_name] then
- return true, CUSTOM_SERVERS_MAP[server_name]
- end
-
- if not CORE_SERVERS[server_name] then
- return false, ("Server %s does not exist."):format(server_name)
- end
-
- local ok, server = pcall(require, ("nvim-lsp-installer.servers.%s"):format(server_name))
- if ok then
- return true, server
- end
- return false,
- (
- "Unable to import server %s.\n\nThis is an unexpected error, please file an issue at %s with the following information:\n%s"
- ):format(server_name, "https://github.com/williamboman/nvim-lsp-installer", server)
-end
-
-function M.get_available_servers()
- return vim.tbl_map(function(server_name)
- local ok, server = M.get_server(server_name)
- if not ok then
- error(server)
- end
- return server
- end, vim.tbl_keys(
- vim.tbl_extend("force", CORE_SERVERS, CUSTOM_SERVERS_MAP)
- ))
-end
-
-function M.get_installed_servers()
- return vim.tbl_filter(function(server)
- return server:is_installed()
- end, M.get_available_servers())
-end
-
-function M.get_uninstalled_servers()
- return vim.tbl_filter(function(server)
- return not server:is_installed()
- end, M.get_available_servers())
+function M.display()
+ status_win().open()
end
function M.install(server_name)
- local ok, server = M.get_server(server_name)
+ 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)
end
- local success, error = pcall(server.install, server)
- if not success then
- pcall(server.uninstall, server)
- return notify(("Failed to install %s.\n\n%s"):format(server_name, vim.inspect(error)), vim.log.levels.ERROR)
- end
+ status_win().install_server(server)
+ status_win().open()
end
function M.uninstall(server_name)
- local ok, server = M.get_server(server_name)
+ 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)
end
- local success, error = pcall(server.uninstall, server)
- if not success then
- notify(("Unable to uninstall %s.\n\n%s"):format(server_name, vim.inspect(error)), vim.log.levels.ERROR)
- return success
- end
- notify(("Successfully uninstalled %s."):format(server_name))
-end
-
-function M.register(server)
- CUSTOM_SERVERS_MAP[server.name] = server
+ status_win().uninstall_server(server)
+ status_win().open()
end
function M.on_server_ready(cb)
dispatcher.register_server_ready_callback(cb)
vim.schedule(function()
- for _, server in pairs(M.get_installed_servers()) do
+ for _, server in pairs(servers.get_installed_servers()) do
dispatcher.dispatch_server_ready(server)
end
end)
@@ -160,4 +51,11 @@ function M.lsp_attach_proxy()
end)
end
+-- old API
+M.get_server = servers.get_server
+M.get_available_servers = servers.get_available_servers
+M.get_installed_servers = servers.get_installed_servers
+M.get_uninstalled_servers = servers.get_uninstalled_servers
+M.register = servers.register
+
return M