lsp: made margins synchronized;
authorThomas Lindae <thomas.lindae@in.tum.de>
Sun, 30 Jun 2024 15:29:44 +0200
changeset 81034 50082e028475
parent 81033 c25fed2d0e78
child 81035 56594fac1dab
lsp: made margins synchronized;
src/Tools/VSCode/src/dynamic_output.scala
src/Tools/VSCode/src/state_panel.scala
--- a/src/Tools/VSCode/src/dynamic_output.scala	Fri May 03 20:13:48 2024 +0200
+++ b/src/Tools/VSCode/src/dynamic_output.scala	Sun Jun 30 15:29:44 2024 +0200
@@ -70,11 +70,13 @@
 
 class Dynamic_Output private(server: Language_Server) {
   private val state = Synchronized(Dynamic_Output.State())
-  private var margin: Double = 80
+  private val margin_ = Synchronized(None: Option[Double])
+  def margin: Double = margin_.value.getOrElse(server.resources.message_margin)
 
   private def handle_update(restriction: Option[Set[Command]], force: Boolean = false): Unit = {
     val html_output = server.resources.html_output
-    state.change(_.handle_update(server.resources, server.channel, restriction, html_output, margin, force))
+    state.change(
+      _.handle_update(server.resources, server.channel, restriction, html_output, margin, force))
   }
 
 
@@ -101,7 +103,7 @@
   }
 
   def set_margin(margin: Double): Unit = {
-    this.margin = margin
+    margin_.change(_ => Some(margin))
     handle_update(None, force = true)
   }
 }
--- a/src/Tools/VSCode/src/state_panel.scala	Fri May 03 20:13:48 2024 +0200
+++ b/src/Tools/VSCode/src/state_panel.scala	Sun Jun 30 15:29:44 2024 +0200
@@ -43,7 +43,7 @@
 
   def set_margin(id: Counter.ID, margin: Double): Unit =
     instances.value.get(id).foreach(state => {
-      state.margin = margin
+      state.margin.change(_ => margin)
       state.server.editor.send_dispatcher(state.update())
     })
 }
@@ -53,7 +53,7 @@
   /* output */
 
   val id: Counter.ID = State_Panel.make_id()
-  var margin: Double = 80
+  private val margin: Synchronized[Double] = Synchronized(server.resources.message_margin)
 
   private def output(content: String): Unit =
     server.channel.write(LSP.State_Output(id, content, auto_update_enabled.value))
@@ -83,11 +83,11 @@
               }
             val elements = Browser_Info.extra_elements.copy(entity = Markup.Elements.full)
             val separate = Pretty.separate(body)
-            val formatted = Pretty.formatted(separate, margin = margin)
+            val formatted = Pretty.formatted(separate, margin = margin.value)
             val html = node_context.make_html(elements, formatted)
             output(HTML.source(html).toString)
           } else {
-            output(server.resources.output_pretty(Pretty.separate(body), margin))
+            output(server.resources.output_pretty(Pretty.separate(body), margin.value))
           }
         })