diff --git a/modules/nixvim/keymaps/default.nix b/modules/nixvim/keymaps/default.nix index 05cba6a..b40976a 100644 --- a/modules/nixvim/keymaps/default.nix +++ b/modules/nixvim/keymaps/default.nix @@ -13,7 +13,7 @@ toLower ; - inherit (lib.marleyos.keys) mkKeymap mkKeymapWithOpts; + inherit (lib.marleyos.keys) mkKeymap mkKeymap' mkKeymapWithOpts; inherit (helpers) mkRaw; in { globals = { @@ -22,45 +22,22 @@ in { }; keymaps = + # # Disable Arrow Key Movement - - - - - - - - - - - - - - - - - - - - - - - - - ( - map - (d: { - mode = [ - "i" - "n" - ]; - key = d; - action = ""; - }) - [ - "" - "" - "" - "" - ] - ) + (map (d: mkKeymap' ["i" "n"] d "") ["" "" "" ""]) + # # Better Up/Down - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ ( mapAttrsToList - (d: k: { - mode = [ - "n" - "x" - ]; - key = k; - action = "v:count == 0 ? 'g${k}' : '${k}'"; - options = { - desc = d; - expr = true; - silent = true; - }; - }) + (d: k: + mkKeymapWithOpts ["n" "x"] k "v:count == 0 ? 'g${k}' : '${k}'" d + {expr = true;}) { Down = "j"; Up = "k"; } ) + # # Resize Windows - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ ( mapAttrsToList @@ -70,14 +47,8 @@ in { if (d == "Increase") then "+" else "-"; - in { - mode = ["n"]; - key = ""; - action = "resize ${s}4"; - options = { - desc = "${d} Window Height"; - }; - } + in + mkKeymap ["n"] "" "resize ${s}4" "${d} Window Height" ) { Up = "Increase"; @@ -86,21 +57,15 @@ in { Right = "Increase"; } ) + # # Buffers - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ ( - mapAttrsToList - ( + mapAttrsToList ( k: d: let # previous -> Prev prettyDir = (toUpper (substring 0 1 d)) + (substring 1 3 d); - in { - mode = ["n"]; - key = k; - action = "b${d}"; - options = { - desc = "${prettyDir} Buffer"; - }; - } + in + mkKeymap ["n"] k "b${d}" "${prettyDir} Buffer" ) { "" = "previous"; @@ -109,28 +74,29 @@ in { "]b" = "next"; } ) - ++ [ - (mkKeymap ["n"] "bD" "bd" "Delete Buffer and Window") - ] + ++ [(mkKeymap ["n"] "bD" "bd" "Delete Buffer and Window")] + # # Clear Search/Diff Update/Redraw - - - - - - - - - - - - - - - - - - - - - ++ [ - (mkKeymap [ - "i" - "n" - ] "" "noh" "Escape and Clear hlsearch") + (mkKeymap ["i" "n"] "" "noh" "Escape and Clear hlsearch") ( - mkKeymap ["n"] "ur" "nohlsearchdiffupdatenormal! " + mkKeymap ["n"] "ur" + "nohlsearchdiffupdatenormal! " "Redraw / Clear hlsearch / Diff Update" ) ] + # # Better n & N - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ ( - mapCartesianProduct - ( + mapCartesianProduct ( { m, d, }: let + k = + if (d == "Next") + then "n" + else "N"; nn = if (d == "Next") then "Nn" @@ -139,103 +105,63 @@ in { if (m == "n") then ".'zv'" else ""; - in { - mode = [m]; - key = - if (d == "Next") - then "n" - else "N"; - action = "'${nn}'[v:searchforward]${zv}"; - options = { - desc = "${d} Search Result"; - expr = true; - }; - } + in + mkKeymapWithOpts [m] k "'${nn}'[v:searchforward]${zv}" + "${d} Search Result" {expr = true;} ) { - m = [ - "n" - "x" - "o" - ]; - d = [ - "Next" - "Prev" - ]; + m = ["n" "x" "o"]; + d = ["Next" "Prev"]; } ) + # # Undo Break-Points - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ ( - map - (c: { - mode = ["i"]; - key = c; - action = "${c}u"; - }) - [ - "," - "." - ";" - ] - ) + ++ (map (c: mkKeymap' ["i"] c "${c}u") ["," "." ";"]) + # # Search Docs (keywordprog) - - - - - - - - - - - - - - - - - - - - - - - - # https://til.codeinthehole.com/posts/about-how-to-use-keywordprg-effectively/ - ++ [(mkKeymap ["n"] "K" "norm! K" "Search for word")] + ++ [ + (mkKeymap ["n"] "K" "norm! K" + "Search for word") + ] + # # Better Indenting - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ ( - map - (c: { - mode = ["v"]; - key = c; - action = "${c}gv"; - }) - [ - "<" - ">" - ] - ) + ++ (map (c: mkKeymap' ["v"] c "${c}gv") ["<" ">"]) + # # Commenting - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ ( - mapAttrsToList - (k: d: { - mode = ["n"]; - key = "gc${k}"; - action = "${k}Vcxnormal gccfxa"; - options = { - desc = "Add Comment ${d}"; - }; - }) + mapAttrsToList ( + k: d: + mkKeymap ["n"] "gc${k}" + "${k}Vcxnormal gccfxa" "Add Comment ${d}" + ) { o = "Below"; O = "Above"; } ) + # # New File - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ [(mkKeymap ["n"] "fn" "enew" "New File")] + # # Locations/Quickfixes - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ [ (mkKeymap ["n"] "xl" "lopen" "Location List") (mkKeymap ["n"] "xq" "copen" "Quickfix list") ] ++ ( - mapAttrsToList - ( + mapAttrsToList ( k: d: let cmd = substring 0 4 (toLower d); - in { - mode = ["n"]; - key = "${k}q"; - action = "c${cmd}"; - options = { - desc = "${d} Quickfix"; - }; - } + in + mkKeymap ["n"] "${k}q" "c${cmd}" "${d} Quickfix" ) { "[" = "Previous"; "]" = "Next"; } ) + # # Diagnostics - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ [ (mkKeymap ["n"] "cd" ( @@ -245,12 +171,17 @@ in { ) "Line Diagnostics") ] ++ ( - mapCartesianProduct - ( + mapCartesianProduct ( { dir, key, }: let + kmap = "${ + if (dir == "Next") + then "]" + else "[" + }${key}"; + sevs = { d = { key = "nil"; @@ -268,37 +199,25 @@ in { cmd = toLower dir; sev = sevs."${key}".key; - in { - mode = ["n"]; - key = "${ - if (dir == "Next") - then "]" - else "[" - }${key}"; - action.__raw = + in + mkKeymap ["n"] kmap + (mkRaw # lua - "function() vim.diagnostic.goto_${cmd}({ severity = ${sev} }) end"; - options = { - desc = "${dir} ${sevs."${key}".desc}"; - }; - } + "function() vim.diagnostic.goto_${cmd}({ severity = ${sev} }) end") + "${dir} ${sevs."${key}".desc}" ) { - dir = [ - "Next" - "Prev" - ]; - key = [ - "d" - "e" - "w" - ]; + dir = ["Next" "Prev"]; + key = ["d" "e" "w"]; } ) + # # Quit - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ [(mkKeymap ["n"] "qq" "qa" "Quit All")] + # # Inspect - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ [(mkKeymap ["n"] "ui" (mkRaw "vim.show_pos") "Inspect Position")] + # # Window Management - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ [ (mkKeymapWithOpts ["n"] "w" "" "Windows" {remap = true;}) @@ -306,20 +225,18 @@ in { (mkKeymapWithOpts ["n"] "|" "v" "Split Window Right" {remap = true;}) (mkKeymapWithOpts ["n"] "wd" "c" "Delete Window" {remap = true;}) ] + # # Tab Management - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ ( - mapAttrsToList - (k: a: { - mode = ["n"]; - key = "${k}"; - action = "tab${toLower a}"; - options = { + mapAttrsToList ( + k: a: let desc = if (a == "Only") then "Close Other Tabs" else "${a} Tab"; - }; - }) + in + mkKeymap ["n"] "${k}" "tab${toLower a}" desc + ) { l = "Last"; o = "Only";