From 438cdf65009bee20e09bc9e63eb74a741e1dd72b Mon Sep 17 00:00:00 2001 From: liu fengyun Date: Tue, 5 Apr 2016 23:31:43 +0200 Subject: [PATCH] simple integration with jline --- bin/dotc | 2 +- src/dotty/tools/dotc/repl/InteractiveReader.scala | 11 +++-------- src/dotty/tools/dotc/repl/JLineReader.scala | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 src/dotty/tools/dotc/repl/JLineReader.scala diff --git a/bin/dotc b/bin/dotc index 5798e0523129..f6c1db6c1e14 100755 --- a/bin/dotc +++ b/bin/dotc @@ -38,7 +38,7 @@ unset verbose quiet cygwin toolcp colors saved_stty CDPATH CompilerMain=dotty.tools.dotc.Main FromTasty=dotty.tools.dotc.FromTasty -ReplMain=test.DottyRepl +ReplMain=dotty.tools.dotc.repl.Main diff --git a/src/dotty/tools/dotc/repl/InteractiveReader.scala b/src/dotty/tools/dotc/repl/InteractiveReader.scala index 96c55ebd0c8c..29ecd3c9d671 100644 --- a/src/dotty/tools/dotc/repl/InteractiveReader.scala +++ b/src/dotty/tools/dotc/repl/InteractiveReader.scala @@ -8,24 +8,19 @@ trait InteractiveReader { val interactive: Boolean } -/** TODO Enable jline support. - * The current Scala REPL know how to do this flexibly. +/** The current Scala REPL know how to do this flexibly. */ object InteractiveReader { /** Create an interactive reader. Uses JLine if the * library is available, but otherwise uses a * SimpleReader. */ - def createDefault(): InteractiveReader = new SimpleReader() - /* - { + def createDefault(): InteractiveReader = { try { - new JLineReader + new JLineReader() } catch { case e => //out.println("jline is not available: " + e) //debug new SimpleReader() } } -*/ - } diff --git a/src/dotty/tools/dotc/repl/JLineReader.scala b/src/dotty/tools/dotc/repl/JLineReader.scala new file mode 100644 index 000000000000..592b19df598a --- /dev/null +++ b/src/dotty/tools/dotc/repl/JLineReader.scala @@ -0,0 +1,15 @@ +package dotty.tools +package dotc +package repl + +import jline.console.ConsoleReader + +/** Adaptor for JLine + */ +class JLineReader extends InteractiveReader { + val reader = new ConsoleReader() + + val interactive = true + + def readLine(prompt: String) = reader.readLine(prompt) +}