aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/servers/init.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/servers/init.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/servers/init.lua')
-rw-r--r--lua/nvim-lsp-installer/servers/init.lua105
1 files changed, 105 insertions, 0 deletions
diff --git a/lua/nvim-lsp-installer/servers/init.lua b/lua/nvim-lsp-installer/servers/init.lua
new file mode 100644
index 00000000..54932cab
--- /dev/null
+++ b/lua/nvim-lsp-installer/servers/init.lua
@@ -0,0 +1,105 @@
+local Data = require "nvim-lsp-installer.data"
+
+local M = {}
+
+-- :'<,'>!sort
+local CORE_SERVERS = Data.set_of {
+ "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 Data.list_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())
+end
+
+function M.register(server)
+ CUSTOM_SERVERS_MAP[server.name] = server
+end
+
+return M