Refactor lsp

This commit is contained in:
2023-09-04 04:19:44 +02:00
parent fd5add50ee
commit 42f4ab623e
13 changed files with 292 additions and 304 deletions
+14 -16
View File
@@ -221,7 +221,7 @@ end
function P.reload_server_buf(self, name)
local server = self.servers[name]
local ft_map = {}
for _, ft in ipairs(server.filetypes) do
for _, ft in ipairs(server.lspconfig.filetypes) do
ft_map[ft] = true
end
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
@@ -241,8 +241,8 @@ function P.filetypes(self)
if not self._filetypes then
self._filetypes = {}
local unique = {}
for _, cfg in pairs(self.servers) do
for _, ft in ipairs(cfg.filetypes) do
for _, server in pairs(self.servers) do
for _, ft in ipairs(server.lspconfig.filetypes) do
if not unique[ft] then
table.insert(self._filetypes, ft)
unique[ft] = true
@@ -257,22 +257,21 @@ end
function P.language_servers(self)
if not self._language_servers then
self._language_servers = {}
for name, opts in pairs(self.servers) do
if opts.dependencies ~= nil then
for _, dep in ipairs(opts.dependencies) do
for name, server in pairs(self.servers) do
if server.dependencies ~= nil then
for _, dep in ipairs(server.dependencies) do
if not utils.is_available(dep) then
utils.warn(
"Disabling " .. name .. " because " .. dep .. " is required but not installed",
module_name
)
opts.enabled = false
server.enabled = false
goto next_server
end
end
end
if opts.enabled == true then
opts.config = require("lsp.config." .. name)
if server.enabled == true then
table.insert(self._language_servers, name)
end
::next_server::
@@ -283,18 +282,17 @@ function P.language_servers(self)
end
function P.setup_server(self, name)
local opts = self.servers[name]
local server = self.servers[name]
if opts.enabled ~= true then
if server.enabled ~= true then
return
end
local lspconfig = require("lspconfig")
opts.config.filetypes = opts.filetypes
opts.config.root_dir = lspconfig.util.find_git_ancestor
opts.config.capabilities = self.capabilities
opts.config.on_attach = self.on_attach
lspconfig[name].setup(opts.config)
server.lspconfig.root_dir = lspconfig.util.find_git_ancestor
server.lspconfig.capabilities = self.capabilities
server.lspconfig.on_attach = self.on_attach
lspconfig[name].setup(server.lspconfig)
self:reload_server_buf(name)
end