src/Pure/Tools/build.ML
changeset 61381 ddca85598c65
parent 61376 93224745477f
child 62469 6d292ee30365
--- a/src/Pure/Tools/build.ML	Fri Oct 09 21:20:43 2015 +0200
+++ b/src/Pure/Tools/build.ML	Sat Oct 10 16:21:34 2015 +0200
@@ -97,7 +97,7 @@
 
 (* build *)
 
-fun build_theories last_timing master_dir (options, thys) =
+fun build_theories symbols last_timing master_dir (options, thys) =
   let
     val condition = space_explode "," (Options.string options "condition");
     val conds = filter_out (can getenv_strict) condition;
@@ -106,6 +106,7 @@
       (Options.set_default options;
         (Thy_Info.use_theories {
           document = Present.document_enabled (Options.string options "document"),
+          symbols = symbols,
           last_timing = last_timing,
           master_dir = master_dir}
         |> Unsynchronized.setmp print_mode
@@ -133,12 +134,14 @@
                 ((list (pair Options.decode (list (string #> rpair Position.none)))))))))))))))
           end;
 
-      val _ = HTML.init_symbols symbol_codes;
+      val symbols = HTML.make_symbols symbol_codes;
       val _ = Options.set_default options;
 
       val _ = writeln ("\fSession.name = " ^ name);
       val _ =
-        Session.init do_output
+        Session.init
+          symbols
+          do_output
           (Options.bool options "browser_info")
           (Path.explode browser_info)
           (Options.string options "document")
@@ -153,7 +156,7 @@
 
       val res1 =
         theories |>
-          (List.app (build_theories last_timing Path.current)
+          (List.app (build_theories symbols last_timing Path.current)
             |> session_timing name verbose
             |> Unsynchronized.setmp Output.protocol_message_fn protocol_message
             |> Multithreading.max_threads_setmp (Options.int options "threads")
@@ -161,7 +164,6 @@
       val res2 = Exn.capture Session.finish ();
       val _ = Par_Exn.release_all [res1, res2];
 
-      val _ = HTML.reset_symbols ();
       val _ = Options.reset_default ();
       val _ = if do_output then () else exit 0;
     in () end);
@@ -171,15 +173,19 @@
 
 val _ =
   Isabelle_Process.protocol_command "build_theories"
-    (fn [id, master_dir, theories_yxml] =>
+    (fn [id, symbol_codes_yxml, master_dir, theories_yxml] =>
       let
+        val symbols =
+          YXML.parse_body symbol_codes_yxml
+          |> let open XML.Decode in list (pair string int) end
+          |> HTML.make_symbols;
         val theories =
           YXML.parse_body theories_yxml |>
             let open XML.Decode
             in list (pair Options.decode (list (string #> rpair Position.none))) end;
         val res1 =
           Exn.capture (fn () =>
-            theories |> List.app (build_theories (K NONE) (Path.explode master_dir))) ();
+            theories |> List.app (build_theories symbols (K NONE) (Path.explode master_dir))) ();
         val res2 = Exn.capture Session.shutdown ();
         val result =
           (Par_Exn.release_all [res1, res2]; "") handle exn =>