diff -r 352d40b389ef -r 6dabae94cf57 src/Tools/jEdit/src/output_dockable.scala --- a/src/Tools/jEdit/src/output_dockable.scala Sun Mar 12 13:14:24 2017 +0100 +++ b/src/Tools/jEdit/src/output_dockable.scala Sun Mar 12 13:41:16 2017 +0100 @@ -23,9 +23,6 @@ /* component state -- owned by GUI thread */ private var do_update = true - private var current_snapshot = Document.Snapshot.init - private var current_command = Command.empty - private var current_results = Command.Results.empty private var current_output: List[XML.Tree] = Nil @@ -49,40 +46,32 @@ { GUI_Thread.require {} - val (new_snapshot, new_command, new_results) = - PIDE.editor.current_node_snapshot(view) match { - case Some(snapshot) => - if (follow && !snapshot.is_outdated) { - PIDE.editor.current_command(view, snapshot) match { - case Some(cmd) => - (snapshot, cmd, snapshot.state.command_results(snapshot.version, cmd)) - case None => - (Document.Snapshot.init, Command.empty, Command.Results.empty) - } - } - else (current_snapshot, current_command, current_results) - case None => (current_snapshot, current_command, current_results) + for { + snapshot <- PIDE.editor.current_node_snapshot(view) + if follow && !snapshot.is_outdated + } { + val (command, results) = + PIDE.editor.current_command(view, snapshot) match { + case Some(command) => + (command, snapshot.state.command_results(snapshot.version, command)) + case None => (Command.empty, Command.Results.empty) + } + + val new_output = + if (!restriction.isDefined || restriction.get.contains(command)) + Rendering.output_messages(results) + else current_output + + if (current_output != new_output) { + pretty_text_area.update(snapshot, results, Pretty.separate(new_output)) + current_output = new_output } - - val new_output = - if (!restriction.isDefined || restriction.get.contains(new_command)) - Rendering.output_messages(new_results) - else current_output - - if (new_output != current_output) - pretty_text_area.update(new_snapshot, new_results, Pretty.separate(new_output)) - - current_snapshot = new_snapshot - current_command = new_command - current_results = new_results - current_output = new_output + } } /* controls */ - /* output state */ - private def output_state: Boolean = PIDE.options.bool("editor_output_state") private def output_state_=(b: Boolean) {