diff --git a/home/editors/neovim/dap/mappings.lua b/home/editors/neovim/dap/mappings.lua index c21ab24..808bfe4 100644 --- a/home/editors/neovim/dap/mappings.lua +++ b/home/editors/neovim/dap/mappings.lua @@ -1,9 +1,16 @@ -vim.keymap.set("n", "dc", require"dap".continue) -vim.keymap.set("n", "db", require"dap".toggle_breakpoint) -vim.keymap.set("n", "do", require"dap".step_over) -vim.keymap.set("n", "di", require"dap".step_into) -vim.keymap.set("n", "dO", require"dap".step_out) -vim.keymap.set("n", "dh", require"dap".goto_) -vim.keymap.set("n", "dk", require"dap.ui.widgets".hover) -vim.keymap.set("n", "dr", require"dap".repl.open) -vim.keymap.set("n", "dl", require"dap".run_last) +local wk = require("which-key") + +wk.register({ + d = { + name = "Debugging", + c = { require"dap".continue, "Continue" }, + b = { require"dap".toggle_breakpoint, "Toggle breakpoint" }, + o = { require"dap".step_over, "Step over" }, + i = { require"dap".step_into, "Step into" }, + O = { require"dap".step_out, "Step out" }, + h = { require"dap".goto_, "Go to" }, + k = { require"dap.ui.widgets".hover, "Show info" }, + r = { require"dap".repl.open, "Open repl" }, + l = { require"dap".run_last, "Run last" }, + }, +}, { mode = "n", prefix = "" }) diff --git a/home/editors/neovim/diagnostic.lua b/home/editors/neovim/diagnostic.lua index 6001eac..7a13548 100644 --- a/home/editors/neovim/diagnostic.lua +++ b/home/editors/neovim/diagnostic.lua @@ -23,15 +23,29 @@ vim.diagnostic.config { float = true, } -vim.keymap.set("n", "q", vim.diagnostic.setloclist, { silent = true }) -vim.keymap.set("n", "i", function() - vim.diagnostic.open_float({ format = format }) -end, { silent = true }) -vim.keymap.set("n", "[d", function() - vim.diagnostic.goto_prev({ format = format }) -end, { silent = true }) -vim.keymap.set("n", "]d", function() - vim.diagnostic.goto_next({ format = format }) -end, { silent = true }) -vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { silent = true }) -vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { silent = true }) +local wk = require("which-key") + +wk.register({ + q = { vim.diagnostic.setloclist, "Show diagnostics in file" }, + i = { + function() + vim.diagnostic.open_float({ format = format }) + end, + "Show diagnostics in line", + }, +}, { mode = "n", prefix = "" }) + +wk.register({ + ["[d"] = { + function() + vim.diagnostic.goto_prev({ format = format }) + end, + "Go to next diagnostic", + }, + ["]d"] = { + function() + vim.diagnostic.goto_next({ format = format }) + end, + "Go to previous diagnostic", + }, +}, { mode = "n" }) diff --git a/home/editors/neovim/gitsigns.lua b/home/editors/neovim/gitsigns.lua index 8b05d4f..f41d1a2 100644 --- a/home/editors/neovim/gitsigns.lua +++ b/home/editors/neovim/gitsigns.lua @@ -1,32 +1,45 @@ +local wk = require("which-key") + require("gitsigns").setup { on_attach = function(bufnr) - local function map(mode, l, r, opts) - opts = opts or {} - opts.buffer = bufnr - vim.keymap.set(mode, l, r, opts) - end - -- Navigation - map("n", "]c", "&diff ? ']c' : 'Gitsigns next_hunk'", { expr = true }) - map("n", "[c", "&diff ? '[c' : 'Gitsigns prev_hunk'", { expr = true }) + wk.register({ + ["]c"] = { "&diff ? ']c' : 'Gitsigns next_hunk'", "Go to next git sign" }, + ["[c"] = { "&diff ? '[c' : 'Gitsigns prev_hunk'", "Go to previous git sign" }, + }, { mode = "n", buffer = bufnr }) -- Actions - map("n", "hs", ":Gitsigns stage_hunk") - map("v", "hs", ":Gitsigns stage_hunk") - map("n", "hr", ":Gitsigns reset_hunk") - map("v", "hr", ":Gitsigns reset_hunk") - map("n", "hS", "Gitsigns stage_buffer") - map("n", "hu", "Gitsigns undo_stage_hunk") - map("n", "hR", "Gitsigns reset_buffer") - map("n", "hp", "Gitsigns preview_hunk") - map("n", "hb", "lua require'gitsigns'.blame_line{full=true}") - map("n", "tb", "Gitsigns toggle_current_line_blame") - map("n", "hd", "Gitsigns diffthis") - map("n", "hD", "lua require'gitsigns'.diffthis('~')") - map("n", "td", "Gitsigns toggle_deleted") + wk.register({ + h = { + name = "Git signs", + s = { ":Gitsigns stage_hunk", "Stage hunk" }, + r = { ":Gitsigns reset_hunk", "Reset hunk" }, + S = { "Gitsigns stage_buffer", "Stage buffer" }, + u = { "Gitsigns undo_stage_hunk", "Unstage hunk" }, + R = { "Gitsigns reset_buffer", "Reset buffer" }, + p = { "Gitsigns preview_hunk", "Preview hunk" }, + b = { require"gitsigns".blame_line({ full = true }), "Blame line" }, + d = { "Gitsigns diffthis", "Diff" }, + D = { require"gitsigns".diffthis('~'), "Diff" }, + }, + t = { + name = "Git sign toggles", + b = { "Gitsigns toggle_current_line_blame", "Toggle current line" }, + d = { "Gitsigns toggle_deleted", "Toggle deleted" }, + }, + }, { mode = "n", prefix = "", buffer = bufnr }) + wk.register({ + h = { + name = "Git signs", + s = { ":Gitsigns stage_hunk", "Stage hunk" }, + r = { ":Gitsigns reset_hunk", "Reset hunk" }, + }, + }, { mode = "v", prefix = "", buffer = bufnr }) -- Text object - map("o", "ih", ":Gitsigns select_hunk") - map("x", "ih", ":Gitsigns select_hunk") + wk.register({ + ih = { ":Gitsigns select_hunk", "Select hunk", mode = "o" }, + oh = { ":Gitsigns select_hunk", "Select hunk", mode = "x" }, + }, { buffer = bufnr }) end } diff --git a/home/editors/neovim/init.lua b/home/editors/neovim/init.lua index 52a9ff2..c013a8a 100644 --- a/home/editors/neovim/init.lua +++ b/home/editors/neovim/init.lua @@ -35,11 +35,17 @@ vim.g.closetag_regions = { ["javascript.jsx"] = "jsxRegion", } -vim.keymap.set("n", ";", require("telescope.builtin").find_files) -vim.keymap.set("n", ",", require("telescope.builtin").live_grep) +local wk = require("which-key") + +wk.register({ + [";"] = { require("telescope.builtin").find_files, "Find files" }, + [","] = { require("telescope.builtin").live_grep, "Find content" }, +}, { mode = "n" }) require("nvim-tree").setup {} -vim.keymap.set("n", "", require("nvim-tree").toggle) +wk.register({ + [""] = { require("nvim-tree").toggle, "Toggle NVimTree" }, +}, { mode = "n" }) vim.g.netrw_banner = 0 vim.g.netrw_liststyle = 3 diff --git a/home/editors/neovim/lsp/mappings.lua b/home/editors/neovim/lsp/mappings.lua index e03b7ea..cdceca4 100644 --- a/home/editors/neovim/lsp/mappings.lua +++ b/home/editors/neovim/lsp/mappings.lua @@ -1,16 +1,33 @@ -vim.keymap.set("n", "gd", vim.lsp.buf.definition, { silent = true }) -vim.keymap.set("n", "gp", peek_definition, { silent = true }) -vim.keymap.set("n", "gy", vim.lsp.buf.type_definition, { silent = true }) -vim.keymap.set("n", "gi", vim.lsp.buf.implementation, { silent = true }) -vim.keymap.set("n", "gr", vim.lsp.buf.references, { silent = true }) -vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { silent = true }) -vim.keymap.set("n", "K", vim.lsp.buf.hover, { silent = true }) -vim.keymap.set("n", "", vim.lsp.buf.signature_help, { silent = true }) -vim.keymap.set("n", "sd", vim.lsp.buf.document_symbol, { silent = true }) -vim.keymap.set("n", "sw", vim.lsp.buf.workspace_symbol, { silent = true }) -vim.keymap.set("n", "f", function() - vim.lsp.buf.formatting_seq_sync(nil, nil, { "tsserver", "diagnosticls" }) -end, { silent = true }) -vim.keymap.set("n", "a", vim.lsp.buf.code_action, { silent = true }) -vim.keymap.set("n", "r", vim.lsp.buf.rename, { silent = true }) -vim.keymap.set("n", "l", vim.lsp.codelens.run, { silent = true }) +local wk = require("which-key") + +wk.register({ + g = { + name = "Go to", + d = { vim.lsp.buf.definition, "Go to definition" }, + p = { vim.lsp.buf.peek_definition, "Show definition" }, + y = { vim.lsp.buf.type_definition, "Go to type definition" }, + + i = { vim.lsp.buf.implementation, "Go to implementation" }, + r = { vim.lsp.buf.references, "Show references" }, + D = { vim.lsp.buf.declaration, "Show declarations" }, + }, + K = { vim.lsp.buf.hover, "Show info" }, + [""] = { vim.lsp.buf.signature_help, "Show signature" }, +}, { mode = "n" }) + +wk.register({ + s = { + name = "Symbols", + d = { vim.lsp.buf.document_symbol, "Document symbol" }, + w = { vim.lsp.buf.workspace_symbol, "Workspace symbol" }, + }, + f = { + function() + vim.lsp.buf.formatting_seq_sync(nil, nil, { "tsserver", "diagnosticls" }) + end, + "Format file", + }, + a = { vim.lsp.buf.code_action, "Code actions" }, + r = { vim.lsp.buf.rename, "Rename" }, + l = { vim.lsp.codelens.run, "Run codelens" }, +}, { mode = "n", prefix = "" })