From 08ca032751bfa6df71f22486f7ac4eeb68279e5f Mon Sep 17 00:00:00 2001 From: Janis Hutz Date: Thu, 15 May 2025 15:16:14 +0200 Subject: [PATCH] [LSP] Extract options into separate file --- nvim/lua/lsp-options.lua | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 nvim/lua/lsp-options.lua diff --git a/nvim/lua/lsp-options.lua b/nvim/lua/lsp-options.lua new file mode 100644 index 0000000..a7de13d --- /dev/null +++ b/nvim/lua/lsp-options.lua @@ -0,0 +1,61 @@ +local M = {} + +local keymap = vim.keymap + +local opts = { silent = true } + +M.on_attach = function(client, bufnr) + opts.buffer = bufnr + + -- set keybinds + opts.desc = "Show LSP references" + keymap.set("n", "gR", "Telescope lsp_references", opts) + + opts.desc = "Go to declaration" + keymap.set("n", "gD", ":lua vim.lsp.buf.declaration", opts) + + opts.desc = "Show LSP definitions" + keymap.set("n", "gd", "Telescope lsp_definitions", opts) + + opts.desc = "Show LSP implementations" + keymap.set("n", "gi", "Telescope lsp_implementations", opts) + + opts.desc = "Show LSP type definitions" + keymap.set("n", "gt", "Telescope lsp_type_definitions", opts) + + opts.desc = "See available code actions" + keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) + + opts.desc = "Format current file" + keymap.set("n", "gf", vim.lsp.buf.format, opts) + + opts.desc = "Smart rename" + keymap.set("n", "n", vim.lsp.buf.rename, opts) + + opts.desc = "Show buffer diagnostics" + keymap.set("n", "ga", "Telescope diagnostics bufnr=0", opts) + + opts.desc = "Show line diagnostics" + keymap.set("n", "gA", ":lua vim.diagnostic.open_float()", opts) + + opts.desc = "Go to previous diagnostic" + keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) + + opts.desc = "Go to next diagnostic" + keymap.set("n", "]d", vim.diagnostic.goto_next, opts) + + opts.desc = "Show documentation for what is under cursor" + keymap.set("n", "k", vim.lsp.buf.hover, opts) + + opts.desc = "Restart LSP" + keymap.set("n", "rs", ":LspRestart", opts) + + vim.opt.signcolumn = "yes" -- reserve space for diagnostics +end + +-- used to enable autocompletion (assign to every lsp server config) +-- local capabilities = cmp_nvim_lsp.default_capabilities() +M.capabilities = vim.lsp.protocol.make_client_capabilities() +M.capabilities.textDocument.completion.completionItem.snippetSupport = true + +return M