From: Stephen Gildea Date: Tue, 20 Dec 2005 03:44:32 +0000 (+0000) Subject: * mh-customize.el (mh-after-commands-processed-hook): New variable. X-Git-Tag: emacs-pretest-22.0.90~5175 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2953de8c3f52cdc9f2396c32056621f0322c0bb6;p=emacs.git * 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 --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index db31bf55b09..dce4b1def32 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog @@ -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 --git a/lisp/mh-e/mh-customize.el b/lisp/mh-e/mh-customize.el index 2fc8cb1f438..0e22e38a742 100644 --- a/lisp/mh-e/mh-customize.el +++ b/lisp/mh-e/mh-customize.el @@ -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-forward]." :type 'hook diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el index 6d179cd5e1b..0c8c3346ecb 100644 --- a/lisp/mh-e/mh-e.el +++ b/lisp/mh-e/mh-e.el @@ -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 ()