Fixed --track when used with --tac

Fix #3234
This commit is contained in:
Junegunn Choi
2023-04-22 15:06:22 +09:00
parent 44cfc7e62a
commit 7c6f5dba63
5 changed files with 30 additions and 14 deletions

View File

@@ -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

View File

@@ -1083,6 +1083,8 @@ func parseActionList(masked string, original string, prevActions []*action, putA
appendAction(actToggleAll)
case "toggle-search":
appendAction(actToggleSearch)
case "toggle-track":
appendAction(actToggleTrack)
case "select":
appendAction(actSelect)
case "select-all":
@@ -1938,10 +1940,6 @@ func postProcessOptions(opts *Options) {
errorExit("scrollbar display width should be 1")
}
if opts.Track && opts.Tac {
errorExit("--track cannot be used with --tac")
}
// Default actions for CTRL-N / CTRL-P when --history is set
if opts.History != nil {
if _, prs := opts.Keymap[tui.CtrlP.AsEvent()]; !prs {

View File

@@ -907,8 +907,12 @@ func (t *Terminal) UpdateProgress(progress float32) {
func (t *Terminal) UpdateList(merger *Merger, reset bool) {
t.mutex.Lock()
var prevIndex int32 = -1
if !reset && t.track && t.merger.Length() > 0 {
prevIndex = t.merger.Get(t.cy).item.Index()
if !reset && t.track {
if t.merger.Length() > 0 {
prevIndex = t.merger.Get(t.cy).item.Index()
} else if merger.Length() > 0 {
prevIndex = merger.First().item.Index()
}
}
t.progress = 100
t.merger = merger