Do not allow multiple instances of lsp package
This commit is contained in:
+20
-20
@@ -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
@@ -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",
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user