summaryrefslogtreecommitdiff
path: root/src/repl
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2013-07-01 03:55:27 -0700
committerSom Snytt <som.snytt@gmail.com>2013-07-01 03:55:27 -0700
commit72298b838354e621b2fed61734d394d5befa0708 (patch)
treeda65219e5fa8bf4385a3e5d659da45fd57a96207 /src/repl
parentbfda11426f9c908831489bb9173bc88dec5c4ce8 (diff)
downloadscala-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/repl')
-rw-r--r--src/repl/scala/tools/nsc/interpreter/ILoop.scala7
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) {