]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/gTopLevel/termEditor.ml
(temporary, waiting for abstraction over disambiguators) ported to Andrea &
[helm.git] / helm / gTopLevel / termEditor.ml
index d4f040a9ad1a95c414e9a73707fd1df813da238a..f034c45b15b9bc9b48ed23176a6cda65a9e18375 100644 (file)
 (*                                                                            *)
 (******************************************************************************)
 
+open Printf
+
+open Disambiguate_types
+
 (* A WIDGET TO ENTER CIC TERMS *)
 
 class type term_editor =
@@ -46,19 +50,18 @@ 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 id_to_uris : environment ref
  end
-;;
 
-let empty_id_to_uris = ([],function _ -> None);;
+let empty_id_to_uris = Environment.empty
 
-module Make(C:Disambiguate.Callbacks) =
+module Make(C: Callbacks) =
   struct
 
    module Disambiguate' = Disambiguate.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_id_to_uris_with () : term_editor
    =
     let id_to_uris =
      match share_id_to_uris_with with
@@ -74,17 +77,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 +100,20 @@ 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
+        let term =
+          Parser.parse_term (Stream.of_string (input#buffer#get_text ()))
+        in
+        let id_to_uris',metasenv,expr =
+          Disambiguate'.disambiguate_term mqi_handle context metasenv term
+            ~aliases:!id_to_uris
+        in
+        id_to_uris := id_to_uris';
+        (metasenv, expr)
+
       method id_to_uris = id_to_uris
    end
 
    let term_editor = new term_editor_impl
 
 end
-;;
+