summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth Tisue <seth@tisue.net>2016-10-20 21:10:57 -0700
committerGitHub <noreply@github.com>2016-10-20 21:10:57 -0700
commita0855735a48cc22a3108e9b35312a3244fc8fb99 (patch)
tree2f31a297933a30dfa874778d4af0919ee53168f9
parentc7603bb00bccbe9f840c012a3154056717198e5a (diff)
parentd571fa07fbacedc099ff71b050918c679185dc82 (diff)
downloadscala-a0855735a48cc22a3108e9b35312a3244fc8fb99.tar.gz
scala-a0855735a48cc22a3108e9b35312a3244fc8fb99.tar.bz2
scala-a0855735a48cc22a3108e9b35312a3244fc8fb99.zip
Merge pull request #5450 from adriaanm/dev240
Repl prints '\n' as newline, not "^J"
-rw-r--r--src/repl-jline/scala/tools/nsc/interpreter/jline/JLineReader.scala12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/repl-jline/scala/tools/nsc/interpreter/jline/JLineReader.scala b/src/repl-jline/scala/tools/nsc/interpreter/jline/JLineReader.scala
index dc04230d0b..912ac26329 100644
--- a/src/repl-jline/scala/tools/nsc/interpreter/jline/JLineReader.scala
+++ b/src/repl-jline/scala/tools/nsc/interpreter/jline/JLineReader.scala
@@ -94,11 +94,19 @@ private class JLineConsoleReader extends jconsole.ConsoleReader with interpreter
printColumns_(items: List[String])
}
+ // Workaround for JLine weirdness. (See https://github.com/scala/scala-dev/issues/240)
+ // Emit control characters as-is, instead of representing them as e.g. "^J" (for '\n').
+ // `rawPrint` is package protected in jline.console.ConsoleReader, while `rawPrintln` is private
+ // Copy/paste part of it as `_rawPrint` (to avoid name clash);
+ // the super class impl also sets `cursorOk`, but that's out of reach for us.
+ private def _rawPrint(str: String) = getOutput.write(str)
+ private def rawPrintln(str: String) = { _rawPrint(str); println() }
+
private def printColumns_(items: List[String]): Unit = if (items exists (_ != "")) {
val grouped = tabulate(items)
var linesLeft = if (isPaginationEnabled()) height - 1 else Int.MaxValue
grouped foreach { xs =>
- println(xs.mkString)
+ rawPrintln(xs.mkString)
linesLeft -= 1
if (linesLeft <= 0) {
linesLeft = emulateMore()
@@ -109,7 +117,7 @@ private class JLineConsoleReader extends jconsole.ConsoleReader with interpreter
}
def readOneKey(prompt: String) = {
- this.print(prompt)
+ _rawPrint(prompt)
this.flush()
this.readCharacter()
}