in
guistuff.mathviewer#show_entry (`NCic (t,ctx,m,s));
[status, parsed_text], "", parsed_text_length
- | TA.NIntroGuess _loc ->
- let names_ref = ref [] in
- let s =
- NTactics.intros_tac ~names_ref [] script#grafite_status
- in
- let rex = Pcre.regexp ~flags:[`MULTILINE] "\\A([\\n\\t\\r ]*).*\\Z" in
- let nl = Pcre.replace ~rex ~templ:"$1" parsed_text in
- [s, nl ^ "#" ^ String.concat " " !names_ref ^ ";"], "", parsed_text_length
- | TA.NAutoInteractive (_loc, (None,a)) ->
- let trace_ref = ref [] in
- let s =
- NnAuto.auto_tac
- ~params:(None,a) ~trace_ref script#grafite_status
- in
- let depth =
- try List.assoc "depth" a
- with Not_found -> ""
- in
- let trace = "/"^(if int_of_string depth > 1 then depth else "")^"/ by " in
- let thms =
- match !trace_ref with
- | [] -> "{}"
- | thms ->
- String.concat ", "
- (HExtlib.filter_map (function
- | CicNotationPt.NRef r -> Some (NCicPp.r2s true r)
- | _ -> None)
- thms)
- in
- let rex = Pcre.regexp ~flags:[`MULTILINE] "\\A([\\n\\t\\r ]*).*\\Z" in
- let nl = Pcre.replace ~rex ~templ:"$1" parsed_text in
- [s, nl ^ trace ^ thms ^ ";"], "", parsed_text_length
- | TA.NAutoInteractive (_, (Some _,_)) -> assert false
let rec eval_macro include_paths (buffer : GText.buffer) guistuff grafite_status user_goal unparsed_text parsed_text script mac =
let module MQ = MetadataQuery in
(* no idea why ocaml wants this *)
let parsed_text_length = String.length parsed_text in
let dbd = LibraryDb.instance () in
- let pp_macro = ApplyTransformation.txt_of_macro ~map_unicode_to_tex:false in
+ let pp_macro = ApplyTransformation.txt_of_macro ~map_unicode_to_tex:true in
match mac with
(* WHELP's stuff *)
| TA.WMatch (loc, term) ->
in
let ty,_ =
CicTypeChecker.type_of_aux'
- [] [] proof_term CicUniv.empty_ugraph
+ menv [] proof_term CicUniv.empty_ugraph
in
- prerr_endline (CicPp.ppterm proof_term ^ " n lambda= " ^ string_of_int how_many_lambdas);
+ prerr_endline (CicPp.ppterm proof_term);
(* use declarative output *)
let obj =
(* il proof_term vive in cc, devo metterci i lambda no? *)
- (Cic.CurrentProof ("xxx",[],proof_term,ty,[],[]))
+ (Cic.CurrentProof ("xxx",menv,proof_term,ty,[],[]))
in
ApplyTransformation.txt_of_cic_object
~map_unicode_to_tex:(Helm_registry.get_bool
() =
let buffer = source_view#buffer in
let source_buffer = source_view#source_buffer in
-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 initial_statuses baseuri =
let lexicon_status =
- CicNotation2.load_notation ~include_paths:[] empty_lstatus
+ CicNotation2.load_notation ~include_paths:[] (new LexiconEngine.status)
BuildTimeConf.core_notation_script
in
let grafite_status = GrafiteSync.init lexicon_status baseuri in
val mutable statements = [] (** executed statements *)
- val mutable history = [ initial_statuses None default_buri ]
+ val mutable history = [ initial_statuses 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)
| Some f -> Some (Librarian.absolutize f)
| None -> None
in
+ self#goto_top;
filename_ <- file;
include_paths_ <-
(match file with Some file -> read_include_paths file | None -> []);
HLog.debug ("backup " ^ f ^ " saved")
end
+ method private goto_top =
+ let grafite_status =
+ let rec last x = function
+ | [] -> x
+ | hd::tl -> last hd tl
+ in
+ last (self#grafite_status) history
+ 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;
+ LexiconSync.time_travel ~present:self#grafite_status ~past:grafite_status
+
method private reset_buffer =
statements <- [];
- history <- [ initial_statuses (Some self#grafite_status) self#buri_of_current_file ];
+ history <- [ initial_statuses self#buri_of_current_file ];
userGoal <- None;
self#notify;
buffer#remove_tag locked_tag ~start:buffer#start_iter ~stop:buffer#end_iter;
match pos with
| `Top ->
dispose_old_locked_mark ();
+ self#goto_top;
self#reset_buffer;
self#notify
| `Bottom ->