src/Tools/VSCode/src/server.scala
changeset 64777 ca09695eb43c
parent 64767 f5c4ffdb1124
child 64782 3f0bbb60859b
--- a/src/Tools/VSCode/src/server.scala	Wed Jan 04 15:20:54 2017 +0100
+++ b/src/Tools/VSCode/src/server.scala	Wed Jan 04 19:42:08 2017 +0100
@@ -102,7 +102,7 @@
 
   def rendering_offset(node_pos: Line.Node_Position): Option[(VSCode_Rendering, Text.Offset)] =
     for {
-      model <- resources.get_model(node_pos.name)
+      model <- resources.get_model(new JFile(node_pos.name))
       rendering = model.rendering()
       offset <- model.doc.offset(node_pos.pos)
     } yield (rendering, offset)
@@ -124,18 +124,19 @@
   private def sync_documents(changed: Set[JFile]): Unit =
     if (resources.sync_models(changed)) delay_input.invoke()
 
-  private def update_document(uri: String, text: String)
+  private def update_document(file: JFile, text: String)
   {
-    resources.update_model(session, uri, text)
+    resources.update_model(session, file, text)
     delay_input.invoke()
   }
 
-  private def close_document(uri: String)
+  private def close_document(file: JFile)
   {
-    resources.close_model(uri) match {
+    resources.close_model(file) match {
       case Some(model) =>
-        model.register(watcher)
-        sync_documents(Set(model.file))
+        val dir = file.getParentFile
+        if (dir != null && dir.isDirectory) watcher.register(dir)
+        sync_documents(Set(file))
       case None =>
     }
   }
@@ -153,7 +154,7 @@
   private val prover_output =
     Session.Consumer[Session.Commands_Changed](getClass.getName) {
       case changed if changed.nodes.nonEmpty =>
-        resources.update_output(changed.nodes.toList.map(_.node))
+        resources.update_output(changed.nodes.toList.map(resources.node_file(_)))
         delay_output.invoke()
       case _ =>
     }