diff --git a/src/terminal.go b/src/terminal.go index 999bfdc0..ae56c1fe 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -6039,6 +6039,8 @@ func (t *Terminal) Loop() error { t.input = currentInput t.cx = len(t.input) beof = false + } else if string(t.input) != string(currentInput) { + t.inputOverride = nil } return true } @@ -6064,9 +6066,6 @@ func (t *Terminal) Loop() error { t.truncateQuery() } queryChanged = queryChanged || t.pasting == nil && string(previousInput) != string(t.input) - if queryChanged { - t.inputOverride = nil - } changed = changed || queryChanged if onChanges, prs := t.keymap[tui.Change.AsEvent()]; queryChanged && prs && !doActions(onChanges) { continue diff --git a/test/test_core.rb b/test/test_core.rb index d37a4b47..2d3cc307 100644 --- a/test/test_core.rb +++ b/test/test_core.rb @@ -1881,4 +1881,13 @@ class TestCore < TestInteractive assert_includes lines, '> 555' end end + + def test_search_override_query_in_no_input_mode + tmux.send_keys %(seq 1000 | #{FZF} --sync --no-input --bind 'enter:show-input+change-query(555)+hide-input+search(999),space:search(111)+show-input+change-query(777)'), :Enter + tmux.until { |lines| assert_includes lines, '> 1' } + tmux.send_keys :Enter + tmux.until { |lines| assert_includes lines, '> 999' } + tmux.send_keys :Space + tmux.until { |lines| assert_includes lines, '> 777' } + end end