build/neovim: add keymap validation to build process
This commit is contained in:
parent
e98bb24f6d
commit
4c73e0220e
2 changed files with 11 additions and 5 deletions
|
@ -42,7 +42,13 @@ in
|
||||||
(lib.optional (config.vim.cmd != "") (call "vim.cmd" config.vim.cmd))
|
(lib.optional (config.vim.cmd != "") (call "vim.cmd" config.vim.cmd))
|
||||||
# Keymaps
|
# Keymaps
|
||||||
(lib.flip map config.vim.keymap.set ({ mode, lhs, rhs, ... } @ vars:
|
(lib.flip map config.vim.keymap.set ({ mode, lhs, rhs, ... } @ vars:
|
||||||
call "vim.keymap.set" [ mode lhs rhs (removeAttrs vars [ "mode" "lhs" "rhs" ]) ]
|
let
|
||||||
|
buf = lib.optionalString (vars.buffer != null) vars.buffer;
|
||||||
|
m = if builtins.isList mode then lib.head mode else mode;
|
||||||
|
in
|
||||||
|
if config.vim.keymap._validate."${buf}"."${m}"."${lhs}" == rhs then
|
||||||
|
call "vim.keymap.set" [ mode lhs rhs (removeAttrs vars [ "mode" "lhs" "rhs" ]) ]
|
||||||
|
else abort "This case should never happen."
|
||||||
))
|
))
|
||||||
]));
|
]));
|
||||||
|
|
||||||
|
|
|
@ -23,10 +23,10 @@ let cfg = config.vim.keymap; in
|
||||||
let
|
let
|
||||||
sourceModes = if builtins.isList mode then mode else [ mode ];
|
sourceModes = if builtins.isList mode then mode else [ mode ];
|
||||||
unwrappedModes = lib.flatten (lib.flip map sourceModes (m:
|
unwrappedModes = lib.flatten (lib.flip map sourceModes (m:
|
||||||
if m == "" then [ "n" "x" "s" "o" ]
|
if m == "" then [ m "n" "x" "s" "o" ]
|
||||||
else if m == "!" then [ "i" "c" ]
|
else if m == "!" then [ m "i" "c" ]
|
||||||
else if m == "v" then [ "x" "s" ]
|
else if m == "v" then [ m "x" "s" ]
|
||||||
else if m == "l" then [ "i" "c" "l" ]
|
else if m == "l" then [ m "i" "c" "l" ]
|
||||||
else m
|
else m
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue