Files
dotfiles/.config/nvim/lua/plugins/which_key.lua
2025-09-02 03:32:47 +02:00

263 lines
11 KiB
Lua

return {
"folke/which-key.nvim",
event = "VeryLazy",
init = function()
vim.o.timeout = true
vim.o.timeoutlen = 50
end,
opts = {
spec = {
{ "<leader>c", group = "crates" },
{ "<leader>cA", function() require("crates").upgrade_all_crates() end, desc = "Upgrade all crates" },
{ "<leader>cC", function() require("crates").open_creates_io() end, desc = "Open crates.io" },
{ "<leader>cD", function() require("crates").open_documentation() end, desc = "Open documentation" },
{ "<leader>cH", function() require("crates").open_homepage() end, desc = "Open homepage" },
{ "<leader>cR", function() require("crates").open_repository() end, desc = "Open repository" },
{ "<leader>cU", function() require("crates").upgrade_crate() end, desc = "Upgrade crate" },
{
"<leader>cX",
function() require("crates").extract_crate_into_table() end,
desc = "Extract crate into table",
},
{ "<leader>ca", function() require("crates").update_all_crates() end, desc = "Update all crates" },
{
"<leader>cd",
function() require("crates").show_dependencies_popup() end,
desc = "Show dependencies popup",
},
{ "<leader>cf", function() require("crates").show_features_popup() end, desc = "Show features popup" },
{ "<leader>cr", function() require("crates").reload() end, desc = "Reload" },
{ "<leader>ct", function() require("crates").toggle() end, desc = "Toggle" },
{ "<leader>cu", function() require("crates").update_crate() end, desc = "Update crate" },
{ "<leader>cv", function() require("crates").show_versions_popup() end, desc = "Show versions popup" },
{
"<leader>cx",
function() require("crates").expand_plain_crate_to_inline_table() end,
desc = "Expand plain crate to inline table",
},
{ "<leader>lp", "<cmd>Lazy profile<cr>", desc = "show Lazy profiler" },
{ "<leader>e", "<cmd>lua MiniFiles.open()<cr>", desc = "Files w/ Mini" },
{ "<leader>E", "<cmd>Lexplore<cr>", desc = "Files Sidebar" },
{ "<leader>f", group = "Telescope" },
{ "<leader>fb", "<cmd>Telescope buffers<cr>", desc = "Find Buffer" },
{ "<leader>fd", "<cmd>Telescope lsp_document_symbols<cr>", desc = "Find LSP Symbols" },
{ "<leader>ff", "<cmd>Telescope find_files<cr>", desc = "Find File" },
{ "<leader>fh", "<cmd>Telescope help_tags<cr>", desc = "Find Help" },
{ "<leader>fr", "<cmd>Telescope oldfiles<cr>", desc = "Open Recent File", remap = true },
{ "<leader>fs", "<cmd>Telescope live_grep<cr>", desc = "Live Grep" },
{ "<leader>fw", "<cmd>Telescope grep_string<cr>", desc = "Find string under cursor" },
{
"<leader><leader>",
function() require("telescope").extensions.smart_open.smart_open() end,
mode = "n",
silent = true,
desc = "Smart open",
},
{ "<leader>g", group = "Gitsigns" },
{ "<leader>gB", "<cmd>Gitsigns blame<cr>", desc = "Toggle Blame Sidebar" },
{ "<leader>gb", "<cmd>Gitsigns blame_line<cr>", desc = "Show Blame Inline" },
{ "<leader>gd", "<cmd>Gitsigns toggle_deleted<cr>", desc = "Toggle deleted lines" },
{ "<leader>gh", group = "hunks" },
{ "<leader>ghl", "<cmd>Gitsigns setloclist<cr>", desc = "List file Changes" },
{ "<leader>ghn", "<cmd>Gitsigns nav_hunk<cr>", desc = "Nav Hunk" },
{ "<leader>gr", group = "reset" },
{ "<leader>grb", "<cmd>Gitsigns reset_buffer<cr>", desc = "Reset Buffer" },
{ "<leader>grh", "<cmd>Gitsigns reset_hunk<cr>", desc = "Reset Hunk" },
{ "<leader>gs", group = "stage" },
{ "<leader>gsb", "<cmd>Gitsigns stage_buffer<cr>", desc = "Stage Buffer" },
{ "<leader>gsh", "<cmd>Gitsigns stage_hunk<cr>", desc = "Stage Hunk" },
{ "<leader>gu", "<cmd>Gitsigns undo_stage_hunk<cr>", desc = "Undo Stage Hunk" },
-- lsp and debugging
{
"<leader>i",
function() require("conform").format({ async = true }) end,
desc = "Auto format file with linter(?), also on F3",
},
{
"F3",
function() require("conform").format({ async = true }) end,
mode = "ni",
desc = "Auto format file with formatter",
},
{ "<leader>le", vim.diagnostic.open_float, desc = "Open diagnostic float" },
{ "<leader>K", desc = "Show definition" },
-- { "<Leader>d", group = "Debugging" },
-- {
-- { mode = "n" },
-- { "<Leader>dn", require("dap").new, desc = "Start Debugger" },
-- { "<Leader>db", require("dap").toggle_breakpoint, desc = "Toggle breakpoint" },
-- { "<Leader>dc", require("dap").continue, desc = "Continue" },
-- },
-- trouble plugin
{ "<leader>xx", "<cmd>Trouble diagnostics toggle<cr>", desc = "Diagnostics (Trouble)" },
{
"<leader>xX",
"<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
desc = "Buffer Diagnostics (Trouble)",
},
{ "<leader>xs", "<cmd>Trouble symbols toggle focus=false<cr>", desc = "Symbols (Trouble)" },
{
"<leader>xl",
"<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
desc = "LSP Definitions / references / ... (Trouble)",
},
{ "<leader>xL", "<cmd>Trouble loclist toggle<cr>", desc = "Location List (Trouble)" },
{ "<leader>xQ", "<cmd>Trouble qflist toggle<cr>", desc = "Quickfix List (Trouble)" },
-- QOL shortcuts
{ "<leader>n", "<cmd>nohl<cr>", desc = "Stop highlighting search results" },
{ "<leader>m", "<cmd>NoiceDismiss<cr>", desc = "Dismiss notifications" },
{ "<leader>M", "<cmd>Markview toggle<cr>", desc = "Markview toggle source view" },
{ "<leader>r", group = "Rename" },
{ "<leader>rr", vim.lsp.buf.rename, opts, desc = "Rename Variable" },
{ "<leader>s", group = "Sessions" },
{ "<leader>sl", function() require("nvim-possession").list() end, desc = "List sesssions" },
{ "<leader>sn", function() require("nvim-possession").new() end, desc = "Create new session" },
{ "<leader>su", function() require("nvim-possession").update() end, desc = "Update Session" },
{ "<leader>sd", function() require("nvim-possession").delete() end, desc = "Delete Session" },
{ "<leader>t", group = "tabs" },
{ "<leader>ta", "<cmd>tabnew<cr>", desc = "Add new Tab" },
{ "<leader>tc", "<cmd>tabclose<cr>", desc = "Close Tab" },
{ "<leader>tf", "<cmd>tabfirst<cr>", desc = "First Tab" },
{ "<leader>tl", "<cmd>tablast<cr>", desc = "Last Tab" },
{ "<leader>tm", group = "Move Tab" },
{ "<leader>tmf", "<cmd>tabmove 0<cr>", desc = "Move Tab to First" },
{ "<leader>tmi", ":tabmove ", desc = "Input position to move Tab to" },
{ "<leader>tml", "<cmd>tabmove $<cr>", desc = "Move Tab to Last" },
{ "<leader>tn", "<cmd>tabnext<cr>", desc = "Next Tab" },
{ "<leader>tp", "<cmd>tabprevious<cr>", desc = "Previous Tab" },
{ "<leader>u", desc = "Toggle undo-tree" },
{ "<leader>w", group = "Workspaces + Whichkey" },
{ "<leader>wa", desc = "Add workspace folder" },
{ "<leader>wr", desc = "Remove workspace folder" },
{ "<leader>ww", "<cmd>WhichKey<cr>", desc = "Show keybindings" },
{ "<leader>y", desc = "Copy to system clipboard" },
{ "<leader>Y", desc = "Copy line to system clipboard" },
-- mini.nvim additions
{ "va", group = "select around" }, --{{{1 mini.ai
{ "va(", desc = "() parens" },
{ "va)", desc = "() parens" },
{ "va[", desc = "[] brackets" },
{ "va]", desc = "[] brackets" },
{ "va{", desc = "{} braces" },
{ "va}", desc = "{} braces" },
{ "va<", desc = "<> braces" },
{ "va>", desc = "<> braces" },
{ 'va"', desc = '""' },
{ "va'", desc = "''" },
{ "val", desc = "last selection" },
{ "vi", group = "select inside" },
{ "vi(", desc = "() parens" },
{ "vi)", desc = "() parens" },
{ "vi[", desc = "[] brackets" },
{ "vi]", desc = "[] brackets" },
{ "vi{", desc = "{} braces" },
{ "vi}", desc = "{} braces" },
{ "vi<", desc = "<> braces" },
{ "vi>", desc = "<> braces" },
{ 'vi"', desc = '""' },
{ "vi'", desc = "''" },
{ "vil", desc = "last selection" },
--}}}
{ "[", group = "move to prev" }, --{{{2 "brackets"
{ "[B", desc = "First Buffer" },
{ "[b", desc = "Prev Buffer" },
{ "[X", desc = "First Conflict" },
{ "[x", desc = "Prev Conflict" },
{ "[I", desc = "First Indent" },
{ "[i", desc = "Prev Indent" },
{ "[I", desc = "First Indent" },
{ "[i", desc = "Prev Indent" },
{ "[W", desc = "First Window in Tab" },
{ "[w", desc = "Prev Window in Tab" },
{ "[F", desc = "First File" },
{ "[f", desc = "Prev File" },
{ "[O", desc = "First Oldfile" },
{ "[o", desc = "Prev Oldfile" },
{ "[Q", desc = "First Quickfix" },
{ "[q", desc = "Prev Quickfix" },
{ "[Y", desc = "First Yank selection replacing latest put region" },
{ "[y", desc = "Prev Yank selection replacing latest put region" },
{ "]", group = "move next" },
{ "]B", desc = "Last Buffer" },
{ "]b", desc = "Next Buffer" },
{ "]X", desc = "Last Conflict" },
{ "]x", desc = "Next Conflict" },
{ "]I", desc = "Last Indent" },
{ "]i", desc = "Next Indent" },
{ "]I", desc = "Last Indent" },
{ "]i", desc = "Next Indent" },
{ "]W", desc = "Last Window in Tab" },
{ "]w", desc = "Next Window in Tab" },
{ "]F", desc = "Last File" },
{ "]f", desc = "Next File" },
{ "]O", desc = "Last Oldfile" },
{ "]o", desc = "Next Oldfile" },
{ "]Q", desc = "Last Quickfix" },
{ "]q", desc = "Next Quickfix" },
{ "]Y", desc = "Last Yank selection replacing latest put region" },
{ "]y", desc = "Next Yank selection replacing latest put region" },
--}}}
{ "gcc", desc = "Comment Line" },
{
mode = { "v" },
{ "gc", group = "Comment" },
{ "g=", desc = "evaluate expression" },
{ "gm", desc = "duplicate" },
{ "gr", desc = "replace with register" },
{ "gs", desc = "sort" },
{ "gx", desc = "exchange region" },
},
-- These somehow have no effect whatsoever
-- { "c", group = "change" },
-- { "c[", group = "back" },
-- { "c]", group = "forward" },
-- { "cg", group = "jump" },
--
-- { "d", group = "delete" },
-- { "d[", group = "back" },
-- { "d]", group = "forward" },
-- { "dg", group = "jump" },
{ "K", desc = "Show definition" },
{ "[", group = "jump backward" },
{ "[c", desc = "Previous diff change" },
{ "[d", desc = "Previous Diagnostic" },
{ "[h", "<cmd>Gitsigns prev_hunk<cr><cr>", desc = "Previous changed git block" },
{ "]", group = "jump forward" },
{ "]c", desc = "Next diff change" },
{ "]d", desc = "Next Diagnostic" },
{ "]h", "<cmd>Gitsigns next_hunk<cr><cr>", desc = "Next changed git block" },
{ "g", group = "lsp functions" },
{ "gD", desc = "go to declaration" },
{ "gd", desc = "go to definition" },
{ "gi", desc = "show implementations" },
{ "gr", desc = "list all references to symbol under cursor" },
--undotree
{ "j", desc = "jump to next undo node" },
{ "gj", desc = "jump to the parent node of the node under the cursor" },
{ "k", desc = "jump to previous undo node" },
{ "J", desc = "jump to next undo node and undo to this state" },
{ "K", desc = "jump to previous undo node and undo to this state" },
{ "q", desc = "quit undotree" },
{ "p", desc = "jump into undetree diff window" },
{ "<cr>", desc = "undo to this state" },
},
},
}