diff --git a/src/kernel_internals/runtime/messages.ml b/src/kernel_internals/runtime/messages.ml index 6d90a9203212afb0390f9e6f327b391e0ed4f1f2..1cc0e9342ec79e685be6bae9d672e7b77b79524e 100644 --- a/src/kernel_internals/runtime/messages.ml +++ b/src/kernel_internals/runtime/messages.ml @@ -48,7 +48,12 @@ module Messages = end) let () = Ast.add_monotonic_state Messages.self -let add_message m = Messages.set (m :: Messages.get ()) +let demons = ref [] +let add_message m = + begin + Messages.set (m :: Messages.get ()) ; + List.iter (fun fn -> fn()) !demons ; + end let nb_errors () = Messages.fold_left @@ -95,7 +100,7 @@ let () = Log.check_not_yet := check_not_yet let reset_once_flag () = OnceTable.clear () -let add_update_hook fn = Messages.add_hook_on_update (fun _ -> fn ()) +let add_global_hook fn = demons := !demons @ [fn] (* Local Variables: diff --git a/src/kernel_internals/runtime/messages.mli b/src/kernel_internals/runtime/messages.mli index 8843af988fa09db443349a8acf1268d69a20152c..11f26cc5bf12d49304fa30a01e87d592f44d3c21 100644 --- a/src/kernel_internals/runtime/messages.mli +++ b/src/kernel_internals/runtime/messages.mli @@ -44,8 +44,8 @@ val nb_messages: unit -> int (** Number of stored warning messages, error messages, or all messages.*) -val add_update_hook: (unit -> unit) -> unit -(** Register a hook on message addition *) +val add_global_hook: (unit -> unit) -> unit +(** Register a global hook (not projectified) on message addition. *) (* Local Variables: diff --git a/src/plugins/gui/design.ml b/src/plugins/gui/design.ml index 786c738ee9e95d19e9b0e9c283091515c1c75084..03048c9f2ac6615d73ab14862524f039a2609021 100644 --- a/src/plugins/gui/design.ml +++ b/src/plugins/gui/design.ml @@ -1718,12 +1718,12 @@ class main_window () : main_window_extension_points = GtkMisc.Label.set_text label text in register_reset_extension (fun _ -> display_warnings ()); - Messages.add_update_hook (fun () -> - if not !outdated_warnings then - begin - outdated_warnings := true ; - Wutil.later display_warnings - end + Messages.add_global_hook (fun () -> + if not !outdated_warnings then + begin + outdated_warnings := true ; + Wutil.later display_warnings + end ); Messages.reset_once_flag (); display_warnings ();