diff options
Diffstat (limited to 'modules/by-name/fi/fish/module.nix')
| -rw-r--r-- | modules/by-name/fi/fish/module.nix | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/modules/by-name/fi/fish/module.nix b/modules/by-name/fi/fish/module.nix index a0b383b3..7f16fc08 100644 --- a/modules/by-name/fi/fish/module.nix +++ b/modules/by-name/fi/fish/module.nix @@ -25,6 +25,30 @@ builtins.attrValues cfg.integrations ) ); + + keymappings_raw = import ./keymappings.nix {inherit lib;}; + mkBinding = mode: base_key: binding: let + sets_mode_to = + if binding ? sets_mode_to + then "--sets-mode ${binding.sets_mode_to}" + else ""; + + key = lib.escape ["$" "*"] base_key; + in + if binding ? cmd + then '' + bind --mode "${mode}" ${sets_mode_to} --preset ${lib.escapeShellArg key} ${lib.escapeShellArg binding.cmd} + '' + else + builtins.concatStringsSep "" (lib.mapAttrsToList + (new_key: value: mkBinding mode "${key + "," + new_key}" value) + binding); + mkMode = mode: attr: builtins.concatStringsSep "" (lib.mapAttrsToList (mkBinding mode) attr); + keymappings = + '' + bind --erase --all + '' + + builtins.concatStringsSep "\n" (lib.mapAttrsToList mkMode keymappings_raw); in { options.soispha.programs.fish = { enable = lib.mkEnableOption "fish"; @@ -61,17 +85,7 @@ in { start = lib.modules.mkBefore ( sourceFile ./config/01_show-task.fish ); - end = lib.modules.mkAfter ( - sourceFile ./config/keybindings/00__start.fish - + sourceFile ./config/keybindings/01_insert.fish - + sourceFile ./config/keybindings/02_command.fish - + sourceFile ./config/keybindings/03_visual.fish - + sourceFile ./config/keybindings/04_replace.fish - + sourceFile ./config/keybindings/05_operator.fish - + sourceFile ./config/keybindings/06_replace_one.fish - + sourceFile ./config/keybindings/07_others.fish - + sourceFile ./config/keybindings/08__end.fish - ); + end = lib.modules.mkAfter keymappings; in lib.modules.mkMerge [ |
