Skip to content

Commit da06969

Browse files
committed
fix: overwrite predefined config only when both are table.
1 parent b636b78 commit da06969

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

lua/modules/configs/completion/mason-lspconfig.lua

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,24 +52,25 @@ please REMOVE your LSP configuration (rust_analyzer.lua) from the `servers` dire
5252
end
5353

5454
local ok, custom_handler = pcall(require, "user.configs.lsp-servers." .. lsp_name)
55+
local predefined_ok, predefined = pcall(require, "completion.servers." .. lsp_name)
5556
-- Use preset if there is no user definition
5657
if not ok then
57-
ok, custom_handler = pcall(require, "completion.servers." .. lsp_name)
58+
ok, custom_handler = predefined_ok, predefined
59+
else
60+
if type(custom_handler) == "table" and type(predefined) == "table" then
61+
custom_handler = vim.tbl_deep_extend("force", predefined, custom_handler)
62+
end
5863
end
64+
5965
if not ok then
6066
-- Default to use factory config for server(s) that doesn't include a spec
6167
nvim_lsp[lsp_name].setup(opts)
62-
return
6368
elseif type(custom_handler) == "function" then
6469
--- Case where language server requires its own setup
6570
--- Make sure to call require("lspconfig")[lsp_name].setup() in the function
6671
--- See `clangd.lua` for example.
6772
custom_handler(opts)
6873
elseif type(custom_handler) == "table" then
69-
local predefined_ok, predefined = pcall(require, "completion.servers." .. lsp_name)
70-
if predefined_ok then
71-
opts = vim.tbl_deep_extend("force", opts, predefined)
72-
end
7374
nvim_lsp[lsp_name].setup(vim.tbl_deep_extend("force", opts, custom_handler))
7475
else
7576
vim.notify(

0 commit comments

Comments
 (0)