1.1 --- a/src/Tools/jEdit/src/jedit/scala_console.scala Sat Jan 09 22:02:35 2010 +0100
1.2 +++ b/src/Tools/jEdit/src/jedit/scala_console.scala Sat Jan 09 22:03:47 2010 +0100
1.3 @@ -20,6 +20,8 @@
1.4
1.5 class Scala_Console extends Shell("Scala")
1.6 {
1.7 + /* global state -- owned by Swing thread */
1.8 +
1.9 private var interpreters = Map[Console, Interpreter]()
1.10
1.11 private var global_console: Console = null
1.12 @@ -62,16 +64,16 @@
1.13 def close {}
1.14 def flush {}
1.15
1.16 - def write(cbuf: Array[Char], off: Int, len: Int)
1.17 - {
1.18 - if (len > 0) write(new String(cbuf.subArray(off, off + len)))
1.19 - }
1.20 -
1.21 override def write(str: String)
1.22 {
1.23 if (global_out == null) System.out.println(str)
1.24 else global_out.print(null, str)
1.25 }
1.26 +
1.27 + def write(cbuf: Array[Char], off: Int, len: Int)
1.28 + {
1.29 + if (len > 0) write(new String(cbuf.subArray(off, off + len)))
1.30 + }
1.31 }
1.32
1.33 override def openConsole(console: Console)
1.34 @@ -79,12 +81,14 @@
1.35 val settings = new GenericRunnerSettings(report_error)
1.36 settings.classpath.value = construct_classpath()
1.37 val printer = new PrintWriter(new Console_Writer, true)
1.38 +
1.39 val interp = new Interpreter(settings, printer)
1.40 {
1.41 override def parentClassLoader = new JARClassLoader
1.42 }
1.43 interp.setContextClassLoader
1.44 interp.bind("view", "org.gjt.sp.jedit.View", console.getView)
1.45 + interp.bind("session", "isabelle.proofdocument.Session", Isabelle.session)
1.46 interpreters += (console -> interp)
1.47 }
1.48
1.49 @@ -93,6 +97,15 @@
1.50 interpreters -= console
1.51 }
1.52
1.53 + override def printInfoMessage(out: Output)
1.54 + {
1.55 + out.print(null,
1.56 + "This shell evaluates Isabelle/Scala expressions.\n\n" +
1.57 + "The following special toplevel bindings are provided:\n" +
1.58 + " view -- current jEdit/Swing view (e.g. view.getBuffer, view.getTextArea)\n" +
1.59 + " session -- Isabelle session (e.g. session.isabelle_system)\n")
1.60 + }
1.61 +
1.62 override def printPrompt(console: Console, out: Output)
1.63 {
1.64 out.writeAttrs(ConsolePane.colorAttributes(console.getInfoColor), "scala>")
1.65 @@ -106,4 +119,14 @@
1.66 if (err != null) err.commandDone()
1.67 out.commandDone()
1.68 }
1.69 +
1.70 + override def stop(console: Console)
1.71 + {
1.72 + closeConsole(console)
1.73 + console.clear
1.74 + openConsole(console)
1.75 + val out = console.getOutput
1.76 + out.commandDone
1.77 + printPrompt(console, out)
1.78 + }
1.79 }