From 341607b7512731131f355e0a2932e158f434d30b Mon Sep 17 00:00:00 2001 From: neeshy Date: Mon, 18 Jan 2021 17:27:03 -0500 Subject: [PATCH 1/2] Use ranged for loop over channel And rename variable "path" to "prev" --- nav.go | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/nav.go b/nav.go index 2b25fbf7..9f53d4bd 100644 --- a/nav.go +++ b/nav.go @@ -460,18 +460,14 @@ func (nav *nav) position() { } func (nav *nav) previewLoop(ui *ui) { - var path string - for { - p, ok := <-nav.previewChan - if !ok { - return - } - if len(p) != 0 { + var prev string + for path := range nav.previewChan { + if len(path) != 0 { win := ui.wins[len(ui.wins)-1] - nav.preview(p, win) - path = p + nav.preview(path, win) + prev = path } else if len(gOpts.previewer) != 0 && len(gOpts.cleaner) != 0 && nav.volatilePreview { - cmd := exec.Command(gOpts.cleaner, path) + cmd := exec.Command(gOpts.cleaner, prev) if err := cmd.Run(); err != nil { log.Printf("cleaning preview: %s", err) } From 1e2415f0dbc5a36a8f9e64378a8ebac6e8ba15c5 Mon Sep 17 00:00:00 2001 From: neeshy Date: Mon, 18 Jan 2021 17:28:42 -0500 Subject: [PATCH 2/2] Exhaust queued entries in previewChan prior to calling preview script --- nav.go | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/nav.go b/nav.go index 9f53d4bd..b620c5e4 100644 --- a/nav.go +++ b/nav.go @@ -462,17 +462,33 @@ func (nav *nav) position() { func (nav *nav) previewLoop(ui *ui) { var prev string for path := range nav.previewChan { - if len(path) != 0 { - win := ui.wins[len(ui.wins)-1] - nav.preview(path, win) - prev = path - } else if len(gOpts.previewer) != 0 && len(gOpts.cleaner) != 0 && nav.volatilePreview { + var clear bool + if len(path) == 0 { + clear = true + } + loop: + for { + select { + case path = <-nav.previewChan: + if len(path) == 0 { + clear = true + } + default: + break loop + } + } + if clear && len(gOpts.previewer) != 0 && len(gOpts.cleaner) != 0 && nav.volatilePreview { cmd := exec.Command(gOpts.cleaner, prev) if err := cmd.Run(); err != nil { log.Printf("cleaning preview: %s", err) } nav.volatilePreview = false } + if len(path) != 0 { + win := ui.wins[len(ui.wins)-1] + nav.preview(path, win) + prev = path + } } }