aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-07-10 15:36:32 +0200
committerWilliam Boman <william@redwill.se>2021-07-10 15:44:53 +0200
commit1eb6d67d95d6f892e4151bd75d27903d413d7dd5 (patch)
tree6d8869d2d1b5cd37f1318ed0f10c46ef8b49ab26 /lua/nvim-lsp-installer.lua
parentadd purescriptls (#39) (diff)
downloadmason-1eb6d67d95d6f892e4151bd75d27903d413d7dd5.tar
mason-1eb6d67d95d6f892e4151bd75d27903d413d7dd5.tar.gz
mason-1eb6d67d95d6f892e4151bd75d27903d413d7dd5.tar.bz2
mason-1eb6d67d95d6f892e4151bd75d27903d413d7dd5.tar.lz
mason-1eb6d67d95d6f892e4151bd75d27903d413d7dd5.tar.xz
mason-1eb6d67d95d6f892e4151bd75d27903d413d7dd5.tar.zst
mason-1eb6d67d95d6f892e4151bd75d27903d413d7dd5.zip
import server modules directly
Diffstat (limited to 'lua/nvim-lsp-installer.lua')
-rw-r--r--lua/nvim-lsp-installer.lua97
1 files changed, 91 insertions, 6 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