nvf/modules/neovim/mappings/config.nix
2024-08-18 14:43:38 +02:00

59 lines
1.5 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 "nvo") cfg.maps.normalVisualOp)
(mapAttrs (_key: processLegacyMap "nx") cfg.maps.visualOnly)
(mapAttrs (_key: processLegacyMap "o") cfg.maps.operator)
(mapAttrs (_key: processLegacyMap "ic") cfg.maps.insertCommand)
(mapAttrs (_key: processLegacyMap "l") cfg.maps.lang)
(mapAttrs (_key: processLegacyMap "c") cfg.maps.command)
];
};
}