summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2012-07-31 15:47:05 +0200
committerMartin Odersky <odersky@gmail.com>2012-07-31 15:47:05 +0200
commit217aaf7497990cf5cd23bca2bb57b5b6ea708873 (patch)
tree1a65a90c324a6fe5d5fe5ab7678f345117e85acb /src
parentf4693871f4aad1fdbdbb743feaed8a848a9e2dca (diff)
downloadscala-217aaf7497990cf5cd23bca2bb57b5b6ea708873.tar.gz
scala-217aaf7497990cf5cd23bca2bb57b5b6ea708873.tar.bz2
scala-217aaf7497990cf5cd23bca2bb57b5b6ea708873.zip
Made worksheet output wrap around after custimizable # of output columns.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala2
-rw-r--r--src/library/scala/runtime/WorksheetSupport.scala18
2 files changed, 12 insertions, 8 deletions
diff --git a/src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala b/src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala
index bd1869e1a4..f7b1c42fd6 100644
--- a/src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala
+++ b/src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala
@@ -46,7 +46,7 @@ trait ScratchPadMaker { self: Global =>
patches += Patch(stat.pos.start, ";$stop()")
var end = stat.pos.end
if (end > skipped) {
- while (end < contents.length && !(isLineBreakChar(contents(end)))) end += 1
+ while (end < contents.length && !isLineBreakChar(contents(end))) end += 1
patches += Patch(stat.pos.start, ";$skip("+(end-skipped)+"); ")
skipped = end
}
diff --git a/src/library/scala/runtime/WorksheetSupport.scala b/src/library/scala/runtime/WorksheetSupport.scala
index db6d6359a3..f9ffb9197b 100644
--- a/src/library/scala/runtime/WorksheetSupport.scala
+++ b/src/library/scala/runtime/WorksheetSupport.scala
@@ -14,9 +14,11 @@ object WorksheetSupport {
* By default it is 30ms.
*/
private class FlushedOutputStream(out: OutputStream) extends OutputStream {
+ protected def flushInterval = 30000000L // interval between flushes, by default 30ms
+ protected def width = 80 // output width, by default 80 characters
+ protected def tabInc = 8 // tab increment, by default 8 characters
private var lastFlush: Long = 0L
- protected val flushInterval = 30000000L // 30ms
- private var lastCh: Int = '\n'
+ private var col = 0
override def write(b: Array[Byte], off: Int, len: Int) = {
for (idx <- off until (off + len min b.length)) writeOne(b(idx))
flush()
@@ -33,14 +35,16 @@ object WorksheetSupport {
}
}
def writeOne(c: Int) {
- if (lastCh == '\n') {
- lastCh = 0
+ if (col == 0)
write((currentOffset+" ").getBytes)
- }
out.write(c)
- lastCh = c
+ col =
+ if (c == '\n') 0
+ else if (c == '\t') (col / tabInc) * tabInc + tabInc
+ else col + 1
+ if (col >= width) writeOne('\n')
}
- def ensureNewLine() = if (lastCh != '\n') writeOne('\n')
+ def ensureNewLine() = if (col != 0) writeOne('\n')
}
private val flushedOut = new FlushedOutputStream(System.out)