diff options
author | Som Snytt <som.snytt@gmail.com> | 2013-07-01 03:55:27 -0700 |
---|---|---|
committer | Som Snytt <som.snytt@gmail.com> | 2013-07-01 03:55:27 -0700 |
commit | 72298b838354e621b2fed61734d394d5befa0708 (patch) | |
tree | da65219e5fa8bf4385a3e5d659da45fd57a96207 /src | |
parent | bfda11426f9c908831489bb9173bc88dec5c4ce8 (diff) | |
download | scala-72298b838354e621b2fed61734d394d5befa0708.tar.gz scala-72298b838354e621b2fed61734d394d5befa0708.tar.bz2 scala-72298b838354e621b2fed61734d394d5befa0708.zip |
SI-6419 Repl save session command
A simple save command to write out the current replay stack.
```
scala> val i = 7
i: Int = 7
scala> val j= 8
j: Int = 8
scala> i * j
res0: Int = 56
scala> :save multy.script
scala> :q
apm@mara:~/tmp$ cat multy.script
val i = 7
val j= 8
i * j
apm@mara:~/tmp$ skala
Welcome to Scala version 2.11.0-20130626-204845-a83ca5bdf7 (OpenJDK 64-Bit Server VM, Java 1.7.0_21).
Type in expressions to have them evaluated.
Type :help for more information.
scala> :load multy.script
Loading multy.script...
i: Int = 7
j: Int = 8
res0: Int = 56
scala> :load multy.script
Loading multy.script...
i: Int = 7
j: Int = 8
res1: Int = 56
```
Diffstat (limited to 'src')
-rw-r--r-- | src/repl/scala/tools/nsc/interpreter/ILoop.scala | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/repl/scala/tools/nsc/interpreter/ILoop.scala b/src/repl/scala/tools/nsc/interpreter/ILoop.scala index a84d076e76..392aac7c2e 100644 --- a/src/repl/scala/tools/nsc/interpreter/ILoop.scala +++ b/src/repl/scala/tools/nsc/interpreter/ILoop.scala @@ -220,6 +220,7 @@ class ILoop(in0: Option[BufferedReader], protected val out: JPrintWriter) nullary("quit", "exit the interpreter", () => Result(keepRunning = false, None)), nullary("replay", "reset execution and replay all previous commands", replay), nullary("reset", "reset the repl to its initial state, forgetting all session entries", resetCommand), + cmd("save", "<path>", "save replayable session to a file", saveCommand), shCommand, nullary("silent", "disable/enable automatic printing of results", verbosity), cmd("type", "[-v] <expr>", "display the type of an expression without evaluating it", typeCommand), @@ -470,6 +471,12 @@ class ILoop(in0: Option[BufferedReader], protected val out: JPrintWriter) Result(keepRunning = true, shouldReplay) } + def saveCommand(filename: String): Result = ( + if (filename.isEmpty) echo("File name is required.") + else if (replayCommandStack.isEmpty) echo("No replay commands in session") + else File(filename).printlnAll(replayCommands: _*) + ) + def addClasspath(arg: String): Unit = { val f = File(arg).normalize if (f.exists) { |