lsp: tuned pretty_text_panel;
authorThomas Lindae <thomas.lindae@in.tum.de>
Sun, 30 Jun 2024 15:32:19 +0200
changeset 81059 fb1183184e68
parent 81058 e199c34b38e9
child 81060 159d1b09fe66
lsp: tuned pretty_text_panel;
src/Tools/VSCode/src/dynamic_output.scala
src/Tools/VSCode/src/pretty_text_panel.scala
src/Tools/VSCode/src/state_panel.scala
--- a/src/Tools/VSCode/src/dynamic_output.scala	Sun Jun 30 15:32:12 2024 +0200
+++ b/src/Tools/VSCode/src/dynamic_output.scala	Sun Jun 30 15:32:19 2024 +0200
@@ -58,7 +58,7 @@
     pretty_panel_.change(p => Some(Pretty_Text_Panel(
       server.resources,
       server.channel,
-      (output_text, decorations) => { server.channel.write(LSP.Dynamic_Output(output_text, decorations)) }
+      LSP.Dynamic_Output.apply,
     )))
     handle_update(None)
   }
--- a/src/Tools/VSCode/src/pretty_text_panel.scala	Sun Jun 30 15:32:12 2024 +0200
+++ b/src/Tools/VSCode/src/pretty_text_panel.scala	Sun Jun 30 15:32:19 2024 +0200
@@ -12,14 +12,14 @@
   def apply(
     resources: VSCode_Resources,
     channel: Channel,
-    output: (String, Option[LSP.Decoration_List]) => Unit
+    output: (String, Option[LSP.Decoration_List]) => JSON.T
   ): Pretty_Text_Panel = new Pretty_Text_Panel(resources, channel, output)
 }
 
 class Pretty_Text_Panel private(
   resources: VSCode_Resources,
   channel: Channel,
-  output: (String, Option[LSP.Decoration_List]) => Unit
+  output: (String, Option[LSP.Decoration_List]) => JSON.T
 ) {
   private var current_body: XML.Body = Nil
   private var current_formatted: XML.Body = Nil
@@ -55,7 +55,8 @@
         }
       val elements = Browser_Info.extra_elements.copy(entity = Markup.Elements.full)
       val html = node_context.make_html(elements, formatted)
-      output(HTML.source(html).toString, None)
+      val message = output(HTML.source(html).toString, None)
+      channel.write(message)
     } else {
       def convert_symbols(body: XML.Body): XML.Body = {
         body.map {
@@ -78,7 +79,8 @@
         })
         .groupMap(_._2)(e => LSP.Decoration_Options(e._1, List())).toList
 
-      output(text, Some(decorations))
+      val message = output(text, Some(decorations))
+      channel.write(message)
     }
   }
 }
--- a/src/Tools/VSCode/src/state_panel.scala	Sun Jun 30 15:32:12 2024 +0200
+++ b/src/Tools/VSCode/src/state_panel.scala	Sun Jun 30 15:32:19 2024 +0200
@@ -53,9 +53,6 @@
 
   val id: Counter.ID = State_Panel.make_id()
 
-  private def output(content: String, decorations: Option[LSP.Decoration_List] = None): Unit =
-    server.channel.write(LSP.State_Output(id, content, auto_update_enabled.value, decorations))
-
   private def init_response(id: LSP.Id): Unit =
     server.channel.write(LSP.State_Init.reply(id, this.id))
 
@@ -66,7 +63,7 @@
   private val pretty_panel = Synchronized(Pretty_Text_Panel(
     server.resources,
     server.channel,
-    output,
+    (content, decorations) => LSP.State_Output(id, content, auto_update_enabled.value, decorations)
   ))
 
   private val print_state =