]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/gTopLevel/hbugs.ml
ocaml 3.09 transition
[helm.git] / helm / gTopLevel / hbugs.ml
index 19722a1d27c0446a2ac5a5313a5285401bb01ecf..c8947c54db73f2ff08d84bfdf492b5c42b82fc7d 100644 (file)
@@ -31,98 +31,105 @@ open Printf;;
 
 let debug_print = 
   let debug = true in
-  fun s -> prerr_endline (sprintf "DEBUG: %s" s)
+  fun s -> prerr_endline (sprintf "HBUGS DEBUG: %s" s)
 ;;
 
 exception NoProofInProgress;;
 
 let hbugs_client = ref None
 let use_hint_callback = ref ignore
+let describe_hint_callback = ref ignore
+
+let set_describe_hint_callback c = describe_hint_callback := c
 
 let quit () =
-       match !hbugs_client with
-       | Some c -> c#unregisterFromBroker ()
-       | None -> ()
+  match !hbugs_client with
+  | Some c -> c#unregisterFromBroker ()
+  | None -> ()
 
 let hbugs_enabled = ref false
 
 let get_hbugs_client () =
-       match !hbugs_client with
-       | Some c -> c
-       | None -> assert false
+  match !hbugs_client with
+  | Some c -> c
+  | None -> assert false
 
 let disable () =
-       match !hbugs_client with None -> () | Some c -> c#hide ()
+  match !hbugs_client with None -> () | Some c -> c#hide ()
 
 let notify () =
-       try
-               if !hbugs_enabled then begin
-                       let client = get_hbugs_client () in
-                       let goal =
-                               match !ProofEngine.goal with
-                               | Some g -> g
-                               | None -> raise NoProofInProgress
-                       in
-                       let (type_string, body_string) =
-                               let (type_xml, body_xml) = ProofEngine.get_current_status_as_xml () in
-                               (Xml.pp_to_string type_xml, Xml.pp_to_string body_xml)
-                       in
-                       let new_state =
-                               (Misc.strip_xml_headings type_string,
-                                Misc.strip_xml_headings body_string,
-                                goal)
-                       in
-                       client#stateChange (Some new_state)
-               end
-       with NoProofInProgress -> ()
+  try
+    if !hbugs_enabled then begin
+      let client = get_hbugs_client () in
+      let goal =
+        match !ProofEngine.goal with
+        | Some g -> g
+        | None -> raise NoProofInProgress
+      in
+      let (type_string, body_string) =
+        let (type_xml, body_xml) = ProofEngine.get_current_status_as_xml () in
+        (Xml.pp_to_string type_xml, Xml.pp_to_string body_xml)
+      in
+      let new_state =
+        (Misc.strip_xml_headings type_string,
+         Misc.strip_xml_headings body_string,
+         goal)
+      in
+      client#stateChange (Some new_state)
+    end
+  with NoProofInProgress -> ()
 
 let clear () =
  if !hbugs_enabled then
   begin
-        let client = get_hbugs_client () in
-         client#stateChange None
+   let client = get_hbugs_client () in
+    client#stateChange None
   end
 
 let rec enable () =
-       (match !hbugs_client with
-       | None -> (* create an hbugs client and show its window *)
-                       hbugs_client :=
-                               (try
-                                       Some (new Hbugs_client.hbugsClient
-            ~use_hint_callback:!use_hint_callback ())
-                               with e ->
-                                       prerr_endline (sprintf "Can't start HBugs client: %s"
-                                               (Printexc.to_string e));
-                                       None);
-                       (match !hbugs_client with
-                       |Some client ->
-                                       client#show ();
-                                       client#subscribeAll ()
-                       | None -> ())
-       | Some c -> (* show hbugs client window *)
-                       c#show ())
+  (match !hbugs_client with
+  | None -> (* create an hbugs client and show its window *)
+      hbugs_client :=
+        (try
+          Some (new Hbugs_client.hbugsClient
+            ~use_hint_callback:!use_hint_callback
+            ~describe_hint_callback:!describe_hint_callback
+              ())
+        with e ->
+          prerr_endline (sprintf "Can't start HBugs client: %s"
+            (Printexc.to_string e));
+          None);
+      (match !hbugs_client with
+      |Some client ->
+          client#show ();
+          client#subscribeAll ()
+      | None -> ())
+  | Some c -> (* show hbugs client window *)
+      c#show ())
 
 let toggle state =
-       if state <> !hbugs_enabled then (* status has been changed *)
-               (if state then enable () else disable ());
-       hbugs_enabled := state
+  if state <> !hbugs_enabled then begin (* status has been changed *)
+    if state then enable () else disable ();
+    clear ()
+  end;
+  hbugs_enabled := state
 
 module type Unit = sig end
 
 module Initialize (Tactics: InvokeTactics.Tactics) : Unit =
   struct
     let use_hint = function
-      | Use_ring_Luke -> Tactics.ring ()
-      | Use_fourier_Luke -> Tactics.fourier ()
-      | Use_reflexivity_Luke -> Tactics.reflexivity ()
-      | Use_symmetry_Luke -> Tactics.symmetry ()
-      | Use_assumption_Luke -> Tactics.assumption ()
-      | Use_contradiction_Luke -> Tactics.contradiction ()
-      | Use_exists_Luke -> Tactics.exists ()
-      | Use_split_Luke -> Tactics.split ()
-      | Use_left_Luke -> Tactics.left ()
-      | Use_right_Luke -> Tactics.right ()
-      | Use_apply_Luke term ->
+      | Use_ring -> Tactics.ring ()
+      | Use_fourier -> Tactics.fourier ()
+      | Use_reflexivity -> Tactics.reflexivity ()
+      | Use_symmetry -> Tactics.symmetry ()
+      | Use_assumption -> Tactics.assumption ()
+      | Use_contradiction -> Tactics.contradiction ()
+      | Use_exists -> Tactics.exists ()
+      | Use_split -> Tactics.split ()
+      | Use_left -> Tactics.left ()
+      | Use_right -> Tactics.right ()
+      | Use_apply term ->
          (* we remove the "cic:" prefix *)
          let term' = String.sub term 4 (String.length term - 4) in
           Tactics.apply ~term:term' ()