summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2016-04-24 03:30:51 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2016-04-24 03:43:24 +0900
commit85ef3263fcfe578aecdac2aecd6c949fed921a7f (patch)
treeba8ea198c1b9d97800c70177327620c2d0f518b8
parent4bde8de63f187e487ff5bc40c1d7803ca882ff9c (diff)
downloadfzf-85ef3263fcfe578aecdac2aecd6c949fed921a7f.tar.gz
Fix incorrect cache reference in --exact mode (#547)
When we prepend a single quote to our query in --exact mode, we are not supposed to limit the scope of the new search to the previous exact-match result.
-rw-r--r--src/pattern.go2
-rw-r--r--test/test_go.rb10
2 files changed, 11 insertions, 1 deletions
diff --git a/src/pattern.go b/src/pattern.go
index fda5cc9a..42a341b4 100644
--- a/src/pattern.go
+++ b/src/pattern.go
@@ -227,7 +227,7 @@ func (p *Pattern) CacheKey() string {
}
cacheableTerms := []string{}
for _, termSet := range p.termSets {
- if len(termSet) == 1 && !termSet[0].inv {
+ if len(termSet) == 1 && !termSet[0].inv && (p.fuzzy || termSet[0].typ == termExact) {
cacheableTerms = append(cacheableTerms, string(termSet[0].origText))
}
}
diff --git a/test/test_go.rb b/test/test_go.rb
index 2c3ba2eb..2c1324b8 100644
--- a/test/test_go.rb
+++ b/test/test_go.rb
@@ -1157,6 +1157,16 @@ class TestGoFZF < TestBase
end
end
+ def test_partial_caching
+ tmux.send_keys 'seq 1000 | fzf -e', :Enter
+ tmux.until { |lines| lines[-2] == ' 1000/1000' }
+ tmux.send_keys 11
+ tmux.until { |lines| lines[-2] == ' 19/1000' }
+ tmux.send_keys 'C-a', "'"
+ tmux.until { |lines| lines[-2] == ' 28/1000' }
+ tmux.send_keys :Enter
+ end
+
private
def writelines path, lines
File.unlink path while File.exists? path