clarified signature;
authorwenzelm
Wed, 21 Dec 2016 22:49:53 +0100
changeset 64651 ea5620f7b0d8
parent 64650 011629dda937
child 64652 ad55f164ae0d
clarified signature;
src/Pure/PIDE/line.scala
src/Tools/VSCode/src/protocol.scala
src/Tools/VSCode/src/server.scala
src/Tools/VSCode/src/vscode_rendering.scala
--- a/src/Pure/PIDE/line.scala	Wed Dec 21 22:37:53 2016 +0100
+++ b/src/Pure/PIDE/line.scala	Wed Dec 21 22:49:53 2016 +0100
@@ -62,13 +62,13 @@
 
   /* positions within document node */
 
-  sealed case class Position_Node(pos: Position, name: String)
+  sealed case class Node_Position(name: String, pos: Position = Position.zero)
   {
     def line: Int = pos.line
     def column: Int = pos.column
   }
 
-  sealed case class Range_Node(range: Range, name: String)
+  sealed case class Node_Range(name: String, range: Range = Range.zero)
   {
     def start: Position = range.start
     def stop: Position = range.stop
--- a/src/Tools/VSCode/src/protocol.scala	Wed Dec 21 22:37:53 2016 +0100
+++ b/src/Tools/VSCode/src/protocol.scala	Wed Dec 21 22:49:53 2016 +0100
@@ -82,10 +82,10 @@
 
   class RequestTextDocumentPosition(name: String)
   {
-    def unapply(json: JSON.T): Option[(Id, Line.Position_Node)] =
+    def unapply(json: JSON.T): Option[(Id, Line.Node_Position)] =
       json match {
-        case RequestMessage(id, method, Some(TextDocumentPosition(pos_node))) if method == name =>
-          Some((id, pos_node))
+        case RequestMessage(id, method, Some(TextDocumentPosition(node_pos))) if method == name =>
+          Some((id, node_pos))
         case _ => None
       }
   }
@@ -178,26 +178,26 @@
 
   object Location
   {
-    def apply(loc: Line.Range_Node): JSON.T =
+    def apply(loc: Line.Node_Range): JSON.T =
       Map("uri" -> loc.name, "range" -> Range(loc.range))
 
-    def unapply(json: JSON.T): Option[Line.Range_Node] =
+    def unapply(json: JSON.T): Option[Line.Node_Range] =
       for {
         uri <- JSON.string(json, "uri")
         range_json <- JSON.value(json, "range")
         range <- Range.unapply(range_json)
-      } yield Line.Range_Node(range, uri)
+      } yield Line.Node_Range(uri, range)
   }
 
   object TextDocumentPosition
   {
-    def unapply(json: JSON.T): Option[Line.Position_Node] =
+    def unapply(json: JSON.T): Option[Line.Node_Position] =
       for {
         doc <- JSON.value(json, "textDocument")
         uri <- JSON.string(doc, "uri")
         pos_json <- JSON.value(json, "position")
         pos <- Position.unapply(pos_json)
-      } yield Line.Position_Node(pos, uri)
+      } yield Line.Node_Position(uri, pos)
   }
 
 
@@ -308,7 +308,7 @@
 
   object GotoDefinition extends RequestTextDocumentPosition("textDocument/definition")
   {
-    def reply(id: Id, result: List[Line.Range_Node]): JSON.T =
+    def reply(id: Id, result: List[Line.Node_Range]): JSON.T =
       ResponseMessage(id, Some(result.map(Location.apply(_))))
   }
 }
--- a/src/Tools/VSCode/src/server.scala	Wed Dec 21 22:37:53 2016 +0100
+++ b/src/Tools/VSCode/src/server.scala	Wed Dec 21 22:49:53 2016 +0100
@@ -106,11 +106,11 @@
   def session: Session = state.value.session getOrElse error("Session inactive")
   def resources: VSCode_Resources = session.resources.asInstanceOf[VSCode_Resources]
 
-  def rendering_offset(pos_node: Line.Position_Node): Option[(VSCode_Rendering, Text.Offset)] =
+  def rendering_offset(node_pos: Line.Node_Position): Option[(VSCode_Rendering, Text.Offset)] =
     for {
-      model <- state.value.models.get(pos_node.name)
+      model <- state.value.models.get(node_pos.name)
       rendering = model.rendering(options)
-      offset <- model.doc.offset(pos_node.pos, text_length)
+      offset <- model.doc.offset(node_pos.pos, text_length)
     } yield (rendering, offset)
 
 
@@ -223,11 +223,11 @@
 
   /* hover */
 
-  def hover(id: Protocol.Id, pos_node: Line.Position_Node)
+  def hover(id: Protocol.Id, node_pos: Line.Node_Position)
   {
     val result =
       for {
-        (rendering, offset) <- rendering_offset(pos_node)
+        (rendering, offset) <- rendering_offset(node_pos)
         info <- rendering.tooltip(Text.Range(offset, offset + 1))
       } yield {
         val doc = rendering.model.doc
@@ -242,10 +242,10 @@
 
   /* goto definition */
 
-  def goto_definition(id: Protocol.Id, pos_node: Line.Position_Node)
+  def goto_definition(id: Protocol.Id, node_pos: Line.Node_Position)
   {
     val result =
-      (for ((rendering, offset) <- rendering_offset(pos_node))
+      (for ((rendering, offset) <- rendering_offset(node_pos))
         yield rendering.hyperlinks(Text.Range(offset, offset + 1))) getOrElse Nil
     channel.write(Protocol.GotoDefinition.reply(id, result))
   }
@@ -270,8 +270,8 @@
             update_document(uri, text)
           case Protocol.DidCloseTextDocument(uri) => channel.log("CLOSE " + uri)
           case Protocol.DidSaveTextDocument(uri) => channel.log("SAVE " + uri)
-          case Protocol.Hover(id, pos_node) => hover(id, pos_node)
-          case Protocol.GotoDefinition(id, pos_node) => goto_definition(id, pos_node)
+          case Protocol.Hover(id, node_pos) => hover(id, node_pos)
+          case Protocol.GotoDefinition(id, node_pos) => goto_definition(id, node_pos)
           case _ => channel.log("### IGNORED")
         }
       }
--- a/src/Tools/VSCode/src/vscode_rendering.scala	Wed Dec 21 22:37:53 2016 +0100
+++ b/src/Tools/VSCode/src/vscode_rendering.scala	Wed Dec 21 22:49:53 2016 +0100
@@ -31,13 +31,13 @@
 
   /* hyperlinks */
 
-  def hyperlinks(range: Text.Range): List[Line.Range_Node] =
+  def hyperlinks(range: Text.Range): List[Line.Node_Range] =
   {
-    snapshot.cumulate[List[Line.Range_Node]](
+    snapshot.cumulate[List[Line.Node_Range]](
       range, Nil, VSCode_Rendering.hyperlink_elements, _ =>
         {
           case (links, Text.Info(_, XML.Elem(Markup.Path(name), _))) =>
-            Some(Line.Range_Node(Line.Range.zero, resolve_file_url(name)) :: links)
+            Some(Line.Node_Range(resolve_file_url(name)) :: links)
 
 /* FIXME
           case (links, Text.Info(_, XML.Elem(Markup.Url(name), _))) =>