aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-lsp-installer.lua97
-rw-r--r--lua/nvim-lsp-installer/server.lua101
2 files changed, 91 insertions, 107 deletions
diff --git a/lua/nvim-lsp-installer.lua b/lua/nvim-lsp-installer.lua
index cea53b8d..e63b8be3 100644
--- a/lua/nvim-lsp-installer.lua
+++ b/lua/nvim-lsp-installer.lua
@@ -2,11 +2,96 @@ local server = require('nvim-lsp-installer.server')
local M = {}
-M.get_available_servers = server.get_available_servers
-M.get_installed_servers = server.get_installed_servers
-M.get_uninstalled_servers = server.get_uninstalled_servers
-M.get_server = server.get_server
-M.install = server.install
-M.uninstall = server.uninstall
+-- :'<,'>!sort | column -t
+local _SERVERS = {
+ ["angularls"] = require("nvim-lsp-installer.servers.angularls"),
+ ["bashls"] = require("nvim-lsp-installer.servers.bashls"),
+ ["clangd"] = require("nvim-lsp-installer.servers.clangd"),
+ ["clojure_lsp"] = require("nvim-lsp-installer.servers.clojure_lsp"),
+ ["cmake"] = require("nvim-lsp-installer.servers.cmake"),
+ ["cssls"] = require("nvim-lsp-installer.servers.cssls"),
+ ["denols"] = require("nvim-lsp-installer.servers.denols"),
+ ["dockerls"] = require("nvim-lsp-installer.servers.dockerls"),
+ ["elixirls"] = require("nvim-lsp-installer.servers.elixirls"),
+ ["elmls"] = require("nvim-lsp-installer.servers.elmls"),
+ ["eslintls"] = require("nvim-lsp-installer.servers.eslintls"),
+ ["fortls"] = require("nvim-lsp-installer.servers.fortls"),
+ ["gopls"] = require("nvim-lsp-installer.servers.gopls"),
+ ["graphql"] = require("nvim-lsp-installer.servers.graphql"),
+ ["hls"] = require("nvim-lsp-installer.servers.hls"),
+ ["html"] = require("nvim-lsp-installer.servers.html"),
+ ["intelephense"] = require("nvim-lsp-installer.servers.intelephense"),
+ ["jsonls"] = require("nvim-lsp-installer.servers.jsonls"),
+ ["omnisharp"] = require("nvim-lsp-installer.servers.omnisharp"),
+ ["purescript"] = require("nvim-lsp-installer.servers.purescriptls"),
+ ["pyright"] = require("nvim-lsp-installer.servers.pyright"),
+ ["rome"] = require("nvim-lsp-installer.servers.rome"),
+ ["rust_analyzer"] = require("nvim-lsp-installer.servers.rust_analyzer"),
+ ["solargraph"] = require("nvim-lsp-installer.servers.solargraph"),
+ ["sumneko_lua"] = require("nvim-lsp-installer.servers.sumneko_lua"),
+ ["svelte"] = require("nvim-lsp-installer.servers.svelte"),
+ ["tailwindcss"] = require("nvim-lsp-installer.servers.tailwindcss"),
+ ["terraformls"] = require("nvim-lsp-installer.servers.terraformls"),
+ ["texlab"] = require("nvim-lsp-installer.servers.texlab"),
+ ["tsserver"] = require("nvim-lsp-installer.servers.tsserver"),
+ ["vimls"] = require("nvim-lsp-installer.servers.vimls"),
+ ["vuels"] = require("nvim-lsp-installer.servers.vuels"),
+ ["yamlls"] = require("nvim-lsp-installer.servers.yamlls"),
+}
+
+function M.get_server(server_name)
+ local server = _SERVERS[server_name]
+ if server then
+ return true, server
+ end
+ return false, ("Server %s does not exist."):format(server_name)
+end
+
+function M.get_available_servers()
+ return vim.tbl_values(_SERVERS)
+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()
+ )
+end
+
+function M.install(server_name)
+ local ok, server = M.get_server(server_name)
+ if not ok then
+ return vim.api.nvim_err_writeln(("Unable to find LSP server %s. Error=%s"):format(server_name, server))
+ end
+ local success, error = pcall(server.install, server)
+ if not success then
+ pcall(server.uninstall, server)
+ return vim.api.nvim_err_writeln(("Failed to install %s. Error=%s"):format(server_name, vim.inspect(error)))
+ end
+end
+
+function M.uninstall(server_name)
+ local ok, server = M.get_server(server_name)
+ if not ok then
+ return vim.api.nvim_err_writeln(("Unable to find LSP server %s. Error=%s"):format(server_name, server))
+ end
+ local success, error = pcall(server.uninstall, server)
+ if not success then
+ vim.api.nvim_err_writeln(("Unable to uninstall %s. Error=%s"):format(server_name, vim.inspect(error)))
+ return success
+ end
+ print(("Successfully uninstalled %s"):format(server_name))
+end
return M
diff --git a/lua/nvim-lsp-installer/server.lua b/lua/nvim-lsp-installer/server.lua
index 8ad2b239..257156e2 100644
--- a/lua/nvim-lsp-installer/server.lua
+++ b/lua/nvim-lsp-installer/server.lua
@@ -3,107 +3,6 @@ local path = require("nvim-lsp-installer.path")
local M = {}
--- :'<,'>!sort
-local _SERVERS = {
- "angularls",
- "bashls",
- "clangd",
- "clojure_lsp",
- "cmake",
- "cssls",
- "denols",
- "dockerls",
- "elixirls",
- "elmls",
- "eslintls",
- "fortls",
- "gopls",
- "graphql",
- "hls",
- "html",
- "intelephense",
- "jsonls",
- "omnisharp",
- "purescriptls",
- "pyright",
- "rome",
- "rust_analyzer",
- "solargraph",
- "sumneko_lua",
- "svelte",
- "tailwindcss",
- "terraformls",
- "texlab",
- "tsserver",
- "vimls",
- "vuels",
- "yamlls",
-}
-
-local function get_servers(server_names)
- local result = {}
- for _, server_name in pairs(server_names) do
- local ok, server = M.get_server(server_name)
- if ok then
- result[server_name] = server
- else
- vim.api.nvim_err_writeln(("Unable to find LSP server %s. Error=%s"):format(server_name, server))
- end
- end
- return result
-end
-
-function M.get_server(server_name)
- return pcall(require, ("nvim-lsp-installer.servers.%s"):format(server_name))
-end
-
-function M.get_available_servers()
- return vim.tbl_values(get_servers(_SERVERS))
-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()
- )
-end
-
-function M.install(server_name)
- local ok, server = M.get_server(server_name)
- if not ok then
- return vim.api.nvim_err_writeln(("Unable to find LSP server %s. Error=%s"):format(server_name, server))
- end
- local success, error = pcall(server.install, server)
- if not success then
- pcall(server.uninstall, server)
- return vim.api.nvim_err_writeln(("Failed to install %s. Error=%s"):format(server_name, vim.inspect(error)))
- end
-end
-
-function M.uninstall(server_name)
- local ok, server = M.get_server(server_name)
- if not ok then
- return vim.api.nvim_err_writeln(("Unable to find LSP server %s. Error=%s"):format(server_name, server))
- end
- local success, error = pcall(server.uninstall, server)
- if not success then
- vim.api.nvim_err_writeln(("Unable to uninstall %s. Error=%s"):format(server_name, vim.inspect(error)))
- return success
- end
- print(("Successfully uninstalled %s"):format(server_name))
-end
-
function M.get_server_root_path(server)
return path.concat { vim.fn.stdpath("data"), "lsp_servers", server }
end