2024-03-30 23:10:12 +08:00
|
|
|
#RUN: %fish %s | %filter-ctrlseqs
|
2019-06-27 03:10:01 +08:00
|
|
|
# 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.
|
|
|
|
|
2023-12-30 08:26:39 +08:00
|
|
|
# Verify that an invalid bind mode is rejected.
|
2019-06-27 03:10:01 +08:00
|
|
|
bind -m 'bad bind mode' \cX true
|
2022-04-08 22:36:06 +08:00
|
|
|
# CHECKERR: bind: bad bind mode: invalid mode name. See `help identifiers`
|
2021-11-04 13:52:17 +08:00
|
|
|
|
2023-12-30 08:26:39 +08:00
|
|
|
# Verify that an invalid bind mode target is rejected.
|
2019-06-27 03:10:01 +08:00
|
|
|
bind -M bind-mode \cX true
|
2022-04-08 22:36:06 +08:00
|
|
|
# CHECKERR: bind: bind-mode: invalid mode name. See `help identifiers`
|
2019-06-27 03:10:01 +08:00
|
|
|
|
|
|
|
# This should succeed and result in a success, zero, status.
|
|
|
|
bind -M bind_mode \cX true
|
|
|
|
|
|
|
|
# Listing bindings
|
2024-03-30 23:10:12 +08:00
|
|
|
bind | string match -v '*escape,\\[*' # Hide legacy bindings.
|
|
|
|
bind --user --preset | string match -v '*escape,\\[*'
|
2019-06-27 03:10:01 +08:00
|
|
|
# CHECK: bind --preset '' self-insert
|
2024-03-30 23:10:12 +08:00
|
|
|
# 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
|
2019-06-27 03:10:01 +08:00
|
|
|
# CHECK: bind --preset '' self-insert
|
2024-03-30 23:10:12 +08:00
|
|
|
# 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
|
2019-06-27 03:10:01 +08:00
|
|
|
|
|
|
|
# Preset only
|
2024-03-30 23:10:12 +08:00
|
|
|
bind --preset | string match -v '*escape,\\[*'
|
2019-06-27 03:10:01 +08:00
|
|
|
# CHECK: bind --preset '' self-insert
|
2024-03-30 23:10:12 +08:00
|
|
|
# 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
|
2019-06-27 03:10:01 +08:00
|
|
|
|
|
|
|
# User only
|
2024-03-30 23:10:12 +08:00
|
|
|
bind --user | string match -v '*escape,\\[*'
|
|
|
|
# CHECK: bind -M bind_mode ctrl-x true
|
2019-06-27 03:10:01 +08:00
|
|
|
|
|
|
|
# Adding bindings
|
2024-03-30 23:10:12 +08:00
|
|
|
bind tab 'echo banana'
|
|
|
|
bind | string match -v '*escape,\\[*'
|
2019-06-27 03:10:01 +08:00
|
|
|
# CHECK: bind --preset '' self-insert
|
2024-03-30 23:10:12 +08:00
|
|
|
# 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'
|
2019-06-27 03:10:01 +08:00
|
|
|
|
|
|
|
# Erasing bindings
|
2024-03-30 23:10:12 +08:00
|
|
|
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'
|
2019-06-27 03:10:01 +08:00
|
|
|
|
|
|
|
exit 0
|