From 033829d4a0d5a9473fb0aabac46bbfd85b4e16ac Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Fri, 19 Jul 2013 20:02:46 -0400 Subject: [PATCH] init/restore instead of setEchoEnabled in order to handle full jline customizations. Fixes #822. --- util/complete/src/main/scala/sbt/LineReader.scala | 8 ++++---- util/complete/src/test/scala/ParserTest.scala | 2 +- util/log/src/main/scala/sbt/ConsoleLogger.scala | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/util/complete/src/main/scala/sbt/LineReader.scala b/util/complete/src/main/scala/sbt/LineReader.scala index 911f61da3..9fba225f4 100644 --- a/util/complete/src/main/scala/sbt/LineReader.scala +++ b/util/complete/src/main/scala/sbt/LineReader.scala @@ -57,7 +57,7 @@ abstract class JLine extends LineReader private[this] def resume() { jline.TerminalFactory.reset - JLine.terminal.setEchoEnabled(false) + JLine.terminal.init reader.drawLine() reader.flush() } @@ -95,7 +95,7 @@ private object JLine * This ensures synchronized access as well as re-enabling echo after getting the Terminal. */ def usingTerminal[T](f: jline.Terminal => T): T = withTerminal { t => - t.setEchoEnabled(true) + t.restore f(t) } def createReader(): ConsoleReader = createReader(None) @@ -114,9 +114,9 @@ private object JLine } def withJLine[T](action: => T): T = withTerminal { t => - t.setEchoEnabled(false) + t.init try { action } - finally { t.setEchoEnabled(true) } + finally { t.restore } } def simple(historyPath: Option[File], handleCONT: Boolean = HandleCONT): SimpleReader = new SimpleReader(historyPath, handleCONT) diff --git a/util/complete/src/test/scala/ParserTest.scala b/util/complete/src/test/scala/ParserTest.scala index fd42ecf90..7a5d20b23 100644 --- a/util/complete/src/test/scala/ParserTest.scala +++ b/util/complete/src/test/scala/ParserTest.scala @@ -21,7 +21,7 @@ object JLineTest import jline.TerminalFactory import jline.console.ConsoleReader val reader = new ConsoleReader() - TerminalFactory.get.setEchoEnabled(false) + TerminalFactory.get.init val parser = parsers(args(0)) JLineCompletion.installCustomCompletor(reader, parser) diff --git a/util/log/src/main/scala/sbt/ConsoleLogger.scala b/util/log/src/main/scala/sbt/ConsoleLogger.scala index e027876b3..6fefc890a 100644 --- a/util/log/src/main/scala/sbt/ConsoleLogger.scala +++ b/util/log/src/main/scala/sbt/ConsoleLogger.scala @@ -83,7 +83,7 @@ object ConsoleLogger private[this] def ansiSupported = try { val terminal = jline.TerminalFactory.get - terminal.setEchoEnabled(true) // #460 + terminal.restore // #460 terminal.isAnsiSupported } catch { case e: Exception => !isWindows