diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2015-06-22 11:27:36 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2015-06-22 11:27:36 -0700 |
commit | 1fbce4612c21a4d0c553ea489b4765494828c09f (patch) | |
tree | 814f29af68d6b78b6cafcaed7e1841c9c54dc928 /src/repl/scala/tools/nsc/interpreter/Formatting.scala | |
parent | c3b6cfaaadc0426c79fbfc8f42d592ecd9ebe43d (diff) | |
parent | 7968421bd6515eeb88fb420bae3ff3bc23e5876d (diff) | |
download | scala-1fbce4612c21a4d0c553ea489b4765494828c09f.tar.gz scala-1fbce4612c21a4d0c553ea489b4765494828c09f.tar.bz2 scala-1fbce4612c21a4d0c553ea489b4765494828c09f.zip |
Merge pull request #4564 from som-snytt/issue/promptv2.11.7
SI-9206 Fix REPL code indentation
Diffstat (limited to 'src/repl/scala/tools/nsc/interpreter/Formatting.scala')
-rw-r--r-- | src/repl/scala/tools/nsc/interpreter/Formatting.scala | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/repl/scala/tools/nsc/interpreter/Formatting.scala b/src/repl/scala/tools/nsc/interpreter/Formatting.scala index 43e653edfd..844997429c 100644 --- a/src/repl/scala/tools/nsc/interpreter/Formatting.scala +++ b/src/repl/scala/tools/nsc/interpreter/Formatting.scala @@ -8,28 +8,25 @@ package interpreter import util.stringFromWriter -trait Formatting { - def prompt: String +class Formatting(indent: Int) { - def spaces(code: String): String = { + private val indentation = " " * indent + + private def indenting(code: String): Boolean = { /** Heuristic to avoid indenting and thereby corrupting """-strings and XML literals. */ val tokens = List("\"\"\"", "</", "/>") val noIndent = (code contains "\n") && (tokens exists code.contains) - if (noIndent) "" - else prompt drop 1 map (_ => ' ') + !noIndent } /** Indent some code by the width of the scala> prompt. * This way, compiler error messages read better. */ - def indentCode(code: String) = { - val indent = spaces(code) - stringFromWriter(str => - for (line <- code.lines) { - str print indent - str print (line + "\n") - str.flush() - } - ) - } + def indentCode(code: String) = stringFromWriter(str => + for (line <- code.lines) { + if (indenting(code)) str print indentation + str println line + str.flush() + } + ) } |