248 val handler = new Handler(progress, session, name) |
248 val handler = new Handler(progress, session, name) |
249 session.init_protocol_handler(handler) |
249 session.init_protocol_handler(handler) |
250 |
250 |
251 val session_result = Future.promise[Process_Result] |
251 val session_result = Future.promise[Process_Result] |
252 |
252 |
253 Isabelle_Process(session, options, sessions_structure, |
253 Isabelle_Process(session, options, sessions_structure, store, |
254 logic = parent, cwd = info.dir.file, env = env, store = Some(store), |
254 logic = parent, cwd = info.dir.file, env = env, |
255 phase_changed = |
255 phase_changed = |
256 { |
256 { |
257 case Session.Ready => session.protocol_command("build_session", args_yxml) |
257 case Session.Ready => session.protocol_command("build_session", args_yxml) |
258 case Session.Terminated(result) => session_result.fulfill(result) |
258 case Session.Terminated(result) => session_result.fulfill(result) |
259 case _ => |
259 case _ => |
278 (if (Sessions.is_pure(name)) "; Theory.install_pure (Thy_Info.get_theory Context.PureN)" |
278 (if (Sessions.is_pure(name)) "; Theory.install_pure (Thy_Info.get_theory Context.PureN)" |
279 else "") + (if (do_output) "; " + save_heap else "") + "));" |
279 else "") + (if (do_output) "; " + save_heap else "") + "));" |
280 |
280 |
281 val process = |
281 val process = |
282 if (Sessions.is_pure(name)) { |
282 if (Sessions.is_pure(name)) { |
283 ML_Process(options, deps.sessions_structure, raw_ml_system = true, |
283 ML_Process(options, deps.sessions_structure, store, raw_ml_system = true, |
284 args = |
284 args = |
285 (for ((root, _) <- Thy_Header.ml_roots) yield List("--use", root)).flatten ::: |
285 (for ((root, _) <- Thy_Header.ml_roots) yield List("--use", root)).flatten ::: |
286 List("--eval", eval), |
286 List("--eval", eval), |
287 cwd = info.dir.file, env = env, store = Some(store), |
287 cwd = info.dir.file, env = env, cleanup = () => args_file.delete) |
288 cleanup = () => args_file.delete) |
|
289 } |
288 } |
290 else { |
289 else { |
291 ML_Process(options, deps.sessions_structure, logic = parent, args = List("--eval", eval), |
290 ML_Process(options, deps.sessions_structure, store, logic = parent, |
292 cwd = info.dir.file, env = env, store = Some(store), |
291 args = List("--eval", eval), |
293 cleanup = () => args_file.delete) |
292 cwd = info.dir.file, env = env, cleanup = () => args_file.delete) |
294 } |
293 } |
295 |
294 |
296 process.result( |
295 process.result( |
297 progress_stdout = (line: String) => |
296 progress_stdout = (line: String) => |
298 Library.try_unprefix("\floading_theory = ", line) match { |
297 Library.try_unprefix("\floading_theory = ", line) match { |