Fix caching when reload and query change triggered by the same binding

This commit is contained in:
Junegunn Choi 2023-05-01 13:53:34 +09:00
parent fb76893e18
commit b7c2e8cb67
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627
3 changed files with 24 additions and 1 deletions

View File

@ -1,6 +1,10 @@
CHANGELOG
=========
0.41.0
------
- Bug fixes
0.40.0
------
- Added `zero` event that is triggered when there's no match

View File

@ -320,15 +320,16 @@ func Run(opts *Options, version string, revision string) {
if !changed {
break
}
reset := false
if !useSnapshot {
newSnapshot, _ := chunkList.Snapshot()
// We want to avoid showing empty list when reload is triggered
// and the query string is changed at the same time i.e. command != nil && changed
if command == nil || len(newSnapshot) > 0 {
snapshot = newSnapshot
reset = clearCache()
}
}
reset := !useSnapshot && clearCache()
matcher.Reset(snapshot, input(reset), true, !reading, sort, reset)
delay = false

View File

@ -2866,6 +2866,24 @@ class TestGoFZF < TestBase
tmux.send_keys "(echo foo; echo bar) | #{FZF} --bind 'load:reload-sync(sleep 60)+change-query(bar)'", :Enter
tmux.until { |lines| assert_equal 1, lines.match_count }
end
def test_reload_and_change_cache
tmux.send_keys "echo bar | #{FZF} --bind 'zero:change-header(foo)+reload(echo foo)+clear-query'", :Enter
expected = <<~OUTPUT
> bar
1/1
>
OUTPUT
tmux.until { assert_block(expected, _1) }
tmux.send_keys :z
expected = <<~OUTPUT
> foo
foo
1/1
>
OUTPUT
tmux.until { assert_block(expected, _1) }
end
end
module TestShell