# HG changeset patch # User Stephen Gildea # Date 1135050272 0 # Node ID 98eba52a8481782928ba358d6a1568afd9fa28b0 # Parent 7561789df348a15310d7b5f985cd9c736f86ede4 * mh-customize.el (mh-after-commands-processed-hook): New variable. (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). diff -r 7561789df348 -r 98eba52a8481 lisp/mh-e/ChangeLog --- a/lisp/mh-e/ChangeLog Tue Dec 20 03:19:50 2005 +0000 +++ b/lisp/mh-e/ChangeLog Tue Dec 20 03:44:32 2005 +0000 @@ -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 * mh-acros.el: diff -r 7561789df348 -r 98eba52a8481 lisp/mh-e/mh-customize.el --- a/lisp/mh-e/mh-customize.el Tue Dec 20 03:19:50 2005 +0000 +++ b/lisp/mh-e/mh-customize.el Tue Dec 20 03:44:32 2005 +0000 @@ -2294,15 +2294,24 @@ :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-forward]." :type 'hook diff -r 7561789df348 -r 98eba52a8481 lisp/mh-e/mh-e.el --- a/lisp/mh-e/mh-e.el Tue Dec 20 03:19:50 2005 +0000 +++ b/lisp/mh-e/mh-e.el Tue Dec 20 03:44:32 2005 +0000 @@ -460,6 +460,8 @@ (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 @@ (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 @@ (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) - (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))) + (message "Processing deletes and refiles for %s...done" folder))) (defun mh-update-unseen ()