src/Pure/PIDE/resources.ML
changeset 65457 2bf0d2fcd506
parent 65454 2b22b7d8649f
child 65471 05e5bffcf1d8
--- a/src/Pure/PIDE/resources.ML	Mon Apr 10 13:30:55 2017 +0200
+++ b/src/Pure/PIDE/resources.ML	Mon Apr 10 16:43:12 2017 +0200
@@ -8,12 +8,12 @@
 sig
   val set_session_base:
     {default_qualifier: string,
-     global_theories: string list,
+     global_theories: (string * string) list,
      loaded_theories: (string * string) list,
      known_theories: (string * string) list} -> unit
   val reset_session_base: unit -> unit
   val default_qualifier: unit -> string
-  val global_theory: string -> bool
+  val global_theory: string -> string option
   val loaded_theory: string -> Path.T option
   val known_theory: string -> Path.T option
   val master_directory: theory -> Path.T
@@ -42,7 +42,7 @@
 
 val init_session_base =
   {default_qualifier = "Draft",
-   global_theories = Symtab.make_set [],
+   global_theories = Symtab.empty: string Symtab.table,
    loaded_theories = Symtab.empty: Path.T Symtab.table,
    known_theories = Symtab.empty: Path.T Symtab.table};
 
@@ -55,7 +55,7 @@
       {default_qualifier =
         if default_qualifier <> "" then default_qualifier
         else #default_qualifier init_session_base,
-       global_theories = Symtab.make_set global_theories,
+       global_theories = Symtab.make global_theories,
        loaded_theories = Symtab.make (map (apsnd Path.explode) loaded_theories),
        known_theories = Symtab.make (map (apsnd Path.explode) known_theories)});
 
@@ -65,7 +65,7 @@
 fun get_session_base f = f (Synchronized.value global_session_base);
 
 fun default_qualifier () = get_session_base #default_qualifier;
-fun global_theory a = Symtab.defined (get_session_base #global_theories) a;
+fun global_theory a = Symtab.lookup (get_session_base #global_theories) a;
 fun loaded_theory a = Symtab.lookup (get_session_base #loaded_theories) a;
 fun known_theory a = Symtab.lookup (get_session_base #known_theories) a;
 
@@ -104,13 +104,15 @@
 val thy_path = Path.ext "thy";
 
 fun theory_qualifier theory =
-  Long_Name.qualifier theory;
+  (case global_theory theory of
+    SOME qualifier => qualifier
+  | NONE => Long_Name.qualifier theory);
 
 fun import_name qualifier dir s =
   let
     val theory0 = Thy_Header.import_name s;
     val theory =
-      if Long_Name.is_qualified theory0 orelse global_theory theory0
+      if Long_Name.is_qualified theory0 orelse is_some (global_theory theory0)
         orelse true (* FIXME *) then theory0
       else Long_Name.qualify qualifier theory0;
     val node_name =