From a3f35b2d1802c20f5966524f6cbd28afec5a0c96 Mon Sep 17 00:00:00 2001 From: Ismo Vuorinen Date: Wed, 11 Jun 2025 13:40:36 +0300 Subject: [PATCH] feat(fish): add nickeb96/puffer-fish Signed-off-by: Ismo Vuorinen --- .../fish/conf.d/puffer_fish_key_bindings.fish | 25 +++++++++++++++++++ config/fish/fish_plugins | 1 + .../functions/_puffer_fish_expand_bang.fish | 9 +++++++ .../functions/_puffer_fish_expand_dots.fish | 9 +++++++ .../_puffer_fish_expand_lastarg.fish | 9 +++++++ 5 files changed, 53 insertions(+) create mode 100644 config/fish/conf.d/puffer_fish_key_bindings.fish create mode 100644 config/fish/functions/_puffer_fish_expand_bang.fish create mode 100644 config/fish/functions/_puffer_fish_expand_dots.fish create mode 100644 config/fish/functions/_puffer_fish_expand_lastarg.fish diff --git a/config/fish/conf.d/puffer_fish_key_bindings.fish b/config/fish/conf.d/puffer_fish_key_bindings.fish new file mode 100644 index 0000000..58d4d3d --- /dev/null +++ b/config/fish/conf.d/puffer_fish_key_bindings.fish @@ -0,0 +1,25 @@ +status is-interactive || exit + +function _puffer_fish_key_bindings --on-variable fish_key_bindings + set -l modes + if test "$fish_key_bindings" = fish_default_key_bindings + set modes default insert + else + set modes insert default + end + + bind --mode $modes[1] . _puffer_fish_expand_dots + bind --mode $modes[1] ! _puffer_fish_expand_bang + bind --mode $modes[1] '$' _puffer_fish_expand_lastarg + bind --mode $modes[2] --erase . ! '$' +end + +_puffer_fish_key_bindings + +set -l uninstall_event puffer_fish_key_bindings_uninstall + +function _$uninstall_event --on-event $uninstall_event + bind -e . + bind -e ! + bind -e '$' +end diff --git a/config/fish/fish_plugins b/config/fish/fish_plugins index c04887f..150fb96 100644 --- a/config/fish/fish_plugins +++ b/config/fish/fish_plugins @@ -6,3 +6,4 @@ danhper/fish-ssh-agent halostatue/fish-brew@v3 edc/bass meaningful-ooo/sponge +nickeb96/puffer-fish diff --git a/config/fish/functions/_puffer_fish_expand_bang.fish b/config/fish/functions/_puffer_fish_expand_bang.fish new file mode 100644 index 0000000..401d85e --- /dev/null +++ b/config/fish/functions/_puffer_fish_expand_bang.fish @@ -0,0 +1,9 @@ +function _puffer_fish_expand_bang + switch (commandline -t) + case '!' + commandline -t $history[1] + case '*' + commandline -i '!' + end +end + diff --git a/config/fish/functions/_puffer_fish_expand_dots.fish b/config/fish/functions/_puffer_fish_expand_dots.fish new file mode 100644 index 0000000..ff82af7 --- /dev/null +++ b/config/fish/functions/_puffer_fish_expand_dots.fish @@ -0,0 +1,9 @@ +function _puffer_fish_expand_dots -d 'expand ... to ../.. etc' + set -l cmd (commandline --cut-at-cursor) + set -l split (string split -- ' ' $cmd) + if string match --quiet --regex -- '^(\.\./)*\.\.$' $split[-1] + commandline --insert '/..' + else + commandline --insert '.' + end +end diff --git a/config/fish/functions/_puffer_fish_expand_lastarg.fish b/config/fish/functions/_puffer_fish_expand_lastarg.fish new file mode 100644 index 0000000..a61b892 --- /dev/null +++ b/config/fish/functions/_puffer_fish_expand_lastarg.fish @@ -0,0 +1,9 @@ +function _puffer_fish_expand_lastarg + switch (commandline -t) + case '!' + commandline -t "" + commandline -f history-token-search-backward + case '*' + commandline -i '$' + end +end