From 41bcbe342ff70020bd7aa776ca041205aa970f43 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sat, 1 Jun 2024 13:20:12 +0900 Subject: [PATCH] Revert "An '--expect' key should execute actions bound to the key" To be backward compatible. Close #3829 --- man/man1/fzf.1 | 8 ++++++++ src/terminal.go | 20 ++++++++------------ test/test_go.rb | 2 +- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/man/man1/fzf.1 b/man/man1/fzf.1 index c85d106..f1bf04a 100644 --- a/man/man1/fzf.1 +++ b/man/man1/fzf.1 @@ -828,6 +828,14 @@ list. e.g. \fBfzf --expect=ctrl-v,ctrl-t,alt-s --expect=f1,f2,~,@\fR .RE + +This option is not compatible with \fB--bind\fR on the same key and will take +precedence over it. To combine the two, use \fBprint\fR action. + +.RS +e.g. + \fBfzf --multi --bind 'enter:print()+accept,ctrl-y:select-all+print(ctrl-y)+accept'\fR +.RE .TP .B "--read0" Read input delimited by ASCII NUL characters instead of newline characters diff --git a/src/terminal.go b/src/terminal.go index 0e945fa..ff6295f 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -3608,6 +3608,14 @@ func (t *Terminal) Loop() error { } t.mutex.Lock() + for key, ret := range t.expect { + if keyMatch(key, event) { + t.pressed = ret + t.reqBox.Set(reqClose, nil) + t.mutex.Unlock() + return nil + } + } previousInput := t.input previousCx := t.cx t.lastKey = event.KeyName() @@ -4460,18 +4468,6 @@ func (t *Terminal) Loop() error { return true } - for key, ret := range t.expect { - if keyMatch(key, event) { - t.pressed = ret - if actions, found := t.keymap[key]; found { - doActions(actions) - } - t.reqBox.Set(reqClose, nil) - t.mutex.Unlock() - return nil - } - } - if t.jumping == jumpDisabled || len(actions) > 0 { // Break out of jump mode if any action is submitted to the server if t.jumping != jumpDisabled { diff --git a/test/test_go.rb b/test/test_go.rb index dfb338e..6675f77 100755 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -594,7 +594,7 @@ class TestGoFZF < TestBase tmux.send_keys "seq 1 100 | #{fzf('--query 1 --print-query --expect z --bind z:up+up')}", :Enter tmux.until { |lines| assert_equal 20, lines.match_count } tmux.send_keys('z') - assert_equal %w[1 z 11], fzf_output_lines + assert_equal %w[1 z 1], fzf_output_lines end def test_expect_print_query