diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2023-05-27 15:43:31 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2023-05-27 15:51:04 +0900 |
| commit | 4c70745cc1c8856486dab9e07985cbcf5081e490 (patch) | |
| tree | 84a742cb75d32c13142a9354e4aa40858abc0f07 /src/merger.go | |
| parent | 7795748a3f42e86a802cc9ea9569429892f47f95 (diff) | |
| download | fzf-4c70745cc1c8856486dab9e07985cbcf5081e490.tar.gz | |
Fix bug where preview is not updated after reload when --disabled is set
Fix #3311
Diffstat (limited to 'src/merger.go')
| -rw-r--r-- | src/merger.go | 64 |
1 files changed, 37 insertions, 27 deletions
diff --git a/src/merger.go b/src/merger.go index 5c12575c..6a235043 100644 --- a/src/merger.go +++ b/src/merger.go @@ -3,32 +3,36 @@ package fzf import "fmt" // EmptyMerger is a Merger with no data -var EmptyMerger = NewMerger(nil, [][]Result{}, false, false) +func EmptyMerger(revision int) *Merger { + return NewMerger(nil, [][]Result{}, false, false, revision) +} // Merger holds a set of locally sorted lists of items and provides the view of // a single, globally-sorted list type Merger struct { - pattern *Pattern - lists [][]Result - merged []Result - chunks *[]*Chunk - cursors []int - sorted bool - tac bool - final bool - count int - pass bool + pattern *Pattern + lists [][]Result + merged []Result + chunks *[]*Chunk + cursors []int + sorted bool + tac bool + final bool + count int + pass bool + revision int } // PassMerger returns a new Merger that simply returns the items in the // original order -func PassMerger(chunks *[]*Chunk, tac bool) *Merger { +func PassMerger(chunks *[]*Chunk, tac bool, revision int) *Merger { mg := Merger{ - pattern: nil, - chunks: chunks, - tac: tac, - count: 0, - pass: true} + pattern: nil, + chunks: chunks, + tac: tac, + count: 0, + pass: true, + revision: revision} for _, chunk := range *mg.chunks { mg.count += chunk.count @@ -37,17 +41,18 @@ func PassMerger(chunks *[]*Chunk, tac bool) *Merger { } // NewMerger returns a new Merger -func NewMerger(pattern *Pattern, lists [][]Result, sorted bool, tac bool) *Merger { +func NewMerger(pattern *Pattern, lists [][]Result, sorted bool, tac bool, revision int) *Merger { mg := Merger{ - pattern: pattern, - lists: lists, - merged: []Result{}, - chunks: nil, - cursors: make([]int, len(lists)), - sorted: sorted, - tac: tac, - final: false, - count: 0} + pattern: pattern, + lists: lists, + merged: []Result{}, + chunks: nil, + cursors: make([]int, len(lists)), + sorted: sorted, + tac: tac, + final: false, + count: 0, + revision: revision} for _, list := range mg.lists { mg.count += len(list) @@ -55,6 +60,11 @@ func NewMerger(pattern *Pattern, lists [][]Result, sorted bool, tac bool) *Merge return &mg } +// Revision returns revision number +func (mg *Merger) Revision() int { + return mg.revision +} + // Length returns the number of items func (mg *Merger) Length() int { return mg.count |
