--- a/src/Pure/Isar/toplevel.ML Fri Mar 14 15:41:29 2014 +0100
+++ b/src/Pure/Isar/toplevel.ML Fri Mar 14 16:54:01 2014 +0100
@@ -590,11 +590,12 @@
(* post-transition hooks *)
local
- val hooks = Unsynchronized.ref ([]: (transition -> state -> state -> unit) list);
+ val hooks =
+ Synchronized.var "Toplevel.hooks" ([]: (transition -> state -> state -> unit) list);
in
-fun add_hook f = CRITICAL (fn () => Unsynchronized.change hooks (cons f));
-fun get_hooks () = ! hooks;
+fun add_hook hook = Synchronized.change hooks (cons hook);
+fun get_hooks () = Synchronized.value hooks;
end;