{...}: let no-leader = [ # Cursor movement { mode = "n"; key = "j"; action = "v:count == 0 ? 'gj' : 'j'"; options.desc = "Move cursor down"; options.expr = true; } { mode = "n"; key = ""; action = "v:count == 0 ? 'gj' : 'j'"; options.desc = "Move cursor down"; options.expr = true; } { mode = "n"; key = "k"; action = "v:count == 0 ? 'gk' : 'k'"; options.desc = "Move cursor up"; options.expr = true; } { mode = "n"; key = ""; action = "v:count == 0 ? 'gk' : 'k'"; options.desc = "Move cursor up"; options.expr = true; } # Window resize { mode = "n"; key = ""; action = "vertical resize -2"; options.desc = "Decrease window width"; } { mode = "n"; key = ""; action = "vertical resize +2"; options.desc = "Increase window width"; } { mode = "n"; key = ""; action = "resize -2"; options.desc = "Decrease window height"; } { mode = "n"; key = ""; action = "resize +2"; options.desc = "Increase window height"; } # Move lines { mode = "n"; key = ""; action = "m .+1=="; options.desc = "Move line down"; } { mode = "i"; key = ""; action = "m .+1==gi"; options.desc = "Move line down"; } { mode = "v"; key = ""; action = ":m '>+1gv=gv"; options.desc = "Move line down"; } { mode = "n"; key = ""; action = "m .-2=="; options.desc = "Move line up"; } { mode = "i"; key = ""; action = "m .-2==gi"; options.desc = "Move line up"; } { mode = "v"; key = ""; action = ":m '<-2gv=gv"; options.desc = "Move line up"; } # Save buffers { mode = ["n" "i" "v"]; key = ""; action = "w"; options.desc = "Save current buffer"; } { mode = ["n" "i" "v"]; key = ""; action = "wa"; options.desc = "Save all buffers"; } # Indentation { mode = "v"; key = "<"; action = " multiline cursor? } { mode = "i"; key = ""; action = ""; options.desc = "Delete previous word"; # TODO: Breaks backspace multiline cursor? } # Clipboard { mode = "i"; key = ""; action = "\"+pi"; options.desc = "Paste from clipboard"; } { mode = "i"; key = ""; action = "\"+pi"; options.desc = "Paste from clipboard"; } { mode = "v"; key = ""; action = "\"+y"; options.desc = "Copy to clipboard"; } # Flash/Search { mode = "n"; key = "s"; # TODO: Key doesn't work action = "lua require('flash').jump()"; options.desc = "Flash jump"; } { mode = "n"; key = "S"; # TODO: Key doesn't work action = "lua require('flash').treesitter()"; options.desc = "Flash treesitter"; } # Various { mode = "n"; key = ""; action = "nohlsearch"; options.desc = "Clear search highlights"; } { mode = "n"; key = "K"; action = "lua vim.lsp.buf.hover()"; options.desc = "Show LSP hover"; } { mode = "n"; key = "/"; action = "Telescope current_buffer_fuzzy_find"; options.desc = "Find in current buffer"; } { mode = "v"; key = ";"; action = ""; options.desc = "Exit visual mode"; } ]; leader = [ { mode = "n"; key = "L"; action = "Lazy"; options.desc = "Show Lazy"; } { mode = "n"; key = "s"; action = "w"; options.desc = "Save current buffer"; } { mode = "n"; key = "S"; action = "wa"; options.desc = "Save all buffers"; } { mode = "n"; key = "R"; action = "edit!"; options.desc = "Reload current buffer"; } { mode = "n"; key = ""; action = "Telescope buffers"; options.desc = "Show open buffers"; } { mode = "n"; key = "f"; action = "Telescope find_files"; options.desc = "Find file"; } { mode = "n"; key = "o"; action = "Telescope vim_options"; options.desc = "Show Vim options"; } { mode = "n"; key = "u"; action = "Telescope undo"; options.desc = "Show undo history"; } { mode = "n"; key = "/"; action = "Telescope live_grep"; options.desc = "Find in working directory"; } { mode = "n"; key = "n"; action = "Telescope notify"; options.desc = "Show notify history"; } { mode = "n"; key = "r"; action = "Telescope resume"; options.desc = "Show last telescope picker"; } { mode = "n"; key = "?"; action = "Telescope keymaps"; options.desc = "Show keymaps"; } { mode = "n"; key = ":"; action = "Telescope commands"; options.desc = "Execute command"; } { mode = "n"; key = "M"; action = "Telescope marks"; options.desc = "Show marks"; } { mode = "n"; key = "J"; action = "Telescope jumplist"; options.desc = "Show jumplist"; } { mode = "n"; key = "m"; action = "Telescope man_pages"; options.desc = "Show manpages"; } { mode = "n"; key = "h"; action = "Telescope help_tags"; options.desc = "Show help tags"; } ]; leader-quit = [ { mode = "n"; key = "q"; action = "+quit"; } { mode = "n"; key = "qq"; action = "quitall"; options.desc = "Quit"; } { mode = "n"; key = "q!"; action = "quitall!"; options.desc = "Quit forcefully"; } ]; leader-buffers = [ { mode = "n"; key = "b"; action = "+buffers"; } { mode = "n"; key = "bb"; action = "Telescope buffers"; options.desc = "Show open buffers"; } { mode = "n"; key = "bn"; action = "bnext"; options.desc = "Goto next buffer"; } { mode = "n"; key = "bp"; action = "bprevious"; options.desc = "Goto previous buffer"; } { mode = "n"; key = "bd"; action = "Bdelete"; options.desc = "Close current buffer"; } ]; leader-windows = [ { mode = "n"; key = "w"; action = "+windows"; } { mode = "n"; key = "wd"; action = "c"; options.desc = "Close current window"; } { mode = "n"; key = "ws"; action = "s"; options.desc = "Split window horizontally"; } { mode = "n"; key = "wv"; action = "v"; options.desc = "Split window vertically"; } { mode = "n"; key = "w="; action = "="; options.desc = "Balance windows"; } { mode = "n"; key = "wh"; action = "h"; options.desc = "Goto left window"; } { mode = "n"; key = "wl"; action = "l"; options.desc = "Goto right window"; } { mode = "n"; key = "wj"; action = "j"; options.desc = "Goto bottom window"; } { mode = "n"; key = "wk"; action = "k"; options.desc = "Goto top window"; } { mode = "n"; key = "ww"; action = "p"; options.desc = "Goto other window"; } ]; leader-toggles = [ { mode = "n"; key = "t"; action = "+toggle"; } { mode = "n"; key = "tt"; action = "Neotree action=show toggle=true="; options.desc = "Toggle NeoTree"; } # { # mode = "n"; # key = "tt"; # action = "CHADopen --nofocus"; # options.desc = "Toggle CHADtree"; # } { mode = "n"; key = "tn"; action = "Navbuddy"; options.desc = "Toggle NavBuddy"; } { mode = "n"; key = "td"; action = "TroubleToggle focus=false"; options.desc = "Toggle Trouble"; } { mode = "n"; key = "tf"; action = "ToggleAutoformat"; options.desc = "Toggle autoformat-on-save"; } { mode = "n"; key = "tl"; action = "ToggleAutoLint"; options.desc = "Toggle autolint-on-save"; } { mode = "n"; key = "tD"; action = "ToggleInlineDiagnostics"; options.desc = "Toggle inline diagnostics"; } { mode = "n"; key = "tw"; action = ":set wrap!"; options.desc = "Toggle word-wrap"; } ]; leader-git = [ { mode = "n"; key = "g"; action = "+git"; } { mode = "n"; key = "gg"; action = "LazyGit"; options.desc = "Show LazyGit"; } { mode = "n"; key = "gm"; action = "GitMessenger"; options.desc = "Show GitMessenger"; } { mode = "n"; key = "gs"; action = "Telescope git_status"; options.desc = "Show Git status"; } { mode = "n"; key = "gc"; action = "Telescope git_commits"; options.desc = "Show Git log"; } { mode = "n"; key = "gb"; action = "Telescope git_branches"; options.desc = "Show Git branches"; } { mode = "n"; key = "gf"; action = "Telescope git_bcommits"; options.desc = "Show Git log for current file"; } ]; leader-lsp = [ { mode = "n"; key = "l"; action = "+lsp"; } { mode = "n"; key = "lr"; action = "Telescope lsp_references"; options.desc = "Goto references"; } { mode = "n"; key = "ld"; action = "Telescope lsp_definitions"; options.desc = "Goto definition"; } { mode = "n"; key = "li"; action = "Telescope lsp_implementations"; options.desc = "Goto implementation"; } { mode = "n"; key = "lt"; action = "Telescope lsp_type_definitions"; options.desc = "Goto type definition"; } { mode = "n"; key = "lI"; action = "Telescope lsp_incoming_calls"; options.desc = "Show incoming calls"; } { mode = "n"; key = "lO"; action = "Telescope lsp_outgoing_calls"; options.desc = "Show outgoing calls"; } ]; leader-code = [ { mode = "n"; key = "c"; action = "+code"; } { mode = "n"; key = "cf"; action = "lua require('conform').format()"; options.desc = "Format current buffer"; } { mode = "n"; key = "cd"; action = "lua vim.diagnostic.open_float()"; options.desc = "Show LSP line diagnostics"; } { mode = "n"; key = "cD"; action = "Telescope diagnostics"; options.desc = "Show diagnostics"; } { mode = "n"; key = "cr"; action = "lua vim.lsp.buf.rename()"; options.desc = "Rename LSP symbol"; } { mode = "n"; key = "ca"; action = "lua vim.lsp.buf.code_action()"; options.desc = "Show LSP code actions"; } { mode = "n"; key = "ch"; action = "ClangdSwitchSourceHeader"; options.desc = "Switch C/C++ source/header"; } ]; in builtins.concatLists [ no-leader leader leader-quit leader-buffers leader-windows leader-toggles leader-git leader-lsp leader-code ]