summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Lanning <sam@samlanning.com>2022-05-20 07:25:36 +0100
committerGitHub <noreply@github.com>2022-05-20 07:25:36 +0100
commitb08e2543436b5528a46d232a63ff1676e995d262 (patch)
treeb4cad6b1d0d01feb78698f5648084e11c924938f
parent4096c6ee8cf462af4607522cbcaefa964c175f6d (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.fish37
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