summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2023-05-01 13:53:34 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2023-05-01 13:53:34 +0900
commitb7c2e8cb678d12c73c497fdec5c0cad8f32a6814 (patch)
treeb83f4c096ed8b12dc1b36fe7eb9baf78bdc4325d
parentfb76893e18fd567ac45a516f708832ae0f2ad37c (diff)
Fix caching when reload and query change triggered by the same binding
-rw-r--r--CHANGELOG.md4
-rw-r--r--src/core.go3
-rwxr-xr-xtest/test_go.rb18
3 files changed, 24 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0984986a..4b153a77 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 d4c06f9f..042d863f 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 ff459e1c..1c5c3de4 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