emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r104040: Add delayed warnings support


From: Juanma Barranquero
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r104040: Add delayed warnings support.
Date: Thu, 28 Apr 2011 21:35:20 +0200
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 104040
committer: Juanma Barranquero <address@hidden>
branch nick: trunk
timestamp: Thu 2011-04-28 21:35:20 +0200
message:
  Add delayed warnings support.
  
  * etc/NEWS: Document `delayed-warnings-list' and `delayed-warnings-hook'.
  
  * lisp/subr.el (display-delayed-warnings): New function.
    (delayed-warnings-hook): New variable.
  
  * src/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.
modified:
  etc/ChangeLog
  etc/NEWS
  lisp/ChangeLog
  lisp/subr.el
  src/ChangeLog
  src/keyboard.c
=== modified file 'etc/ChangeLog'
--- a/etc/ChangeLog     2011-04-26 14:07:29 +0000
+++ b/etc/ChangeLog     2011-04-28 19:35:20 +0000
@@ -1,3 +1,7 @@
+2011-04-28  Juanma Barranquero  <address@hidden>
+
+       * NEWS: Document `delayed-warnings-list' and `delayed-warnings-hook'.
+
 2011-04-26  Daniel Colascione  <address@hidden>
 
        * DEBUG: Document debug-on-event default behavior and utility for

=== modified file 'etc/NEWS'
--- a/etc/NEWS  2011-04-28 19:07:08 +0000
+++ b/etc/NEWS  2011-04-28 19:35:20 +0000
@@ -909,6 +909,9 @@
 ** New variable `revert-buffer-in-progress-p' is true while a buffer is
 being reverted, even if the buffer has a local `revert-buffer-function'.
 
+** New variables `delayed-warnings-list' and `delayed-warnings-hook' allow
+deferring warnings until the main command loop is executed.
+
 
 * Changes in Emacs 24.1 on non-free operating systems
 

=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2011-04-28 00:18:12 +0000
+++ b/lisp/ChangeLog    2011-04-28 19:35:20 +0000
@@ -1,3 +1,8 @@
+2011-04-28  Juanma Barranquero  <address@hidden>
+
+       * subr.el (display-delayed-warnings): New function.
+       (delayed-warnings-hook): New variable.
+
 2011-04-28  Stefan Monnier  <address@hidden>
 
        * pcomplete.el (pcomplete-completions-at-point):

=== modified file 'lisp/subr.el'
--- a/lisp/subr.el      2011-04-27 07:56:55 +0000
+++ b/lisp/subr.el      2011-04-28 19:35:20 +0000
@@ -1772,6 +1772,19 @@
 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.")
+
 
 ;;;; Process stuff.
 
@@ -2522,7 +2535,7 @@
       (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

=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2011-04-28 11:46:40 +0000
+++ b/src/ChangeLog     2011-04-28 19:35:20 +0000
@@ -1,3 +1,11 @@
+2011-04-28  Juanma Barranquero  <address@hidden>
+
+       * 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  <address@hidden>
 
        * doprnt.c (doprnt): Don't return value smaller than the buffer

=== modified file 'src/keyboard.c'
--- a/src/keyboard.c    2011-04-26 18:02:10 +0000
+++ b/src/keyboard.c    2011-04-28 19:35:20 +0000
@@ -267,6 +267,8 @@
 
 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;
 
@@ -1356,6 +1358,10 @@
       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);
     }
@@ -1573,6 +1579,10 @@
       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,
@@ -11498,6 +11508,7 @@
   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");
@@ -12069,6 +12080,14 @@
 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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]