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 } }