From 6bdca136033df830dbefcb82b30b841cf613e6f4 Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Sun, 21 Jan 2024 21:16:33 +0100 Subject: [PATCH] ui/termstatus: simplify cleaning up on termination `writeStatus` also cleans no longer used status lines. The old code actually cleaned one line too much. However, as that line was never used it makes no difference. --- internal/ui/termstatus/status.go | 26 +------------------------- internal/ui/termstatus/status_test.go | 5 ++--- 2 files changed, 3 insertions(+), 28 deletions(-) diff --git a/internal/ui/termstatus/status.go b/internal/ui/termstatus/status.go index 95286de99..fc731b023 100644 --- a/internal/ui/termstatus/status.go +++ b/internal/ui/termstatus/status.go @@ -105,7 +105,7 @@ func (t *Terminal) run(ctx context.Context) { select { case <-ctx.Done(): if !IsProcessBackground(t.fd) { - t.undoStatus(len(status)) + t.writeStatus([]string{}) } return @@ -235,30 +235,6 @@ func (t *Terminal) runWithoutStatus(ctx context.Context) { } } -func (t *Terminal) undoStatus(lines int) { - for i := 0; i < lines; i++ { - t.clearCurrentLine(t.wr, t.fd) - - _, err := t.wr.WriteRune('\n') - if err != nil { - fmt.Fprintf(os.Stderr, "write failed: %v\n", err) - } - - // flush is needed so that the current line is updated - err = t.wr.Flush() - if err != nil { - fmt.Fprintf(os.Stderr, "flush failed: %v\n", err) - } - } - - t.moveCursorUp(t.wr, t.fd, lines) - - err := t.wr.Flush() - if err != nil { - fmt.Fprintf(os.Stderr, "flush failed: %v\n", err) - } -} - func (t *Terminal) print(line string, isErr bool) { // make sure the line ends with a line break if line[len(line)-1] != '\n' { diff --git a/internal/ui/termstatus/status_test.go b/internal/ui/termstatus/status_test.go index b59063076..997a2d7b1 100644 --- a/internal/ui/termstatus/status_test.go +++ b/internal/ui/termstatus/status_test.go @@ -39,11 +39,10 @@ func TestSetStatus(t *testing.T) { term.SetStatus([]string{"quux", "needs\nquote"}) exp += home + clear + "quux\n" + home + clear + "\"needs\\nquote\"\n" + - home + clear + home + up + up // Third line implicit. + home + clear + home + up + up // Clear third line cancel() - exp += home + clear + "\n" + home + clear + "\n" + - home + up + up // Status cleared. + exp += home + clear + "\n" + home + clear + home + up // Status cleared <-term.closed rtest.Equals(t, exp, buf.String())