;;
let index_obj_for_auto status (uri, height, _, _, kind) =
- prerr_endline (string_of_int height);
+ (*prerr_endline (string_of_int height);*)
let mk_item orig_ty spec =
let ty,_,_ = NCicMetaSubst.saturate ~delta:max_int [] [] [] orig_ty 0 in
let keys =
let newstatus = index_eq uri status in
if newstatus == status then status
else
- (prerr_endline ("recording " ^ (NUri.string_of_uri uri));
+ ((*prerr_endline ("recording " ^ (NUri.string_of_uri uri));*)
let dump = record_index_eq uri :: newstatus#dump
in newstatus#set_dump dump)
else
- (prerr_endline "Not a fact";
+ ((*prerr_endline "Not a fact";*)
status)
;;
let diff = S.diff s2 s1 in
S.fold (fun uri uris -> uri :: uris) diff []
-let time_travel ~present ~past =
+let initial_status lexicon_status baseuri =
+ (new GrafiteTypes.status baseuri)#set_lstatus lexicon_status#lstatus
+;;
+
+let time_travel ~present ?(past=initial_status present present#baseuri) () =
let objs_to_remove =
uri_list_diff present#objects past#objects in
List.iter LibrarySync.remove_obj objs_to_remove;
NCicLibrary.time_travel past
;;
-let initial_status lexicon_status baseuri =
- (new GrafiteTypes.status baseuri)#set_lstatus lexicon_status#lstatus
-;;
-
let init lexicon_status =
CoercDb.restore CoercDb.empty_coerc_db;
LibraryObjects.reset_defaults ();
() =
let buffer = source_view#buffer in
let source_buffer = source_view#source_buffer in
-let initial_statuses baseuri =
+let initial_statuses current baseuri =
+ let empty_lstatus = new LexiconEngine.status in
+ (match current with
+ Some current ->
+ LexiconSync.time_travel ~present:current ~past:empty_lstatus;
+ GrafiteSync.time_travel ~present:current ();
+ (* CSC: there is a known bug in invalidation; temporary fix here *)
+ NCicEnvironment.invalidate ()
+ | None -> ());
let lexicon_status =
- CicNotation2.load_notation ~include_paths:[] (new LexiconEngine.status)
+ CicNotation2.load_notation ~include_paths:[] empty_lstatus
BuildTimeConf.core_notation_script
in
let grafite_status = GrafiteSync.init lexicon_status baseuri in
val mutable statements = [] (** executed statements *)
- val mutable history = [ initial_statuses default_buri ]
+ val mutable history = [ initial_statuses None default_buri ]
(** list of states before having executed statements. Head element of this
* list is the current state, last element is the state at the beginning of
* the script.
match history with s::_ -> s | [] -> assert false
in
LexiconSync.time_travel ~present:cur_grafite_status ~past:grafite_status;
- GrafiteSync.time_travel ~present:cur_grafite_status ~past:grafite_status;
+ GrafiteSync.time_travel ~present:cur_grafite_status ~past:grafite_status ();
statements <- new_statements;
history <- new_history;
self#moveMark (- offset)
in
(* FIXME: this is not correct since there is no undo for
* library_objects.set_default... *)
- GrafiteSync.time_travel ~present:self#grafite_status ~past:grafite_status;
+ GrafiteSync.time_travel ~present:self#grafite_status ~past:grafite_status ();
LexiconSync.time_travel ~present:self#grafite_status ~past:grafite_status
method private reset_buffer =
statements <- [];
- history <- [ initial_statuses self#buri_of_current_file ];
+ history <- [ initial_statuses (Some self#grafite_status) self#buri_of_current_file ];
userGoal <- None;
self#notify;
buffer#remove_tag locked_tag ~start:buffer#start_iter ~stop:buffer#end_iter;