diff options
Diffstat (limited to 'src/dotty/tools/dotc/repl/AmmoniteReader.scala')
-rw-r--r-- | src/dotty/tools/dotc/repl/AmmoniteReader.scala | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/src/dotty/tools/dotc/repl/AmmoniteReader.scala b/src/dotty/tools/dotc/repl/AmmoniteReader.scala deleted file mode 100644 index f3b68e4b0..000000000 --- a/src/dotty/tools/dotc/repl/AmmoniteReader.scala +++ /dev/null @@ -1,82 +0,0 @@ -package dotty.tools -package dotc -package repl - -import core.Contexts._ -import ammonite.terminal._ -import LazyList._ -import Ansi.Color -import filters._ -import BasicFilters._ -import GUILikeFilters._ -import util.SourceFile -import printing.SyntaxHighlighting - -class AmmoniteReader(val interpreter: Interpreter)(implicit ctx: Context) extends InteractiveReader { - val interactive = true - - def incompleteInput(str: String): Boolean = - interpreter.delayOutputDuring(interpreter.interpret(str)) match { - case Interpreter.Incomplete => true - case _ => false - } - - val reader = new java.io.InputStreamReader(System.in) - val writer = new java.io.OutputStreamWriter(System.out) - val cutPasteFilter = ReadlineFilters.CutPasteFilter() - var history = List.empty[String] - val selectionFilter = GUILikeFilters.SelectionFilter(indent = 2) - val multilineFilter: Filter = Filter("multilineFilter") { - case TermState(lb ~: rest, b, c, _) - if (lb == 10 || lb == 13) && incompleteInput(b.mkString) => - BasicFilters.injectNewLine(b, c, rest, indent = 2) - } - - def readLine(prompt: String): String = { - val historyFilter = new HistoryFilter( - () => history.toVector, - Console.BLUE, - AnsiNav.resetForegroundColor - ) - - val allFilters = Filter.merge( - UndoFilter(), - historyFilter, - selectionFilter, - GUILikeFilters.altFilter, - GUILikeFilters.fnFilter, - ReadlineFilters.navFilter, - cutPasteFilter, - multilineFilter, - BasicFilters.all - ) - - Terminal.readLine( - Console.BLUE + prompt + Console.RESET, - reader, - writer, - allFilters, - displayTransform = (buffer, cursor) => { - val coloredBuffer = - if (ctx.useColors) SyntaxHighlighting(buffer) - else buffer - - val ansiBuffer = Ansi.Str.parse(coloredBuffer.toVector) - val (newBuffer, cursorOffset) = SelectionFilter.mangleBuffer( - selectionFilter, ansiBuffer, cursor, Ansi.Reversed.On - ) - val newNewBuffer = HistoryFilter.mangleBuffer( - historyFilter, newBuffer, cursor, - Ansi.Color.Green - ) - - (newNewBuffer, cursorOffset) - } - ) match { - case Some(res) => - history = res :: history; - res - case None => ":q" - } - } -} |