1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-11-29 05:31:03 +01:00
home-manager/tests/modules/programs/fish/binds.nix
Mohamad Fikri 2d7d65f65b
fish: fix the binds.*.erase option (#7186)
The `command` option is optional when the `erase` option is true,
because when in erase mode, bind does not require any other arguments
2025-06-06 15:57:26 -05:00

54 lines
1.6 KiB
Nix

{ lib, ... }:
{
config = {
programs.fish = {
enable = true;
binds = {
"ctrl-d".command = "exit";
"ctrl-c" = {
mode = "insert";
command = [
"kill-whole-line"
"repaint"
];
};
"ctrl-g" = {
command = [
"git diff"
"repaint"
];
};
"alt-s".erase = true;
"alt-s".operate = "preset";
"alt-s".command = "fish_commandline_prepend sudo";
};
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
nmt = {
description = "if fish.binds is set, check function exists and contains valid binds";
script = ''
assertFileExists home-files/.config/fish/functions/fish_user_key_bindings.fish
assertFileContains home-files/.config/fish/functions/fish_user_key_bindings.fish \
"bind ctrl-d exit"
assertFileContains home-files/.config/fish/functions/fish_user_key_bindings.fish \
"bind --mode insert ctrl-c kill-whole-line repaint"
assertFileContains home-files/.config/fish/functions/fish_user_key_bindings.fish \
"bind ctrl-g 'git diff' repaint"
assertFileContains home-files/.config/fish/functions/fish_user_key_bindings.fish \
"bind -e --preset alt-s"
assertFileContains home-files/.config/fish/functions/fish_user_key_bindings.fish \
"bind --preset alt-s 'fish_commandline_prepend sudo"
'';
};
};
}