]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/gTopLevel/termEditor.ml
first moogle template checkin
[helm.git] / helm / gTopLevel / termEditor.ml
index d4f040a9ad1a95c414e9a73707fd1df813da238a..3a74ef05111ce88f2948052896e5ce47a9fc598e 100644 (file)
@@ -33,6 +33,8 @@
 (*                                                                            *)
 (******************************************************************************)
 
+open Printf
+
 (* A WIDGET TO ENTER CIC TERMS *)
 
 class type term_editor =
@@ -46,24 +48,23 @@ class type term_editor =
    method reset : unit
    (* The input of set_term is unquoted *)
    method set_term : string -> unit
-   method id_to_uris : Disambiguate.domain_and_interpretation ref
+   method environment : DisambiguatingParser.EnvironmentP3.t ref
  end
-;;
-
-let empty_id_to_uris = ([],function _ -> None);;
 
-module Make(C:Disambiguate.Callbacks) =
+module Make(C:DisambiguateTypes.Callbacks) =
   struct
 
-   module Disambiguate' = Disambiguate.Make(C);;
+   module Disambiguate' = DisambiguatingParser.Make(C);;
 
-   class term_editor_impl mqi_handle ?packing ?width ?height ?isnotempty_callback
-    ?share_id_to_uris_with () : term_editor
+   class term_editor_impl mqi_handle ?packing ?width ?height
+    ?isnotempty_callback ?share_environment_with () : term_editor
    =
-    let id_to_uris =
-     match share_id_to_uris_with with
-        None -> ref empty_id_to_uris
-      | Some obj -> obj#id_to_uris
+    let environment =
+     match share_environment_with with
+        None -> ref
+          (DisambiguatingParser.EnvironmentP3.of_string
+            DisambiguatingParser.EnvironmentP3.empty)
+      | Some obj -> obj#environment
     in
     let input = GText.view ~editable:true ?width ?height ?packing () in
     let _ =
@@ -74,17 +75,21 @@ module Make(C:Disambiguate.Callbacks) =
           (function () -> callback (input#buffer#char_count > 0)))
     in
      object(self)
+
       method coerce = input#coerce
+
       method reset =
        input#buffer#delete input#buffer#start_iter input#buffer#end_iter
       (* CSC: txt is now a string, but should be of type Cic.term *)
+
       method set_term txt =
        self#reset ;
        ignore (input#buffer#insert txt)
+
       (* CSC: this method should disappear *)
       (* get_as_string returns the unquoted string *)
-      method get_as_string =
-       input#buffer#get_text ()
+      method get_as_string = input#buffer#get_text ()
+
       method get_metasenv_and_term ~context ~metasenv =
        let name_context =
         List.map
@@ -93,21 +98,21 @@ module Make(C:Disambiguate.Callbacks) =
            | None -> None
          ) context
        in
-        let lexbuf = Lexing.from_string (input#buffer#get_text ()) in
-         let dom,mk_metasenv_and_expr =
-          CicTextualParserContext.main
-           ~context:name_context ~metasenv CicTextualLexer.token lexbuf
-         in
-          let id_to_uris',metasenv,expr =
-           Disambiguate'.disambiguate_input mqi_handle
-            context metasenv dom mk_metasenv_and_expr ~id_to_uris:!id_to_uris
-          in
-           id_to_uris := id_to_uris' ;
-           metasenv,expr
-      method id_to_uris = id_to_uris
+        let environment',metasenv,expr =
+         match
+          Disambiguate'.disambiguate_term mqi_handle context metasenv
+           (input#buffer#get_text ()) !environment
+         with
+            [environment',metasenv,expr] -> environment',metasenv,expr
+          | _ -> assert false
+        in
+        environment := environment';
+        (metasenv, expr)
+
+      method environment = environment
    end
 
    let term_editor = new term_editor_impl
 
 end
-;;
+