src/Tools/VSCode/src/protocol.scala
changeset 64877 31e9920a0dc1
parent 64777 ca09695eb43c
child 64878 e9208a9301c0
equal deleted inserted replaced
64876:65a247444100 64877:31e9920a0dc1
   138   object ServerCapabilities
   138   object ServerCapabilities
   139   {
   139   {
   140     val json: JSON.T =
   140     val json: JSON.T =
   141       Map(
   141       Map(
   142         "textDocumentSync" -> 1,
   142         "textDocumentSync" -> 1,
       
   143         "completionProvider" -> Map("resolveProvider" -> false, "triggerCharacters" -> Nil),
   143         "hoverProvider" -> true,
   144         "hoverProvider" -> true,
   144         "definitionProvider" -> true,
   145         "definitionProvider" -> true,
   145         "documentHighlightProvider" -> true)
   146         "documentHighlightProvider" -> true)
   146   }
   147   }
   147 
   148 
   288       }
   289       }
   289   }
   290   }
   290 
   291 
   291   object DidCloseTextDocument extends TextDocumentNotification("textDocument/didClose")
   292   object DidCloseTextDocument extends TextDocumentNotification("textDocument/didClose")
   292   object DidSaveTextDocument extends TextDocumentNotification("textDocument/didSave")
   293   object DidSaveTextDocument extends TextDocumentNotification("textDocument/didSave")
       
   294 
       
   295 
       
   296   /* completion */
       
   297 
       
   298   sealed case class CompletionItem(
       
   299     label: String,
       
   300     kind: Option[Int] = None,
       
   301     detail: Option[String] = None,
       
   302     documentation: Option[String] = None,
       
   303     insertText: Option[String] = None,
       
   304     range: Option[Line.Range] = None)
       
   305   {
       
   306     def json: JSON.T =
       
   307       Message.empty + ("label" -> label) ++
       
   308       (kind match { case Some(x) => Map("kind" -> x) case None => Map.empty }) ++
       
   309       (detail match { case Some(x) => Map("detail" -> x) case None => Map.empty }) ++
       
   310       (documentation match { case Some(x) => Map("documentation" -> x) case None => Map.empty }) ++
       
   311       (insertText match { case Some(x) => Map("insertText" -> x) case None => Map.empty }) ++
       
   312       (range match { case Some(x) => Map("range" -> Range(x)) case None => Map.empty })
       
   313   }
       
   314 
       
   315   object Completion extends RequestTextDocumentPosition("textDocument/completion")
       
   316   {
       
   317     def reply(id: Id, result: List[CompletionItem]): JSON.T =
       
   318       ResponseMessage(id, Some(result.map(_.json)))
       
   319   }
   293 
   320 
   294 
   321 
   295   /* hover request */
   322   /* hover request */
   296 
   323 
   297   object Hover extends RequestTextDocumentPosition("textDocument/hover")
   324   object Hover extends RequestTextDocumentPosition("textDocument/hover")