Stop processing more actions after a terminal action (accept, abort, etc.)

This commit is contained in:
Junegunn Choi 2025-02-02 16:27:39 +09:00
parent 7d0ea599c4
commit 65d74387e7
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627
2 changed files with 9 additions and 0 deletions

View File

@ -4831,6 +4831,10 @@ func (t *Terminal) Loop() error {
if !doAction(action) {
return false
}
// A terminal action performed. We should stop processing more.
if !looping {
break
}
}
if onFocus, prs := t.keymap[tui.Focus.AsEvent()]; prs && iter < maxFocusEvents {

View File

@ -299,4 +299,9 @@ class TestFilter < TestBase
assert_equal expected, result
end
end
def test_abort_action_chain
assert_equal '1', `seq 100 | #{FZF} --bind 'load:accept+up+up'`.chomp
assert_equal '', `seq 100 | #{FZF} --bind 'load:abort+become(echo {})'`.chomp
end
end