summaryrefslogtreecommitdiff
path: root/lua/plugins/lsp/config.lua
blob: ef952b1b22c93af840f634f5c110d84f66bc1136 (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
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
      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
   }
}