Refactor lsp package
This commit is contained in:
+17
-17
@@ -24,7 +24,7 @@ P._language_servers = nil
|
|||||||
|
|
||||||
P.capabilities = {}
|
P.capabilities = {}
|
||||||
|
|
||||||
P.servers = {
|
P.config = {
|
||||||
bashls = {},
|
bashls = {},
|
||||||
clangd = {},
|
clangd = {},
|
||||||
cmake = {},
|
cmake = {},
|
||||||
@@ -35,8 +35,8 @@ P.servers = {
|
|||||||
lua_ls = {},
|
lua_ls = {},
|
||||||
}
|
}
|
||||||
|
|
||||||
for name, _ in pairs(P.servers) do
|
for server, _ in pairs(P.config) do
|
||||||
P.servers[name] = require("lsp.config." .. name)
|
P.config[server] = require("lsp.config." .. server)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function ca_rename()
|
local function ca_rename()
|
||||||
@@ -219,7 +219,7 @@ function P.on_attach(client, bufnr)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function P.reload_server_buf(self, name)
|
function P.reload_server_buf(self, name)
|
||||||
local server = self.servers[name]
|
local server = self.config[name]
|
||||||
local ft_map = {}
|
local ft_map = {}
|
||||||
for _, ft in ipairs(server.lspconfig.filetypes) do
|
for _, ft in ipairs(server.lspconfig.filetypes) do
|
||||||
ft_map[ft] = true
|
ft_map[ft] = true
|
||||||
@@ -241,7 +241,7 @@ function P.filetypes(self)
|
|||||||
if not self._filetypes then
|
if not self._filetypes then
|
||||||
self._filetypes = {}
|
self._filetypes = {}
|
||||||
local unique = {}
|
local unique = {}
|
||||||
for _, server in pairs(self.servers) do
|
for _, server in pairs(self.config) do
|
||||||
for _, ft in ipairs(server.lspconfig.filetypes) do
|
for _, ft in ipairs(server.lspconfig.filetypes) do
|
||||||
if not unique[ft] then
|
if not unique[ft] then
|
||||||
table.insert(self._filetypes, ft)
|
table.insert(self._filetypes, ft)
|
||||||
@@ -257,13 +257,13 @@ end
|
|||||||
function P.language_servers(self)
|
function P.language_servers(self)
|
||||||
if not self._language_servers then
|
if not self._language_servers then
|
||||||
self._language_servers = {}
|
self._language_servers = {}
|
||||||
for name, server in pairs(self.servers) do
|
for server, opts in pairs(self.config) do
|
||||||
if server.enabled ~= true then
|
if opts.enabled ~= true then
|
||||||
goto next_server
|
goto next_server
|
||||||
end
|
end
|
||||||
if server.dependencies ~= nil then
|
if opts.dependencies ~= nil then
|
||||||
local not_installed = {}
|
local not_installed = {}
|
||||||
for _, dep in ipairs(server.dependencies) do
|
for _, dep in ipairs(opts.dependencies) do
|
||||||
if not utils.is_installed(dep) then
|
if not utils.is_installed(dep) then
|
||||||
table.insert(not_installed, dep)
|
table.insert(not_installed, dep)
|
||||||
end
|
end
|
||||||
@@ -272,19 +272,19 @@ function P.language_servers(self)
|
|||||||
if #not_installed > 0 then
|
if #not_installed > 0 then
|
||||||
utils.warn(
|
utils.warn(
|
||||||
("Disabling %s because the following required package(s) are not installed: %s"):format(
|
("Disabling %s because the following required package(s) are not installed: %s"):format(
|
||||||
name,
|
server,
|
||||||
table.concat(not_installed, ", ")
|
table.concat(not_installed, ", ")
|
||||||
),
|
),
|
||||||
package_name
|
package_name
|
||||||
)
|
)
|
||||||
server.enabled = false
|
opts.enabled = false
|
||||||
goto next_server
|
goto next_server
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if server.py_module_deps ~= nil then
|
if opts.py_module_deps ~= nil then
|
||||||
local not_installed = {}
|
local not_installed = {}
|
||||||
for _, mod in ipairs(server.py_module_deps) do
|
for _, mod in ipairs(opts.py_module_deps) do
|
||||||
if not utils.python3_module_is_installed(mod) then
|
if not utils.python3_module_is_installed(mod) then
|
||||||
table.insert(not_installed, mod)
|
table.insert(not_installed, mod)
|
||||||
end
|
end
|
||||||
@@ -293,17 +293,17 @@ function P.language_servers(self)
|
|||||||
if #not_installed > 0 then
|
if #not_installed > 0 then
|
||||||
utils.warn(
|
utils.warn(
|
||||||
("Disabling %s because the following required python3 module(s) are not installed: %s"):format(
|
("Disabling %s because the following required python3 module(s) are not installed: %s"):format(
|
||||||
name,
|
server,
|
||||||
table.concat(not_installed, ", ")
|
table.concat(not_installed, ", ")
|
||||||
),
|
),
|
||||||
package_name
|
package_name
|
||||||
)
|
)
|
||||||
server.enabled = false
|
opts.enabled = false
|
||||||
goto next_server
|
goto next_server
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
table.insert(self._language_servers, name)
|
table.insert(self._language_servers, server)
|
||||||
|
|
||||||
::next_server::
|
::next_server::
|
||||||
end
|
end
|
||||||
@@ -313,7 +313,7 @@ function P.language_servers(self)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function P.setup_server(self, name)
|
function P.setup_server(self, name)
|
||||||
local server = self.servers[name]
|
local server = self.config[name]
|
||||||
|
|
||||||
if server.enabled ~= true then
|
if server.enabled ~= true then
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user