mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-05 00:01:15 -03:00
Extended & human-friendly keys
See the changelog additions for user-visible changes. Since we enable/disable terminal protocols whenever we pass terminal ownership, tests can no longer run in parallel on the same terminal. For the same reason, readline shortcuts in the gdb REPL will not work anymore. As a remedy, use gdbserver, or lobby for CSI u support in libreadline. Add sleep to some tests, otherwise they fall (both in CI and locally). There are two weird failures on FreeBSD remaining, disable them for now https://github.com/fish-shell/fish-shell/pull/10359/checks?check_run_id=23330096362 Design and implementation borrows heavily from Kakoune. In future, we should try to implement more of the kitty progressive enhancements. Closes #10359
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#RUN: %fish %s
|
||||
#RUN: %fish %s | %filter-ctrlseqs
|
||||
# Test various `bind` command invocations. This is meant to verify that
|
||||
# invalid flags, mode names, etc. are caught as well as to verify that valid
|
||||
# ones are allowed.
|
||||
@@ -14,102 +14,103 @@ bind -M bind-mode \cX true
|
||||
# This should succeed and result in a success, zero, status.
|
||||
bind -M bind_mode \cX true
|
||||
|
||||
### HACK: All full bind listings need to have the \x7f -> backward-delete-char
|
||||
# binding explicitly removed, because on some systems that's backspace, on others not.
|
||||
# Listing bindings
|
||||
bind | string match -v '*backward-delete-char'
|
||||
bind --user --preset | string match -v '*backward-delete-char'
|
||||
bind | string match -v '*escape,\\[*' # Hide legacy bindings.
|
||||
bind --user --preset | string match -v '*escape,\\[*'
|
||||
# CHECK: bind --preset '' self-insert
|
||||
# CHECK: bind --preset \n execute
|
||||
# CHECK: bind --preset \r execute
|
||||
# CHECK: bind --preset \t complete
|
||||
# CHECK: bind --preset \cc cancel-commandline
|
||||
# CHECK: bind --preset \cd exit
|
||||
# CHECK: bind --preset \ce bind
|
||||
# CHECK: bind --preset \cs pager-toggle-search
|
||||
# CHECK: bind --preset \cu backward-kill-line
|
||||
# CHECK: bind --preset \e\[A up-line
|
||||
# CHECK: bind --preset \e\[B down-line
|
||||
# CHECK: bind --preset \e\[C forward-char
|
||||
# CHECK: bind --preset \e\[D backward-char
|
||||
# CHECK: bind --preset \cp up-line
|
||||
# CHECK: bind --preset \cn down-line
|
||||
# CHECK: bind --preset \cb backward-char
|
||||
# CHECK: bind --preset \cf forward-char
|
||||
# CHECK: bind -M bind_mode \cx true
|
||||
# CHECK: bind --preset enter execute
|
||||
# CHECK: bind --preset tab complete
|
||||
# CHECK: bind --preset ctrl-c cancel-commandline
|
||||
# CHECK: bind --preset ctrl-d exit
|
||||
# CHECK: bind --preset ctrl-e bind
|
||||
# CHECK: bind --preset ctrl-s pager-toggle-search
|
||||
# CHECK: bind --preset ctrl-u backward-kill-line
|
||||
# CHECK: bind --preset backspace backward-delete-char
|
||||
# CHECK: bind --preset up up-line
|
||||
# CHECK: bind --preset down down-line
|
||||
# CHECK: bind --preset right forward-char
|
||||
# CHECK: bind --preset left backward-char
|
||||
# CHECK: bind --preset ctrl-p up-line
|
||||
# CHECK: bind --preset ctrl-n down-line
|
||||
# CHECK: bind --preset ctrl-b backward-char
|
||||
# CHECK: bind --preset ctrl-f forward-char
|
||||
# CHECK: bind -M bind_mode ctrl-x true
|
||||
# CHECK: bind --preset '' self-insert
|
||||
# CHECK: bind --preset \n execute
|
||||
# CHECK: bind --preset \r execute
|
||||
# CHECK: bind --preset \t complete
|
||||
# CHECK: bind --preset \cc cancel-commandline
|
||||
# CHECK: bind --preset \cd exit
|
||||
# CHECK: bind --preset \ce bind
|
||||
# CHECK: bind --preset \cs pager-toggle-search
|
||||
# CHECK: bind --preset \cu backward-kill-line
|
||||
# CHECK: bind --preset \e\[A up-line
|
||||
# CHECK: bind --preset \e\[B down-line
|
||||
# CHECK: bind --preset \e\[C forward-char
|
||||
# CHECK: bind --preset \e\[D backward-char
|
||||
# CHECK: bind --preset \cp up-line
|
||||
# CHECK: bind --preset \cn down-line
|
||||
# CHECK: bind --preset \cb backward-char
|
||||
# CHECK: bind --preset \cf forward-char
|
||||
# CHECK: bind -M bind_mode \cx true
|
||||
# CHECK: bind --preset enter execute
|
||||
# CHECK: bind --preset tab complete
|
||||
# CHECK: bind --preset ctrl-c cancel-commandline
|
||||
# CHECK: bind --preset ctrl-d exit
|
||||
# CHECK: bind --preset ctrl-e bind
|
||||
# CHECK: bind --preset ctrl-s pager-toggle-search
|
||||
# CHECK: bind --preset ctrl-u backward-kill-line
|
||||
# CHECK: bind --preset backspace backward-delete-char
|
||||
# CHECK: bind --preset up up-line
|
||||
# CHECK: bind --preset down down-line
|
||||
# CHECK: bind --preset right forward-char
|
||||
# CHECK: bind --preset left backward-char
|
||||
# CHECK: bind --preset ctrl-p up-line
|
||||
# CHECK: bind --preset ctrl-n down-line
|
||||
# CHECK: bind --preset ctrl-b backward-char
|
||||
# CHECK: bind --preset ctrl-f forward-char
|
||||
# CHECK: bind -M bind_mode ctrl-x true
|
||||
|
||||
# Preset only
|
||||
bind --preset | string match -v '*backward-delete-char'
|
||||
bind --preset | string match -v '*escape,\\[*'
|
||||
# CHECK: bind --preset '' self-insert
|
||||
# CHECK: bind --preset \n execute
|
||||
# CHECK: bind --preset \r execute
|
||||
# CHECK: bind --preset \t complete
|
||||
# CHECK: bind --preset \cc cancel-commandline
|
||||
# CHECK: bind --preset \cd exit
|
||||
# CHECK: bind --preset \ce bind
|
||||
# CHECK: bind --preset \cs pager-toggle-search
|
||||
# CHECK: bind --preset \cu backward-kill-line
|
||||
# CHECK: bind --preset \e\[A up-line
|
||||
# CHECK: bind --preset \e\[B down-line
|
||||
# CHECK: bind --preset \e\[C forward-char
|
||||
# CHECK: bind --preset \e\[D backward-char
|
||||
# CHECK: bind --preset \cp up-line
|
||||
# CHECK: bind --preset \cn down-line
|
||||
# CHECK: bind --preset \cb backward-char
|
||||
# CHECK: bind --preset \cf forward-char
|
||||
# CHECK: bind --preset enter execute
|
||||
# CHECK: bind --preset tab complete
|
||||
# CHECK: bind --preset ctrl-c cancel-commandline
|
||||
# CHECK: bind --preset ctrl-d exit
|
||||
# CHECK: bind --preset ctrl-e bind
|
||||
# CHECK: bind --preset ctrl-s pager-toggle-search
|
||||
# CHECK: bind --preset ctrl-u backward-kill-line
|
||||
# CHECK: bind --preset backspace backward-delete-char
|
||||
# CHECK: bind --preset up up-line
|
||||
# CHECK: bind --preset down down-line
|
||||
# CHECK: bind --preset right forward-char
|
||||
# CHECK: bind --preset left backward-char
|
||||
# CHECK: bind --preset ctrl-p up-line
|
||||
# CHECK: bind --preset ctrl-n down-line
|
||||
# CHECK: bind --preset ctrl-b backward-char
|
||||
# CHECK: bind --preset ctrl-f forward-char
|
||||
|
||||
# User only
|
||||
bind --user | string match -v '*backward-delete-char'
|
||||
# CHECK: bind -M bind_mode \cx true
|
||||
bind --user | string match -v '*escape,\\[*'
|
||||
# CHECK: bind -M bind_mode ctrl-x true
|
||||
|
||||
# Adding bindings
|
||||
bind \t 'echo banana'
|
||||
bind | string match -v '*backward-delete-char'
|
||||
bind tab 'echo banana'
|
||||
bind | string match -v '*escape,\\[*'
|
||||
# CHECK: bind --preset '' self-insert
|
||||
# CHECK: bind --preset \n execute
|
||||
# CHECK: bind --preset \r execute
|
||||
# CHECK: bind --preset \t complete
|
||||
# CHECK: bind --preset \cc cancel-commandline
|
||||
# CHECK: bind --preset \cd exit
|
||||
# CHECK: bind --preset \ce bind
|
||||
# CHECK: bind --preset \cs pager-toggle-search
|
||||
# CHECK: bind --preset \cu backward-kill-line
|
||||
# CHECK: bind --preset \e\[A up-line
|
||||
# CHECK: bind --preset \e\[B down-line
|
||||
# CHECK: bind --preset \e\[C forward-char
|
||||
# CHECK: bind --preset \e\[D backward-char
|
||||
# CHECK: bind --preset \cp up-line
|
||||
# CHECK: bind --preset \cn down-line
|
||||
# CHECK: bind --preset \cb backward-char
|
||||
# CHECK: bind --preset \cf forward-char
|
||||
# CHECK: bind -M bind_mode \cx true
|
||||
# CHECK: bind \t 'echo banana'
|
||||
# CHECK: bind --preset enter execute
|
||||
# CHECK: bind --preset tab complete
|
||||
# CHECK: bind --preset ctrl-c cancel-commandline
|
||||
# CHECK: bind --preset ctrl-d exit
|
||||
# CHECK: bind --preset ctrl-e bind
|
||||
# CHECK: bind --preset ctrl-s pager-toggle-search
|
||||
# CHECK: bind --preset ctrl-u backward-kill-line
|
||||
# CHECK: bind --preset backspace backward-delete-char
|
||||
# CHECK: bind --preset up up-line
|
||||
# CHECK: bind --preset down down-line
|
||||
# CHECK: bind --preset right forward-char
|
||||
# CHECK: bind --preset left backward-char
|
||||
# CHECK: bind --preset ctrl-p up-line
|
||||
# CHECK: bind --preset ctrl-n down-line
|
||||
# CHECK: bind --preset ctrl-b backward-char
|
||||
# CHECK: bind --preset ctrl-f forward-char
|
||||
# CHECK: bind -M bind_mode ctrl-x true
|
||||
# CHECK: bind tab 'echo banana'
|
||||
|
||||
# Erasing bindings
|
||||
bind --erase \t
|
||||
bind \t
|
||||
bind \t 'echo wurst'
|
||||
# CHECK: bind --preset \t complete
|
||||
bind --erase --user --preset \t
|
||||
bind \t
|
||||
# CHECKERR: bind: No binding found for sequence '\t'
|
||||
bind --erase tab
|
||||
bind tab
|
||||
bind tab 'echo wurst'
|
||||
# CHECK: bind --preset tab complete
|
||||
bind --erase --user --preset tab
|
||||
bind tab
|
||||
# CHECKERR: bind: No binding found for key 'tab'
|
||||
|
||||
bind ctrl-\b
|
||||
# CHECKERR: bind: Cannot add control modifier to control character 'ctrl-h'
|
||||
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user