summaryrefslogtreecommitdiff
path: root/lua/plugins/lsp/config.lua
blob: 4a9469a2d34d6632e3aa87069ea1843f867d4e23 (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
return {
   {
      "neovim/nvim-lspconfig",
      event = { "BufReadPre", "BufNewFile" },
      opts = { servers = {} },
      config = function(_, opts)
         for lsp, lsp_opts in pairs(opts.servers) do
            lsp_opts = lsp_opts or {}
            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
         vim.keymap.set('n', 'grd', "<cmd>lua vim.diagnostic.open_float()<cr>", { desc = 'Diagnostics floating window' })
      end,
      init = function()
         -- Show who is emitting the diagnostic
         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
   }
}