return { "folke/which-key.nvim", event = "VeryLazy", init = function() vim.o.timeout = true vim.o.timeoutlen = 50 end, opts = { spec = { { "c", group = "crates" }, { "cA", function() require("crates").upgrade_all_crates() end, desc = "Upgrade all crates" }, { "cC", function() require("crates").open_creates_io() end, desc = "Open crates.io" }, { "cD", function() require("crates").open_documentation() end, desc = "Open documentation" }, { "cH", function() require("crates").open_homepage() end, desc = "Open homepage" }, { "cR", function() require("crates").open_repository() end, desc = "Open repository" }, { "cU", function() require("crates").upgrade_crate() end, desc = "Upgrade crate" }, { "cX", function() require("crates").extract_crate_into_table() end, desc = "Extract crate into table", }, { "ca", function() require("crates").update_all_crates() end, desc = "Update all crates" }, { "cd", function() require("crates").show_dependencies_popup() end, desc = "Show dependencies popup", }, { "cf", function() require("crates").show_features_popup() end, desc = "Show features popup" }, { "cr", function() require("crates").reload() end, desc = "Reload" }, { "ct", function() require("crates").toggle() end, desc = "Toggle" }, { "cu", function() require("crates").update_crate() end, desc = "Update crate" }, { "cv", function() require("crates").show_versions_popup() end, desc = "Show versions popup" }, { "cx", function() require("crates").expand_plain_crate_to_inline_table() end, desc = "Expand plain crate to inline table", }, { "lp", "Lazy profile", desc = "show Lazy profiler" }, { "e", "lua MiniFiles.open()", desc = "Files w/ Mini" }, { "E", "Lexplore", desc = "Files Sidebar" }, { "f", group = "Telescope" }, { "fb", "Telescope buffers", desc = "Find Buffer" }, { "fd", "Telescope lsp_document_symbols", desc = "Find LSP Symbols" }, { "ff", "Telescope find_files", desc = "Find File" }, { "fh", "Telescope help_tags", desc = "Find Help" }, { "fr", "Telescope oldfiles", desc = "Open Recent File", remap = true }, { "fs", "Telescope live_grep", desc = "Live Grep" }, { "fw", "Telescope grep_string", desc = "Find string under cursor" }, { "", function() require("telescope").extensions.smart_open.smart_open() end, mode = "n", silent = true, desc = "Smart open", }, { "g", group = "Gitsigns" }, { "gB", "Gitsigns blame", desc = "Toggle Blame Sidebar" }, { "gb", "Gitsigns blame_line", desc = "Show Blame Inline" }, { "gd", "Gitsigns toggle_deleted", desc = "Toggle deleted lines" }, { "gh", group = "hunks" }, { "ghl", "Gitsigns setloclist", desc = "List file Changes" }, { "ghn", "Gitsigns nav_hunk", desc = "Nav Hunk" }, { "gr", group = "reset" }, { "grb", "Gitsigns reset_buffer", desc = "Reset Buffer" }, { "grh", "Gitsigns reset_hunk", desc = "Reset Hunk" }, { "gs", group = "stage" }, { "gsb", "Gitsigns stage_buffer", desc = "Stage Buffer" }, { "gsh", "Gitsigns stage_hunk", desc = "Stage Hunk" }, { "gu", "Gitsigns undo_stage_hunk", desc = "Undo Stage Hunk" }, { "le", vim.diagnostic.open_float, desc = "Open diagnostic float" }, { "K", desc = "Show definition" }, -- { "d", group = "Debugging" }, -- { -- { mode = "n" }, -- { "dn", require("dap").new, desc = "Start Debugger" }, -- { "db", require("dap").toggle_breakpoint, desc = "Toggle breakpoint" }, -- { "dc", require("dap").continue, desc = "Continue" }, -- }, -- trouble plugin { "xx", "Trouble diagnostics toggle", desc = "Diagnostics (Trouble)" }, { "xX", "Trouble diagnostics toggle filter.buf=0", desc = "Buffer Diagnostics (Trouble)", }, { "xs", "Trouble symbols toggle focus=false", desc = "Symbols (Trouble)" }, { "xl", "Trouble lsp toggle focus=false win.position=right", desc = "LSP Definitions / references / ... (Trouble)", }, { "xL", "Trouble loclist toggle", desc = "Location List (Trouble)" }, { "xQ", "Trouble qflist toggle", desc = "Quickfix List (Trouble)" }, -- QOL shortcuts { "n", "nohl", desc = "Stop highlighting search results" }, { "m", "NoiceDismiss", desc = "Dismiss notifications" }, { "M", "Markview toggle", desc = "Markview toggle source view" }, { "r", group = "Rename" }, { "rr", vim.lsp.buf.rename, opts, desc = "Rename Variable" }, { "s", group = "Sessions" }, { "sl", function() require("nvim-possession").list() end, desc = "List sesssions" }, { "sn", function() require("nvim-possession").new() end, desc = "Create new session" }, { "su", function() require("nvim-possession").update() end, desc = "Update Session" }, { "sd", function() require("nvim-possession").delete() end, desc = "Delete Session" }, { "t", group = "tabs" }, { "ta", "tabnew", desc = "Add new Tab" }, { "tc", "tabclose", desc = "Close Tab" }, { "tf", "tabfirst", desc = "First Tab" }, { "tl", "tablast", desc = "Last Tab" }, { "tm", group = "Move Tab" }, { "tmf", "tabmove 0", desc = "Move Tab to First" }, { "tmi", ":tabmove ", desc = "Input position to move Tab to" }, { "tml", "tabmove $", desc = "Move Tab to Last" }, { "tn", "tabnext", desc = "Next Tab" }, { "tp", "tabprevious", desc = "Previous Tab" }, { "u", desc = "Toggle undo-tree" }, { "w", group = "Workspaces + Whichkey" }, { "wa", desc = "Add workspace folder" }, { "wr", desc = "Remove workspace folder" }, { "ww", "WhichKey", desc = "Show keybindings" }, { "y", desc = "Copy to system clipboard" }, { "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", "Gitsigns prev_hunk", desc = "Previous changed git block" }, { "]", group = "jump forward" }, { "]c", desc = "Next diff change" }, { "]d", desc = "Next Diagnostic" }, { "]h", "Gitsigns next_hunk", 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" }, { "", desc = "undo to this state" }, -- obsidian { "of", "ObsidianFollowLink", desc = "follow Obsidian Link" }, { "ob", "ObsidianBackLinks", desc = "show backlinks" }, }, }, }