From 46c5f8b0d8c0d26b186232d3174232b60571a7aa Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Sat, 24 Oct 2020 09:45:01 -0700 Subject: [PATCH] Fix console echo for windows batch commands For reasons I don't fully understand, it is necessary to go in and out of raw mode to get console input to echo on windows. This was reported as sbt new not echoing input in #5952. --- .../src/main/scala/sbt/internal/util/Terminal.scala | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala b/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala index 0c336fa2d..ceb941ca5 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala @@ -796,6 +796,12 @@ object Terminal { private[util] val system: org.jline.terminal.Terminal, ) extends TerminalImpl(in, out, originalErr, "console0") { private[this] val rawMode = new AtomicBoolean(false) + if (Util.isWindows && hasConsole) { + // It is necessary to enter and exit raw mode in order to get the windows + // console to echo input. + enterRawMode() + exitRawMode() + } override private[sbt] def getSizeImpl: (Int, Int) = { val size = system.getSize (size.getColumns, size.getRows)