File tree 3 files changed +23
-2
lines changed
3 files changed +23
-2
lines changed Original file line number Diff line number Diff line change @@ -554,6 +554,19 @@ let execution_finished st id started =
554
554
555
555
let execute st id vst_for_next_todo started task background block =
556
556
let time = Unix. gettimeofday () -. started in
557
+ let proof_view_event = (* When in continuous mode we always check if we should update the goal view *)
558
+ if background then begin
559
+ match st.observe_id with
560
+ | Top -> []
561
+ | Id o_id ->
562
+ let s_id = ExecutionManager. get_id_of_executed_task task in
563
+ if o_id = s_id then
564
+ [mk_proof_view_event s_id]
565
+ else []
566
+ end
567
+ else
568
+ []
569
+ in
557
570
match Document. get_sentence st.document id with
558
571
| None ->
559
572
log (Printf. sprintf " ExecuteToLoc %d stops after %2.3f, sentences invalidated" (Stateid. to_int id) time);
@@ -578,7 +591,7 @@ let execute st id vst_for_next_todo started task background block =
578
591
let event = Option. cata (fun event -> [event]) [] event in
579
592
let state = Some {st with execution_state; cancel_handle} in
580
593
let update_view = true in
581
- let events = inject_em_events events @ block_events @ event in
594
+ let events = proof_view_event @ inject_em_events events @ block_events @ event in
582
595
{state; events; update_view; notification= None }
583
596
584
597
let get_proof st diff_mode id =
Original file line number Diff line number Diff line change @@ -97,6 +97,14 @@ type state = {
97
97
overview : exec_overview ;
98
98
}
99
99
100
+ let get_id_of_executed_task task =
101
+ match task with
102
+ | PSkip {id} -> id
103
+ | PBlock {id} -> id
104
+ | PExec {id} -> id
105
+ | PQuery {id} -> id
106
+ | PDelegate {terminator_id} -> terminator_id
107
+
100
108
let print_exec_overview overview =
101
109
let {processing; processed; prepared } = overview in
102
110
log @@ " --------- Prepared ranges ---------" ;
Original file line number Diff line number Diff line change @@ -41,7 +41,6 @@ type errored_sentence = (sentence_id * Loc.t option) option
41
41
type feedback_message = Feedback .level * Loc .t option * Quickfix .t list * Pp .t
42
42
43
43
val pr_event : event -> Pp .t
44
-
45
44
val init : Vernacstate .t -> state * event Sel.Event .t
46
45
val destroy : state -> unit
47
46
@@ -74,6 +73,7 @@ val handle_event : event -> state -> (sentence_id option * state option * events
74
73
(* * Execution happens in two steps. In particular the event one takes only
75
74
one task at a time to ease checking for interruption *)
76
75
type prepared_task
76
+ val get_id_of_executed_task : prepared_task -> sentence_id
77
77
val build_tasks_for : Document .document -> Scheduler .schedule -> state -> sentence_id -> bool -> Vernacstate .t * state * prepared_task option * errored_sentence
78
78
val execute : state -> Document .document -> Vernacstate .t * events * bool -> prepared_task -> bool -> (prepared_task option * state * Vernacstate .t * events * errored_sentence )
79
79
You can’t perform that action at this time.
0 commit comments