Do not allow multiple instances of lsp package

This commit is contained in:
2023-09-25 16:15:24 +02:00
parent ac35b77c87
commit 0f5af480d7
3 changed files with 23 additions and 23 deletions
+20 -20
View File
@@ -130,8 +130,8 @@ function P.on_attach(client, bufnr)
vim.opt.updatetime = 300 vim.opt.updatetime = 300
end end
function P.reload_server_buf(self, name) function P.reload_server_buf(name)
local server = self.config[name] local server = P.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
@@ -152,27 +152,27 @@ function P.reload_server_buf(self, name)
end end
end end
function P.filetypes(self) function P.filetypes()
if not self._filetypes then if not P._filetypes then
self._filetypes = {} P._filetypes = {}
local unique = {} local unique = {}
for _, server in pairs(self.config) do for _, server in pairs(P.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(P._filetypes, ft)
unique[ft] = true unique[ft] = true
end end
end end
end end
end end
return self._filetypes return P._filetypes
end end
function P.language_servers(self) function P.language_servers()
if not self._language_servers then if not P._language_servers then
self._language_servers = {} P._language_servers = {}
for server, opts in pairs(self.config) do for server, opts in pairs(P.config) do
if opts.enabled ~= true then if opts.enabled ~= true then
goto next_server goto next_server
end end
@@ -224,17 +224,17 @@ function P.language_servers(self)
end end
end end
table.insert(self._language_servers, server) table.insert(P._language_servers, server)
::next_server:: ::next_server::
end end
end end
return self._language_servers return P._language_servers
end end
function P.setup_server(self, name) function P.setup_server(name)
local server = self.config[name] local server = P.config[name]
if not server or server.enabled ~= true then if not server or server.enabled ~= true then
return return
@@ -247,10 +247,10 @@ function P.setup_server(self, name)
end end
server.lspconfig.root_dir = lspconfig.util.find_git_ancestor server.lspconfig.root_dir = lspconfig.util.find_git_ancestor
server.lspconfig.capabilities = self.capabilities server.lspconfig.capabilities = P.capabilities
server.lspconfig.on_attach = function (...) server.lspconfig.on_attach = function (...)
local resp local resp
ok, resp = pcall(self.on_attach, ...) ok, resp = pcall(P.on_attach, ...)
if not ok then if not ok then
utils.err( utils.err(
("Failed to load on_attach for %s:\n%s"):format(name, resp) ("Failed to load on_attach for %s:\n%s"):format(name, resp)
@@ -263,7 +263,7 @@ function P.setup_server(self, name)
return return
end end
self:reload_server_buf(name) P.reload_server_buf(name)
end end
function P.setup() function P.setup()
@@ -276,7 +276,7 @@ function P.setup()
utils.try_require("mason-lspconfig", package_name, function (mod) utils.try_require("mason-lspconfig", package_name, function (mod)
mod.setup_handlers({ mod.setup_handlers({
function (name) function (name)
P:setup_server(name) P.setup_server(name)
end, end,
}) })
end) end)
+2 -2
View File
@@ -92,7 +92,7 @@ local plugins = {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
config = require("lsp").setup, config = require("lsp").setup,
lazy = true, lazy = true,
ft = require("lsp"):filetypes(), ft = require("lsp").filetypes(),
}, },
{ {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
@@ -105,7 +105,7 @@ local plugins = {
"mfussenegger/nvim-dap", "mfussenegger/nvim-dap",
config = require("plugins.dap").setup, config = require("plugins.dap").setup,
lazy = true, lazy = true,
ft = require("lsp"):filetypes(), ft = require("lsp").filetypes(),
}, },
{ {
"rcarriga/nvim-dap-ui", "rcarriga/nvim-dap-ui",
+1 -1
View File
@@ -21,7 +21,7 @@ local function setup()
-- A list of servers to automatically install if they're not already installed. Example: { "rust_analyzer@nightly", "lua_ls" } -- A list of servers to automatically install if they're not already installed. Example: { "rust_analyzer@nightly", "lua_ls" }
-- This setting has no relation with the `automatic_installation` setting. -- This setting has no relation with the `automatic_installation` setting.
---@type string[] ---@type string[]
ensure_installed = require("lsp"):language_servers(), ensure_installed = require("lsp").language_servers(),
}) })
end end