From a644f3c68808a5cf3b17e10acfebc0452080a618 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Wed, 9 Jul 2025 10:16:39 +0200 Subject: [PATCH] nvim/lsp: revamp keymaps --- .config/nvim/lua/lsp.lua | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/.config/nvim/lua/lsp.lua b/.config/nvim/lua/lsp.lua index a5191b23..3b35161a 100644 --- a/.config/nvim/lua/lsp.lua +++ b/.config/nvim/lua/lsp.lua @@ -1,22 +1,30 @@ local M = {} +---@type vim.lsp.client.on_attach_cb M.on_attach = function(client, bufnr) local telescope = require("telescope.builtin") local methods = vim.lsp.protocol.Methods - local function nnoremap(bind, callback, userargs) - local args = userargs or {} - args.buffer = bufnr - vim.keymap.set("n", bind, callback, args) + + ---@param bind string + ---@param cmd function | string + ---@param desc string + local function nnoremap(bind, cmd, desc) + local args = { + buffer = bufnr, + desc = "LSP: " .. desc, + } + vim.keymap.set("n", bind, cmd, args) end - nnoremap("K", vim.lsp.buf.hover) - nnoremap("", vim.lsp.buf.signature_help) - nnoremap("gd", telescope.lsp_definitions) - nnoremap("gu", telescope.lsp_references) - nnoremap("ca", vim.lsp.buf.code_action) - nnoremap("cl", vim.lsp.codelens.run) - nnoremap("r", vim.lsp.buf.rename) - nnoremap("f", function() vim.lsp.buf.format { async = true } end) + nnoremap("K", vim.lsp.buf.hover, "hover") + nnoremap("", vim.lsp.buf.signature_help, "signature help") + nnoremap("gd", telescope.lsp_definitions, "goto definition(s) (telescope)") + nnoremap("gu", telescope.lsp_references, "goto usage(s) (telescope)") + nnoremap("ca", vim.lsp.buf.code_action, "code action") + -- TODO: Maybe remove these or use the defaults? + nnoremap("cl", vim.lsp.codelens.run, "run codelens") + nnoremap("r", vim.lsp.buf.rename, "rename symbol") + nnoremap("f", function() vim.lsp.buf.format { async = true } end, "format buffer") local filetype = vim.api.nvim_get_option_value("filetype", { buf = bufnr }) if @@ -31,8 +39,10 @@ end local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) +---@type lsp.ClientCapabilities M.capabilities = capabilities +---@type string|(string|[string,string])[] M.border = { { " ", "FloatBorder" }, { " ", "FloatBorder" },