MCPcopy
hub / github.com/junegunn/fzf / UpdateList

Method UpdateList

src/terminal.go:1871–2042  ·  view source on GitHub ↗

UpdateList updates Merger to display the list

(result MatchResult)

Source from the content-addressed store, hash-verified

1869
1870// UpdateList updates Merger to display the list
1871func (t *Terminal) UpdateList(result MatchResult) {
1872 merger := result.merger
1873 t.mutex.Lock()
1874 prevIndex := minItem.Index()
1875 newRevision := merger.Revision()
1876 if t.revision.compatible(newRevision) && t.track != trackDisabled {
1877 if t.merger.Length() > 0 {
1878 prevIndex = t.currentIndex()
1879 } else if merger.Length() > 0 {
1880 prevIndex = merger.First().item.Index()
1881 }
1882 }
1883 if t.targetIndex != minItem.Index() {
1884 prevIndex = t.targetIndex
1885 t.targetIndex = minItem.Index()
1886 }
1887 t.progress = 100
1888 t.merger = merger
1889 t.resultMerger = merger
1890 t.passMerger = result.passMerger
1891 if t.raw {
1892 t.merger = result.passMerger
1893 t.matchMap = t.resultMerger.ToMap()
1894 } else {
1895 t.merger = result.merger
1896 t.matchMap = make(map[int32]Result)
1897 }
1898 if t.revision != newRevision {
1899 if !t.revision.compatible(newRevision) {
1900 // Reloaded: capture selection keys for restoration, then clear (reload-sync only)
1901 if t.trackSync && len(t.idNth) > 0 && t.multi > 0 && len(t.selected) > 0 {
1902 t.pendingSelections = make(map[string]selectedItem, len(t.selected))
1903 for _, sel := range t.selected {
1904 key := t.trackKeyFor(sel.item, t.idNth)
1905 t.pendingSelections[key] = sel
1906 }
1907 }
1908 t.selected = make(map[int32]selectedItem)
1909 t.clearNumLinesCache()
1910 } else {
1911 // Trimmed by --tail: filter selection by index
1912 filtered := make(map[int32]selectedItem)
1913 minIndex := merger.minIndex
1914 maxIndex := merger.maxIndex
1915 for k, v := range t.selected {
1916 var included bool
1917 if maxIndex > minIndex {
1918 included = k >= minIndex && k < maxIndex
1919 } else if maxIndex < minIndex { // int32 overflow [==> <==]
1920 included = k >= minIndex || k < maxIndex
1921 }
1922 if included {
1923 filtered[k] = v
1924 }
1925 }
1926 t.selected = filtered
1927 }
1928 t.revision = newRevision

Callers 1

RunFunction · 0.95

Calls 15

currentIndexMethod · 0.95
trackKeyForMethod · 0.95
clearNumLinesCacheMethod · 0.95
unblockTrackMethod · 0.95
maxItemsMethod · 0.95
RevisionMethod · 0.80
compatibleMethod · 0.80
FirstMethod · 0.80
ToMapMethod · 0.80
AsEventMethod · 0.80
CurrentMethod · 0.80
FindIndexMethod · 0.80

Tested by

no test coverage detected