src/Pure/PIDE/document.ML
changeset 40390 5bc4336d9768
parent 39391 f1d6ede54862
child 40391 b0dafbfc05b7
equal deleted inserted replaced
40389:511e5263f5c6 40390:5bc4336d9768
   208         (fn () =>
   208         (fn () =>
   209           Toplevel.setmp_thread_position tr
   209           Toplevel.setmp_thread_position tr
   210             (fn () => Toplevel.print_state false st) ()))
   210             (fn () => Toplevel.print_state false st) ()))
   211   else ();
   211   else ();
   212 
   212 
       
   213 fun run int tr st =
       
   214   (case Toplevel.transition int tr st of
       
   215     SOME (st', NONE) => ([], SOME st')
       
   216   | SOME (_, SOME exn_info) =>
       
   217       (case ML_Compiler.exn_messages (Runtime.EXCURSION_FAIL exn_info) of
       
   218         [] => Exn.interrupt ()
       
   219       | errs => (errs, NONE))
       
   220   | NONE => ([ML_Compiler.exn_message Runtime.TERMINATE], NONE));
       
   221 
   213 in
   222 in
   214 
   223 
   215 fun run_command thy_name tr st =
   224 fun run_command thy_name tr st =
   216   (case
   225   (case
   217       (case Toplevel.init_of tr of
   226       (case Toplevel.init_of tr of
   218         SOME name => Exn.capture (fn () => Thy_Header.consistent_name thy_name name) ()
   227         SOME name => Exn.capture (fn () => Thy_Header.consistent_name thy_name name) ()
   219       | NONE => Exn.Result ()) of
   228       | NONE => Exn.Result ()) of
   220     Exn.Result () =>
   229     Exn.Result () =>
   221       let
   230       let
   222         val int = is_some (Toplevel.init_of tr);
   231         val int = is_some (Toplevel.init_of tr);
   223         val (errs, result) =
   232         val (errs, result) = run int tr st;
   224           (case Toplevel.transition int tr st of
       
   225             SOME (st', NONE) => ([], SOME st')
       
   226           | SOME (_, SOME exn_info) =>
       
   227               (case ML_Compiler.exn_messages (Runtime.EXCURSION_FAIL exn_info) of
       
   228                 [] => Exn.interrupt ()
       
   229               | errs => (errs, NONE))
       
   230           | NONE => ([ML_Compiler.exn_message Runtime.TERMINATE], NONE));
       
   231         val _ = List.app (Toplevel.error_msg tr) errs;
   233         val _ = List.app (Toplevel.error_msg tr) errs;
   232         val _ =
   234         val _ =
   233           (case result of
   235           (case result of
   234             NONE => Toplevel.status tr Markup.failed
   236             NONE => Toplevel.status tr Markup.failed
   235           | SOME st' =>
   237           | SOME st' =>