diff options
author | Sam Lanning <sam@samlanning.com> | 2022-05-20 07:25:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-20 07:25:36 +0100 |
commit | b08e2543436b5528a46d232a63ff1676e995d262 (patch) | |
tree | b4cad6b1d0d01feb78698f5648084e11c924938f | |
parent | 4096c6ee8cf462af4607522cbcaefa964c175f6d (diff) |
Improve default fish keybindings (#420)
binding on "up" can conflict with the default fish keybindings as when
in tab-completion mode, you are supposed to be able to use arrow keys
to navigate the grid of suggestions, however pressing "up" will open
the tui instead.
This attempts to work around it by tracking when the user is probably in
a tab completion mode by setting a variable that we use to determine
whether to open atuin or perform the default fish up action
-rw-r--r-- | src/shell/atuin.fish | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/src/shell/atuin.fish b/src/shell/atuin.fish index 1e173141..e2802544 100644 --- a/src/shell/atuin.fish +++ b/src/shell/atuin.fish @@ -20,16 +20,41 @@ function _atuin_search end end +function _atuin_suppress_tui + set -gx ATUIN_SUPPRESS_TUI "true" +end + +function _atuin_unsuppress_tui + set -ge ATUIN_SUPPRESS_TUI +end + +function _atuin_bind_up + if test -z $ATUIN_SUPPRESS_TUI + _atuin_search + else + up-or-search + end +end + if test -z $ATUIN_NOBIND bind \cr _atuin_search - bind -k up _atuin_search - bind \eOA _atuin_search - bind \e\[A _atuin_search + bind -k up _atuin_bind_up + bind \eOA _atuin_bind_up + bind \e\[A _atuin_bind_up + bind \t 'commandline -f complete && _atuin_suppress_tui' + bind \e 'commandline -f cancel && _atuin_unsuppress_tui' + bind \r 'commandline -f execute && _atuin_unsuppress_tui' + bind \n 'commandline -f execute && _atuin_unsuppress_tui' + if bind -M insert > /dev/null 2>&1 bind -M insert \cr _atuin_search - bind -M insert -k up _atuin_search - bind -M insert \eOA _atuin_search - bind -M insert \e\[A _atuin_search + bind -M insert -k up _atuin_bind_up + bind -M insert \eOA _atuin_bind_up + bind -M insert \e\[A _atuin_bind_up + bind -M insert \t 'commandline -f complete && _atuin_suppress_tui' + bind -M insert \e 'commandline -f cancel && _atuin_unsuppress_tui' + bind -M insert \r 'commandline -f execute && _atuin_unsuppress_tui' + bind -M insert \n 'commandline -f execute && _atuin_unsuppress_tui' end end |