summaryrefslogtreecommitdiff
path: root/src/matcher.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2024-06-10 20:30:19 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2024-06-10 20:33:55 +0900
commit7fc13c5cfde55ae53c6f87290a80559fcc59bf0f (patch)
treeaaeddb5f0386ad3cce377f45af539470b7e593ac /src/matcher.go
parentdfee7af57b0de51c0f1bb815da1be071978e8675 (diff)
downloadfzf-7fc13c5cfde55ae53c6f87290a80559fcc59bf0f.tar.gz
Less aggressive chunk cache invalidation for --tail
Diffstat (limited to 'src/matcher.go')
-rw-r--r--src/matcher.go10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/matcher.go b/src/matcher.go
index 869663fa..4e21f8ca 100644
--- a/src/matcher.go
+++ b/src/matcher.go
@@ -87,7 +87,9 @@ func (m *Matcher) Loop() {
m.sort = request.sort
m.revision = request.revision
m.mergerCache = make(map[string]*Merger)
- m.cache.Clear()
+ if !request.revision.compatible(m.revision) {
+ m.cache.Clear()
+ }
cacheCleared = true
}
@@ -193,7 +195,7 @@ func (m *Matcher) scan(request MatchRequest) (*Merger, bool) {
for _, matches := range allMatches {
sliceMatches = append(sliceMatches, matches...)
}
- if m.sort {
+ if m.sort && request.pattern.sortable {
if m.tac {
sort.Sort(ByRelevanceTac(sliceMatches))
} else {
@@ -234,7 +236,7 @@ func (m *Matcher) scan(request MatchRequest) (*Merger, bool) {
partialResult := <-resultChan
partialResults[partialResult.index] = partialResult.matches
}
- return NewMerger(pattern, partialResults, m.sort, m.tac, request.revision, minIndex), false
+ return NewMerger(pattern, partialResults, m.sort && request.pattern.sortable, m.tac, request.revision, minIndex), false
}
// Reset is called to interrupt/signal the ongoing search
@@ -247,7 +249,7 @@ func (m *Matcher) Reset(chunks []*Chunk, patternRunes []rune, cancel bool, final
} else {
event = reqRetry
}
- m.reqBox.Set(event, MatchRequest{chunks, pattern, final, sort && pattern.sortable, revision})
+ m.reqBox.Set(event, MatchRequest{chunks, pattern, final, sort, revision})
}
func (m *Matcher) Stop() {