Refactor lsp
This commit is contained in:
+14
-16
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user