more precise prompt etc.;
authorwenzelm
Fri, 08 Jan 2010 12:26:44 +0100
changeset 3484792ea2174ea78
parent 34846 eb8806a2e348
child 34848 6d64de27efa5
more precise prompt etc.;
src/Tools/jEdit/src/jedit/scala_console.scala
     1.1 --- a/src/Tools/jEdit/src/jedit/scala_console.scala	Fri Jan 08 12:26:22 2010 +0100
     1.2 +++ b/src/Tools/jEdit/src/jedit/scala_console.scala	Fri Jan 08 12:26:44 2010 +0100
     1.3 @@ -7,7 +7,7 @@
     1.4  package isabelle.jedit
     1.5  
     1.6  
     1.7 -import console.{Console, Shell, Output}
     1.8 +import console.{Console, ConsolePane, Shell, Output}
     1.9  
    1.10  import org.gjt.sp.jedit.jEdit
    1.11  import org.gjt.sp.jedit.MiscUtilities
    1.12 @@ -25,6 +25,18 @@
    1.13    private var global_out: Output = null
    1.14    private var global_err: Output = null
    1.15  
    1.16 +  private def with_console[A](console: Console, out: Output, err: Output)(e: => A): A =
    1.17 +  {
    1.18 +    global_console = console
    1.19 +    global_out = out
    1.20 +    global_err = if (err == null) out else err
    1.21 +    val res = Exn.capture { e }
    1.22 +    global_console = null
    1.23 +    global_out = null
    1.24 +    global_err = null
    1.25 +    Exn.release(res)
    1.26 +  }
    1.27 +
    1.28    private def report_error(str: String)
    1.29    {
    1.30      if (global_console == null || global_err == null) System.err.println(str)
    1.31 @@ -62,19 +74,16 @@
    1.32  
    1.33    override def printPrompt(console: Console, out: Output)
    1.34  	{
    1.35 -    out.print(console.getInfoColor, "scala> ")
    1.36 +    out.writeAttrs(ConsolePane.colorAttributes(console.getInfoColor), "scala>")
    1.37 +		out.writeAttrs(null," ")
    1.38  	}
    1.39  
    1.40    override def execute(console: Console, input: String, out: Output, err: Output, command: String)
    1.41    {
    1.42 -    global_console = console
    1.43 -    global_out = out
    1.44 -    global_err = (if (err == null) out else err)
    1.45 -
    1.46 -    interpreters(console).interpret(command)
    1.47 -
    1.48 -    global_console = null
    1.49 -    global_out = null
    1.50 -    global_err = null
    1.51 +    with_console(console, out, err) {
    1.52 +      interpreters(console).interpret(command)
    1.53 +    }
    1.54 +    if (err != null) err.commandDone()
    1.55 +		out.commandDone()
    1.56    }
    1.57  }