my neovim configuration
1local M = {} 2 3-- Helper function to set keymap for specific buffer with a description. 4local keymap = function(bufnr, mode, lhs, rhs, desc) 5 vim.keymap.set(mode, lhs, rhs, { buffer = bufnr, desc = desc, silent = true }) 6end 7 8-- capabilities handler 9local cmp_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") 10if cmp_ok then 11 M.capabilities = cmp_nvim_lsp.default_capabilities() 12else 13 M.capabilities = vim.lsp.protocol.make_client_capabilities() 14end 15 16-- on_attach handler 17M.on_attach = function(_, bufnr) 18 keymap(bufnr, "n", "K", vim.lsp.buf.hover, "Show Hover") 19 keymap(bufnr, "n", "gd", vim.lsp.buf.definition, "Goto Definition") 20 keymap(bufnr, "n", "gD", vim.lsp.buf.declaration, "Goto Declaration") 21 keymap(bufnr, "n", "gr", vim.lsp.buf.references, "Goto References") 22 keymap(bufnr, "n", "gI", vim.lsp.buf.implementation, "Goto Implementation") 23 keymap(bufnr, "n", "gs", vim.lsp.buf.signature_help, "Show Signature Help") 24 keymap(bufnr, "n", "gl", vim.diagnostic.open_float, "Show Line Diagnostics") 25 keymap(bufnr, "n", "]d", vim.diagnostic.goto_next, "Next Diagnostic") 26 keymap(bufnr, "n", "[d", vim.diagnostic.goto_prev, "Prev Diagnostic") 27end 28 29return M