require("which-key").add({ { "<leader>b", group = "buffer" }, { "<leader>bd", Snacks.bufdelete.delete, name = "delete current" }, { "<leader>bo", Snacks.bufdelete.other, name = "delete others" }, { "<leader>bk", ":noa w<CR>", name = "write w/out format" }, { "<leader>c", group = "code" }, { "<leader>ca", vim.lsp.buf.code_action, name = "code action" }, { "<leader>cd", vim.diagnostic.open_float, name = "diagnostic" }, { "<leader>cr", vim.lsp.buf.rename, name = "rename" }, { "<leader>e", Snacks.explorer.open, name = "explorer" }, { "<leader>f", group = "find" }, { "<leader>fb", Snacks.picker.buffers, name = "buffers" }, { "<leader>ff", Snacks.picker.files, name = "files" }, { "<leader>fg", Snacks.picker.grep, name = "grep" }, { "<leader>g", group = "git" }, { "<leader>gb", group = "blame" }, { "<leader>gbf", ":Gitsigns blame<CR>", name = "file" }, { "<leader>gbh", ":Gitsigns blame_line<CR>", name = "hover" }, { "<leader>gbl", ":Gitsigns toggle_current_line_blame<CR>", name = "virtual text" }, { "<leader>gh", group = "hunk" }, { "<leader>ghr", ":Gitsigns reset_hunk<CR>", name = "reset hunk" }, { "<leader>ghp", ":Gitsigns preview_hunk<CR>", name = "preview hunk" }, { "<leader>s", group = "search" }, { "<leader>ss", Snacks.picker.lsp_workspace_symbols, name = "symbols" }, { "<leader>sg", Snacks.picker.grep, name = "grep" }, { "<leader>sn", Snacks.picker.notifications, name = "notifications" }, { "<leader>u", group = "ui" }, { "<leader>ut", Snacks.picker.colorschemes, name = "colorschemes" }, { "<leader>ul", function() local ll = vim.diagnostic.config().virtual_lines if ll == false then ll = { current_line = true } else ll = false end vim.diagnostic.config({ virtual_lines = ll }) end, name = "toggle lsp lines", }, { "<leader>w", group = "window" }, { "<leader>wh", "<C-w>h", name = "left" }, { "<leader>wj", "<C-w>j", name = "down" }, { "<leader>wk", "<C-w>k", name = "right" }, { "<leader>wl", "<C-w>l", name = "up" }, { "<leader>wq", ":q<CR>", name = "quit" }, { "g", group = "goto" }, { "gd", vim.lsp.buf.definition, name = "definition" }, { "gr", Snacks.picker.lsp_references, nowait = true, name = "references" }, { "H", ":bprev<CR>", name = "previous buffer" }, { "L", ":bnext<CR>", name = "next buffer" }, { "[h", function() require("gitsigns").nav_hunk("prev") end, name = "Next Hunk", }, { "]h", function() require("gitsigns").nav_hunk("next") end, name = "Next Hunk", }, { "[h", function() require("gitsigns").nav_hunk("prev") end, name = "previous hunk" }, { "]h", function() require("gitsigns").nav_hunk("next") end, name = "next hunk" }, }) Snacks.toggle.diagnostics():map("<leader>ud") Snacks.toggle.inlay_hints():map("<leader>ui")