Fixed --track when used with --tac

Fix #3234
pull/3261/head
Junegunn Choi 1 year ago
parent 44cfc7e62a
commit 7c6f5dba63
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627

@ -3,7 +3,9 @@ CHANGELOG
0.39.1
------
- Disallow using `--track` with `--tac` as the result can be very confusing
- Fixed `--track` behavior when used with `--tac`
- However, using `--track` with `--tac` is not recommended. The resulting
behavior can be very confusing.
- Bug fixes and improvements
0.39.0

@ -95,7 +95,6 @@ Do not sort the result
.B "--track"
Make fzf track the current selection when the result list is updated.
This can be useful when browsing logs using fzf with sorting disabled.
This option is not compatible with \fB--tac\fR.
.RS
e.g.

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

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

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

Loading…
Cancel
Save