diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2025-07-06 22:02:12 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2025-07-06 22:02:12 +0900 |
| commit | 82c9671f79c4673b0253db54533e6910f96a92a1 (patch) | |
| tree | fac736ee0d72a8007db35662ddbaf6be3b6e259a /src/merger.go | |
| parent | d364a1122e23149a6fb2e060fe5f7a0dbb752b20 (diff) | |
| download | fzf-82c9671f79c4673b0253db54533e6910f96a92a1.tar.gz | |
Fix selection lost on revision bump
Diffstat (limited to 'src/merger.go')
| -rw-r--r-- | src/merger.go | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/merger.go b/src/merger.go index fee8a59a..688f3571 100644 --- a/src/merger.go +++ b/src/merger.go @@ -4,7 +4,7 @@ import "fmt" // EmptyMerger is a Merger with no data func EmptyMerger(revision revision) *Merger { - return NewMerger(nil, [][]Result{}, false, false, revision, 0) + return NewMerger(nil, [][]Result{}, false, false, revision, 0, 0) } // Merger holds a set of locally sorted lists of items and provides the view of @@ -22,14 +22,16 @@ type Merger struct { pass bool revision revision minIndex int32 + maxIndex int32 } // PassMerger returns a new Merger that simply returns the items in the // original order func PassMerger(chunks *[]*Chunk, tac bool, revision revision) *Merger { - var minIndex int32 + var minIndex, maxIndex int32 if len(*chunks) > 0 { minIndex = (*chunks)[0].items[0].Index() + maxIndex = (*chunks)[len(*chunks)-1].lastIndex(minIndex) } mg := Merger{ pattern: nil, @@ -38,7 +40,8 @@ func PassMerger(chunks *[]*Chunk, tac bool, revision revision) *Merger { count: 0, pass: true, revision: revision, - minIndex: minIndex} + minIndex: minIndex, + maxIndex: maxIndex} for _, chunk := range *mg.chunks { mg.count += chunk.count @@ -47,7 +50,7 @@ func PassMerger(chunks *[]*Chunk, tac bool, revision revision) *Merger { } // NewMerger returns a new Merger -func NewMerger(pattern *Pattern, lists [][]Result, sorted bool, tac bool, revision revision, minIndex int32) *Merger { +func NewMerger(pattern *Pattern, lists [][]Result, sorted bool, tac bool, revision revision, minIndex int32, maxIndex int32) *Merger { mg := Merger{ pattern: pattern, lists: lists, @@ -59,7 +62,8 @@ func NewMerger(pattern *Pattern, lists [][]Result, sorted bool, tac bool, revisi final: false, count: 0, revision: revision, - minIndex: minIndex} + minIndex: minIndex, + maxIndex: maxIndex} for _, list := range mg.lists { mg.count += len(list) |
