From 85d17889b6ff39c4d93f516fc247b91be73514f0 Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Wed, 18 Nov 2020 11:17:13 -0800 Subject: [PATCH] Fix supershell line interlacing with logs In 3b09ff6af7c4e108152e8dfdb10f6a1f05c4ab34, we stopped adding a clear screen after curser after each log line. This inadvertently caused supershell lines to get interlaced with log lines. This can be fixed by writing a ClearScreenAfterCursor after every newline character that we write to stdout. As a bonus, I had also long noticed that supershell log lines would get interlaced with the serverTestProj/test output and this change fixes that as well. --- .../src/main/scala/sbt/internal/util/ProgressState.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/ProgressState.scala b/internal/util-logging/src/main/scala/sbt/internal/util/ProgressState.scala index e04c07fab..bb02574a0 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/ProgressState.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/ProgressState.scala @@ -100,7 +100,10 @@ private[sbt] final class ProgressState( toWrite ++= (DeleteLine + ClearScreenAfterCursor + CursorLeft1000).getBytes("UTF-8") case _ => } - toWrite ++= bytes + bytes.foreach { b => + if (b == 10) toWrite ++= ClearScreenAfterCursor.getBytes("UTF-8") + toWrite += b + } toWrite ++= ClearScreenAfterCursor.getBytes("UTF-8") if (bytes.endsWith(lineSeparatorBytes)) { if (progressLines.get.nonEmpty) {