From 7c6f5dba63a4cf54a785090c26479003118f0046 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sat, 22 Apr 2023 15:06:22 +0900 Subject: Fixed --track when used with --tac Fix #3234 --- src/merger.go | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'src/merger.go') diff --git a/src/merger.go b/src/merger.go index cdf00acc..5c12575c 100644 --- a/src/merger.go +++ b/src/merger.go @@ -60,17 +60,30 @@ func (mg *Merger) Length() int { return mg.count } +func (mg *Merger) First() Result { + if mg.tac && !mg.sorted { + return mg.Get(mg.count - 1) + } + return mg.Get(0) +} + // FindIndex returns the index of the item with the given item index func (mg *Merger) FindIndex(itemIndex int32) int { + index := -1 if mg.pass { - return int(itemIndex) - } - for i := 0; i < mg.count; i++ { - if mg.Get(i).item.Index() == itemIndex { - return i + index = int(itemIndex) + if mg.tac { + index = mg.count - index - 1 + } + } else { + for i := 0; i < mg.count; i++ { + if mg.Get(i).item.Index() == itemIndex { + index = i + break + } } } - return -1 + return index } // Get returns the pointer to the Result object indexed by the given integer -- cgit v1.2.3