allow redefining pretty/markup modes (not output due to bootstrap issues) -- to support reloading of theory src/HOL/src/Tools/Code_Generator;
authorwenzelm
Tue, 13 Mar 2012 11:21:26 +0100
changeset 46894 e2ad717ec889
parent 46893 d5bb4c212df1
child 46895 de5cfda8b2de
allow redefining pretty/markup modes (not output due to bootstrap issues) -- to support reloading of theory src/HOL/src/Tools/Code_Generator;
src/Pure/General/pretty.ML
src/Pure/PIDE/markup.ML
--- a/src/Pure/General/pretty.ML	Mon Mar 12 23:33:50 2012 +0100
+++ b/src/Pure/General/pretty.ML	Tue Mar 13 11:21:26 2012 +0100
@@ -78,7 +78,10 @@
   val modes = Synchronized.var "Pretty.modes" (Symtab.make [("", default)]);
 in
   fun add_mode name indent =
-    Synchronized.change modes (Symtab.update_new (name, {indent = indent}));
+    Synchronized.change modes (fn tab =>
+      (if not (Symtab.defined tab name) then ()
+       else warning ("Redefining pretty mode " ^ quote name);
+       Symtab.update (name, {indent = indent}) tab));
   fun get_mode () =
     the_default default
       (Library.get_first (Symtab.lookup (Synchronized.value modes)) (print_mode_value ()));
--- a/src/Pure/PIDE/markup.ML	Mon Mar 12 23:33:50 2012 +0100
+++ b/src/Pure/PIDE/markup.ML	Tue Mar 13 11:21:26 2012 +0100
@@ -74,7 +74,10 @@
   val modes = Synchronized.var "Markup.modes" (Symtab.make [("", default)]);
 in
   fun add_mode name output =
-    Synchronized.change modes (Symtab.update_new (name, {output = output}));
+    Synchronized.change modes (fn tab =>
+      (if not (Symtab.defined tab name) then ()
+       else warning ("Redefining markup mode " ^ quote name);
+       Symtab.update (name, {output = output}) tab));
   fun get_mode () =
     the_default default
       (Library.get_first (Symtab.lookup (Synchronized.value modes)) (print_mode_value ()));