diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2015-03-31 22:05:02 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2015-03-31 22:05:16 +0900 |
commit | 50292adacbad70f9561bc1e22ccbd3adea22481a (patch) | |
tree | 72a9ba657933585b7c56798b71b64a206144421b /src/matcher.go | |
parent | 84a7499ae357bc3b3a82890d2e44d9c300af0c13 (diff) |
Implement --toggle-sort option (#173)
Diffstat (limited to 'src/matcher.go')
-rw-r--r-- | src/matcher.go | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/matcher.go b/src/matcher.go index a3a9bd0e..0f3b409e 100644 --- a/src/matcher.go +++ b/src/matcher.go @@ -15,6 +15,7 @@ type MatchRequest struct { chunks []*Chunk pattern *Pattern final bool + sort bool } // Matcher is responsible for performing search @@ -69,6 +70,12 @@ func (m *Matcher) Loop() { events.Clear() }) + if request.sort != m.sort { + m.sort = request.sort + m.mergerCache = make(map[string]*Merger) + clearChunkCache() + } + // Restart search patternString := request.pattern.AsString() var merger *Merger @@ -203,7 +210,7 @@ func (m *Matcher) scan(request MatchRequest) (*Merger, bool) { } // Reset is called to interrupt/signal the ongoing search -func (m *Matcher) Reset(chunks []*Chunk, patternRunes []rune, cancel bool, final bool) { +func (m *Matcher) Reset(chunks []*Chunk, patternRunes []rune, cancel bool, final bool, sort bool) { pattern := m.patternBuilder(patternRunes) var event util.EventType @@ -212,5 +219,5 @@ func (m *Matcher) Reset(chunks []*Chunk, patternRunes []rune, cancel bool, final } else { event = reqRetry } - m.reqBox.Set(event, MatchRequest{chunks, pattern, final}) + m.reqBox.Set(event, MatchRequest{chunks, pattern, final, sort}) } |