From 85d7d7c082bd84d3c701ceec3d477ee37db5c827 Mon Sep 17 00:00:00 2001 From: Christian Segundo Date: Sun, 18 Feb 2024 08:19:51 +0100 Subject: bootstrap --- lua/plugins/lsp/config.lua | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lua/plugins/lsp/config.lua (limited to 'lua/plugins/lsp/config.lua') diff --git a/lua/plugins/lsp/config.lua b/lua/plugins/lsp/config.lua new file mode 100644 index 0000000..579cfec --- /dev/null +++ b/lua/plugins/lsp/config.lua @@ -0,0 +1,45 @@ +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 } }, + }, + }, +} -- cgit v1.2.3