diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/nvim-lsp-installer.lua | 12 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/server.lua (renamed from lua/nvim-lsp-installer/installer.lua) | 87 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/bashls.lua (renamed from lua/nvim-lsp-installer/installers/bashls.lua) | 6 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/cssls.lua (renamed from lua/nvim-lsp-installer/installers/cssls.lua) | 6 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/dockerls.lua (renamed from lua/nvim-lsp-installer/installers/dockerls.lua) | 6 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/eslintls.lua (renamed from lua/nvim-lsp-installer/installers/eslintls.lua) | 6 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/graphql.lua (renamed from lua/nvim-lsp-installer/installers/graphql.lua) | 6 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/html.lua (renamed from lua/nvim-lsp-installer/installers/html.lua) | 6 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/jsonls.lua (renamed from lua/nvim-lsp-installer/installers/jsonls.lua) | 6 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/pyright.lua (renamed from lua/nvim-lsp-installer/installers/pyright.lua) | 8 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/solargraph.lua (renamed from lua/nvim-lsp-installer/installers/solargraph.lua) | 6 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/sumneko_lua.lua (renamed from lua/nvim-lsp-installer/installers/sumneko_lua.lua) | 6 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/tsserver.lua (renamed from lua/nvim-lsp-installer/installers/tsserver.lua) | 6 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/vimls.lua (renamed from lua/nvim-lsp-installer/installers/vimls.lua) | 6 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/yamlls.lua (renamed from lua/nvim-lsp-installer/installers/yamlls.lua) | 6 |
15 files changed, 94 insertions, 85 deletions
diff --git a/lua/nvim-lsp-installer.lua b/lua/nvim-lsp-installer.lua index e19d27d7..ecf70ad0 100644 --- a/lua/nvim-lsp-installer.lua +++ b/lua/nvim-lsp-installer.lua @@ -1,11 +1,11 @@ -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') local M = {} -M.get_available_servers = installer.get_available_servers -M.get_installed_servers = installer.get_installed_servers -M.get_uninstalled_servers = installer.get_uninstalled_servers -M.install = installer.install -M.uninstall = installer.uninstall +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.install = server.install +M.uninstall = server.uninstall return M diff --git a/lua/nvim-lsp-installer/installer.lua b/lua/nvim-lsp-installer/server.lua index a6789d7d..5c71922b 100644 --- a/lua/nvim-lsp-installer/installer.lua +++ b/lua/nvim-lsp-installer/server.lua @@ -1,6 +1,7 @@ local M = {} -local _INSTALLERS = { +-- :'<,'>!sort +local _SERVERS = { 'bashls', 'cssls', 'dockerls', @@ -19,82 +20,90 @@ local function escape_quotes(str) return string.format("%q", str) end -local function get_server_installer(server) - return pcall(require, 'nvim-lsp-installer.installers.' .. server) +local function get_server(server_name) + return pcall(require, 'nvim-lsp-installer.servers.' .. server_name) end -function M.get_available_servers() return _INSTALLERS end - -function M.get_installed_servers() - local installed_servers = {} - for _, server in pairs(M.get_available_servers()) do - local ok, module = get_server_installer(server) +local function get_servers(server_names) + local result = {} + for _, server_name in pairs(server_names) do + local ok, server = get_server(server_name) if not ok then - vim.api.nvim_err_writeln("Unable to find installer for " .. server) + vim.api.nvim_err_writeln("Unable to find LSP server " .. server_name) goto continue end - if module:is_installed() then - table.insert(installed_servers, module) - end + result[server_name] = server ::continue:: end - return installed_servers + return result +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() - local installed_servers = M.get_installed_servers() return vim.tbl_filter( function (server) - return not vim.tbl_contains(installed_servers, server) + return not server:is_installed() end, M.get_available_servers() ) end -function M.install(server) - local ok, installer = get_server_installer(server) +function M.install(server_name) + local ok, server = get_server(server_name) if not ok then - return vim.api.nvim_err_writeln("Unable to find installer for " .. server) + return vim.api.nvim_err_writeln("Unable to find LSP server " .. server_name) end - local success, error = pcall(installer.install, installer) + local success, error = pcall(server.install, server) if not success then - pcall(installer.uninstall, installer) - return vim.api.nvim_err_writeln("Failed to install " .. server .. ". Error=" .. vim.inspect(error)) + pcall(server.uninstall, server) + return vim.api.nvim_err_writeln("Failed to install " .. server_name .. ". Error=" .. vim.inspect(error)) end end -function M.uninstall(server) - local ok, installer = get_server_installer(server) +function M.uninstall(server_name) + local ok, server = get_server(server_name) if not ok then - return vim.api.nvim_err_writeln("Unable to find installer for " .. server) + return vim.api.nvim_err_writeln("Unable to find LSP server " .. server_name) end - local success, error = pcall(installer.uninstall, installer) + local success, error = pcall(server.uninstall, server) if not success then - vim.api.nvim_err_writeln('Unable to uninstall ' .. server .. '. Error=' .. vim.inspect(error)) + vim.api.nvim_err_writeln('Unable to uninstall ' .. server_name .. '. Error=' .. vim.inspect(error)) return success end - print("Successfully uninstalled " .. server) + print("Successfully uninstalled " .. server_name) end function M.get_server_root_path(server) return vim.fn.stdpath('data') .. "/lsp_servers/" .. server end -M.Installer = {} -M.Installer.__index = M.Installer +M.Server = {} +M.Server.__index = M.Server ----@class Installer -function M.Installer:new(opts) +---@class Server +function M.Server:new(opts) return setmetatable({ name = opts.name, _install_cmd = opts.install_cmd, _root_dir = opts.root_dir, _default_options = opts.default_options, _pre_install = opts.pre_install, - }, M.Installer) + }, M.Server) end -function M.Installer:setup(opts) +function M.Server:setup(opts) -- We require the lspconfig server here in order to do it as late as possible. -- The reason for this is because once a lspconfig server has been imported, it's -- automatically registered with lspconfig and causes it to show up in :LspInfo and whatnot. @@ -103,17 +112,17 @@ function M.Installer:setup(opts) ) end -function M.Installer:is_installed() +function M.Server:is_installed() return os.execute('test -d ' .. escape_quotes(self._root_dir)) == 0 end -function M.Installer:create_root_dir() +function M.Server:create_root_dir() if os.execute('mkdir -p ' .. escape_quotes(self._root_dir)) ~= 0 then error('Could not create LSP server directory ' .. self._root_dir) end end -function M.Installer:install() +function M.Server:install() if self._pre_install then self._pre_install() end @@ -134,7 +143,7 @@ function M.Installer:install() cwd = self._root_dir, on_exit = function (_, exit_code) if exit_code ~= 0 then - vim.api.nvim_err_writeln("Installer failed for " .. self.name .. ". Exit code: " .. exit_code) + vim.api.nvim_err_writeln("Server installation failed for " .. self.name .. ". Exit code: " .. exit_code) self:uninstall() else print("Successfully installed " .. self.name) @@ -147,7 +156,7 @@ function M.Installer:install() vim.cmd([[startinsert]]) -- so that the buffer tails the term log nicely end -function M.Installer:uninstall() +function M.Server:uninstall() -- giggity if os.execute('rm -rf ' .. escape_quotes(self._root_dir)) ~= 0 then error('Could not remove LSP server directory ' .. self._root_dir) diff --git a/lua/nvim-lsp-installer/installers/bashls.lua b/lua/nvim-lsp-installer/servers/bashls.lua index 68b29c41..224e8d23 100644 --- a/lua/nvim-lsp-installer/installers/bashls.lua +++ b/lua/nvim-lsp-installer/servers/bashls.lua @@ -1,8 +1,8 @@ -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') -local root_dir = installer.get_server_root_path('bash') +local root_dir = server.get_server_root_path('bash') -return installer.Installer:new { +return server.Server:new { name = "bashls", root_dir = root_dir, install_cmd = [[npm install bash-language-server@latest]], diff --git a/lua/nvim-lsp-installer/installers/cssls.lua b/lua/nvim-lsp-installer/servers/cssls.lua index 23010cd2..53bb6378 100644 --- a/lua/nvim-lsp-installer/installers/cssls.lua +++ b/lua/nvim-lsp-installer/servers/cssls.lua @@ -1,8 +1,8 @@ -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') -local root_dir = installer.get_server_root_path('css') +local root_dir = server.get_server_root_path('css') -return installer.Installer:new { +return server.Server:new { name = 'cssls', root_dir = root_dir, install_cmd = [[npm install vscode-css-languageserver-bin]], diff --git a/lua/nvim-lsp-installer/installers/dockerls.lua b/lua/nvim-lsp-installer/servers/dockerls.lua index 021b098b..dbe4645e 100644 --- a/lua/nvim-lsp-installer/installers/dockerls.lua +++ b/lua/nvim-lsp-installer/servers/dockerls.lua @@ -1,8 +1,8 @@ -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') -local root_dir = installer.get_server_root_path('dockerfile') +local root_dir = server.get_server_root_path('dockerfile') -return installer.Installer:new { +return server.Server:new { name = 'dockerls', root_dir = root_dir, install_cmd = [[npm install dockerfile-language-server-nodejs@latest]], diff --git a/lua/nvim-lsp-installer/installers/eslintls.lua b/lua/nvim-lsp-installer/servers/eslintls.lua index 13ddf94f..b8f0f448 100644 --- a/lua/nvim-lsp-installer/installers/eslintls.lua +++ b/lua/nvim-lsp-installer/servers/eslintls.lua @@ -1,7 +1,7 @@ local lspconfig = require'lspconfig' local configs = require'lspconfig/configs' -local installer = require'nvim-lsp-installer.installer' +local server = require'nvim-lsp-installer.server' if not lspconfig.eslintls then configs.eslintls = { @@ -38,7 +38,7 @@ local ConfirmExecutionResult = { approved = 4 } -local root_dir = installer.get_server_root_path('eslint') +local root_dir = server.get_server_root_path('eslint') local install_cmd = [[ git clone https://github.com/microsoft/vscode-eslint .; npm install; @@ -47,7 +47,7 @@ npm install; npx tsc; ]] -return installer.Installer:new { +return server.Server:new { name = "eslintls", root_dir = root_dir, install_cmd = install_cmd, diff --git a/lua/nvim-lsp-installer/installers/graphql.lua b/lua/nvim-lsp-installer/servers/graphql.lua index 471eb3ba..1728e81e 100644 --- a/lua/nvim-lsp-installer/installers/graphql.lua +++ b/lua/nvim-lsp-installer/servers/graphql.lua @@ -1,10 +1,10 @@ local util = require('lspconfig.util') -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') -local root_dir = installer.get_server_root_path('graphql') +local root_dir = server.get_server_root_path('graphql') -return installer.Installer:new { +return server.Server:new { name = "graphql", root_dir = root_dir, install_cmd = [[npm install graphql-language-service-cli@latest graphql]], diff --git a/lua/nvim-lsp-installer/installers/html.lua b/lua/nvim-lsp-installer/servers/html.lua index 8e269e18..36acc429 100644 --- a/lua/nvim-lsp-installer/installers/html.lua +++ b/lua/nvim-lsp-installer/servers/html.lua @@ -1,8 +1,8 @@ -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') -local root_dir = installer.get_server_root_path('html') +local root_dir = server.get_server_root_path('html') -return installer.Installer:new { +return server.Server:new { name = "html", root_dir = root_dir, install_cmd = [[npm install vscode-html-languageserver-bin]], diff --git a/lua/nvim-lsp-installer/installers/jsonls.lua b/lua/nvim-lsp-installer/servers/jsonls.lua index 0298f5ae..e856f50f 100644 --- a/lua/nvim-lsp-installer/installers/jsonls.lua +++ b/lua/nvim-lsp-installer/servers/jsonls.lua @@ -1,8 +1,8 @@ -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') -local root_dir = installer.get_server_root_path('json') +local root_dir = server.get_server_root_path('json') -return installer.Installer:new { +return server.Server:new { name = "jsonls", root_dir = root_dir, install_cmd = [[npm install vscode-json-languageserver-bin]], diff --git a/lua/nvim-lsp-installer/installers/pyright.lua b/lua/nvim-lsp-installer/servers/pyright.lua index a6684def..e356deb0 100644 --- a/lua/nvim-lsp-installer/installers/pyright.lua +++ b/lua/nvim-lsp-installer/servers/pyright.lua @@ -1,13 +1,13 @@ -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') -local root_dir = installer.get_server_root_path('python') +local root_dir = server.get_server_root_path('python') -return installer.Installer:new { +return server.Server:new { name = "pyright", root_dir = root_dir, install_cmd = [[npm install pyright]], default_options = { cmd = { root_dir .. '/node_modules/.bin/pyright-langserver', '--stdio' }, - on_attach = installer.common_on_attach, + on_attach = server.common_on_attach, }, } diff --git a/lua/nvim-lsp-installer/installers/solargraph.lua b/lua/nvim-lsp-installer/servers/solargraph.lua index c227c2b3..c9f99e7c 100644 --- a/lua/nvim-lsp-installer/installers/solargraph.lua +++ b/lua/nvim-lsp-installer/servers/solargraph.lua @@ -1,6 +1,6 @@ -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') -local root_dir = installer.get_server_root_path('ruby') +local root_dir = server.get_server_root_path('ruby') local install_cmd = [[ wget -O solargraph.tar $(curl -s https://api.github.com/repos/castwide/solargraph/tags | grep 'tarball_url' | cut -d\" -f4 | head -n1); @@ -19,7 +19,7 @@ echo 'bundle exec solargraph $*' >> solargraph; chmod +x solargraph; ]] -return installer.Installer:new { +return server.Server:new { name = "solargraph", root_dir = root_dir, install_cmd = install_cmd, diff --git a/lua/nvim-lsp-installer/installers/sumneko_lua.lua b/lua/nvim-lsp-installer/servers/sumneko_lua.lua index 947ae276..81ac2bcb 100644 --- a/lua/nvim-lsp-installer/installers/sumneko_lua.lua +++ b/lua/nvim-lsp-installer/servers/sumneko_lua.lua @@ -1,6 +1,6 @@ -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') -local root_dir = installer.get_server_root_path('lua') +local root_dir = server.get_server_root_path('lua') local install_cmd = [=[ rm -rf lua-language-server; @@ -26,7 +26,7 @@ local uname_alias = { local uname = vim.fn.system('uname'):gsub("%s+", "") local bin_dir = uname_alias[uname] or uname -return installer.Installer:new { +return server.Server:new { name = "sumneko_lua", root_dir = root_dir, install_cmd = install_cmd, diff --git a/lua/nvim-lsp-installer/installers/tsserver.lua b/lua/nvim-lsp-installer/servers/tsserver.lua index 87310e02..0294dc79 100644 --- a/lua/nvim-lsp-installer/installers/tsserver.lua +++ b/lua/nvim-lsp-installer/servers/tsserver.lua @@ -1,8 +1,8 @@ -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') -local root_dir = installer.get_server_root_path('tsserver') +local root_dir = server.get_server_root_path('tsserver') -return installer.Installer:new { +return server.Server:new { name = "tsserver", root_dir = root_dir, install_cmd = [[npm install typescript-language-server]], diff --git a/lua/nvim-lsp-installer/installers/vimls.lua b/lua/nvim-lsp-installer/servers/vimls.lua index 3e6786b7..94041007 100644 --- a/lua/nvim-lsp-installer/installers/vimls.lua +++ b/lua/nvim-lsp-installer/servers/vimls.lua @@ -1,8 +1,8 @@ -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') -local root_dir = installer.get_server_root_path('vim') +local root_dir = server.get_server_root_path('vim') -return installer.Installer:new { +return server.Server:new { name = "vimls", root_dir = root_dir, install_cmd = [[npm install vim-language-server@latest]], diff --git a/lua/nvim-lsp-installer/installers/yamlls.lua b/lua/nvim-lsp-installer/servers/yamlls.lua index 5d68915a..03f1e75a 100644 --- a/lua/nvim-lsp-installer/installers/yamlls.lua +++ b/lua/nvim-lsp-installer/servers/yamlls.lua @@ -1,8 +1,8 @@ -local installer = require('nvim-lsp-installer.installer') +local server = require('nvim-lsp-installer.server') -local root_dir = installer.get_server_root_path('yaml') +local root_dir = server.get_server_root_path('yaml') -return installer.Installer:new { +return server.Server:new { name = "yamlls", root_dir = root_dir, install_cmd = [[npm install yaml-language-server]], |
