(** creates a statement AST for the Goal tactic, e.g. "goal 7" *)
let goal_ast n =
let module A = GrafiteAst in
- let loc = Disambiguate.dummy_floc in
+ let loc = DisambiguateTypes.dummy_floc in
A.Executable (loc, A.Tactical (loc, A.Tactic (loc, A.Goal (loc, n))))
type guistuff = {
match ex with
| TA.Command (_, TA.Alias _)
| TA.Command (_, TA.Include _)
- | TA.Command (_, TA.Interpretation _) ->
- DisambiguateTypes.Environment.empty
+ | TA.Command (_, TA.Interpretation _) -> []
| _ -> MatitaSync.alias_diff ~from:status new_status
in
(* we remove the defined object since we consider them "automatic aliases" *)
let initial_space,status,new_status_and_text_list_rev =
let module DTE = DisambiguateTypes.Environment in
let module UM = UriManager in
- DTE.fold_flatten (
- fun k ((v,_) as value) (initial_space,status,acc) ->
+ List.fold_left (
+ fun (initial_space,status,acc) (k,((v,_) as value)) ->
let b =
try
let v = UM.strip_xpointer (UM.uri_of_string v) in
let initial_space =
if initial_space = "" then "\n" else initial_space in
initial_space ^
- DisambiguatePp.pp_environment(DTE.cons k value DTE.empty) in
+ DisambiguatePp.pp_environment
+ (DisambiguateTypes.Environment.add k value
+ DisambiguateTypes.Environment.empty) in
let new_status =
- {status with aliases = DTE.cons k value status.aliases}
+ MatitaSync.set_proof_aliases status [k,value]
in
"\n",new_status,((new_status, new_text)::acc)
- ) new_aliases (initial_space,status,[]) in
+ ) (initial_space,status,[]) new_aliases in
let parsed_text = initial_space ^ parsed_text in
let res =
List.rev new_status_and_text_list_rev @ new_status_and_text_list' @
let title = "Unable to include " ^ what in
let message =
what ^ " is <b>not</b> handled by a development.\n" ^
- "All dependencies are authomatically solved for a development.\n\n" ^
+ "All dependencies are automatically solved for a development.\n\n" ^
"<i>Do you want to set up a development?</i>"
in
(match guistuff.ask_confirmation ~title ~message with
let dbd = MatitaDb.instance () in
let metasenv = MatitaMisc.get_proof_metasenv status in
let context = MatitaMisc.get_proof_context status in
- let aliases = MatitaMisc.get_proof_aliases status in
- let interps = MD.disambiguate_term dbd context metasenv aliases term in
+ let interps =
+ MD.disambiguate_term ~dbd ~context ~metasenv ~aliases:status.aliases
+ ~universe:(Some status.multi_aliases) term in
match interps with
| [_,_,x,_], _ -> x
| _ -> assert false
let l = MQ.match_term ~dbd term in
let query_url =
MatitaMisc.strip_suffix ~suffix:"."
- (MatitaMisc.trim_blanks unparsed_text)
+ (HExtlib.trim_blanks unparsed_text)
in
let entry = `Whelp (query_url, l) in
guistuff.mathviewer#show_uri_list ~reuse:true ~entry l;
| TA.Check (_,term) ->
let metasenv = MatitaMisc.get_proof_metasenv status in
let context = MatitaMisc.get_proof_context status in
- let aliases = MatitaMisc.get_proof_aliases status in
let interps =
- MatitaDisambiguator.disambiguate_term
- dbd context metasenv aliases term
+ MatitaDisambiguator.disambiguate_term ~dbd ~context ~metasenv
+ ~aliases:status.aliases ~universe:(Some status.multi_aliases) term
in
let _, metasenv , term, ugraph =
match interps with
if Pcre.pmatch ~rex:only_dust_RE unparsed_text then raise Margin;
let st =
try
- GrafiteParser.parse_statement (Stream.of_string unparsed_text)
+ GrafiteParser.parse_statement (Ulexing.from_utf8_string unparsed_text)
with
CicNotationParser.Parse_error (floc,err) as exc ->
let (x, y) = CicNotationPt.loc_of_floc floc in
| None,_ -> sprintf ".unnamed%d.ma" scriptId
initializer
- ignore(GMain.Timeout.add ~ms:300000
- ~callback:(fun _ -> self#_saveToBackuptFile ();true));
- ignore(buffer#connect#modified_changed
- (fun _ -> if buffer#modified then
- set_star self#ppFilename true
- else
- set_star self#ppFilename false))
+ ignore (GMain.Timeout.add ~ms:300000
+ ~callback:(fun _ -> self#_saveToBackupFile ();true));
+ ignore (buffer#connect#modified_changed
+ (fun _ -> set_star (Filename.basename self#ppFilename) buffer#modified))
val mutable statements = []; (** executed statements *)
val mutable history = [ init ];
List.iter (fun o -> o status) observers
method loadFromFile f =
- buffer#set_text (MatitaMisc.input_file f);
- self#goto_top;
+ buffer#set_text (HExtlib.input_file f);
+ self#reset_buffer;
buffer#set_modified false
method assignFileName file =
close_out oc;
buffer#set_modified false
- method private _saveToBackuptFile () =
+ method private _saveToBackupFile () =
if buffer#modified then
begin
let f = self#ppFilename ^ "~" in
end
method private goto_top =
- MatitaSync.time_travel ~present:self#status ~past:init;
+ MatitaSync.time_travel ~present:self#status ~past:init
+
+ method private reset_buffer =
statements <- [];
history <- [ init ];
userGoal <- ~-1;
+ self#notify;
buffer#remove_tag locked_tag ~start:buffer#start_iter ~stop:buffer#end_iter;
buffer#move_mark (`MARK locked_mark) ~where:buffer#start_iter
method reset () =
- self#goto_top;
+ self#reset_buffer;
source_buffer#begin_not_undoable_action ();
buffer#delete ~start:buffer#start_iter ~stop:buffer#end_iter;
source_buffer#end_not_undoable_action ();
- self#notify;
buffer#set_modified false
-
+
method template () =
- let template = MatitaMisc.input_file BuildTimeConf.script_template in
+ let template = HExtlib.input_file BuildTimeConf.script_template in
buffer#insert ~iter:(buffer#get_iter `START) template;
guistuff.filenamedata <-
(None,MatitamakeLib.development_for_dir (Unix.getcwd ()));
buffer#set_modified false;
- set_star self#ppFilename false
+ set_star (Filename.basename self#ppFilename) false
method goto (pos: [`Top | `Bottom | `Cursor]) () =
let old_locked_mark =
let getoldpos _ = buffer#get_iter_at_mark old_locked_mark in
let dispose_old_locked_mark () = buffer#delete_mark old_locked_mark in
match pos with
- | `Top -> dispose_old_locked_mark (); self#goto_top; self#notify
+ | `Top ->
+ dispose_old_locked_mark ();
+ self#goto_top;
+ self#reset_buffer;
+ self#notify
| `Bottom ->
(try
let rec dowhile () =
let s = self#getFuture in
let rec is_there_and_executable s =
if Pcre.pmatch ~rex:only_dust_RE s then raise Margin;
- let st = GrafiteParser.parse_statement (Stream.of_string s) in
+ let st = GrafiteParser.parse_statement (Ulexing.from_utf8_string s) in
match st with
| GrafiteAst.Comment (loc,_)->
let parsed_text_length = snd (CicNotationPt.loc_of_floc loc) in