summaryrefslogtreecommitdiff
path: root/lua/plugins/lsp/config.lua
diff options
context:
space:
mode:
authorChristian Segundo2024-02-18 08:19:51 +0100
committerChristian Segundo2024-02-18 08:19:51 +0100
commit85d7d7c082bd84d3c701ceec3d477ee37db5c827 (patch)
treeb78f09285c5120783f94cf9c2465a46439af2b71 /lua/plugins/lsp/config.lua
parent7869bf2c310fbed680abd01d45a17057f857bf30 (diff)
downloadconfig-85d7d7c082bd84d3c701ceec3d477ee37db5c827.tar.gz
bootstrap
Diffstat (limited to 'lua/plugins/lsp/config.lua')
-rw-r--r--lua/plugins/lsp/config.lua45
1 files changed, 45 insertions, 0 deletions
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 } },
+ },
+ },
+}