]> git.eshelyaron.com Git - emacs.git/commitdiff
* mh-customize.el (mh-after-commands-processed-hook): New variable.
authorStephen Gildea <gildea@stop.mail-abuse.org>
Tue, 20 Dec 2005 03:44:32 +0000 (03:44 +0000)
committerStephen Gildea <gildea@stop.mail-abuse.org>
Tue, 20 Dec 2005 03:44:32 +0000 (03:44 +0000)
(mh-before-commands-processed-hook): Rename from mh-folder-updated-hook.
* mh-e.el (mh-process-commands): Rename mh-folder-updated-hook to
mh-before-commands-processed-hook, call new mh-after-commands-processed-hook.
(mh-folders-changed): New variable (for mh-after-commands-processed-hook).

lisp/mh-e/ChangeLog
lisp/mh-e/mh-customize.el
lisp/mh-e/mh-e.el

index db31bf55b099741bb7f4a7444d0e60c59daba788..dce4b1def32dc81172b121b46e40534ea24a47df 100644 (file)
@@ -1,3 +1,14 @@
+2005-12-19  Stephen Gildea
+
+       * mh-customize.el (mh-after-commands-processed-hook): New variable.
+       (mh-before-commands-processed-hook): mh-folder-updated-hook, renamed.
+
+       * mh-e.el (mh-process-commands): Rename mh-folder-updated-hook 
+       to mh-before-commands-processed-hook, call new
+       mh-after-commands-processed-hook.
+       (mh-folders-changed): New variable (for use in
+       mh-after-commands-processed-hook).
+
 2005-12-19  Bill Wohler  <wohler@newt.com>
 
        * mh-acros.el:
index 2fc8cb1f4386272c8ccdb6e6017f136c10a5a227..0e22e38a742a6ee41bb38527fa4f9c743461ddec 100644 (file)
@@ -2294,15 +2294,24 @@ on his mail usage."
   :group 'mh-hooks
   :group 'mh-folder)
 
-(defcustom mh-folder-updated-hook nil
-  "Invoked when the folder actions (such as moves and deletes) are performed.
+(defcustom mh-before-commands-processed-hook nil
+  "Invoked before the folder actions (such as moves and deletes) are performed.
 Variables that are useful in this hook include `mh-delete-list' and
-`mh-refile-list' which can be used to see which changes are being made to
+`mh-refile-list' which can be used to see which changes will be made to
 current folder, `mh-current-folder'."
   :type 'hook
   :group 'mh-hooks
   :group 'mh-folder)
 
+(defcustom mh-after-commands-processed-hook nil
+  "Invoked after the folder actions (such as moves and deletes) are performed.
+Variables that are useful in this hook include `mh-folders-changed',
+which lists which folders were affected by deletes and refiles.  This
+list will always include the current folder, which is also available
+in `mh-current-folder'."
+  :type 'hook
+  :group 'mh-hooks)
+
 (defcustom mh-forward-hook nil
   "Invoked on the forwarded letter by \\<mh-folder-mode-map>\\[mh-forward]."
   :type 'hook
index 6d179cd5e1b093ceeeffec94631e3fe86843f9e6..0c8c3346ecba1bbbee9060ff4480bd22968f34ee 100644 (file)
@@ -460,6 +460,8 @@ is done highlighting.")
 
 (defvar mh-refile-list nil)             ;List of folder names in mh-seq-list.
 
+(defvar mh-folders-changed nil)         ;For mh-after-commands-processed-hook.
+
 (defvar mh-next-direction 'forward)     ;Direction to move to next message.
 
 (defvar mh-view-ops ())                 ;Stack of ops that change the folder
@@ -2149,13 +2151,15 @@ Called by functions like `mh-sort-folder', so also invalidate show buffer."
 
 (defun mh-process-commands (folder)
   "Process outstanding commands for FOLDER.
-The value of `mh-folder-updated-hook' is a list of functions to be called,
-with no arguments, before the commands are processed."
+The value of `mh-before-commands-processed-hook' is a list of functions
+to be called, with no arguments, before the commands are processed.
+After all cammands are processed, the functions in
+`mh-after-commands-processed-hook' are called with no arguments."
   (message "Processing deletes and refiles for %s..." folder)
   (set-buffer folder)
   (with-mh-folder-updating (nil)
-    ;; Run the hook while the lists are still valid
-    (run-hooks 'mh-folder-updated-hook)
+    ;; Run the before hook -- the refile and delete lists are still valid
+    (run-hooks 'mh-before-commands-processed-hook)
 
     ;; Update the unseen sequence if it exists
     (mh-update-unseen)
@@ -2222,17 +2226,23 @@ with no arguments, before the commands are processed."
         (when (mh-speed-flists-active-p)
           (apply #'mh-speed-flists t folders-changed))
         (cond ((memq 'unthread mh-view-ops) (mh-thread-inc folder (point-max)))
-              (mh-index-data (mh-index-insert-folder-headers)))))
+              (mh-index-data (mh-index-insert-folder-headers))))
 
-    (and (buffer-file-name (get-buffer mh-show-buffer))
-         (not (file-exists-p (buffer-file-name (get-buffer mh-show-buffer))))
-         ;; If "inc" were to put a new msg in this file,
-         ;; we would not notice, so mark it invalid now.
-         (mh-invalidate-show-buffer))
+      (and (buffer-file-name (get-buffer mh-show-buffer))
+           (not (file-exists-p (buffer-file-name (get-buffer mh-show-buffer))))
+           ;; If "inc" were to put a new msg in this file,
+           ;; we would not notice, so mark it invalid now.
+           (mh-invalidate-show-buffer))
+
+      (setq mh-seq-list (mh-read-folder-sequences mh-current-folder nil))
+      (mh-remove-all-notation)
+      (mh-notate-user-sequences)
+
+      ;; Run the after hook -- now folders-changed is valid, 
+      ;; but not the lists of specific messages.
+      (let ((mh-folders-changed folders-changed))
+        (run-hooks 'mh-after-commands-processed-hook)))
 
-    (setq mh-seq-list (mh-read-folder-sequences mh-current-folder nil))
-    (mh-remove-all-notation)
-    (mh-notate-user-sequences)
     (message "Processing deletes and refiles for %s...done" folder)))
 
 (defun mh-update-unseen ()