X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Fsoftware%2Fmatita%2FmatitaEngine.ml;h=5468c863a97f8ac1af856d9f17b7cde2aa850257;hb=cb25e0f32f7581e1a49d1d1c109108763dfb882c;hp=a5331764e6de5cf5f9586eb7064806c8d0f85aa0;hpb=9a9c5b863f68367119450ae7b806d454ba1265e3;p=helm.git diff --git a/helm/software/matita/matitaEngine.ml b/helm/software/matita/matitaEngine.ml index a5331764e..5468c863a 100644 --- a/helm/software/matita/matitaEngine.ml +++ b/helm/software/matita/matitaEngine.ml @@ -63,14 +63,34 @@ let eval_ast ?do_heavy_checks lexicon_status = let lexicon_status_ref = ref lexicon_status in let baseuri = GrafiteTypes.get_baseuri grafite_status in + let changed_lexicon = ref false in + let wrap f x = changed_lexicon := true; f x in + let grafite_status = + match grafite_status.GrafiteTypes.ng_status with + | GrafiteTypes.CommandMode _ -> + { grafite_status with GrafiteTypes.ng_status = + GrafiteTypes.CommandMode lexicon_status } + | GrafiteTypes.ProofMode s -> + { grafite_status with GrafiteTypes.ng_status = + GrafiteTypes.ProofMode + { s with NTacStatus.istatus = { s.NTacStatus.istatus with NTacStatus.lstatus = lexicon_status }}} + in let new_grafite_status,new_objs = GrafiteEngine.eval_ast - ~disambiguate_tactic:(disambiguate_tactic text prefix_len lexicon_status_ref) - ~disambiguate_command:(disambiguate_command lexicon_status_ref) - ~disambiguate_macro:(disambiguate_macro lexicon_status_ref) + ~disambiguate_tactic:(wrap (disambiguate_tactic text prefix_len lexicon_status_ref)) + ~disambiguate_command:(wrap (disambiguate_command lexicon_status_ref)) + ~disambiguate_macro:(wrap (disambiguate_macro lexicon_status_ref)) ?do_heavy_checks grafite_status (text,prefix_len,ast) in let new_lexicon_status = - LexiconSync.add_aliases_for_objs !lexicon_status_ref new_objs in + if !changed_lexicon then + !lexicon_status_ref + else + match new_grafite_status.GrafiteTypes.ng_status with + | GrafiteTypes.CommandMode l -> l + | GrafiteTypes.ProofMode s -> s.NTacStatus.istatus.NTacStatus.lstatus + in + let new_lexicon_status = + LexiconSync.add_aliases_for_objs new_lexicon_status new_objs in let new_aliases = LexiconSync.alias_diff ~from:lexicon_status new_lexicon_status in let _,intermediate_states =