From 50292adacbad70f9561bc1e22ccbd3adea22481a Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Tue, 31 Mar 2015 22:05:02 +0900 Subject: Implement --toggle-sort option (#173) --- src/matcher.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/matcher.go') 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}) } -- cgit v1.2.3