diff options
Diffstat (limited to 'go/src/lib/statusline/ratelimit.go')
-rw-r--r-- | go/src/lib/statusline/ratelimit.go | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/go/src/lib/statusline/ratelimit.go b/go/src/lib/statusline/ratelimit.go index 970f8e5..087466d 100644 --- a/go/src/lib/statusline/ratelimit.go +++ b/go/src/lib/statusline/ratelimit.go @@ -20,19 +20,25 @@ func RateLimit(sl StatusLine, d time.Duration) StatusLine { ticker := time.NewTicker(d) var oldLine string var newLine string - dirty := false + first := true for { select { case <-ticker.C: - if dirty && newLine != oldLine { + if newLine != oldLine { sl.Put(newLine) + oldLine = newLine } - dirty = false case line := <-ret.lines: - newLine = line - dirty = true + if first { + first = false + oldLine = line + newLine = line + sl.Put(line) + } else { + newLine = line + } case keep := <-ret.end1: - if keep && dirty && newLine != oldLine { + if newLine != oldLine { sl.Put(newLine) } sl.End(keep) |