mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-24 22:50:10 +08:00
8bf8b10f68
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
117 lines
4.1 KiB
Fish
117 lines
4.1 KiB
Fish
#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.
|
|
|
|
# Verify that an invalid bind mode is rejected.
|
|
bind -m 'bad bind mode' \cX true
|
|
# CHECKERR: bind: bad bind mode: invalid mode name. See `help identifiers`
|
|
|
|
# Verify that an invalid bind mode target is rejected.
|
|
bind -M bind-mode \cX true
|
|
# CHECKERR: bind: bind-mode: invalid mode name. See `help identifiers`
|
|
|
|
# This should succeed and result in a success, zero, status.
|
|
bind -M bind_mode \cX true
|
|
|
|
# Listing bindings
|
|
bind | string match -v '*escape,\\[*' # Hide legacy bindings.
|
|
bind --user --preset | string match -v '*escape,\\[*'
|
|
# CHECK: bind --preset '' self-insert
|
|
# 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 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 '*escape,\\[*'
|
|
# CHECK: bind --preset '' self-insert
|
|
# 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 '*escape,\\[*'
|
|
# CHECK: bind -M bind_mode ctrl-x true
|
|
|
|
# Adding bindings
|
|
bind tab 'echo banana'
|
|
bind | string match -v '*escape,\\[*'
|
|
# CHECK: bind --preset '' self-insert
|
|
# 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 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
|