clarified signature: prefer explicit type Editor.Output;
authorwenzelm
Mon, 27 Oct 2025 15:36:47 +0100
changeset 83419 0ac8a8a3793b
parent 83418 a2e677808765
child 83420 12133413a571
clarified signature: prefer explicit type Editor.Output;
src/Pure/PIDE/editor.scala
src/Pure/PIDE/query_operation.scala
src/Tools/VSCode/src/state_panel.scala
src/Tools/VSCode/src/vscode_sledgehammer.scala
src/Tools/jEdit/src/query_dockable.scala
src/Tools/jEdit/src/sledgehammer_dockable.scala
src/Tools/jEdit/src/state_dockable.scala
--- a/src/Pure/PIDE/editor.scala	Mon Oct 27 15:24:25 2025 +0100
+++ b/src/Pure/PIDE/editor.scala	Mon Oct 27 15:36:47 2025 +0100
@@ -20,7 +20,9 @@
     results: Command.Results = Command.Results.empty,
     messages: List[XML.Elem] = Nil,
     defined: Boolean = true
-  )
+  ) {
+    def proper: Boolean = messages.nonEmpty && defined
+  }
 }
 
 abstract class Editor[Context] {
--- a/src/Pure/PIDE/query_operation.scala	Mon Oct 27 15:24:25 2025 +0100
+++ b/src/Pure/PIDE/query_operation.scala	Mon Oct 27 15:36:47 2025 +0100
@@ -36,7 +36,7 @@
   editor_context: Editor_Context,
   operation_name: String,
   consume_status: Query_Operation.Status => Unit,
-  consume_output: (Document.Snapshot, Command.Results, List[XML.Elem]) => Unit
+  consume_output: Editor.Output => Unit
 ) {
   private val print_function = operation_name + "_query"
 
@@ -150,7 +150,8 @@
         current_state.change(_.copy(update_pending = false))
         if (state0.output != new_output && !removed) {
           current_state.change(_.copy(output = new_output))
-          consume_output(snapshot, command_results, new_output)
+          consume_output(
+            Editor.Output(snapshot = snapshot, results = command_results, messages = new_output))
         }
         if (state0.status != new_status) {
           current_state.change(_.copy(status = new_status))
@@ -175,7 +176,7 @@
       case Some(snapshot) =>
         remove_overlay()
         current_state.change(_ => Query_Operation.State.empty)
-        consume_output(Document.Snapshot.init, Command.Results.empty, Nil)
+        consume_output(Editor.Output.init)
 
         editor.current_command(editor_context, snapshot) match {
           case Some(command) =>
@@ -227,7 +228,7 @@
     editor.session.commands_changed -= main
     remove_overlay()
     current_state.change(_ => Query_Operation.State.empty)
-    consume_output(Document.Snapshot.init, Command.Results.empty, Nil)
+    consume_output(Editor.Output.init)
     consume_status(Query_Operation.Status.finished)
   }
 }
--- a/src/Tools/VSCode/src/state_panel.scala	Mon Oct 27 15:24:25 2025 +0100
+++ b/src/Tools/VSCode/src/state_panel.scala	Mon Oct 27 15:36:47 2025 +0100
@@ -70,9 +70,9 @@
 
   private val print_state =
     new Query_Operation(server.editor, (), "print_state", _ => (),
-      (_, _, output) =>
-        if (output_active.value && output.nonEmpty) {
-          pretty_panel.value.refresh(output)
+      output =>
+        if (output_active.value && output.proper) {
+          pretty_panel.value.refresh(output.messages)
         })
 
   def locate(): Unit = print_state.locate_query()
--- a/src/Tools/VSCode/src/vscode_sledgehammer.scala	Mon Oct 27 15:24:25 2025 +0100
+++ b/src/Tools/VSCode/src/vscode_sledgehammer.scala	Mon Oct 27 15:36:47 2025 +0100
@@ -20,7 +20,7 @@
 
 class VSCode_Sledgehammer private(server: Language_Server) {
   private val query_operation =
-    new Query_Operation(server.editor, (), "sledgehammer", consume_status, consume_result)
+    new Query_Operation(server.editor, (), "sledgehammer", consume_status, consume_output)
 
   private var last_sendback_id: Option[Int] = None
 
@@ -117,11 +117,10 @@
     }
   }
 
-  private def consume_result(
-    snapshot: Document.Snapshot,
-    results: Command.Results,
-    body: List[XML.Elem]
-  ): Unit = {
+  private def consume_output(output: Editor.Output): Unit = {
+    val snapshot = output.snapshot
+    val body = output.messages
+
     val xml_string = body.map(XML.string_of_tree).mkString
 
     if (xml_string.contains("Done")) {
--- a/src/Tools/jEdit/src/query_dockable.scala	Mon Oct 27 15:24:25 2025 +0100
+++ b/src/Tools/jEdit/src/query_dockable.scala	Mon Oct 27 15:36:47 2025 +0100
@@ -77,7 +77,7 @@
 
     val query_operation =
       new Query_Operation(PIDE.editor, view, "find_theorems",
-        consume_status(process_indicator, _), pretty_text_area.update)
+        consume_status(process_indicator, _), pretty_text_area.update_output)
 
     private def apply_query(): Unit = {
       query.addCurrentToHistory()
@@ -139,7 +139,7 @@
 
     val query_operation =
       new Query_Operation(PIDE.editor, view, "find_consts",
-        consume_status(process_indicator, _), pretty_text_area.update)
+        consume_status(process_indicator, _), pretty_text_area.update_output)
 
     private val query_label = new Label("Find:") {
       tooltip = GUI.tooltip_lines("Name / type patterns for constants")
@@ -214,7 +214,7 @@
 
     val query_operation =
       new Query_Operation(PIDE.editor, view, "print_operation",
-        consume_status(process_indicator, _), pretty_text_area.update)
+        consume_status(process_indicator, _), pretty_text_area.update_output)
 
     private def apply_query(): Unit =
       query_operation.apply_query(selected_items())
--- a/src/Tools/jEdit/src/sledgehammer_dockable.scala	Mon Oct 27 15:24:25 2025 +0100
+++ b/src/Tools/jEdit/src/sledgehammer_dockable.scala	Mon Oct 27 15:36:47 2025 +0100
@@ -51,7 +51,7 @@
 
   private val sledgehammer =
     new Query_Operation(PIDE.editor, view, "sledgehammer", consume_status,
-      output.pretty_text_area.update)
+      output.pretty_text_area.update_output)
 
 
   /* controls */
--- a/src/Tools/jEdit/src/state_dockable.scala	Mon Oct 27 15:24:25 2025 +0100
+++ b/src/Tools/jEdit/src/state_dockable.scala	Mon Oct 27 15:36:47 2025 +0100
@@ -30,7 +30,8 @@
   override def detach_operation: Option[() => Unit] = output.pretty_text_area.detach_operation
 
   private val print_state =
-    new Query_Operation(PIDE.editor, view, "print_state", _ => (), output.pretty_text_area.update)
+    new Query_Operation(PIDE.editor, view, "print_state", _ => (),
+      output.pretty_text_area.update_output)
 
   output.setup(dockable)
   set_content(output.split_pane)