bind "session";
authorwenzelm
Sat, 09 Jan 2010 22:03:47 +0100
changeset 3485296bcb91b45ce
parent 34851 77ac13833972
child 34853 fdd560e80264
bind "session";
added printInfoMessage;
added stop -- re-inits the interpreter;
src/Tools/jEdit/src/jedit/scala_console.scala
     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  }