aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-lsp-installer.lua12
-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]],