src/Pure/PIDE/command.ML
changeset 50914 fe4714886d92
parent 50911 ee7fe4230642
child 51266 3007d0bc9cb1
equal deleted inserted replaced
50913:697e3bb60a3b 50914:fe4714886d92
    62 local
    62 local
    63 
    63 
    64 fun run int tr st =
    64 fun run int tr st =
    65   (case Toplevel.transition int tr st of
    65   (case Toplevel.transition int tr st of
    66     SOME (st', NONE) => ([], SOME st')
    66     SOME (st', NONE) => ([], SOME st')
    67   | SOME (_, SOME (exn, _)) => (ML_Compiler.exn_messages exn, NONE)
    67   | SOME (_, SOME (exn, _)) => (ML_Compiler.exn_messages_ids exn, NONE)
    68   | NONE => (ML_Compiler.exn_messages Runtime.TERMINATE, NONE));
    68   | NONE => (ML_Compiler.exn_messages_ids Runtime.TERMINATE, NONE));
    69 
    69 
    70 fun check_cmts tr cmts st =
    70 fun check_cmts tr cmts st =
    71   Toplevel.setmp_thread_position tr
    71   Toplevel.setmp_thread_position tr
    72     (fn () => cmts
    72     (fn () => cmts
    73       |> maps (fn cmt =>
    73       |> maps (fn cmt =>
    74         (Thy_Output.check_text (Token.source_position_of cmt) st; [])
    74         (Thy_Output.check_text (Token.source_position_of cmt) st; [])
    75           handle exn => ML_Compiler.exn_messages exn)) ();
    75           handle exn => ML_Compiler.exn_messages_ids exn)) ();
    76 
    76 
    77 fun timing tr t =
    77 fun timing tr t =
    78   if Timing.is_relevant t then Toplevel.status tr (Markup.timing t) else ();
    78   if Timing.is_relevant t then Toplevel.status tr (Markup.timing t) else ();
    79 
    79 
    80 fun proof_status tr st =
    80 fun proof_status tr st =
   104       val (errs1, result) = run (is_init orelse is_proof) (Toplevel.set_print false tr) st;
   104       val (errs1, result) = run (is_init orelse is_proof) (Toplevel.set_print false tr) st;
   105       val errs2 = (case result of NONE => [] | SOME st' => check_cmts tr cmts st');
   105       val errs2 = (case result of NONE => [] | SOME st' => check_cmts tr cmts st');
   106       val errs = errs1 @ errs2;
   106       val errs = errs1 @ errs2;
   107       val _ = timing tr (Timing.result start);
   107       val _ = timing tr (Timing.result start);
   108       val _ = Toplevel.status tr Markup.finished;
   108       val _ = Toplevel.status tr Markup.finished;
   109       val _ = List.app (Toplevel.error_msg tr) errs;
   109       val _ = List.app (Future.error_msg (Toplevel.pos_of tr)) errs;
   110     in
   110     in
   111       (case result of
   111       (case result of
   112         NONE =>
   112         NONE =>
   113           let
   113           let
   114             val _ = if null errs then Exn.interrupt () else ();
   114             val _ = if null errs then Exn.interrupt () else ();