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 } |