mirror of
https://github.com/NotAShelf/nvf.git
synced 2024-11-23 22:00:42 +00:00
59 lines
1.6 KiB
Nix
59 lines
1.6 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib.modules) mkIf mkMerge;
|
|
inherit (builtins) mapAttrs;
|
|
|
|
processLegacyMap = modes: legacyMap: [(legacyMap // {mode = modes;})];
|
|
|
|
cfg = config.vim;
|
|
in {
|
|
config = {
|
|
vim.keymaps = mkMerge [
|
|
(mkIf cfg.disableArrows {
|
|
"<up>" = [
|
|
{
|
|
mode = ["n" "i"];
|
|
action = "<nop>";
|
|
noremap = false;
|
|
}
|
|
];
|
|
"<down>" = [
|
|
{
|
|
mode = ["n" "i"];
|
|
action = "<nop>";
|
|
noremap = false;
|
|
}
|
|
];
|
|
"<left>" = [
|
|
{
|
|
mode = ["n" "i"];
|
|
action = "<nop>";
|
|
noremap = false;
|
|
}
|
|
];
|
|
"<right>" = [
|
|
{
|
|
mode = ["n" "i"];
|
|
action = "<nop>";
|
|
noremap = false;
|
|
}
|
|
];
|
|
})
|
|
(mapAttrs (_key: processLegacyMap ["n"]) cfg.maps.normal)
|
|
(mapAttrs (_key: processLegacyMap ["i"]) cfg.maps.insert)
|
|
(mapAttrs (_key: processLegacyMap ["s"]) cfg.maps.select)
|
|
(mapAttrs (_key: processLegacyMap ["v"]) cfg.maps.visual)
|
|
(mapAttrs (_key: processLegacyMap ["t"]) cfg.maps.terminal)
|
|
(mapAttrs (_key: processLegacyMap ["n" "v" "o"]) cfg.maps.normalVisualOp)
|
|
(mapAttrs (_key: processLegacyMap ["n" "x"]) cfg.maps.visualOnly)
|
|
(mapAttrs (_key: processLegacyMap ["o"]) cfg.maps.operator)
|
|
(mapAttrs (_key: processLegacyMap ["i" "c"]) cfg.maps.insertCommand)
|
|
(mapAttrs (_key: processLegacyMap ["l"]) cfg.maps.lang)
|
|
(mapAttrs (_key: processLegacyMap ["c"]) cfg.maps.command)
|
|
];
|
|
};
|
|
}
|