1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
return {
{
"neovim/nvim-lspconfig",
event = { "BufReadPre", "BufNewFile" },
opts = { servers = {} },
config = function(_, opts)
local add_hook_after = require("lspconfig.util").add_hook_after
local on_attach = function(client, bufnr)
require("nvim-navic").attach(client, bufnr)
end
for lsp, lsp_opts in pairs(opts.servers) do
lsp_opts = lsp_opts or {}
if lsp_opts.on_attach ~= nil then
lsp_opts["on_attach"] =
add_hook_after(on_attach, lsp_opts.on_attach)
end
lsp_opts["capabilities"] =
require("cmp_nvim_lsp").default_capabilities(
lsp_opts.capabilities or {}
)
lsp_opts.capabilities.textDocument.completion.completionItem.snippetSupport =
true
require("lspconfig")[lsp].setup(lsp_opts)
end
end,
init = function()
vim.diagnostic.config({
float = {
source = "always",
format = function(diagnostic)
-- should work for any LSP, see: https://github.com/neovim/neovim/pull/17510
if diagnostic.code then
return string.format(
"(%s) %s",
diagnostic.code,
diagnostic.message
)
end
return diagnostic.message
end,
},
})
end,
dependencies = {
{ "SmiteshP/nvim-navic", opts = { highlight = true } },
},
},
}
|