FILE should be the name of a library, with no directory name."
(eval-after-load file (read)))
(make-obsolete 'eval-next-after-load `eval-after-load "23.2")
+
+(defun display-delayed-warnings ()
+ "Display delayed warnings from `delayed-warnings-list'.
+This is the default value of `delayed-warnings-hook'."
+ (dolist (warning (nreverse delayed-warnings-list))
+ (apply 'display-warning warning))
+ (setq delayed-warnings-list nil))
+
+(defvar delayed-warnings-hook '(display-delayed-warnings)
+ "Normal hook run to process delayed warnings.
+Functions in this hook should access the `delayed-warnings-list'
+variable (which see) and remove from it the warnings they process.")
+
\f
;;;; Process stuff.
(concat "\"" result (substring argument start) "\"")))
((and (eq system-type 'windows-nt) (w32-shell-dos-semantics))
-
+
;; First, quote argument so that CommandLineToArgvW will
;; understand it. See
;; http://msdn.microsoft.com/en-us/library/17w5ykft%28v=vs.85%29.aspx
+2011-04-28 Juanma Barranquero <lekktu@gmail.com>
+
+ * keyboard.c (Qdelayed_warnings_hook): Define.
+ (command_loop_1): Run `delayed-warnings-hook'
+ if Vdelayed_warnings_list is non-nil.
+ (syms_of_keyboard) <delayed-warnings-hook>: DEFSYM it.
+ (syms_of_keyboard) <delayed-warnings-list>: DEFVAR_LISP it.
+
2011-04-28 Eli Zaretskii <eliz@gnu.org>
* doprnt.c (doprnt): Don't return value smaller than the buffer
static Lisp_Object Qdeferred_action_function;
+static Lisp_Object Qdelayed_warnings_hook;
+
static Lisp_Object Qinput_method_exit_on_first_char;
static Lisp_Object Qinput_method_use_echo_area;
if (!NILP (echo_area_buffer[0]))
resize_echo_area_exactly ();
+ /* If there are warnings waiting, process them. */
+ if (!NILP (Vdelayed_warnings_list))
+ safe_run_hooks (Qdelayed_warnings_hook);
+
if (!NILP (Vdeferred_action_list))
safe_run_hooks (Qdeferred_action_function);
}
if (!NILP (echo_area_buffer[0]))
resize_echo_area_exactly ();
+ /* If there are warnings waiting, process them. */
+ if (!NILP (Vdelayed_warnings_list))
+ safe_run_hooks (Qdelayed_warnings_hook);
+
safe_run_hooks (Qdeferred_action_function);
/* If there is a prefix argument,
DEFSYM (Qpre_command_hook, "pre-command-hook");
DEFSYM (Qpost_command_hook, "post-command-hook");
DEFSYM (Qdeferred_action_function, "deferred-action-function");
+ DEFSYM (Qdelayed_warnings_hook, "delayed-warnings-hook");
DEFSYM (Qfunction_key, "function-key");
DEFSYM (Qmouse_click, "mouse-click");
DEFSYM (Qdrag_n_drop, "drag-n-drop");
whenever `deferred-action-list' is non-nil. */);
Vdeferred_action_function = Qnil;
+ DEFVAR_LISP ("delayed-warnings-list", Vdelayed_warnings_list,
+ doc: /* List of warnings to be displayed as soon as possible.
+Each element must be a list (TYPE MESSAGE [LEVEL [BUFFER-NAME]]),
+as per the args of `display-warning' (which see).
+If this variable is non-nil, `delayed-warnings-hook' will be run
+immediately after running `post-command-hook'. */);
+ Vdelayed_warnings_list = Qnil;
+
DEFVAR_LISP ("suggest-key-bindings", Vsuggest_key_bindings,
doc: /* *Non-nil means show the equivalent key-binding when M-x command has one.
The value can be a length of time to show the message for.