diff --git a/CHANGELOG.md b/CHANGELOG.md index 0984986..4b153a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ CHANGELOG ========= +0.41.0 +------ +- Bug fixes + 0.40.0 ------ - Added `zero` event that is triggered when there's no match diff --git a/src/core.go b/src/core.go index d4c06f9..042d863 100644 --- a/src/core.go +++ b/src/core.go @@ -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 diff --git a/test/test_go.rb b/test/test_go.rb index ff459e1..1c5c3de 100755 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -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