| 742 | } |
| 743 | |
| 744 | func (nav *nav) preloadLoop(ui *ui) { |
| 745 | stack := []string{} |
| 746 | |
| 747 | push := func(path string) { |
| 748 | stack = slices.DeleteFunc(stack, func(s string) bool { return s == path }) |
| 749 | stack = append(stack, path) |
| 750 | } |
| 751 | |
| 752 | pop := func() string { |
| 753 | path := stack[len(stack)-1] |
| 754 | stack = stack[:len(stack)-1] |
| 755 | return path |
| 756 | } |
| 757 | |
| 758 | for { |
| 759 | if len(stack) == 0 { |
| 760 | push(<-nav.preloadChan) |
| 761 | } else { |
| 762 | select { |
| 763 | case path := <-nav.preloadChan: |
| 764 | push(path) |
| 765 | default: |
| 766 | path := pop() |
| 767 | nav.preview(path, ui.wins[len(ui.wins)-1], "preload") |
| 768 | } |
| 769 | } |
| 770 | } |
| 771 | } |
| 772 | |
| 773 | func (nav *nav) previewLoop(ui *ui) { |
| 774 | var prev string |