mirror of https://github.com/folke/neoconf.nvim
fix(lspconfig): dont deepcopy the full config. Do settings only
This commit is contained in:
parent
062f85faa8
commit
37a7205282
|
|
@ -41,7 +41,7 @@ function M.on_new_config(config, root_dir, original_config)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- backup original lsp config
|
-- backup original lsp config
|
||||||
config.original_config = vim.deepcopy(original_config)
|
config.original_settings = vim.deepcopy(original_config.settings or {})
|
||||||
|
|
||||||
root_dir = require("neoconf.workspace").find_root({ file = root_dir })
|
root_dir = require("neoconf.workspace").find_root({ file = root_dir })
|
||||||
local enabled = Settings.get_local(root_dir):get("lspconfig." .. config.name, { expand = true })
|
local enabled = Settings.get_local(root_dir):get("lspconfig." .. config.name, { expand = true })
|
||||||
|
|
@ -74,26 +74,23 @@ function M.on_update(fname)
|
||||||
|
|
||||||
-- reload this client if the global file changed, or its root dir equals the local one
|
-- reload this client if the global file changed, or its root dir equals the local one
|
||||||
if is_global or Util.has_file(settings_root, client.config.root_dir) then
|
if is_global or Util.has_file(settings_root, client.config.root_dir) then
|
||||||
local old_config = vim.deepcopy(client.config.settings)
|
local old_settings = vim.deepcopy(client.config.settings)
|
||||||
|
|
||||||
-- retrieve new settings only
|
-- retrieve new settings only
|
||||||
local new_config = vim.deepcopy(client.config.original_config or {})
|
client.config.settings = vim.deepcopy(client.config.original_settings or {})
|
||||||
|
|
||||||
local document_config = Util.has_lspconfig(client.name) and require("lspconfig")[client.name].document_config
|
local document_config = Util.has_lspconfig(client.name) and require("lspconfig")[client.name].document_config
|
||||||
|
|
||||||
-- re-apply config from any other plugins that were overriding on_new_config
|
-- re-apply config from any other plugins that were overriding on_new_config
|
||||||
if document_config and document_config.on_new_config then
|
if document_config and document_config.on_new_config then
|
||||||
pcall(document_config.on_new_config, new_config, client.config.root_dir)
|
pcall(document_config.on_new_config, client.config, client.config.root_dir)
|
||||||
end
|
end
|
||||||
if client.config.on_new_config then
|
if client.config.on_new_config then
|
||||||
pcall(client.config.on_new_config, new_config, client.config.root_dir)
|
pcall(client.config.on_new_config, client.config, client.config.root_dir)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- only keep the settings
|
|
||||||
client.config.settings = new_config.settings or {}
|
|
||||||
|
|
||||||
-- only send update when confiuration actually changed
|
-- only send update when confiuration actually changed
|
||||||
if not vim.deep_equal(old_config, client.config.settings) then
|
if not vim.deep_equal(old_settings, client.config.settings) then
|
||||||
-- notify the lsp server of thr new config
|
-- notify the lsp server of thr new config
|
||||||
local ok = pcall(client.notify, "workspace/didChangeConfiguration", {
|
local ok = pcall(client.notify, "workspace/didChangeConfiguration", {
|
||||||
settings = client.config.settings,
|
settings = client.config.settings,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue