From a19ec581c09c1f449838e65d343c9c99c986f55a Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Sun, 19 Jul 2020 12:50:42 -0700 Subject: [PATCH] Use jline2 for raw mode Using the JLine3 implementation of raw mode breaks the scala console for the console channel. --- .../src/main/scala/sbt/internal/util/Terminal.scala | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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 d98b01b06..965d6d253 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 @@ -785,10 +785,13 @@ object Terminal { system.setSize(new org.jline.terminal.Size(width, height)) override def withRawInput[T](f: => T): T = term.synchronized { - val prev = JLine3.enterRawMode(system) - try f - catch { case _: InterruptedIOException => throw new InterruptedException } finally { - setAttributes(prev) + try { + term.init() + term.setEchoEnabled(false) + f + } catch { case _: InterruptedIOException => throw new InterruptedException } finally { + term.restore() + term.setEchoEnabled(true) } } override def isColorEnabled: Boolean =