Dm.ExecutionManagerSourceThe event manager is in charge of the actual event of tasks (as defined by the scheduler), caching event states and invalidating them. It can delegate to worker processes via DelegationManager
type options = {delegation_mode : delegation_mode;completion_options : Protocol.Settings.Completion.t;enableDiagnostics : bool;}Execution state, includes the cache
val invalidate :
Document.document ->
Scheduler.schedule ->
Types.sentence_id ->
state ->
stateval all_errors :
state ->
(Types.sentence_id * (Loc.t option * Pp.t * Types.Quickfix.t list option))
listval shift_overview :
state ->
before:RawDocument.t ->
after:RawDocument.t ->
start:int ->
offset:int ->
stateReturns the vernac state after the sentence
Events for the main loop
Execution happens in two steps. In particular the event one takes only one task at a time to ease checking for interruption
val build_tasks_for :
Document.document ->
Scheduler.schedule ->
state ->
Types.sentence_id ->
bool ->
Vernacstate.t * prepared_task list * state * Types.sentence_id optionval execute :
state ->
(Vernacstate.t * events * bool) ->
prepared_task ->
state * Vernacstate.t * events * bool * errored_sentenceval update_overview :
prepared_task ->
prepared_task list ->
state ->
Document.document ->
stateCoq toplevels for delegation without fork