summaryrefslogtreecommitdiff
path: root/lua/custom/plugins/lsp.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/custom/plugins/lsp.lua')
-rw-r--r--lua/custom/plugins/lsp.lua35
1 files changed, 35 insertions, 0 deletions
diff --git a/lua/custom/plugins/lsp.lua b/lua/custom/plugins/lsp.lua
new file mode 100644
index 0000000..256b460
--- /dev/null
+++ b/lua/custom/plugins/lsp.lua
@@ -0,0 +1,35 @@
+return {
+ "neovim/nvim-lspconfig",
+ config = function()
+ local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities())
+
+ local on_attach = function(client, bufnr)
+ local opts = { buffer = bufnr, noremap = true, silent = true }
+
+ if client.server_capabilities.inlayHintProvider then
+ vim.lsp.inlay_hint.enable(true)
+ end
+
+ vim.diagnostic.config({ virtual_text = true })
+
+ vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts)
+ vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts)
+ vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts)
+ end
+
+ local lspc = require("lspconfig")
+ local servers = {
+ "clangd",
+ "gopls",
+ "hls",
+ "nixd",
+ "pylsp",
+ "rust_analyzer",
+ "zls",
+ }
+
+ for _, s in ipairs(servers) do
+ lspc[s].setup({ on_attach = on_attach, capabilities = capabilities })
+ end
+ end,
+}