]> matita.cs.unibo.it Git - helm.git/commitdiff
option to collapse all tex macros implemented
authorEnrico Tassi <enrico.tassi@inria.fr>
Tue, 9 Dec 2008 08:57:39 +0000 (08:57 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Tue, 9 Dec 2008 08:57:39 +0000 (08:57 +0000)
helm/software/matita/matita.ml
helm/software/matita/matitaScript.ml
helm/software/matita/matitaScript.mli

index f8cc4efb44f6806115cf95c4a278b69b1420e666..9fa70e11f8b56d65d778542b3e1c84cd06c91f4c 100644 (file)
@@ -280,8 +280,9 @@ let _ =
         ~doc:(HExtlib.unopt (mview ())#get_document) ~name:"matita.xml" ())); *)
     addDebugItem "load (sequent) MathML from matita.xml"
       (fun _ -> (mview ())#load_uri ~filename:"matita.xml");
-    addDebugItem "autoWin"
-    (fun _ -> MatitaAutoGui.auto_dialog Auto.get_auto_status);
+    addDebugSeparator ();
+    addDebugItem "Expand virtuals"
+    (fun _ -> (MatitaScript.current ())#expandAllVirtuals);
   end
   (** Debugging }}} *)
 
index 7bcbea2947b95b23a67d055e37f2a8667c8819ed..7768e2287f27d5626262c3b6a7f583d2a272e3dc 100644 (file)
@@ -851,36 +851,40 @@ object (self)
     let lock = buffer#get_iter_at_mark (`MARK locked_mark) in
     let text = buffer#get_text ~start:lock ~stop:buffer#end_iter () in
     text
-(* THIS SNIPPET AUTOMATICALLY EXPANDS EVERY \TeX MACRO
-    if Pcre.pmatch ~pat:"\\\\[a-zA-Z]+" text then
-      begin
-        buffer#delete ~start:lock ~stop:buffer#end_iter;
-        let text = 
-          Pcre.substitute_substrings 
-            ~subst:(fun str -> 
-               let pristine = Pcre.get_substring str 0 in
-               let input = 
-                 if pristine.[0] = ' ' then
-                   String.sub pristine 1 (String.length pristine -1) 
-                 else pristine 
-               in
-               let input = 
-                 if input.[String.length input-1] = ' ' then
-                   String.sub input 0 (String.length input -1) 
-                 else input
-               in
-               try 
-                 Glib.Utf8.from_unichar (snd (Virtuals.symbol_of_virtual input))
-               with Virtuals.Not_a_virtual -> pristine) 
-            ~pat:" ?\\\\[a-zA-Z]+ ?" text
-        in
-        buffer#insert ~iter:lock text;
-        text
-      end
-    else
-      text
-*)
 
+  method expandAllVirtuals =
+    let lock = buffer#get_iter_at_mark (`MARK locked_mark) in
+    let text = buffer#get_text ~start:lock ~stop:buffer#end_iter () in
+    buffer#delete ~start:lock ~stop:buffer#end_iter;
+    let text = Pcre.replace ~pat:":=" ~templ:"\\def" text in
+    let text = Pcre.replace ~pat:"->" ~templ:"\\to" text in
+    let text = Pcre.replace ~pat:"=>" ~templ:"\\Rightarrow" text in
+    let text = 
+      Pcre.substitute_substrings 
+        ~subst:(fun str -> 
+           let pristine = Pcre.get_substring str 0 in
+           let input = 
+             if pristine.[0] = ' ' then
+               String.sub pristine 1 (String.length pristine -1) 
+             else pristine 
+           in
+           let input = 
+             if input.[String.length input-1] = ' ' then
+               String.sub input 0 (String.length input -1) 
+             else input
+           in
+           let before, after =  
+             if input = "\\forall" || 
+                input = "\\lambda" || 
+                input = "\\exists" then "","" else " ", " " 
+           in
+           try 
+             before ^ Glib.Utf8.from_unichar 
+               (snd (Virtuals.symbol_of_virtual input)) ^ after
+           with Virtuals.Not_a_virtual -> pristine) 
+        ~pat:" ?\\\\[a-zA-Z]+ ?" text
+    in
+    buffer#insert ~iter:lock text
       
   (** @param rel_offset relative offset from current position of locked_mark *)
   method private moveMark rel_offset =
index 3d9e8fba78c1b463f5812a381b11bcbdd87fc559..304818f7bc8cf4500d9ec6acee7fcfcc99641331 100644 (file)
@@ -85,6 +85,7 @@ object
   
   (* debug *)
   method dump : unit -> unit
+  method expandAllVirtuals : unit 
 
 end