--- a/src/Pure/PIDE/protocol_handlers.scala Thu Aug 27 13:06:58 2020 +0200
+++ b/src/Pure/PIDE/protocol_handlers.scala Thu Aug 27 15:16:56 2020 +0200
@@ -74,6 +74,10 @@
{
private val state = Synchronized(Protocol_Handlers.State(session))
+ def prover_options(options: Options): Options =
+ (options /: state.value.handlers)(
+ { case (opts, (_, handler)) => handler.prover_options(opts) })
+
def get(name: String): Option[Session.Protocol_Handler] = state.value.get(name)
def init(handler: Session.Protocol_Handler): Unit = state.change(_.init(handler))
def init(name: String): Unit = state.change(_.init(name))
--- a/src/Pure/PIDE/session.scala Thu Aug 27 13:06:58 2020 +0200
+++ b/src/Pure/PIDE/session.scala Thu Aug 27 15:16:56 2020 +0200
@@ -118,6 +118,7 @@
def init(session: Session): Unit = {}
def exit(): Unit = {}
def functions: List[(String, Protocol_Function)] = Nil
+ def prover_options(options: Options): Options = options
}
}
@@ -353,14 +354,11 @@
}
- /* file formats */
+ /* file formats and protocol handlers */
- lazy val file_formats: File_Format.Session =
+ private lazy val file_formats: File_Format.Session =
File_Format.registry.start_session(session)
-
- /* protocol handlers */
-
private val protocol_handlers = Protocol_Handlers.init(session)
def get_protocol_handler[C <: Session.Protocol_Handler](c: Class[C]): Option[C] =
@@ -372,6 +370,9 @@
def init_protocol_handler(handler: Session.Protocol_Handler): Unit =
protocol_handlers.init(handler)
+ def prover_options(options: Options): Options =
+ protocol_handlers.prover_options(file_formats.prover_options(options))
+
/* debugger */
@@ -543,12 +544,12 @@
change_command(_.accumulate(state_id, output.message, xml_cache))
case _ if output.is_init =>
- prover.get.options(file_formats.prover_options(session_options))
- prover.get.init_session(resources)
-
Isabelle_System.make_services(classOf[Session.Protocol_Handler])
.foreach(init_protocol_handler)
+ prover.get.options(prover_options(session_options))
+ prover.get.init_session(resources)
+
phase = Session.Ready
debugger.ready()
@@ -625,7 +626,7 @@
case Update_Options(options) =>
if (prover.defined && is_ready) {
- prover.get.options(file_formats.prover_options(options))
+ prover.get.options(prover_options(options))
handle_raw_edits()
}
global_options.post(Session.Global_Options(options))