vim.keymap.set("n", "", "nohlsearch") -- Navigation vim.keymap.set("n", "", "", { desc = "Move focus to the left window" }) vim.keymap.set("n", "", "", { desc = "Move focus to the right window" }) vim.keymap.set("n", "", "", { desc = "Move focus to the lower window" }) vim.keymap.set("n", "", "", { desc = "Move focus to the upper window" }) vim.keymap.set("n", "w", ":lua require('harpoon'):list():add()", { desc = "Harpoon: Add file to list" }) vim.keymap.set("n", "e", ":lua require('harpoon').ui:toggle_quick_menu(require('harpoon'):list())", { desc = "Harpoon: Add file to list", }) vim.keymap.set("n", "", ":Ex", { desc = "Open file manager" }) -- Fuzzy find vim.keymap.set("n", "ff", ":lua require('telescope.builtin').find_files()", { desc = "Telescope: [F]ind [F]iles" }) vim.keymap.set("n", "fw", ":lua require('telescope.builtin').live_grep()", { desc = "Telescope: [F]ind [W]ord" }) vim.keymap.set("n", "/", ":lua require('telescope.builtin').current_buffer_fuzzy_find()", { desc = "Telescope: Find in current buffer", }) -- Language Server Protocol & Actions vim.keymap.set("n", "q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" }) vim.keymap.set("n", "t", vim.diagnostic.open_float, { desc = "Open diagnostic" }) vim.api.nvim_create_autocmd("LspAttach", { callback = function(e) ---@param lhs string ---@param rhs string|function ---@param desc string ---@param mode string|string[]? local function map(lhs, rhs, desc, mode) vim.keymap.set(mode or "n", lhs, rhs, { buffer = e.buf, desc = "LSP: " .. desc }) end map("grn", vim.lsp.buf.rename, "[R]e[n]ame") map("gra", vim.lsp.buf.code_action, "[G]oto Code [A]ction", { "n", "x" }) map("grr", ":lua require('telescope.builtin').lsp_references", "[G]oto [R]eferences") map("gri", ":lua require('telescope.builtin').lsp_implementations", "[G]oto [I]mplementation") map("grd", ":lua require('telescope.builtin').lsp_definitions", "[G]oto [D]efinition") map("grt", ":lua require('telescope.builtin').lsp_type_definitions", "[G]oto [T]ype Definition") map("grD", vim.lsp.buf.declaration, "[G]oto [D]eclaration") map("gO", ":lua require('telescope.builtin').lsp_document_symbols", "[O]pen Document Symbols") map("gW", ":lua require('telescope.builtin').lsp_dynamic_workspace_symbols", "Open [W]orkspace Symbols") end, group = vim.api.nvim_create_augroup("dot-lsp-attach-keymaps", { clear = true }), })