- DTE.add k value acc
- ) new_aliases DTE.empty
- in
- let new_text =
- if DisambiguateTypes.Environment.is_empty new_aliases then
- parsed_text
- else
- prepend_text (CicTextualParser2.EnvironmentP3.to_string new_aliases)
- parsed_text
- in
- let new_text =
- if !goal_changed then
- prepend_text
- (TAPp.pp_tactic (TA.Goal (loc, user_goal))(* ^ "\n"*))
- new_text
- else
- new_text
- in
- [ new_status, new_text ], parsed_text_length
-
-let disambiguate term status =
- let module MD = MatitaDisambiguator in
- 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
+ eval_with_engine guistuff lexicon_status grafite_status user_goal
+ parsed_text st
+ in
+ let do_nothing () = [], 0 in
+ let handle_with_devel d =
+ let name = MatitamakeLib.name_for_development d in
+ let title = "Unable to include " ^ what in
+ let message =
+ what ^ " is handled by development <b>" ^ name ^ "</b>.\n\n" ^
+ "<i>Should I compile it and Its dependencies?</i>"
+ in
+ (match guistuff.ask_confirmation ~title ~message with
+ | `YES -> compile_needed_and_go_on d
+ | `NO -> raise exc
+ | `CANCEL -> do_nothing ())
+ in
+ let handle_without_devel filename =
+ let title = "Unable to include " ^ what in
+ let message =
+ what ^ " is <b>not</b> handled by a development.\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
+ | `YES ->
+ (match filename with
+ | Some f ->
+ guistuff.develcreator ~containing:(Some (Filename.dirname f))
+ | None -> guistuff.develcreator ~containing:None);
+ do_nothing ()
+ | `NO -> raise exc
+ | `CANCEL -> do_nothing())
+ in
+ match guistuff.filenamedata with
+ | None,None -> handle_without_devel None
+ | None,Some d -> handle_with_devel d
+ | Some f,_ ->
+ match MatitamakeLib.development_for_dir (Filename.dirname f) with
+ | None -> handle_without_devel (Some f)
+ | Some d -> handle_with_devel d
+;;
+
+let disambiguate_macro_term term lexicon_status grafite_status user_goal =
+ let module MD = GrafiteDisambiguator in
+ let dbd = LibraryDb.instance () in
+ let metasenv = GrafiteTypes.get_proof_metasenv grafite_status in
+ let context = GrafiteTypes.get_proof_context grafite_status user_goal in
+ let interps =
+ MD.disambiguate_term ~dbd ~context ~metasenv
+ ~aliases:lexicon_status.LexiconEngine.aliases
+ ~universe:(Some lexicon_status.LexiconEngine.multi_aliases) term in