UpdateList updates Merger to display the list
(result MatchResult)
| 1869 | |
| 1870 | // UpdateList updates Merger to display the list |
| 1871 | func (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 |
no test coverage detected