summaryrefslogtreecommitdiff
path: root/go/src/lib/statusline/async.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/src/lib/statusline/async.go')
-rw-r--r--go/src/lib/statusline/async.go57
1 files changed, 0 insertions, 57 deletions
diff --git a/go/src/lib/statusline/async.go b/go/src/lib/statusline/async.go
deleted file mode 100644
index 5b509ac..0000000
--- a/go/src/lib/statusline/async.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package statusline
-
-import (
- "io"
- "time"
-)
-
-type AsyncStatusLine struct {
- lines chan string
- end1 chan struct{}
- end2 chan struct{}
-}
-
-func NewAsyncStatusLine(out io.Writer, d time.Duration) *AsyncStatusLine {
- ret := &AsyncStatusLine{
- lines: make(chan string),
- end1: make(chan struct{}),
- end2: make(chan struct{}),
- }
- go func() {
- sl := NewStatusLine(out)
- ticker := time.NewTicker(d)
- var oldLine string
- var newLine string
- dirty := false
- for {
- select {
- case <-ticker.C:
- if dirty && newLine != oldLine {
- sl.Put(newLine)
- dirty = false
- }
- case l := <-ret.lines:
- newLine = l
- dirty = true
- case <-ret.end1:
- sl.End()
- ticker.Stop()
- end2 <- struct{}{}
- close(end2)
- return
- }
- }
- }()
- return ret
-}
-
-func (sl *AsyncStatusLine) Put(line string) {
- sl.lines <- line
-}
-
-func (sl *AsyncStatusLine) End() {
- sl.end1 <- struct{}{}
- close(sl.lines)
- close(sl.end)
- <-sl.end2
-}