Compare commits
2 commits
6ce249fa02
...
bbf171f51b
Author | SHA1 | Date | |
---|---|---|---|
bbf171f51b | |||
c460f49dea |
3 changed files with 36 additions and 4 deletions
|
@ -25,8 +25,8 @@ let
|
|||
type = mode;
|
||||
default = "";
|
||||
description = ''
|
||||
Mode | Norm | Ins | Cmd | Vis | Sel | Opr | Term | Lang |
|
||||
Command +------+-----+-----+-----+-----+-----+------+------+
|
||||
Mode | Norm | Ins | Cmd | Vis | Sel | Opr | Term | Lang |
|
||||
Command +------+-----+-----+-----+-----+-----+------+------+
|
||||
"" | yes | - | - | yes | yes | yes | - | - |
|
||||
"n" | yes | - | - | - | - | - | - | - |
|
||||
"!" | - | yes | yes | - | - | - | - | - |
|
||||
|
|
|
@ -18,7 +18,7 @@ in
|
|||
apply = x: assert (builtins.stringLength x == 1 || abort "<LocalLeader> `${x}` is longer than one character is not allowed"); x;
|
||||
};
|
||||
|
||||
exMode.enable = (mkEnableOption "Ex mode") // { default = true; };
|
||||
exMode.enable = mkEnableOption "Ex mode";
|
||||
arrowKeys = {
|
||||
disable = mkOption {
|
||||
type = types.bool;
|
||||
|
|
|
@ -1,10 +1,42 @@
|
|||
{ lib, ... }:
|
||||
{ config, lib, ... }:
|
||||
|
||||
let cfg = config.vim.keymap; in
|
||||
{
|
||||
options.vim.keymap = with lib; {
|
||||
_validate = mkOption {
|
||||
# buffer mode lhs rhs
|
||||
type = with types; attrsOf (attrsOf (attrsOf (either str attrs)));
|
||||
visible = false;
|
||||
internal = true;
|
||||
readOnly = true;
|
||||
};
|
||||
set = mkOption {
|
||||
type = with types; listOf keymap;
|
||||
default = [ ];
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
vim.keymap._validate = lib.mkMerge
|
||||
(map
|
||||
({ mode, lhs, rhs, buffer, ... }:
|
||||
let
|
||||
sourceModes = if builtins.isList mode then mode else [ mode ];
|
||||
unwrappedModes = lib.flatten (lib.flip map sourceModes (m:
|
||||
if m == "" then [ "n" "x" "s" "o" ]
|
||||
else if m == "!" then [ "i" "c" ]
|
||||
else if m == "v" then [ "x" "s" ]
|
||||
else if m == "l" then [ "i" "c" "l" ]
|
||||
else m
|
||||
));
|
||||
|
||||
buf = if buffer == null then "" else buffer;
|
||||
in
|
||||
lib.foldl lib.recursiveUpdate { }
|
||||
(lib.flip map unwrappedModes (m: {
|
||||
"${buf}"."${m}"."${lhs}" = rhs;
|
||||
}))
|
||||
)
|
||||
cfg.set);
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue