summaryrefslogtreecommitdiff
path: root/public/nvim/.nvim/lua/plugins/lsp/config.lua
blob: b579720c1c786308dfdb84390d913a6cab49e982 (plain) (blame)
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
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 {})
				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 } },
		},
	},
}