src/Tools/VSCode/src/document_model.scala
changeset 64679 b2bf280b7e13
parent 64673 b5965890e54d
child 64680 7f87c1aa0ffa
--- a/src/Tools/VSCode/src/document_model.scala	Wed Dec 28 11:28:31 2016 +0100
+++ b/src/Tools/VSCode/src/document_model.scala	Wed Dec 28 16:45:00 2016 +0100
@@ -13,8 +13,9 @@
 
 
 case class Document_Model(
-  session: Session, doc: Line.Document, node_name: Document.Node.Name,
-  changed: Boolean = true)
+  session: Session, doc: Line.Document, node_name: Document.Node.Name, text_length: Length,
+  changed: Boolean = true,
+  published_diagnostics: List[Text.Info[Command.Results]] = Nil)
 {
   /* header */
 
@@ -48,10 +49,21 @@
   def unchanged: Document_Model = if (changed) copy(changed = false) else this
 
 
+  /* diagnostics */
+
+  def publish_diagnostics(rendering: VSCode_Rendering)
+    : Option[(List[Text.Info[Command.Results]], Document_Model)] =
+  {
+    val diagnostics = rendering.diagnostics
+    if (diagnostics == published_diagnostics) None
+    else Some(diagnostics, copy(published_diagnostics = diagnostics))
+  }
+
+
   /* snapshot and rendering */
 
   def snapshot(): Document.Snapshot = session.snapshot(node_name, text_edits)
 
-  def rendering(options: Options, text_length: Length): VSCode_Rendering =
-    new VSCode_Rendering(this, snapshot(), options, text_length, session.resources)
+  def rendering(options: Options): VSCode_Rendering =
+    new VSCode_Rendering(this, snapshot(), options, session.resources)
 }