diff options
author | Luke Shumaker <lukeshu@beefcake.parabola.nu> | 2018-06-05 12:44:45 -0400 |
---|---|---|
committer | Luke Shumaker <lukeshu@beefcake.parabola.nu> | 2018-06-05 12:44:45 -0400 |
commit | 1ff3ecb5b08b40686b0e03cf79c4233c5bf99396 (patch) | |
tree | 833b3f6ff19f0b5ae8314a850e9c3b7cc0329540 /go/src/lib/statusline/tty.go | |
parent | 8caefed85ae0253a1ea5b95a5a0ad25146b5d6d7 (diff) |
fixup statusline
Diffstat (limited to 'go/src/lib/statusline/tty.go')
-rw-r--r-- | go/src/lib/statusline/tty.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/go/src/lib/statusline/tty.go b/go/src/lib/statusline/tty.go new file mode 100644 index 0000000..72bbb57 --- /dev/null +++ b/go/src/lib/statusline/tty.go @@ -0,0 +1,28 @@ +package statusline + +import ( + "fmt" + "io" +) + +type statusLine struct { + out io.Writer + prevLen int +} + +func TTY(out io.Writer) StatusLine { + return &statusLine{out: out} +} + +func (sl *statusLine) Put(line string) { + fmt.Fprintf(sl.out, "\r%-[1]*[2]s", sl.prevLen, line) + sl.prevLen = len(line) +} + +func (sl *statusLine) End(keep bool) { + if keep { + io.WriteString(sl.out, "\n") + } else { + fmt.Fprintf(sl.out, "\r%-[1]*[2]s\r", sl.prevLen, "") + } +} |