src/Tools/VSCode/src/language_server.scala
changeset 83384 81a832cab4e2
parent 83381 fea56c7615fd
child 83401 1d9b1ca7977e
equal deleted inserted replaced
83383:e7e1ffa36821 83384:81a832cab4e2
   116   private val session_ = Synchronized(None: Option[VSCode_Session])
   116   private val session_ = Synchronized(None: Option[VSCode_Session])
   117   def session: VSCode_Session = session_.value getOrElse error("Server inactive")
   117   def session: VSCode_Session = session_.value getOrElse error("Server inactive")
   118   def resources: VSCode_Resources = session.resources
   118   def resources: VSCode_Resources = session.resources
   119   def ml_settings: ML_Settings = session.store.ml_settings
   119   def ml_settings: ML_Settings = session.store.ml_settings
   120 
   120 
   121   private val sledgehammer_panel = VSCode_Sledgehammer(server)
   121   private val sledgehammer = VSCode_Sledgehammer(server)
   122 
   122 
   123   def rendering_offset(node_pos: Line.Node_Position): Option[(VSCode_Rendering, Text.Offset)] =
   123   def rendering_offset(node_pos: Line.Node_Position): Option[(VSCode_Rendering, Text.Offset)] =
   124     for {
   124     for {
   125       rendering <- resources.get_rendering(new JFile(node_pos.name))
   125       rendering <- resources.get_rendering(new JFile(node_pos.name))
   126       offset <- rendering.model.content.doc.offset(node_pos.pos)
   126       offset <- rendering.model.content.doc.offset(node_pos.pos)
   296 
   296 
   297       session.commands_changed += prover_output
   297       session.commands_changed += prover_output
   298       session.syslog_messages += syslog_messages
   298       session.syslog_messages += syslog_messages
   299 
   299 
   300       dynamic_output.init()
   300       dynamic_output.init()
   301       sledgehammer_panel.init()
   301       sledgehammer.init()
   302 
   302 
   303       try {
   303       try {
   304         Isabelle_Process.start(
   304         Isabelle_Process.start(
   305           options, session, session_background, session_heaps, modes = modes).await_startup()
   305           options, session, session_background, session_heaps, modes = modes).await_startup()
   306         reply_ok(
   306         reply_ok(
   325         file_watcher.shutdown()
   325         file_watcher.shutdown()
   326         delay_input.revoke()
   326         delay_input.revoke()
   327         delay_output.revoke()
   327         delay_output.revoke()
   328         delay_caret_update.revoke()
   328         delay_caret_update.revoke()
   329         delay_preview.revoke()
   329         delay_preview.revoke()
   330         sledgehammer_panel.exit()
   330         sledgehammer.exit()
   331 
   331 
   332         val result = session.stop()
   332         val result = session.stop()
   333         if (result.ok) reply("")
   333         if (result.ok) reply("")
   334         else reply("Prover shutdown failed: " + result.rc)
   334         else reply("Prover shutdown failed: " + result.rc)
   335         None
   335         None
   547           case LSP.Symbols_Convert_Request(id, text, boolean) =>
   547           case LSP.Symbols_Convert_Request(id, text, boolean) =>
   548             symbols_convert_request(id, text, boolean)
   548             symbols_convert_request(id, text, boolean)
   549           case LSP.Preview_Request(file, column) => preview_request(file, column)
   549           case LSP.Preview_Request(file, column) => preview_request(file, column)
   550           case LSP.Symbols_Panel_Request(init) => symbols_panel_request(init)
   550           case LSP.Symbols_Panel_Request(init) => symbols_panel_request(init)
   551           case LSP.Documentation_Request(init) => documentation_request(init)
   551           case LSP.Documentation_Request(init) => documentation_request(init)
   552           case LSP.Sledgehammer_Request(provers, isar, try0, purpose) => sledgehammer_panel.handle_request(provers, isar, try0, purpose)
   552           case LSP.Sledgehammer_Request(provers, isar, try0, purpose) =>
   553           case LSP.Sledgehammer_Cancel => sledgehammer_panel.cancel_query()
   553             sledgehammer.handle_request(provers, isar, try0, purpose)
   554           case LSP.Sledgehammer_Provers(init) => sledgehammer_panel.send_provers_and_history(init)
   554           case LSP.Sledgehammer_Cancel => sledgehammer.cancel_query()
   555           case LSP.Sledgehammer_Delete_Prover(entry) => sledgehammer_panel.handle_sledgehammer_delete(entry)
   555           case LSP.Sledgehammer_Provers(init) => sledgehammer.send_provers_and_history(init)
       
   556           case LSP.Sledgehammer_Delete_Prover(entry) =>
       
   557             sledgehammer.handle_sledgehammer_delete(entry)
   556           case _ => if (!LSP.ResponseMessage.is_empty(json)) log("### IGNORED")
   558           case _ => if (!LSP.ResponseMessage.is_empty(json)) log("### IGNORED")
   557         }
   559         }
   558       }
   560       }
   559       catch { case exn: Throwable => channel.log_error_message(Exn.message(exn)) }
   561       catch { case exn: Throwable => channel.log_error_message(Exn.message(exn)) }
   560     }
   562     }