reader: make Escape during history search restore commandline again

Commit 3b30d92b6 (Commit transient edit when closing pager, 2022-08-31)
inadvertently introduced two regressions to history search:

1. It made Escape keeps the selected history entry,
   instead of restoring the commandline before history search.
2. It made history search commands add undo entries.

Fix both of this issues.
This commit is contained in:
Johannes Altmanninger 2023-01-17 09:14:54 +01:00
parent 00d7b817aa
commit e84f588d11
3 changed files with 15 additions and 1 deletions

View File

@ -24,6 +24,7 @@ Interactive improvements
- Using ``fish_vi_key_bindings`` in combination with fish's ``--no-config`` mode works without locking up the shell (:issue:`9443`).
- The history pager now uses more screen space, usually half the screen (:issue:`9458`)
- Variables that were set while the locale was C (i.e. ASCII) will now properly be encoded if the locale is switched (:issue:`2613`, :issue:`9473`).
- Escape during history search restores the original commandline again (regressed in 3.6.0).
New or improved bindings
^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -4482,7 +4482,8 @@ maybe_t<wcstring> reader_data_t::readline(int nchars_or_0) {
// Clear the pager if necessary.
bool focused_on_search_field = (active_edit_line() == &pager.search_field_line);
if (command_ends_paging(readline_cmd, focused_on_search_field)) {
if (!history_search.active() &&
command_ends_paging(readline_cmd, focused_on_search_field)) {
clear_pager();
}

View File

@ -3,6 +3,9 @@
# disable on github actions because it's flakey
#REQUIRES: test -z "$CI"
set -g isolated_tmux_fish_extra_args -C '
set -g fish_autosuggestion_enabled 0
'
isolated-tmux-start
isolated-tmux send-keys 'true needle' Enter
@ -15,3 +18,12 @@ isolated-tmux send-keys C-p C-a M-f M-f M-f M-.
# CHECK: prompt 2> true hay needle hay
tmux-sleep
isolated-tmux capture-pane -p
isolated-tmux send-keys C-e C-u true Up Up Escape
tmux-sleep
isolated-tmux capture-pane -p | grep 'prompt 2'
# CHECK: prompt 2> true
isolated-tmux send-keys C-z _
tmux-sleep
isolated-tmux capture-pane -p | grep 'prompt 2'
# CHECK: prompt 2> _