From 6b4358f641cc284302da176238f7190e30fe8622 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Wed, 22 May 2024 20:39:09 +0900 Subject: [PATCH] An '--expect' key should execute actions bound to the key Fix #3810 --- src/terminal.go | 20 ++++++++++++-------- test/test_go.rb | 7 +++++++ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/terminal.go b/src/terminal.go index 8f154da..93e7085 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -3559,14 +3559,6 @@ func (t *Terminal) Loop() error { scrollPreviewBy := func(amount int) { scrollPreviewTo(t.previewer.offset + amount) } - for key, ret := range t.expect { - if keyMatch(key, event) { - t.pressed = ret - t.reqBox.Set(reqClose, nil) - t.mutex.Unlock() - return nil - } - } actionsFor := func(eventType tui.EventType) []*action { return t.keymap[eventType.AsEvent()] @@ -4373,6 +4365,18 @@ 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 bbccbd4..eea364d 100755 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -580,6 +580,13 @@ class TestGoFZF < TestBase test.call('@', '@') end + def test_expect_with_bound_actions + 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], readonce.lines(chomp: true) + end + def test_expect_print_query tmux.send_keys "seq 1 100 | #{fzf('--expect=alt-z', :print_query)}", :Enter tmux.until { |lines| assert_equal ' 100/100', lines[-2] }