From 9110ae474a8ac9fd70b6e15aa3cfda368c5d1cb4 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sat, 19 May 2018 12:25:39 -0400 Subject: statusline fanciness --- go/src/lib/statusline/statuslinue.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'go/src/lib/statusline/statuslinue.go') diff --git a/go/src/lib/statusline/statuslinue.go b/go/src/lib/statusline/statuslinue.go index 90ec1af..323c178 100644 --- a/go/src/lib/statusline/statuslinue.go +++ b/go/src/lib/statusline/statuslinue.go @@ -5,20 +5,29 @@ import ( "io" ) -type StatusLine struct { +type StatusLine interface { + Put(line string) + End(keep bool) +} + +type statusLine struct { out io.Writer prevLen int } -func NewStatusLine(out io.Writer) *StatusLine { - return &StatusLine{out: out} +func New(out io.Writer) StatusLine { + return &statusLine{out: out} } -func (sl *StatusLine) Put(line string) { +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() { - fmt.Fprintf(sl.out, "\r%-[1]*[2]s\r", sl.prevLen, "") +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, "") + } } -- cgit v1.2.3