When showing/hiding the cursor operate on the program's io.Writer

Previously we were operating on io.Stdout.
This commit is contained in:
Christian Rocha 2020-12-03 10:18:58 -05:00 committed by Christian Rocha
parent f5fde56af0
commit 6d70abd7d5
3 changed files with 16 additions and 7 deletions

View File

@ -7,6 +7,14 @@ import (
te "github.com/muesli/termenv" te "github.com/muesli/termenv"
) )
func hideCursor(w io.Writer) {
fmt.Fprintf(w, te.CSI+te.HideCursorSeq)
}
func showCursor(w io.Writer) {
fmt.Fprintf(w, te.CSI+te.ShowCursorSeq)
}
func clearLine(w io.Writer) { func clearLine(w io.Writer) {
fmt.Fprintf(w, te.CSI+te.EraseLineSeq, 2) fmt.Fprintf(w, te.CSI+te.EraseLineSeq, 2)
} }

4
tea.go
View File

@ -124,11 +124,11 @@ func (p *Program) Start() error {
p.renderer = newRenderer(p.output, &p.mtx) p.renderer = newRenderer(p.output, &p.mtx)
err := initTerminal() err := initTerminal(p.output)
if err != nil { if err != nil {
return err return err
} }
defer restoreTerminal() defer restoreTerminal(p.output)
// Initialize program // Initialize program
model := p.initialModel model := p.initialModel

11
tty.go
View File

@ -1,13 +1,14 @@
package tea package tea
import ( import (
"io"
"github.com/containerd/console" "github.com/containerd/console"
"github.com/muesli/termenv"
) )
var tty console.Console var tty console.Console
func initTerminal() error { func initTerminal(w io.Writer) error {
tty = console.Current() tty = console.Current()
err := tty.SetRaw() err := tty.SetRaw()
if err != nil { if err != nil {
@ -15,11 +16,11 @@ func initTerminal() error {
} }
enableAnsiColors() enableAnsiColors()
termenv.HideCursor() hideCursor(w)
return nil return nil
} }
func restoreTerminal() error { func restoreTerminal(w io.Writer) error {
termenv.ShowCursor() showCursor(w)
return tty.Reset() return tty.Reset()
} }