changeset 67246:bce5c0d2041c

* mh-comp.el (mh-letter-mode): Use mh-highlight-citation-style instead of mh-highlight-citation-p. (mh-letter-toggle-header-field-display): "Ellipsed" isn't a word, I think, so use "truncated". * mh-customize.el (mh-folder, mh-folder-faces): Group's manual section is Folders, not Organizing. Parent of mh-folder-faces is mh-folder, not mh-show. (mh-speed): Rename to mh-speedbar for consistency with mh-toolbar. (mh-thread): New group that corresponds with manual's Threading chapter. (mh-letter-faces): Group's manual section is Editing Drafts, not Sending Mail. (mh-sortm-args): New customization variable that used to be a defvar. (mh-index-new-messages-folders, mh-index-ticked-messages-folders): Move from mh-index group to mh-folders group. (mh-alias-local-users-prefix, mh-large-folder) (mh-recursive-folders-flag, mh-before-quit-hook) (mh-folder-mode-hook, mh-kill-folder-suppress-prompt-hook) (mh-quit-hook, mh-refile-msg-hook): Move from mh-show group to mh-folder group. (mh-highlight-citation-style): Rename from mh-highlight-citation-p. Sync docstrings with manual. (mh-mhl-format-file): Rename from mhl-formfile. Sync docstrings with manual. (mh-show-threads-flag): Move from mh-show group to mh-thread group. (mh-find-path-hook): Move from mh-show group to mh-e group. (mh-folder-updated-hook): Add to mh-folder group. (mh-forward-hook): Move from mh-folder to mh-sending-mail group. (mh-unseen-updated-hook): Move from mh-show to mh-sequences group. (mh-bury-show-buffer-flag, mh-clean-message-header-flag) (mh-decode-mime-flag, mh-display-buttons-for-alternatives-flag) (mh-display-buttons-for-inline-parts-flag) (mh-do-not-confirm-flag, mh-fetch-x-image-url) (mh-graphical-smileys-flag, mh-graphical-emphasis-flag) (mh-invisible-header-fields-default, mh-invisible-header-fields) (mh-lpr-command-format, mh-max-inline-image-height) (mh-max-inline-image-width) (mh-mime-save-parts-default-directory, mh-print-background-flag) (mh-show-maximum-size, mh-show-use-goto-addr-flag) (mh-show-use-xface-flag, mh-store-default-directory) (mh-summary-height, mh-delete-msg-hook (mh-show-hook, mh-show-mode-hook): Sync docstrings with manual. * mh-e.el (mh-scan-format-mh, mh-scan-good-msg-regexp) (mh-scan-deleted-msg-regexp, mh-scan-refiled-msg-regexp) (mh-scan-cur-msg-number-regexp, mh-scan-subject-regexp): Use non-fontification instead of non-fontifying. (mh-header-display): Use mh-mhl-format-file instead of mhl-formfile. Sync docstrings with manual. (mh-next-undeleted-msg, mh-previous-undeleted-msg): Rename arg to count. Sync docstrings with manual. (mh-refile-or-write-again): Use output from mh-write-msg-to-file so that message doesn't change when using this command. Sync docstrings with manual. (mh-page-msg, mh-previous-page): Rename arg to lines. Sync docstrings with manual. (mh-write-msg-to-file): Rename msg to message. Rename no-headers to no-header. Sync docstrings with manual. (mh-ps-print-map): Delete keybindings for deleted commands mh-ps-print-toggle-mime and mh-ps-print-msg-show. (mh-help-messages): Updated printing help. (mh-delete-msg, mh-delete-msg-no-motion, mh-first-msg) (mh-last-msg, mh-previous-unread-msg, mh-next-button) (mh-prev-button, mh-folder-toggle-mime-part) (mh-folder-inline-mime-part, mh-folder-save-mime-part) (mh-next-unread-msg, mh-toggle-mime-buttons): Sync docstrings with manual. * mh-funcs.el (mh-sortm-args): Now a customization option and in mh-customize.el. (mh-pipe-msg): Rename include-headers to include-header. Sync docstrings with manual. (mh-burst-digest, mh-page-digest, mh-page-digest-backwards) (mh-store-msg): Sync docstrings with manual. * mh-mime.el (mh-mime-save-parts): Rename arg to prompt. Sync docstrings with manual. (mh-toggle-mh-decode-mime-flag): Use English in message, not Lisp. Sync docstrings with manual. (mh-mm-display-part, mh-mm-inline-message): Use mh-highlight-citation-style instead of mh-highlight-citation-p. (mh-press-button): Sync docstrings with manual. (mh-display-with-external-viewer): Fix default output in minibuffer. Sync docstrings with manual. * mh-print.el: (mh-ps-print-mime, mh-ps-print-toggle-mime): Deleted. (mh-ps-print-color-option): Incorporate docstring from ps-print-color-p. (mh-ps-spool-buffer): Remove unused code. Fix indent. Slimline docstring. (mh-ps-spool-msg): Slimline docstring. Rename from mh-ps-spool-a-msg. Rewrote to use existing show buffer when available. (mh-ps-print-range): Extract method from common code in mh-ps-print-msg and mh-ps-print-msg-file. (mh-ps-print-preprint): Clean docstring. Use filename "mh-%s". (mh-ps-print-msg-show): Delete. Can use either mh-ps-print-msg-show or mh-ps-print-msg-show to same effect with new code in mh-ps-spool-msg. (mh-print-msg): Use mh-mhl-format-file instead of mhl-formfile. Sync docstrings with manual. (mh-ps-print-msg, mh-ps-print-msg-file) (mh-ps-print-toggle-faces, mh-ps-print-toggle-color): Sync docstrings with manual. * mh-utils.el (mh-show-ps-print-msg-show) (mh-show-ps-print-toggle-mime): Delete. (mh-show-ps-print-map): Updated accordingly. (mh-show-mode): Use mh-highlight-citation-style instead of mh-highlight-citation-p. (mh-show-xface, mh-display-msg): Use mh-mhl-format-file instead of mhl-formfile. (mh-show): Use mh-mhl-format-file instead of mhl-formfile. Sync docstrings with manual. (mh-show-font-lock-fontify-region, mh-modify, mh-goto-msg): Sync docstrings with manual.
author Bill Wohler <wohler@newt.com>
date Fri, 02 Dec 2005 05:54:33 +0000
parents 4b8cea82e2d9
children b0b7c2e3fc84
files lisp/mh-e/ChangeLog lisp/mh-e/mh-comp.el lisp/mh-e/mh-customize.el lisp/mh-e/mh-e.el lisp/mh-e/mh-funcs.el lisp/mh-e/mh-mime.el lisp/mh-e/mh-print.el lisp/mh-e/mh-utils.el
diffstat 8 files changed, 833 insertions(+), 497 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mh-e/ChangeLog	Fri Dec 02 04:55:39 2005 +0000
+++ b/lisp/mh-e/ChangeLog	Fri Dec 02 05:54:33 2005 +0000
@@ -1,3 +1,138 @@
+2005-12-01  Bill Wohler  <wohler@newt.com>
+
+	Rewrote Reading Mail chapter in manual which affected mh-show
+	customization group and related functions.
+	
+	* mh-comp.el (mh-letter-mode): Use mh-highlight-citation-style
+	instead of mh-highlight-citation-p.
+	(mh-letter-toggle-header-field-display): "Ellipsed" isn't a word,
+	I think, so use "truncated".
+
+	* mh-customize.el (mh-folder, mh-folder-faces): Group's manual
+	section is Folders, not Organizing. Parent of mh-folder-faces is
+	mh-folder, not mh-show.
+	(mh-speed): Rename to mh-speedbar for consistency with mh-toolbar.
+	(mh-thread): New group that corresponds with manual's Threading
+	chapter.
+	(mh-letter-faces): Group's manual section is Editing Drafts, not
+	Sending Mail.
+	(mh-sortm-args): New customization variable that used to be a
+	defvar.
+	(mh-index-new-messages-folders, mh-index-ticked-messages-folders):
+	Move from mh-index group to mh-folders group.
+	(mh-alias-local-users-prefix, mh-large-folder)
+	(mh-recursive-folders-flag, mh-before-quit-hook)
+	(mh-folder-mode-hook, mh-kill-folder-suppress-prompt-hook)
+	(mh-quit-hook, mh-refile-msg-hook): Move from mh-show group to
+	mh-folder group.
+	(mh-highlight-citation-style): Rename from
+	mh-highlight-citation-p. Sync docstrings with manual.
+	(mh-mhl-format-file): Rename from mhl-formfile. Sync docstrings
+	with manual.
+	(mh-show-threads-flag): Move from mh-show group to mh-thread
+	group.
+	(mh-find-path-hook): Move from mh-show group to mh-e group.
+	(mh-folder-updated-hook): Add to mh-folder group.
+	(mh-forward-hook): Move from mh-folder to mh-sending-mail group.
+	(mh-unseen-updated-hook): Move from mh-show to mh-sequences group.
+	(mh-bury-show-buffer-flag, mh-clean-message-header-flag)
+	(mh-decode-mime-flag, mh-display-buttons-for-alternatives-flag)
+	(mh-display-buttons-for-inline-parts-flag)
+	(mh-do-not-confirm-flag, mh-fetch-x-image-url)
+	(mh-graphical-smileys-flag, mh-graphical-emphasis-flag)
+	(mh-invisible-header-fields-default, mh-invisible-header-fields)
+	(mh-lpr-command-format, mh-max-inline-image-height)
+	(mh-max-inline-image-width)
+	(mh-mime-save-parts-default-directory, mh-print-background-flag)
+	(mh-show-maximum-size, mh-show-use-goto-addr-flag)
+	(mh-show-use-xface-flag, mh-store-default-directory)
+	(mh-summary-height, mh-delete-msg-hook
+	(mh-show-hook, mh-show-mode-hook): Sync docstrings with manual.
+	
+	* mh-e.el
+	(mh-scan-format-mh, mh-scan-good-msg-regexp)
+	(mh-scan-deleted-msg-regexp, mh-scan-refiled-msg-regexp)
+	(mh-scan-cur-msg-number-regexp, mh-scan-subject-regexp): Use
+	non-fontification instead of non-fontifying.
+	(mh-header-display): Use mh-mhl-format-file instead of
+	mhl-formfile. Sync docstrings with manual.
+	(mh-next-undeleted-msg, mh-previous-undeleted-msg): Rename arg to
+	count. Sync docstrings with manual.
+	(mh-refile-or-write-again): Use output from mh-write-msg-to-file
+	so that message doesn't change when using this command. Sync
+	docstrings with manual.
+	(mh-page-msg, mh-previous-page): Rename arg to lines. Sync
+	docstrings with manual.
+	(mh-write-msg-to-file): Rename msg to message. Rename no-headers
+	to no-header. Sync docstrings with manual.
+	(mh-ps-print-map): Delete keybindings for deleted commands
+	mh-ps-print-toggle-mime and mh-ps-print-msg-show.
+	(mh-help-messages): Updated printing help.
+	(mh-delete-msg, mh-delete-msg-no-motion, mh-first-msg)
+	(mh-last-msg, mh-previous-unread-msg, mh-next-button)
+	(mh-prev-button, mh-folder-toggle-mime-part)
+	(mh-folder-inline-mime-part, mh-folder-save-mime-part)
+	(mh-next-unread-msg, mh-toggle-mime-buttons): Sync docstrings with
+	manual.
+
+	* mh-funcs.el (mh-sortm-args): Now a customization option and
+	in mh-customize.el.
+	(mh-pipe-msg): Rename include-headers to include-header. Sync
+	docstrings with manual.
+	(mh-burst-digest, mh-page-digest, mh-page-digest-backwards)
+	(mh-store-msg): Sync docstrings with manual.
+
+	* mh-mime.el (mh-mime-save-parts): Rename arg to prompt. Sync
+	docstrings with manual.
+	(mh-toggle-mh-decode-mime-flag): Use English in message, not Lisp.
+	Sync docstrings with manual.
+	(mh-mm-display-part, mh-mm-inline-message): Use
+	mh-highlight-citation-style instead of mh-highlight-citation-p.
+	(mh-press-button): Sync docstrings with manual.
+	(mh-display-with-external-viewer): Fix default output in
+	minibuffer. Sync docstrings with manual.
+
+	* mh-print.el: (mh-ps-print-mime, mh-ps-print-toggle-mime):
+	Deleted.
+	(mh-ps-print-color-option): Incorporate docstring from
+	ps-print-color-p.
+	(mh-ps-spool-buffer): Remove unused code. Fix indent. Slimline
+	docstring.
+	(mh-ps-spool-msg): Slimline docstring. Rename from
+	mh-ps-spool-a-msg. Rewrote to use existing show buffer when
+	available.
+	(mh-ps-print-range): Extract method from common code in
+	mh-ps-print-msg and mh-ps-print-msg-file.
+	(mh-ps-print-preprint): Clean docstring. Use filename "mh-%s".
+	(mh-ps-print-msg-show): Delete. Can use either
+	mh-ps-print-msg-show or mh-ps-print-msg-show to same effect with
+	new code in mh-ps-spool-msg.
+	(mh-print-msg): Use mh-mhl-format-file instead of mhl-formfile.
+	Sync docstrings with manual.
+	(mh-ps-print-msg, mh-ps-print-msg-file)
+	(mh-ps-print-toggle-faces, mh-ps-print-toggle-color): Sync
+	docstrings with manual.
+	
+	* mh-utils.el (mh-show-ps-print-msg-show,
+	mh-show-ps-print-toggle-mime): Delete.
+	(mh-show-ps-print-map): Updated accordingly.
+	(mh-show-mode): Use mh-highlight-citation-style instead of
+	mh-highlight-citation-p.
+	(mh-show-xface, mh-display-msg): Use mh-mhl-format-file instead of
+	mhl-formfile.
+	(mh-show): Use mh-mhl-format-file instead of mhl-formfile. Sync
+	docstrings with manual.
+	(mh-show-font-lock-fontify-region, mh-modify, mh-goto-msg): Sync
+	docstrings with manual.
+
+2005-12-01  Bill Wohler  <wohler@newt.com>
+
+	* mh-init.el (mh-defface-compat): Checkdoc fix.
+
+	* mh-junk.el (mh-bogofilter-blacklist, mh-bogofilter-whitelist):
+	Bogofilter is lowercase except at beginning of sentence and in
+	titles.
+
 2005-11-04  Bill Wohler  <wohler@newt.com>
 
 	* mh-customize.el (mh-min-colors-defined-flag, mh-defface-compat):
--- a/lisp/mh-e/mh-comp.el	Fri Dec 02 04:55:39 2005 +0000
+++ b/lisp/mh-e/mh-comp.el	Fri Dec 02 05:54:33 2005 +0000
@@ -1000,8 +1000,8 @@
   (mh-funcall-if-exists mh-toolbar-init :letter)
   (make-local-variable 'font-lock-defaults)
   (cond
-   ((or (equal mh-highlight-citation-p 'font-lock)
-        (equal mh-highlight-citation-p 'gnus))
+   ((or (equal mh-highlight-citation-style 'font-lock)
+        (equal mh-highlight-citation-style 'gnus))
     ;; Let's use font-lock even if gnus is used in show-mode.  The reason
     ;; is that gnus uses static text properties which are not appropriate
     ;; for a buffer that will be edited.  So the choice here is either fontify
@@ -1950,7 +1950,7 @@
 (defun mh-letter-toggle-header-field-display (arg)
   "Toggle display of header field at point.
 
-Use this command to display ellipsed header fields. This command is a toggle
+Use this command to display truncated header fields. This command is a toggle
 so entering it again will hide the field. This command takes a prefix argument
 ARG: if negative then the field is hidden, if positive then the field is
 displayed."
--- a/lisp/mh-e/mh-customize.el	Fri Dec 02 04:55:39 2005 +0000
+++ b/lisp/mh-e/mh-customize.el	Fri Dec 02 05:54:33 2005 +0000
@@ -117,7 +117,7 @@
 (defgroup mh-folder nil
   "Organizing your mail with folders."
   :prefix "mh-"
-  :link '(custom-manual "(mh-e)Organizing")
+  :link '(custom-manual "(mh-e)Folders")
   :group 'mh-e)
 
 (defgroup mh-folder-selection nil
@@ -186,12 +186,18 @@
   :link '(custom-manual "(mh-e)Reading Mail")
   :group 'mh-e)
 
-(defgroup mh-speed nil
+(defgroup mh-speedbar nil
   "The speedbar."
   :prefix "mh-speed-"
   :link '(custom-manual "(mh-e)Speedbar")
   :group 'mh-e)
 
+(defgroup mh-thread nil
+  "Threading."
+  :prefix "mh-thread-"
+  :link '(custom-manual "(mh-e)Threading")
+  :group 'mh-e)
+
 (defgroup mh-toolbar nil
   "The toolbar"
   :link '(custom-manual "(mh-e)Toolbar")
@@ -215,10 +221,10 @@
 
 (defgroup mh-folder-faces nil
   "Faces used in scan listing."
-  :link '(custom-manual "(mh-e)Organizing")
+  :link '(custom-manual "(mh-e)Folders")
   :prefix "mh-"
   :group 'mh-faces
-  :group 'mh-show)
+  :group 'mh-folder)
 
 (defgroup mh-index-faces nil
   "Faces used in searching."
@@ -229,7 +235,7 @@
 
 (defgroup mh-letter-faces nil
   "Faces used in message drafts."
-  :link '(custom-manual "(mh-e)Sending Mail")
+  :link '(custom-manual "(mh-e)Editing Drafts")
   :prefix "mh-"
   :group 'mh-faces
   :group 'mh-letter)
@@ -250,7 +256,7 @@
 
 
 
-;;; Emacs interface to the MH mail system (:group mh)
+;;; Emacs interface to the MH mail system (:group mh-e)
 (eval-when (compile)
   (setq mh-variant 'none))
 
@@ -346,7 +352,7 @@
   :group 'mh-alias)
 
 (defcustom mh-alias-local-users-prefix "local."
-  "*String prepended to the real names of users from the password file.
+  "*String prefixed to the real names of users from the password file.
 This option can also be set to `Use Login'.
 
 For example, consider the following password file entry:
@@ -378,6 +384,39 @@
 
 ;;; Organizing Your Mail with Folders (:group 'mh-folder)
 
+(defcustom mh-index-new-messages-folders t
+  "Folders searched for the \"unseen\" sequence.
+Set this option to \"Inbox\" to search the \"+inbox\" folder or \"All\" to
+search all of the top level folders. Otherwise, list the folders that should
+be searched with the \"Choose Folders\" menu item.
+
+See also `mh-recursive-folders-flag'."
+  :type '(choice (const :tag "Inbox" t)
+                 (const :tag "All" nil)
+                 (repeat :tag "Choose Folders" (string :tag "Folder")))
+  :group 'mh-folder)
+
+(defcustom mh-index-ticked-messages-folders t
+  "Folders searched for `mh-tick-seq'.
+Set this option to \"Inbox\" to search the \"+inbox\" folder or \"All\" to
+search all of the top level folders. Otherwise, list the folders that should
+be searched with the \"Choose Folders\" menu item.
+
+See also `mh-recursive-folders-flag'."
+  :type '(choice (const :tag "Inbox" t)
+                 (const :tag "All" nil)
+                 (repeat :tag "Choose Folders" (string :tag "Folder")))
+  :group 'mh-folder)
+
+(defcustom mh-large-folder 200
+  "The number of messages that indicates a large folder.
+If a folder is deemed to be large, that is the number of messages in it exceed
+this value, then confirmation is needed when it is visited. Even when
+`mh-show-threads-flag' is non-nil, the folder is not automatically threaded, if
+it is large. If set to nil all folders are treated as if they are small."
+  :type '(choice (const :tag "No Limit") integer)
+  :group 'mh-folder)
+
 (defcustom mh-recenter-summary-flag nil
   "*Non-nil means to recenter the summary window.
 If this option is turned on, recenter the summary window when the show window
@@ -385,6 +424,20 @@
   :type 'boolean
   :group 'mh-folder)
 
+(defcustom mh-recursive-folders-flag nil
+  "*Non-nil means that commands which operate on folders do so recursively."
+  :type 'boolean
+  :group 'mh-folder)
+
+(defcustom mh-sortm-args nil
+  "*Extra arguments to have \\[mh-sort-folder] pass to the \"sortm\" command.
+The arguments are passed to sortm if \\[mh-sort-folder] is given a
+prefix argument.  Normally default arguments to sortm are specified in the
+MH profile.
+For example, '(\"-nolimit\" \"-textfield\" \"subject\") is a useful setting."
+  :type 'string
+  :group 'mh-folder)
+
 
 
 ;;; Folder Selection (:group 'mh-folder-selection)
@@ -657,18 +710,6 @@
 
 ;;; Searching (:group 'mh-index)
 
-(defcustom mh-index-new-messages-folders t
-  "Folders searched for the \"unseen\" sequence.
-Set this option to \"Inbox\" to search the \"+inbox\" folder or \"All\" to
-search all of the top level folders. Otherwise, list the folders that should
-be searched with the \"Choose Folders\" menu item.
-
-See also `mh-recursive-folders-flag'."
-  :group 'mh-index
-  :type '(choice (const :tag "Inbox" t)
-                 (const :tag "All" nil)
-                 (repeat :tag "Choose Folders" (string :tag "Folder"))))
-
 (defcustom mh-index-program nil
   "Indexing program that MH-E shall use.
 The default setting of this option is `Auto-detect' which means that MH-E will
@@ -687,18 +728,6 @@
                  (const :tag "grep" grep))
   :group 'mh-index)
 
-(defcustom mh-index-ticked-messages-folders t
-  "Folders searched for `mh-tick-seq'.
-Set this option to \"Inbox\" to search the \"+inbox\" folder or \"All\" to
-search all of the top level folders. Otherwise, list the folders that should
-be searched with the \"Choose Folders\" menu item.
-
-See also `mh-recursive-folders-flag'."
-  :group 'mh-index
-  :type '(choice (const :tag "Inbox" t)
-                 (const :tag "All" nil)
-                 (repeat :tag "Choose Folders" (string :tag "Folder"))))
-
 
 
 ;;; Dealing with Junk Mail (:group 'mh-junk)
@@ -747,9 +776,9 @@
   "Spam program that MH-E should use.
 
 The default setting of this option is \"Auto-detect\" which means that MH-E
-will automatically choose one of SpamAssassin, Bogofilter, or SpamProbe in
-that order. If, for example, you have both SpamAssassin and Bogofilter
-installed and you want to use BogoFilter, then you can set this option to
+will automatically choose one of SpamAssassin, bogofilter, or SpamProbe in
+that order. If, for example, you have both SpamAssassin and bogofilter
+installed and you want to use bogofilter, then you can set this option to
 \"Bogofilter\"."
   :type '(choice (const :tag "Auto-detect" nil)
                  (const :tag "SpamAssassin" spamassassin)
@@ -1167,98 +1196,148 @@
 ;;; Reading Your Mail (:group 'mh-show)
 
 (defcustom mh-bury-show-buffer-flag t
-  "*Non-nil means that the displayed show buffer for a folder is buried."
+  "*Non-nil means show buffer is buried.
+
+One advantage of not burying the show buffer is that one can delete the show
+buffer more easily in an electric buffer list because of its proximity to its
+associated MH-Folder buffer. Try running \\[electric-buffer-list] to see what
+I mean."
   :type 'boolean
   :group 'mh-show)
 
 (defcustom mh-clean-message-header-flag t
   "*Non-nil means remove extraneous header fields.
-The header fields listed in the `mh-invisible-header-fields-default' option
-are hidden, although you can check off any field that you would like to see.
-Header fields that you would like to hide that aren't listed can be added to
-the `mh-invisible-header-fields' option."
+
+See also `mh-invisible-header-fields-default' and
+`mh-invisible-header-fields'."
   :type 'boolean
   :group 'mh-show)
 
 (defcustom mh-decode-mime-flag (not (not (locate-library "mm-decode")))
-  "*Non-nil means that Gnus is used to show MIME attachments with Gnus."
+  "*Non-nil means attachments are handled\\<mh-folder-mode-map>.
+
+MH-E can handle attachments as well if the Gnus `mm-decode' library is
+present. If so, this option will be on. Otherwise, you'll see the MIME body
+parts rather than text or attachments. There isn't much point in turning off
+this option; however, you can inspect it if it appears that the body parts are
+not being interpreted correctly or toggle it with the command
+\\[mh-toggle-mh-decode-mime-flag] to view the raw message.
+
+This option also controls the display of quoted-printable messages and other
+graphical widgets. See the options `mh-graphical-smileys-flag' and
+`mh-graphical-emphasis-flag'."
   :type 'boolean
   :group 'mh-show)
 
 (defcustom mh-display-buttons-for-alternatives-flag nil
-  "*Non-nil means display buttons for all MIME alternatives.
-Default behavior is to display only the preferred alternative. If this
-variable is non-nil, then the preferred part is shown inline and buttons
-are shown for each of the other alternatives."
+  "*Non-nil means display buttons for all alternative attachments.
+
+Sometimes, a mail program will produce multiple alternatives of the attachment
+in increasing degree of faithfulness to the original content. By default, only
+the preferred alternative is displayed. If this option is on, then the
+preferred part is shown inline and buttons are shown for each of the other
+alternatives."
   :type 'boolean
   :group 'mh-show)
 
 (defcustom mh-display-buttons-for-inline-parts-flag nil
-  "*Non-nil means display buttons for all inline MIME parts.
-If non-nil, buttons are displayed for all MIME parts. Inline parts start off
-in displayed state but they can be hidden by clicking the button. If nil no
-buttons are shown for inline parts."
+  "*Non-nil means display buttons for all inline attachments\\<mh-folder-mode-map>.
+
+The sender can request that attachments should be viewed inline so that they
+do not really appear like an attachment at all to the reader. Most of the
+time, this is desirable, so by default MH-E suppresses the buttons for inline
+attachments. On the other hand, you may receive code or HTML which the sender
+has added to his message as inline attachments so that you can read them in
+MH-E. In this case, it is useful to see the buttons so that you know you don't
+have to cut and paste the code into a file; you can simply save the
+attachment.
+
+If you want to make the buttons visible for inline attachments, you can use
+the command \\[mh-toggle-mime-buttons] to toggle the visibility of these
+buttons. You can turn on these buttons permanently by turning on this option.
+
+MH-E cannot display all attachments inline however. It can display
+text (including HTML) and images."
   :type 'boolean
   :group 'mh-show)
 
 (defcustom mh-do-not-confirm-flag nil
-  "*Non-nil means do not prompt for confirmation.
+  "*Non-nil means non-reversible commands do not prompt for confirmation.
+
 Commands such as `mh-pack-folder' prompt to confirm whether to process
-outstanding moves and deletes or not before continuing. A non-nil setting will
-perform the action--which is usually desired but cannot be retracted--without
-question."
+outstanding moves and deletes or not before continuing. Turning on this option
+means that these actions will be performed--which is usually desired but
+cannot be retracted--without question."
   :type 'boolean
   :group 'mh-show)
 
 (defcustom mh-fetch-x-image-url 'ask
-  "*Control fetching of `X-Image-URL:' header field image.
-If set to \"Always fetch\" (t), the image is always fetched. You probably want
-to avoid this setting for privacy and DOS (denial of service) reasons. For
-example, fetching a URL can tip off a spammer that you've read his email.
-Someone may also flood your network and fill your disk drive by sending a
-torrent of messages, each specifying a unique URL to a very large file.
-
-If set to \"Ask before fetching\" ('ask), you are prompted before the image is
-fetched. MH-E will remember your reply and will either use the already fetched
-image the next time the same URL is encountered or silently skip it if you
-didn't fetch it the first time. This is the default.
-
-If set to \"Never fetch\" (nil), images are never fetched and only displayed
-if they are already present in the cache.
-
-The cache of images is found in the directory `.mhe-x-image-cache' within your
-MH directory. To see how you can add your own face to the `From:' field, see
-`mh-x-face-file'.
-
-This setting only has effect if `mh-show-use-xface-flag' is non-nil."
-
-  :type '(choice (const :tag "Always fetch" t)
-                 (const :tag "Ask before fetching" ask)
-                 (const :tag "Never fetch" nil))
+  "*Control fetching of \"X-Image-URL:\" header field image.
+
+If set to \"Always Fetch\", the image is always fetched. You probably want to
+avoid this setting for privacy and denial of service reasons. For example,
+fetching a URL can tip off a spammer that you've read his email. Someone may
+also flood your network and fill your disk drive by sending a torrent of
+messages, each specifying a unique URL to a very large file.
+
+If set to \"Ask Before Fetching\", you are prompted before the image is
+fetched. MH-E will remember your reply and will either use the cached image
+the next time the same URL is encountered or silently skip it if you didn't
+fetch it the first time. This is the default.
+
+If set to \"Never Fetch\", images are never fetched and only displayed if they
+are already present in the cache.
+
+The cache of images is found in the directory \".mhe-x-image-cache\" within
+your MH directory. To see how you can add your own face to the \"From:\"
+field, see the option `mh-x-face-file'.
+
+This setting only has effect if the option `mh-show-use-xface-flag' is turned
+on."
+
+  :type '(choice (const :tag "Always Fetch" t)
+                 (const :tag "Ask Before Fetching" ask)
+                 (const :tag "Never Fetch" nil))
   :group 'mh-show)
 
 (defcustom mh-graphical-smileys-flag t
   "*Non-nil means graphical smileys are displayed.
-Non-nil means that small graphics will be used in the show buffer instead of
-patterns like :-), ;-) etc. The setting only has effect if
-`mh-decode-mime-flag' is non-nil."
+
+It is a long standing custom to inject body language using a cornucopia of
+punctuation, also known as the \"smileys\". MH-E can render these as graphical
+widgets if this option is turned on, which it is by default. Smileys include
+patterns such as :-) and ;-).
+
+This option is disabled if the option `mh-decode-mime-flag' is turned off."
   :type 'boolean
   :group 'mh-show)
 
 (defcustom mh-graphical-emphasis-flag t
   "*Non-nil means graphical emphasis is displayed.
-Non-nil means that _underline_ will be underlined, *bold* will appear in bold,
-/italic/ will appear in italic etc. See `gnus-emphasis-alist' for the whole
-list. The setting only has effect if `mh-decode-mime-flag' is non-nil."
+
+A few typesetting features are indicated in ASCII text with certain
+characters. If your terminal supports it, MH-E can render these typesetting
+directives naturally if this option is turned on, which it is by default. For
+example, _underline_ will be underlined, *bold* will appear in bold, /italics/
+will appear in italics, and so on. See the option `gnus-emphasis-alist' for
+the whole list.
+
+This option is disabled if the option `mh-decode-mime-flag' is turned off."
   :type 'boolean
   :group 'mh-show)
 
-(defcustom mh-highlight-citation-p 'gnus
-  "How to highlight citations in show buffers.
-The gnus method uses a different color for each indentation."
-  :type '(choice (const :tag "Use Gnus" gnus)
-                 (const :tag "Use font-lock" font-lock)
-                 (const :tag "Don't fontify" nil))
+(defcustom mh-highlight-citation-style 'gnus
+  "Style for highlighting citations.
+
+If the sender of the message has cited other messages in his message, then
+MH-E will highlight these citations to emphasize the sender's actual response.
+This option can be customized to change the highlighting style. The
+\"Multicolor\" method uses a different color for each indentation while the
+\"Monochrome\" method highlights all citations in red. To disable highlighting
+of citations entirely, choose \"None\"."
+  :type '(choice (const :tag "Multicolor" gnus)
+                 (const :tag "Monochrome" font-lock)
+                 (const :tag "None" nil))
   :group 'mh-show)
 
 ;; Keep fields alphabetized. Mention source, if known.
@@ -1470,10 +1549,12 @@
 
 (defcustom mh-invisible-header-fields-default nil
   "*List of hidden header fields.
+
 The header fields listed in this option are hidden, although you can check off
-any field that you would like to see. Header fields that you would like to
-hide that aren't listed can be added to the `mh-invisible-header-fields'
-option.
+any field that you would like to see.
+
+Header fields that you would like to hide that aren't listed can be added to
+the option `mh-invisible-header-fields'.
 
 See also `mh-clean-message-header-flag'."
   :type `(set ,@(mapcar (lambda (x) `(const ,x))
@@ -1485,11 +1566,14 @@
 
 (defcustom mh-invisible-header-fields nil
   "*Additional header fields to hide.
+
 Header fields that you would like to hide that aren't listed in
 `mh-invisible-header-fields-default' can be added to this option with a couple
 of caveats. Regular expressions are not allowed. Unique fields should have a
 `:' suffix; otherwise, the element can be used to render invisible an entire
-class of fields that start with the same prefix.
+class of fields that start with the same prefix. If you think a header field
+should be generally ignored, report a bug (see URL
+`https://sourceforge.net/tracker/?group_id=13357&atid=113357').
 
 See also `mh-clean-message-header-flag'."
 
@@ -1500,146 +1584,184 @@
   :group 'mh-show)
 
 (defcustom mh-lpr-command-format "lpr -J '%s'"
-  "*Format for Unix command that prints a message.
-The string should be a Unix command line, with the string '%s' where
-the job's name (folder and message number) should appear.  The formatted
-message text is piped to this command when you type \\<mh-folder-mode-map>`\\[mh-print-msg]'."
+  "*Command used to print\\<mh-folder-mode-map>.
+
+This option contains the Unix command line which performs the actual printing
+for the \\[mh-print-msg] command. The string can contain one escape, \"%s\",
+which is replaced by the name of the folder and the message number and is
+useful for print job names. I use \"mpage -h'%s' -b Letter -H1of -mlrtb -P\"
+which produces a nice header and adds a bit of margin so the text fits within
+my printer's margins.
+
+This options is not used by the commands \\[mh-ps-print-msg] or
+\\[mh-ps-print-msg-file]."
   :type 'string
   :group 'mh-show)
 
 (defcustom mh-max-inline-image-height nil
-  "*Maximum inline image height if Content-Disposition is not present.
-If nil, image will be displayed if its height is smaller than the height of
-the window."
+  "*Maximum inline image height if \"Content-Disposition:\" is not present.
+
+Some older mail programs do not insert this needed plumbing to tell
+MH-E whether to display the attachments inline or not. If this is the
+case, MH-E will display these images inline if they are smaller than
+the window. However, you might want to allow larger images to be
+displayed inline. To do this, you can change the options
+`mh-max-inline-image-width' and `mh-max-inline-image-height' from their
+default value of zero to a large number. The size of your screen is a
+good choice for these numbers."
   :type '(choice (const nil) integer)
   :group 'mh-show)
 
 (defcustom mh-max-inline-image-width nil
-  "*Maximum inline image width if Content-Disposition is not present.
-If nil, image will be displayed if its width is smaller than the width of the
-window."
+  "*Maximum inline image width if \"Content-Disposition:\" is not present.
+
+Some older mail programs do not insert this needed plumbing to tell
+MH-E whether to display the attachments inline or not. If this is the
+case, MH-E will display these images inline if they are smaller than
+the window. However, you might want to allow larger images to be
+displayed inline. To do this, you can change the options
+`mh-max-inline-image-width' and `mh-max-inline-image-height' from their
+default value of zero to a large number. The size of your screen is a
+good choice for these numbers."
   :type '(choice (const nil) integer)
   :group 'mh-show)
 
+(defcustom mh-mhl-format-file nil
+  "*Specifies the format file to pass to the \"mhl\" program.
+
+Normally MH-E takes care of displaying messages itself (rather than calling an
+MH program to do the work). If you'd rather have \"mhl\" display the
+message (within MH-E), change this option from its default value of \"Use
+Default mhl Format (Printing Only)\".
+
+You can set this option to \"Use Default mhl Format\" to get the same output
+as you would get if you ran \"mhl\" from the shell.
+
+If you have a format file that you want MH-E to use, you can set this option
+to \"Specify an mhl Format File\" and enter the name of your format file. Your
+format file should specify a non-zero value for \"overflowoffset\" to allow
+MH-E to parse the header. Note that \"mhl\" is always used for printing and
+forwarding; in this case, the value of this option is consulted if you have
+specified a format file."
+  :type '(choice (const :tag "Use Default mhl Format (Printing Only)" nil)
+                 (const :tag "Use Default mhl Format" t)
+                 (file :tag "Specify an mhl Format File"))
+  :group 'mh-show)
+
 (defcustom mh-mime-save-parts-default-directory t
-  "Default directory to use for `mh-mime-save-parts'.
-If nil, prompt and set for next time the command is used during same session.
-If t, prompt always"
-  :type '(choice (const :tag "Prompt the first time" nil)
-                 (const :tag "Prompt always" t)
+  "Default directory to use for \\<mh-folder-mode-map>\\[mh-mime-save-parts].
+
+The default value for this option is \"Prompt Always\" so that you are always
+prompted for the directory in which to save the attachments. However, if you
+usually use the same directory within a session, then you can set this option
+to \"Prompt the First Time\" to avoid the prompt each time. you can make this
+directory permanent by choosing \"Directory\" and entering the directory's
+name."
+  :type '(choice (const :tag "Prompt the First Time" nil)
+                 (const :tag "Prompt Always" t)
                  directory)
   :group 'mh-show)
 
 (defcustom mh-print-background-flag nil
-  "*Non-nil means messages should be printed in the background.
-WARNING: do not delete the messages until printing is finished;
-otherwise, your output may be truncated."
-  :type 'boolean
-  :group 'mh-show)
-
-(defcustom mh-recursive-folders-flag nil
-  "*Non-nil means that commands which operate on folders do so recursively."
+  "*Non-nil means messages should be printed in the background\\<mh-folder-mode-map>.
+
+Normally messages are printed in the foreground. If this is slow on your
+system, you may elect to turn off this option to print in the background.
+
+WARNING: If you do this, do not delete the message until it is printed or else
+the output may be truncated.
+
+This option is not used by the commands \\[mh-ps-print-msg] or
+\\[mh-ps-print-msg-file]."
   :type 'boolean
   :group 'mh-show)
 
 (defcustom mh-show-maximum-size 0
   "*Maximum size of message (in bytes) to display automatically.
-Provides an opportunity to skip over large messages which may be slow to load.
-Use a value of 0 to display all messages automatically regardless of size."
+
+This option provides an opportunity to skip over large messages which may be
+slow to load. The default value of 0 means that all message are shown
+regardless of size."
   :type 'integer
   :group 'mh-show)
 
-(defcustom mh-show-threads-flag nil
-  "Non-nil means new folders start in threaded mode.
-Threading large number of messages can be time consuming. So if the flag is
-non-nil then threading will be done only if the number of messages being
-threaded is less than `mh-large-folder'."
-  :type 'boolean
-  :group 'mh-show)
-
-;; Use goto-addr if it was already loaded (which probably sets this
-;; variable to t), or if this variable is otherwise set to t.
 (defcustom mh-show-use-goto-addr-flag (and (boundp 'goto-address-highlight-p)
                                            goto-address-highlight-p)
-  "*Non-nil means highlight URLs and email addresses.
-The `goto-addr' module is used."
+  "*Non-nil means highlight URLs and email addresses\\<goto-address-highlight-keymap>.
+
+To send a message using the highlighted email address or to view the web page
+for the highlighted URL, use the middle mouse button or
+\\[goto-address-at-point].
+
+See Info node `(mh-e)Sending Mail' to see how to configure Emacs to send the
+message using MH-E.
+
+The default value of this option comes from the value of
+`goto-address-highlight-p'."
   :type 'boolean
   :group 'mh-show)
 
 (defcustom mh-show-use-xface-flag (>= emacs-major-version 21)
-  "*Non-nil means display face images in `mh-show-mode'.
-
-MH-E can display the content of `Face:', `X-Face:', and `X-Image-URL:' header
-fields. If any of these fields occur in the header of your message, the
-sender's face will appear in the `From:' header field. If more than one of
-these fields appear, then the first field found in the order `Face:',
-`X-Face:', and `X-Image-URL:' will be used. Note that versions of GNU Emacs
-prior to 21.1 don't support the display of inline images, so face images are
-not displayed in these versions.
+  "*Non-nil means display face images in MH-show buffers.
+
+MH-E can display the content of \"Face:\", \"X-Face:\", and \"X-Image-URL:\"
+header fields. If any of these fields occur in the header of your message, the
+sender's face will appear in the \"From:\" header field. If more than one of
+these fields appear, then the first field found in the order \"Face:\",
+\"X-Face:\", and \"X-Image-URL:\" will be used.
 
 The option `mh-show-use-xface-flag' is used to turn this feature on and off.
 This feature will be turned on by default if your system supports it.
 
-The first header field used, if present, is the Gnus-specific `Face:' field.
-The `Face:' field appeared in GNU Emacs 21 and XEmacs. For more information,
+The first header field used, if present, is the Gnus-specific \"Face:\" field.
+The \"Face:\" field appeared in GNU Emacs 21 and XEmacs. For more information,
 see URL `http://quimby.gnus.org/circus/face/'. Next is the traditional
-`X-Face:' header field. The display of this field requires the `uncompface'
-program (see URL `ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z').
-Recent versions of XEmacs have internal support for `X-Face:' images. If your
-version of XEmacs does not, then you'll need both `uncompface' and the x-face
+\"X-Face:\" header field. The display of this field requires the
+\"uncompface\" program (see URL
+`ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.z'). Recent versions
+of XEmacs have internal support for \"X-Face:\" images. If your version of
+XEmacs does not, then you'll need both \"uncompface\" and the x-face
 package (see URL `ftp://ftp.jpl.org/pub/elisp/').
 
-Finally, MH-E will display images referenced by the `X-Image-URL:' header
-field if neither the `Face:' nor the `X-Face:' fields are present. The display
-of the images requires `wget' (see URL
-`http://www.gnu.org/software/wget/wget.html'), `fetch', or `curl' to fetch the
-image and the `convert' program from the ImageMagick suite (see URL
+Finally, MH-E will display images referenced by the \"X-Image-URL:\" header
+field if neither the \"Face:\" nor the \"X-Face:\" fields are present. The
+display of the images requires \"wget\" (see URL
+`http://www.gnu.org/software/wget/wget.html'), \"fetch\", or \"curl\" to fetch
+the image and the \"convert\" program from the ImageMagick suite (see URL
 `http://www.imagemagick.org/'). Of the three header fields this is the most
 efficient in terms of network usage since the image doesn't need to be
 transmitted with every single mail.
 
-The option `mh-fetch-x-image-url' controls the fetching of the `X-Image-URL:'
-header field image."
+The option `mh-fetch-x-image-url' controls the fetching of the
+\"X-Image-URL:\" header field image."
   :type 'boolean
   :group 'mh-show)
 
 (defcustom mh-store-default-directory nil
-  "*Last directory used by \\[mh-store-msg]; default for next store.
-A directory name string, or nil to use current directory."
+  "*Default directory for \\<mh-folder-mode-map>\\[mh-store-msg].
+
+If you would like to change the initial default directory, customize this
+option, change the value from `Current' to `Directory', and then enter the
+name of the directory for storing the content of these messages."
   :type '(choice (const :tag "Current" nil)
                  directory)
   :group 'mh-show)
 
 (defcustom mh-summary-height nil
-  "*Number of lines in MH-Folder window (including the mode line)."
+  "*Number of lines in MH-Folder buffer (including the mode line).
+
+The default value of this option is \"Automatic\" which means that the
+MH-Folder buffer will maintain the same proportional size if the frame is
+resized. If you'd prefer a fixed height, then choose the \"Fixed Size\" option
+and enter the number of lines you'd like to see."
   :type '(choice (const :tag "Automatic" nil)
-                 (integer :tag "Fixed sized"))
+                 (integer :tag "Fixed Size"))
   :group 'mh-show)
 
-(defcustom mhl-formfile nil
-  "*Name of format file to be used by mhl to show and print messages.
-A value of t means use the default format file.
-nil means don't use mhl to format messages when showing; mhl is still used,
-with the default format file, to format messages when printing them.
-The format used should specify a non-zero value for overflowoffset so
-the message continues to conform to RFC 822 and MH-E can parse the headers."
-  :type '(choice (const nil) (const t) string)
-  :group 'mh-show)
-(put 'mhl-formfile 'info-file "mh-e")
-
 
 
 ;;; The Speedbar (:group 'mh-speed)
 
-(defcustom mh-large-folder 200
-  "The number of messages that indicates a large folder.
-If a folder is deemed to be large, that is the number of messages in it exceed
-this value, then confirmation is needed when it is visited. Even when
-`mh-show-threads-flag' is non-nil, the folder is not automatically threaded, if
-it is large. If set to nil all folders are treated as if they are small."
-  :type '(choice (const :tag "No limit") integer)
-  :group 'mh-speed)
-
 (defcustom mh-speed-flists-interval 60
   "Time between calls to flists in seconds.
 If 0, flists is not called repeatedly."
@@ -1657,6 +1779,19 @@
 
 
 
+;;; Threading (:group 'mh-thread)
+
+(defcustom mh-show-threads-flag nil
+  "*Non-nil means new folders start in threaded mode.
+
+Threading large number of messages can be time consuming so this option is
+turned off by default. If you turn this option on, then threading will be done
+only if the number of messages being threaded is less than `mh-large-folder'."
+  :type 'boolean
+  :group 'mh-thread)
+
+
+
 ;;; The Toolbar (:group 'mh-toolbar)
 
 (defcustom mh-tool-bar-search-function 'mh-search-folder
@@ -2119,7 +2254,7 @@
 See also `mh-quit-hook'."
   :type 'hook
   :group 'mh-hooks
-  :group 'mh-show)
+  :group 'mh-folder)
 
 (defcustom mh-before-send-letter-hook nil
   "Invoked at the beginning of the \\<mh-letter-mode-map>\\[mh-send-letter] command.
@@ -2131,7 +2266,10 @@
   :group 'mh-letter)
 
 (defcustom mh-delete-msg-hook nil
-  "Invoked after marking each message for deletion."
+  "Invoked after marking each message for deletion.
+
+For example, a past maintainer of MH-E used this once when he kept statistics
+on his mail usage."
   :type 'hook
   :group 'mh-hooks
   :group 'mh-show)
@@ -2146,13 +2284,13 @@
   "Invoked by `mh-find-path' after reading the user's MH profile."
   :type 'hook
   :group 'mh-hooks
-  :group 'mh-show)
+  :group 'mh-e)
 
 (defcustom mh-folder-mode-hook nil
   "Invoked in `mh-folder-mode' on a new folder."
   :type 'hook
   :group 'mh-hooks
-  :group 'mh-show)
+  :group 'mh-folder)
 
 (defcustom mh-folder-updated-hook nil
   "Invoked when the folder actions (such as moves and deletes) are performed.
@@ -2160,13 +2298,14 @@
 `mh-refile-list' which can be used to see which changes are being made to
 current folder, `mh-current-folder'."
   :type 'hook
-  :group 'mh-hooks)
+  :group 'mh-hooks
+  :group 'mh-folder)
 
 (defcustom mh-forward-hook nil
   "Invoked on the forwarded letter by \\<mh-folder-mode-map>\\[mh-forward]."
   :type 'hook
   :group 'mh-hooks
-  :group 'mh-folder)
+  :group 'mh-sending-mail)
 
 (defcustom mh-inc-folder-hook nil
   "Invoked by \\<mh-folder-mode-map>`\\[mh-inc-folder]' after incorporating mail into a folder."
@@ -2189,7 +2328,7 @@
 in the +inbox buffer, you will not be happy."
   :type 'hook
   :group 'mh-hooks
-  :group 'mh-show)
+  :group 'mh-folder)
 
 (defcustom mh-letter-insert-signature-hook nil
   "Invoked after signature has been inserted.
@@ -2216,22 +2355,28 @@
 See also `mh-before-quit-hook'."
   :type 'hook
   :group 'mh-hooks
-  :group 'mh-show)
+  :group 'mh-folder)
 
 (defcustom mh-refile-msg-hook nil
   "Invoked after marking each message for refiling."
   :type 'hook
   :group 'mh-hooks
-  :group 'mh-show)
+  :group 'mh-folder)
 
 (defcustom mh-show-hook nil
-  "Invoked after \\<mh-folder-mode-map>`\\[mh-show]' shows a message."
+  "Invoked after \\<mh-folder-mode-map>\\[mh-show] shows a message.
+
+It is the last thing called after messages are displayed. It's used to affect
+the behavior of MH-E in general or when `mh-show-mode-hook' is too early."
   :type 'hook
   :group 'mh-hooks
   :group 'mh-show)
 
 (defcustom mh-show-mode-hook nil
-  "Invoked upon entry to `mh-show-mode'."
+  "Invoked upon entry to `mh-show-mode'.
+
+This hook is called early on in the process of the message display. It is
+usually used to perform some action on the message's content."
   :type 'hook
   :group 'mh-hooks
   :group 'mh-show)
@@ -2242,7 +2387,7 @@
 will be removed from the unseen sequence."
   :type 'hook
   :group 'mh-hooks
-  :group 'mh-show)
+  :group 'mh-sequences)
 
 
 
--- a/lisp/mh-e/mh-e.el	Fri Dec 02 04:55:39 2005 +0000
+++ b/lisp/mh-e/mh-e.el	Fri Dec 02 05:54:33 2005 +0000
@@ -132,7 +132,7 @@
    "%<(zero)%17(friendly{from})%>  "
    "%{subject}%<{body}<<%{body}%>")
   "*Scan format string for MH.
-This string is passed to the scan program via the -format arg.
+This string is passed to the scan program via the -format argument.
 This format is identical to the default except that additional hints for
 fontification have been added to the fifth column (remember that in Emacs, the
 first column is 0).
@@ -186,7 +186,7 @@
 parenthesized expression which matches the message number as in the default of
 \"^\\\\( *[0-9]+\\\\)[^D^0-9]\". This expression includes the leading space
 within the parenthesis since it looks better to highlight it as well. This
-regular expression should be correct as it is needed by non-fontifying
+regular expression should be correct as it is needed by non-fontification
 functions.")
 
 (defvar mh-scan-deleted-msg-regexp "^\\( *[0-9]+\\)D"
@@ -196,8 +196,8 @@
 parenthesized expression which matches the message number as in the default of
 \"^\\\\( *[0-9]+\\\\)D\". This expression includes the leading space within
 the parenthesis since it looks better to highlight it as well. This regular
-expression should be correct as it is needed by non-fontifying functions. See
-also `mh-note-deleted'.")
+expression should be correct as it is needed by non-fontification functions.
+See also `mh-note-deleted'.")
 
 (defvar mh-scan-refiled-msg-regexp  "^\\( *[0-9]+\\)\\^"
   "This regular expression matches refiled messages.
@@ -206,7 +206,7 @@
 parenthesized expression which matches the message number as in the default of
 \"^\\\\( *[0-9]+\\\\)\\\\^\". This expression includes the leading space
 within the parenthesis since it looks better to highlight it as well. This
-regular expression should be correct as it is needed by non-fontifying
+regular expression should be correct as it is needed by non-fontification
 functions. See also `mh-note-refiled'.")
 
 (defvar mh-scan-valid-regexp "^ *[0-9]"
@@ -222,7 +222,7 @@
 \"^\\\\( *[0-9]+\\\\+\\\\).*\". This expression includes the leading space and
 current message marker \"+\" within the parenthesis since it looks better to
 highlight these items as well. This regular expression should be correct as it
-is needed by non-fontifying functions. See also `mh-note-cur'.")
+is needed by non-fontification functions. See also `mh-note-cur'.")
 
 (defvar mh-scan-date-regexp "\\([0-9][0-9]/[0-9][0-9]\\)"
   "This regular expression matches a valid date.
@@ -262,7 +262,7 @@
   ^ *[0-9]+........[ ]*...................
   \\\\([Rr][Ee]\\\\(\\\\\\=[[0-9]+\\\\]\\\\)?:\\\\s-*\\\\)*
   \\\\([^<\\n]*\\\\)
-This regular expression should be correct as it is needed by non-fontifying
+This regular expression should be correct as it is needed by non-fontification
 functions.")
 
 (defvar mh-scan-format-regexp
@@ -535,8 +535,15 @@
 ;;; User executable MH-E commands:
 
 (defun mh-delete-msg (range)
-  "Mark the specified RANGE for subsequent deletion and move to the next.
-Default is the displayed message.
+  "Delete message\\<mh-folder-mode-map>.
+
+To mark a message for deletion, use this command. A \"D\" is placed by the
+message in the scan window, and the next undeleted message is displayed. If
+the previous command had been \\[mh-previous-undeleted-msg], then the next
+message displayed is the first undeleted message previous to the message just
+deleted. Use \\[mh-next-undeleted-msg] to force subsequent \\[mh-delete-msg]
+commands to move forward to the next undeleted message after deleting the
+message under the cursor.
 
 Check the documentation of `mh-interactive-range' to see how RANGE is read in
 interactive use."
@@ -545,7 +552,11 @@
   (if (looking-at mh-scan-deleted-msg-regexp) (mh-next-msg)))
 
 (defun mh-delete-msg-no-motion (range)
-  "Mark the specified RANGE for subsequent deletion.
+  "Delete message, don't move to next message.
+
+This command marks the message (or messages in RANGE) for deletion but leaves
+the cursor at the current message in case you wish to perform other operations
+on the message.
 
 Check the documentation of `mh-interactive-range' to see how RANGE is read in
 interactive use."
@@ -564,24 +575,22 @@
   t)                                    ; return t for write-file-functions
 
 (defun mh-first-msg ()
-  "Move to the first message."
+  "Display first message."
   (interactive)
   (goto-char (point-min))
   (while (and (not (eobp)) (not (looking-at mh-scan-valid-regexp)))
     (forward-line 1)))
 
 (defun mh-header-display ()
-  "Show the current message with all its headers.
-Displays headers that might have been suppressed by setting the
-variables `mh-clean-message-header-flag' or `mhl-formfile', or by the fallback
-behavior of scrolling uninteresting headers off the top of the window.
-Type \"\\[mh-show]\" to show the message normally again."
+  "Display message with all header fields\\<mh-folder-mode-map>.
+
+Use the command \\[mh-show] to show the message normally again."
   (interactive)
   (and (not mh-showing-with-headers)
-       (or mhl-formfile mh-clean-message-header-flag)
+       (or mh-mhl-format-file mh-clean-message-header-flag)
        (mh-invalidate-show-buffer))
   (let ((mh-decode-mime-flag nil)
-        (mhl-formfile nil)
+        (mh-mhl-format-file nil)
         (mh-clean-message-header-flag nil))
     (mh-show-msg nil)
     (mh-in-show-buffer (mh-show-buffer)
@@ -630,21 +639,26 @@
     (run-hooks 'mh-inc-folder-hook)))
 
 (defun mh-last-msg ()
-  "Move to the last message."
+  "Display last message."
   (interactive)
   (goto-char (point-max))
   (while (and (not (bobp)) (not (looking-at mh-scan-valid-regexp)))
     (forward-line -1))
   (mh-recenter nil))
 
-(defun mh-next-undeleted-msg (&optional arg wait-after-complaining-flag)
-  "Move to the next undeleted message ARG in window.
-If optional argument WAIT-AFTER-COMPLAINING-FLAG is non-nil and we are at the
-last undeleted message then pause for a second after printing message."
+(defun mh-next-undeleted-msg (&optional count wait-after-complaining-flag)
+  "Display next message.
+
+This command can be given a prefix argument COUNT to specify how many unread
+messages to skip.
+
+In a program, pause for a second after printing message if we are at the last
+undeleted message and optional argument WAIT-AFTER-COMPLAINING-FLAG is
+non-nil."
   (interactive "p")
   (setq mh-next-direction 'forward)
   (forward-line 1)
-  (cond ((re-search-forward mh-scan-good-msg-regexp nil t arg)
+  (cond ((re-search-forward mh-scan-good-msg-regexp nil t count)
          (beginning-of-line)
          (mh-maybe-show))
         (t (forward-line -1)
@@ -748,24 +762,27 @@
   (when (looking-at mh-scan-refiled-msg-regexp) (mh-next-msg)))
 
 (defun mh-refile-or-write-again (range &optional interactive-flag)
-  "Re-execute the last refile or write command on the given RANGE.
-Default is the displayed message. Use the same folder or file as the previous
-refile or write command.
-If INTERACTIVE-FLAG is non-nil then the function was called interactively."
+  "Repeat last output command.
+
+If you are refiling several messages into the same folder, you can use this
+command to repeat the last refile or write. Or, you can use a range.
+
+Check the documentation of `mh-interactive-range' to see how RANGE is read in
+interactive use.
+
+In a program, a non-nil INTERACTIVE-FLAG means that the function was called
+interactively."
   (interactive (list (mh-interactive-range "Redo") t))
   (if (null mh-last-destination)
       (error "No previous refile or write"))
-  (let (output)
-    (setq output
-          (cond ((eq (car mh-last-destination) 'refile)
-                 (mh-refile-msg range (cdr mh-last-destination))
-                 (format "Destination folder: %s" (cdr mh-last-destination)))
-                (t
-                 (mh-iterate-on-range msg range
-                   (apply 'mh-write-msg-to-file msg (cdr mh-last-destination)))
-                 (mh-next-msg interactive-flag)
-                 (format "Destination: %s" (cdr mh-last-destination)))))
-    (message "%s" output)))
+  (cond ((eq (car mh-last-destination) 'refile)
+         (mh-refile-msg range (cdr mh-last-destination))
+         (message "%s" (format "Destination folder: %s"
+                               (cdr mh-last-destination))))
+        (t
+         (mh-iterate-on-range msg range
+           (apply 'mh-write-msg-to-file msg (cdr mh-last-destination)))
+         (mh-next-msg interactive-flag))))
 
 (defun mh-quit ()
   "Quit the current MH-E folder.
@@ -795,11 +812,12 @@
       (set-window-configuration mh-previous-window-config))
   (run-hooks 'mh-quit-hook))
 
-(defun mh-page-msg (&optional arg)
-  "Page the displayed message forwards.
-Scrolls ARG lines or a full screen if no argument is supplied. Show buffer
-first if not displayed. Show the next undeleted message if looking at the
-bottom of the current message."
+(defun mh-page-msg (&optional lines)
+  "Display next page in message.
+
+You can give this command a prefix argument that specifies the number of LINES
+to scroll. This command will also show the next undeleted message if it is
+used at the bottom of a message."
   (interactive "P")
   (if mh-showing-mode
       (if mh-page-to-next-msg-flag
@@ -816,32 +834,40 @@
                    "previous"
                  "next"))
               (setq mh-page-to-next-msg-flag t))
-          (scroll-other-window arg)))
+          (scroll-other-window lines)))
     (mh-show)))
 
-(defun mh-previous-page (&optional arg)
-  "Page the displayed message backwards.
-Scrolls ARG lines or a full screen if no argument is supplied."
+(defun mh-previous-page (&optional lines)
+  "Display next page in message.
+
+You can give this command a prefix argument that specifies the number of LINES
+to scroll."
   (interactive "P")
   (mh-in-show-buffer (mh-show-buffer)
-    (scroll-down arg)))
+    (scroll-down lines)))
+
+(defun mh-previous-undeleted-msg (&optional count wait-after-complaining-flag)
+  "Display previous message.
 
-(defun mh-previous-undeleted-msg (&optional arg wait-after-complaining-flag)
-  "Move to the previous undeleted message ARG in window.
-If optional argument WAIT-AFTER-COMPLAINING-FLAG is non-nil and we are at the
-first undeleted message then pause for a second after printing message."
+This command can be given a prefix argument COUNT to specify how many unread
+messages to skip.
+
+In a program, pause for a second after printing message if we are at the last
+undeleted message and optional argument WAIT-AFTER-COMPLAINING-FLAG is
+non-nil."
   (interactive "p")
   (setq mh-next-direction 'backward)
   (beginning-of-line)
-  (cond ((re-search-backward mh-scan-good-msg-regexp nil t arg)
+  (cond ((re-search-backward mh-scan-good-msg-regexp nil t count)
          (mh-maybe-show))
         (t (message "No previous undeleted message")
            (if wait-after-complaining-flag (sit-for 1)))))
 
 (defun mh-previous-unread-msg (&optional count)
-  "Move to previous unread message.
-With optional argument COUNT, COUNT-1 unread messages before current message
-are skipped."
+  "Display previous unread message.
+
+This command can be given a prefix argument COUNT to specify how many unread
+messages to skip."
   (interactive "p")
   (unless (> count 0)
     (error "The function mh-previous-unread-msg expects positive argument"))
@@ -916,11 +942,13 @@
                  (point))))
 
 (defun mh-next-button (&optional backward-flag)
-  "Go to the next MIME button.
-Advance point to the next MIME button in the show buffer. If the end
-of buffer is reached then the search wraps over to the start of the
-buffer. With prefix argument, BACKWARD-FLAG the point will move to the
-previous MIME button."
+  "Go to the next button.
+
+If the end of the buffer is reached then the search wraps over to the start of
+the buffer.
+
+If an optional prefix argument BACKWARD-FLAG is given, the cursor will move to
+the previous button."
   (interactive (list current-prefix-arg))
   (unless mh-showing-mode
     (mh-show))
@@ -928,10 +956,10 @@
     (mh-goto-next-button backward-flag)))
 
 (defun mh-prev-button ()
-  "Go to the prev MIME button.
-Move point to the previous MIME button in the show buffer. If the beginning
-of the buffer is reached then the search wraps over to the end of the
-buffer."
+  "Go to the previous button.
+
+If the beginning of the buffer is reached then the search wraps over to the
+end of the buffer."
   (interactive)
   (mh-next-button t))
 
@@ -969,31 +997,48 @@
                (funcall action)))))))
 
 (defun mh-folder-toggle-mime-part (part-index)
-  "Toggle display of button.
-If point in show buffer is at a button then that part is toggled.
-If not at a button and PART-INDEX is non-nil point is moved to that part.
-With nil PART-INDEX find the first button after point (search wraps around if
-end of buffer is reached) and toggle it."
+  "View attachment.
+
+This command displays (or hides) the attachment associated with the button
+under the cursor. If the cursor is not located over a button, then the cursor
+first moves to the next button, wrapping to the beginning of the message if
+necessary. This command has the advantage over related commands of working
+from the MH-Folder buffer.
+
+You can also provide a numeric prefix argument PART-INDEX to view the
+attachment labeled with that number. If Emacs does not know how to display the
+attachment, then Emacs offers to save the attachment in a file."
   (interactive "P")
   (when (consp part-index) (setq part-index (car part-index)))
   (mh-folder-mime-action part-index #'mh-press-button t))
 
 (defun mh-folder-inline-mime-part (part-index)
-  "Show the raw bytes of MIME part inline.
-If point in show buffer is at a mime part then that part is inlined.
-If not at a mime-part and PART-INDEX is non-nil point is moved to that part.
-With nil PART-INDEX find the first button after point (search wraps around if
-end of buffer is reached) and inline it."
+  "Show attachment verbatim.
+
+You can view the raw contents of an attachment with this command. This command
+displays (or hides) the contents of the attachment associated with the button
+under the cursor verbatim. If the cursor is not located over a button, then
+the cursor first moves to the next button, wrapping to the beginning of the
+message if necessary.
+
+You can also provide a numeric prefix argument PART-INDEX to view the
+attachment labeled with that number."
   (interactive "P")
   (when (consp part-index) (setq part-index (car part-index)))
   (mh-folder-mime-action part-index #'mh-mime-inline-part nil))
 
 (defun mh-folder-save-mime-part (part-index)
-  "Save MIME part.
-If point in show buffer is at a mime part then that part is saved.
-If not at a mime-part and PART-INDEX is non-nil point is moved to that part.
-With nil PART-INDEX find the first button after point (search wraps around if
-end of buffer is reached) and save it."
+  "Save (output) attachment.
+
+This command saves the attachment associated with the button under the cursor.
+If the cursor is not located over a button, then the cursor first moves to the
+next button, wrapping to the beginning of the message if necessary.
+
+You can also provide a numeric prefix argument PART-INDEX to save the
+attachment labeled with that number.
+
+This command prompts you for a filename and suggests a specific name if it is
+available."
   (interactive "P")
   (when (consp part-index) (setq part-index (car part-index)))
   (mh-folder-mime-action part-index #'mh-mime-save-part nil))
@@ -1024,10 +1069,13 @@
     (cond (threaded-flag (mh-toggle-threads))
           (mh-index-data (mh-index-insert-folder-headers)))))
 
-(defun mh-write-msg-to-file (msg file no-headers)
-  "Append MSG to the end of a FILE.
-If prefix argument NO-HEADERS is provided, write only the message body.
-Otherwise send the entire message including the headers."
+(defun mh-write-msg-to-file (message file no-header)
+  "Append MESSAGE to end of FILE\\<mh-folder-mode-map>.
+
+You are prompted for the filename. If the file already exists, the message is
+appended to it. You can also write the message to the file without the header
+by specifying a prefix argument NO-HEADER. Subsequent writes to the same file
+can be made with the command \\[mh-refile-or-write-again]."
   (interactive
    (list (mh-get-msg-num t)
          (let ((default-dir (if (eq 'write (car mh-last-destination-write))
@@ -1041,16 +1089,16 @@
                                (car (cdr mh-last-destination-write))
                              (expand-file-name "mail.out" default-dir))))
          current-prefix-arg))
-  (let ((msg-file-to-output (mh-msg-filename msg))
+  (let ((msg-file-to-output (mh-msg-filename message))
         (output-file (mh-expand-file-name file)))
-    (setq mh-last-destination (list 'write file (if no-headers 'no-headers))
+    (setq mh-last-destination (list 'write file (if no-header 'no-header))
           mh-last-destination-write mh-last-destination)
     (save-excursion
       (set-buffer (get-buffer-create mh-temp-buffer))
       (erase-buffer)
       (insert-file-contents msg-file-to-output)
       (goto-char (point-min))
-      (if no-headers (search-forward "\n\n"))
+      (if no-header (search-forward "\n\n"))
       (append-to-file (point) (point-max) output-file))))
 
 (defun mh-toggle-showing ()
@@ -1346,8 +1394,10 @@
     (mh-previous-undeleted-msg 1 wait-after-complaining-flag)))
 
 (defun mh-next-unread-msg (&optional count)
-  "Move to next unread message.
-With optional argument COUNT, COUNT-1 unread messages are skipped."
+  "Display next unread message.
+
+This command can be given a prefix argument COUNT to specify how many unread
+messages to skip."
   (interactive "p")
   (unless (> count 0)
     (error "The function mh-next-unread-msg expects positive argument"))
@@ -1577,7 +1627,7 @@
 `<num>:+N'
 `<num>:-N'
     Up to N messages beginning with (or ending with) message num. Num may be
-    any of the pre-defined symbols: first, prev, cur, next or last.
+    any of the predefined symbols: first, prev, cur, next or last.
 
 `first:N'
 `prev:N'
@@ -1668,7 +1718,7 @@
       (turn-on-font-lock)))             ; Force font-lock in XEmacs.
 
 (defun mh-toggle-mime-buttons ()
-  "Toggle display of buttons for inline MIME parts."
+  "Toggle option `mh-display-buttons-for-inline-parts-flag'."
   (interactive)
   (setq mh-display-buttons-for-inline-parts-flag
         (not mh-display-buttons-for-inline-parts-flag))
@@ -2475,14 +2525,11 @@
 
 (gnus-define-keys (mh-ps-print-map "P" mh-folder-mode-map)
   "?"           mh-prefix-help
-  "A"           mh-ps-print-toggle-mime
   "C"           mh-ps-print-toggle-color
   "F"           mh-ps-print-toggle-faces
-  "M"           mh-ps-print-toggle-mime
   "f"           mh-ps-print-msg-file
   "l"		mh-print-msg
-  "p"           mh-ps-print-msg
-  "s"           mh-ps-print-msg-show)
+  "p"           mh-ps-print-msg)
 
 (gnus-define-keys (mh-sequence-map "S" mh-folder-mode-map)
   "'"           mh-narrow-to-tick
@@ -2569,9 +2616,8 @@
     (?F "[l]ist; [v]isit folder;\n"
         "[n]ew messages; [']ticked messages; [s]earch; [i]ndexed search;\n"
         "[p]ack; [S]ort; [r]escan; [k]ill")
-    (?P "PS [p]rint message; [l]non-PS print;\n"
-        "PS Print [s]how window, message to [f]ile;\n"
-        "Toggle printing of [M]IME parts, [C]olor, [F]aces")
+    (?P "[p]rint message to [f]ile; old-style [l]pr printing;\n"
+        "Toggle printing of [C]olors, [F]aces")
     (?S "[p]ut message in sequence, [n]arrow, [']narrow to ticked, [w]iden,\n"
         "[s]equences, [l]ist,\n"
         "[d]elete message from sequence, [k]ill sequence")
--- a/lisp/mh-e/mh-funcs.el	Fri Dec 02 04:55:39 2005 +0000
+++ b/lisp/mh-e/mh-funcs.el	Fri Dec 02 05:54:33 2005 +0000
@@ -1,7 +1,7 @@
 ;;; mh-funcs.el --- MH-E functions not everyone will use right away
 
 ;; Copyright (C) 1993, 1995,
-;;  2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+;;  2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Bill Wohler <wohler@newt.com>
 ;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -39,15 +39,6 @@
 (mh-require-cl)
 (require 'mh-e)
 
-;;; Customization
-
-(defvar mh-sortm-args nil
-  "Extra arguments to have \\[mh-sort-folder] pass to the \"sortm\" command.
-The arguments are passed to sortm if \\[mh-sort-folder] is given a
-prefix argument.  Normally default arguments to sortm are specified in the
-MH profile.
-For example, '(\"-nolimit\" \"-textfield\" \"subject\") is a useful setting.")
-
 ;;; Scan Line Formats
 
 (defvar mh-note-copied "C"
@@ -60,9 +51,19 @@
 
 ;;;###mh-autoload
 (defun mh-burst-digest ()
-  "Burst apart the current message, which should be a digest.
-The message is replaced by its table of contents and the messages from the
-digest are inserted into the folder after that message."
+  "Break up digest into separate messages\\<mh-folder-mode-map>.
+
+This command uses the MH command \"burst\" to break out each message in the
+digest into its own message. Using this command, you can quickly delete
+unwanted messages, like this: Once the digest is split up, toggle out of
+MH-Folder Show mode with \\[mh-toggle-showing] so that the scan lines fill the
+screen and messages aren't displayed. Then use \\[mh-delete-msg] to quickly
+delete messages that you don't want to read (based on the \"Subject:\" header
+field). You can also burst the digest to reply directly to the people who
+posted the messages in the digest. One problem you may encounter is that the
+\"From:\" header fields are preceded with a \">\" so that your reply can't
+create the \"To:\" field correctly. In this case, you must correct the \"To:\"
+field yourself."
   (interactive)
   (let ((digest (mh-get-msg-num t)))
     (mh-process-or-undo-commands mh-current-folder)
@@ -186,10 +187,12 @@
   (mh-regenerate-headers range))
 
 ;;;###mh-autoload
-(defun mh-pipe-msg (command include-headers)
-  "Pipe the current message through the given shell COMMAND.
-If INCLUDE-HEADERS (prefix argument) is provided, send the entire message.
-Otherwise just send the message's body without the headers."
+(defun mh-pipe-msg (command include-header)
+  "Pipe message through shell command COMMAND.
+
+You are prompted for the Unix command through which you wish to run your
+message. If you give an argument INCLUDE-HEADER to this command, the message
+header is included in the text passed to the command."
   (interactive
    (list (read-string "Shell command on message: ") current-prefix-arg))
   (let ((msg-file-to-pipe (mh-msg-filename (mh-get-msg-num t)))
@@ -199,13 +202,13 @@
       (erase-buffer)
       (insert-file-contents msg-file-to-pipe)
       (goto-char (point-min))
-      (if (not include-headers) (search-forward "\n\n"))
+      (if (not include-header) (search-forward "\n\n"))
       (let ((default-directory message-directory))
         (shell-command-on-region (point) (point-max) command nil)))))
 
 ;;;###mh-autoload
 (defun mh-page-digest ()
-  "Advance displayed message to next digested message."
+  "Display next message in digest."
   (interactive)
   (mh-in-show-buffer (mh-show-buffer)
     ;; Go to top of screen (in case user moved point).
@@ -222,7 +225,7 @@
 
 ;;;###mh-autoload
 (defun mh-page-digest-backwards ()
-  "Back up displayed message to previous digested message."
+  "Display previous message in digest."
   (interactive)
   (mh-in-show-buffer (mh-show-buffer)
     ;; Go to top of screen (in case user moved point).
@@ -274,10 +277,13 @@
 
 ;;;###mh-autoload
 (defun mh-store-msg (directory)
-  "Store the file(s) contained in the current message into DIRECTORY.
-The message can contain a shar file or uuencoded file.
-Default directory is the last directory used, or initially the value of
-`mh-store-default-directory' or the current directory."
+  "Unpack message created with `uudecode' or `shar'.
+
+The default DIRECTORY for extraction is the current directory; however, you
+have a chance to specify a different extraction directory. The next time you
+use this command, the default directory is the last directory you used. If you
+would like to change the initial default directory, customize the option
+`mh-store-default-directory'."
   (interactive (list (let ((udir (or mh-store-default-directory
                                      default-directory)))
                        (read-file-name "Store message in directory: "
--- a/lisp/mh-e/mh-mime.el	Fri Dec 02 04:55:39 2005 +0000
+++ b/lisp/mh-e/mh-mime.el	Fri Dec 02 05:54:33 2005 +0000
@@ -799,11 +799,15 @@
 Set from last use.")
 
 ;;;###mh-autoload
-(defun mh-mime-save-parts (arg)
-  "Store the MIME parts of the current message.
-If ARG, prompt for directory, else use that specified by the variable
-`mh-mime-save-parts-default-directory'. These directories may be superseded by
-MH profile components, since this function calls on mhstore to do the work."
+(defun mh-mime-save-parts (prompt)
+  "Save attachments.
+
+You can save all of the attachments at once with this command. The attachments
+are saved in the directory specified by the option
+`mh-mime-save-parts-default-directory' unless you use a prefix argument PROMPT
+in which case you are prompted for the directory. These directories may be
+superseded by MH profile components, since this function calls on
+\"mhstore\" (\"mhn\") to do the work."
   (interactive "P")
   (let ((msg (if (eq major-mode 'mh-show-mode)
                  (mh-show-buffer-message-number)
@@ -814,12 +818,12 @@
         (command (if (mh-variant-p 'nmh) "mhstore" "mhn"))
         (directory
          (cond
-          ((and (or arg
+          ((and (or prompt
                     (equal nil mh-mime-save-parts-default-directory)
                     (equal t mh-mime-save-parts-default-directory))
                 (not mh-mime-save-parts-directory))
            (read-file-name "Store in directory: " nil nil t nil))
-          ((and (or arg
+          ((and (or prompt
                     (equal t mh-mime-save-parts-default-directory))
                 mh-mime-save-parts-directory)
            (read-file-name (format
@@ -877,11 +881,13 @@
 
 ;;;###mh-autoload
 (defun mh-toggle-mh-decode-mime-flag ()
-  "Toggle whether MH-E should decode MIME or not."
+  "Toggle the value of `mh-decode-mime-flag'."
   (interactive)
   (setq mh-decode-mime-flag (not mh-decode-mime-flag))
   (mh-show nil t)
-  (message "(setq mh-decode-mime-flag %s)" mh-decode-mime-flag))
+  (message "%s" (if mh-decode-mime-flag
+                    "Processing attachments normally"
+                  "Displaying raw message")))
 
 ;;;###mh-autoload
 (defun mh-decode-message-header ()
@@ -1184,7 +1190,7 @@
                   (goto-char (point-min))
                   (delete-char 1))
                 (when (equal (mm-handle-media-supertype handle) "text")
-                  (when (eq mh-highlight-citation-p 'gnus)
+                  (when (eq mh-highlight-citation-style 'gnus)
                     (mh-gnus-article-highlight-citation))
                   (mh-display-smileys)
                   (mh-display-emphasis)
@@ -1205,9 +1211,10 @@
 
 ;;;###mh-autoload
 (defun mh-press-button ()
-  "Press MIME button.
-If the MIME part is visible then it is removed. Otherwise the part is
-displayed."
+  "View contents of button.
+
+This command is a toggle so if you use it again on the same attachment, the
+attachment is hidden."
   (interactive)
   (let ((mm-inline-media-tests mh-mm-inline-media-tests)
         (data (get-text-property (point) 'mh-data))
@@ -1279,7 +1286,23 @@
 
 ;;;###mh-autoload
 (defun mh-display-with-external-viewer (part-index)
-  "View MIME PART-INDEX externally."
+  "View attachment externally.
+
+If Emacs does not know how to view an attachment, you could save it into a
+file and then run some program to open it. It is easier, however, to launch
+the program directly from MH-E with this command. While you'll most likely use
+this to view spreadsheets and documents, it is also useful to use your browser
+to view HTML attachments with higher fidelity than what Emacs can provide.
+
+This command displays the attachment associated with the button under the
+cursor. If the cursor is not located over a button, then the cursor first
+moves to the next button, wrapping to the beginning of the message if
+necessary. You can provide a numeric prefix argument PART-INDEX to view the
+attachment labeled with that number.
+
+This command tries to provide a reasonable default for the viewer by calling
+the Emacs function `mailcap-mime-info'. This function usually reads the file
+\"/etc/mailcap\"."
   (interactive "P")
   (when (consp part-index) (setq part-index (car part-index)))
   (mh-folder-mime-action
@@ -1290,7 +1313,9 @@
               (methods (mapcar (lambda (x) (list (cdr (assoc 'viewer x))))
                                (mailcap-mime-info type 'all)))
               (def (caar methods))
-              (prompt (format "Viewer: %s" (if def (format "[%s] " def) "")))
+              (prompt (format "Viewer%s: " (if def
+                                               (format " (default %s)" def)
+                                             "")))
               (method (completing-read prompt methods nil nil nil nil def))
               (folder mh-show-folder-buffer)
               (buffer-read-only nil))
@@ -1464,7 +1489,7 @@
         (mh-decode-message-header)
         (mh-show-addr)
         ;; The other highlighting types don't need anything special
-        (when (eq mh-highlight-citation-p 'gnus)
+        (when (eq mh-highlight-citation-style 'gnus)
           (mh-gnus-article-highlight-citation))
         (goto-char (point-min))
         (insert "\n------- Forwarded Message\n\n")
--- a/lisp/mh-e/mh-print.el	Fri Dec 02 04:55:39 2005 +0000
+++ b/lisp/mh-e/mh-print.el	Fri Dec 02 05:54:33 2005 +0000
@@ -25,13 +25,6 @@
 ;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
-;;	Pp	Print to lpr              |   Default inline settings
-;;      Pf      Print to file             |   Generate a postscript file
-;;	Ps	Print show buffer         |   Fails if no show buffer
-;;
-;;	PA	Toggle inline/attachments
-;;	PC	Toggle color
-;;	PF	Toggle faces
 
 ;;; Change Log:
 
@@ -44,125 +37,120 @@
 (require 'mh-funcs)
 (eval-when-compile (require 'mh-seq))
 
-(defvar mh-ps-print-mime nil
-  "Control printing of MIME parts.
-The three possible states are:
-  1. nil to not print inline parts
-  2. t to print inline parts
-  3. non-zero to print inline parts and attachments")
+(defvar mh-ps-print-color-option ps-print-color-p
+  "Specify how buffer's text color is printed.
+
+Valid values are:
 
-(defvar mh-ps-print-color-option ps-print-color-p
-  "MH-E's version of `\\[ps-print-color-p]'.")
+   nil         - Do not print colors.
+   t           - Print colors.
+   black-white - Print colors on black/white printer.
+		 See also `ps-black-white-faces'.
+
+Any other value is treated as t. This variable is initialized from
+`ps-print-color-p'.")
 
 (defvar mh-ps-print-func 'ps-spool-buffer-with-faces
   "Function to use to spool a buffer.
+
 Sensible choices are the functions `ps-spool-buffer' and
 `ps-spool-buffer-with-faces'.")
 
-;; XXX - If buffer is already being displayed, use that buffer
-;; XXX - What about showing MIME content?
-;; XXX - Default print buffer is bogus
 (defun mh-ps-spool-buffer (buffer)
-  "Send BUFFER to printer queue."
+  "Spool BUFFER."
   (save-excursion
     (set-buffer buffer)
     (let ((ps-print-color-p mh-ps-print-color-option)
-      (ps-left-header
-       (list
-	(concat "("
-		(mh-get-header-field "Subject:") ")")
-	(concat "("
-		(mh-get-header-field "From:") ")")))
-      (ps-right-header
-       (list
-	"/pagenumberstring load"
-	(concat "("
-		(mh-get-header-field "Date:") ")"))))
-    (funcall mh-ps-print-func))))
+          (ps-left-header
+           (list
+            (concat "(" (mh-get-header-field "Subject:") ")")
+            (concat "(" (mh-get-header-field "From:") ")")))
+          (ps-right-header
+           (list
+            "/pagenumberstring load"
+            (concat "(" (mh-get-header-field "Date:") ")"))))
+      (funcall mh-ps-print-func))))
 
-(defun mh-ps-spool-a-msg (msg buffer)
-  "Print MSG.
-First the message is decoded in BUFFER before the results are sent to the
-printer."
-  (let ((mh-show-buffer mh-show-buffer)
-	(folder mh-current-folder)
-        ;; The following is commented out because
-        ;; `clean-message-header-flag' isn't used anywhere. I
-        ;; commented rather than deleted in case somebody had some
-        ;; future plans for it. --SY.
-	;(clean-message-header-flag mh-clean-message-header-flag)
-        )
+(defun mh-ps-spool-msg (msg)
+  "Spool MSG."
+  (let* ((folder mh-current-folder)
+         (buffer (mh-in-show-buffer (mh-show-buffer)
+                   (if (not (equal (mh-msg-filename msg folder)
+                                   buffer-file-name))
+                       (get-buffer-create mh-temp-buffer)))))
     (unwind-protect
-	(progn
-	  (setq mh-show-buffer buffer)
-	  (save-excursion
-	    ;;
-	    ;; XXX - Use setting of mh-ps-print-mime
-	    ;;
-	    (mh-display-msg msg folder)
-	    (mh-ps-spool-buffer mh-show-buffer)
-      (kill-buffer mh-show-buffer))))))
+        (save-excursion
+          (if buffer
+              (let ((mh-show-buffer buffer))
+                (mh-display-msg msg folder)))
+          (mh-ps-spool-buffer (if buffer buffer mh-show-buffer)))
+      (if buffer
+          (kill-buffer buffer)))))
+
+(defun mh-ps-print-range (range file)
+  "Print the messages in RANGE to FILE.
+This is the function that actually does the work.
+If FILE is nil, then the messages are spooled to the printer."
+  (mh-iterate-on-range msg range
+    (unwind-protect
+        (mh-ps-spool-msg msg))
+    (mh-notate msg mh-note-printed mh-cmd-note))
+  (ps-despool file))
+
+(defun mh-ps-print-preprint (prefix-arg)
+  "Provide a better default file name for `ps-print-preprint'.
+Pass along the PREFIX-ARG to it."
+  (let ((buffer-file-name (format "mh-%s" (substring (buffer-name) 1))))
+    (ps-print-preprint prefix-arg)))
 
 ;;;###mh-autoload
 (defun mh-ps-print-msg (range)
-  "Print the messages in RANGE.
-
-Check the documentation of `mh-interactive-range' to see how RANGE is read in
-interactive use."
-  (interactive (list (mh-interactive-range "Print")))
-  (mh-iterate-on-range msg range
-    (let ((buffer (get-buffer-create mh-temp-buffer)))
-      (unwind-protect
-	  (mh-ps-spool-a-msg msg buffer)
-	(kill-buffer buffer)))
-    (mh-notate nil mh-note-printed mh-cmd-note))
-  (ps-despool nil))
-
-(defun mh-ps-print-preprint (prefix-arg)
-  "Replacement for `ps-print-preprint'.
-The original function does not handle the fact that MH folders are directories
-nicely, when generating the default file name. This function works around
-that. The function is passed the interactive PREFIX-ARG."
-  (let ((buffer-file-name (format "/tmp/%s" (substring (buffer-name) 1))))
-    (ps-print-preprint prefix-arg)))
-
-;;;###mh-autoload
-(defun mh-ps-print-msg-file (file range)
-  "Print to FILE the messages in RANGE.
+  "Print the messages in RANGE\\<mh-folder-mode-map>.
 
 Check the documentation of `mh-interactive-range' to see how RANGE is read in
-interactive use."
-  (interactive (list
-		(mh-ps-print-preprint 1)
-		(mh-interactive-range "Print")))
-  (mh-iterate-on-range msg range
-    (let ((buffer (get-buffer-create mh-temp-buffer)))
-      (unwind-protect
-	  (mh-ps-spool-a-msg msg buffer)
-	(kill-buffer buffer)))
-    (mh-notate nil mh-note-printed mh-cmd-note))
-  (ps-despool file))
+interactive use.
+
+This command will print inline text attachments but will not decrypt messages.
+However, when a message is displayed in an MH-Show buffer, then that buffer is
+used verbatim for printing with the caveat that only text attachments, if
+opened inline, are printed. Therefore, encrypted messages can be printed by
+showing and decrypting them first.
+
+MH-E uses the \"ps-print\" package to do the printing, so you can customize
+the printing further by going to the `ps-print' customization group. This
+command does not use the options `mh-lpr-command-format' or
+`mh-print-background-flag'. See also the commands \\[mh-ps-print-toggle-color]
+and \\[mh-ps-print-toggle-faces]."
+  (interactive (list (mh-interactive-range "Print")))
+  (mh-ps-print-range range nil))
 
 ;;;###mh-autoload
-(defun mh-ps-print-msg-show (file)
-  "Print current show buffer to FILE."
-  (interactive (list (mh-ps-print-preprint current-prefix-arg)))
-  (let ((msg (mh-get-msg-num t))
-        (folder mh-current-folder)
-        (show-buffer mh-show-buffer)
-        (show-window (get-buffer-window mh-show-buffer)))
-    (if (and show-buffer show-window)
-	(mh-in-show-buffer (show-buffer)
-	  (if (equal (mh-msg-filename msg folder) buffer-file-name)
-	      (progn
-		(mh-ps-spool-buffer show-buffer)
-		(ps-despool file))
-	    (message "Current message is not being shown(1)")))
-      (message "Current message is not being shown(2)"))))
+(defun mh-ps-print-msg-file (range file)
+  "Print the messages in RANGE to FILE\\<mh-folder-mode-map>.
+
+Check the documentation of `mh-interactive-range' to see how RANGE is read in
+interactive use.
+
+This command will print inline text attachments but will not decrypt messages.
+However, when a message is displayed in an MH-Show buffer, then that buffer is
+used verbatim for printing with the caveat that only text attachments, if
+opened inline, are printed. Therefore, encrypted messages can be printed by
+showing and decrypting them first.
+
+MH-E uses the \"ps-print\" package to do the printing, so you can customize
+the printing further by going to the `ps-print' customization group. This
+command does not use the options `mh-lpr-command-format' or
+`mh-print-background-flag'. See also the commands \\[mh-ps-print-toggle-color]
+and \\[mh-ps-print-toggle-faces]."
+  (interactive (list (mh-interactive-range "Print") (mh-ps-print-preprint 1)))
+  (mh-ps-print-range range file))
 
 ;;;###mh-autoload
 (defun mh-ps-print-toggle-faces ()
- "Toggle whether printing is done with faces or not."
+ "Toggle whether printing is done with faces or not.
+
+When faces are enabled, the printed message will look very similar to the
+message in the MH-Show buffer."
  (interactive)
  (if (eq mh-ps-print-func 'ps-spool-buffer-with-faces)
      (progn
@@ -173,7 +161,15 @@
 
 ;;;###mh-autoload
 (defun mh-ps-print-toggle-color ()
-  "Toggle whether color is used in printing messages."
+  "Toggle whether color is used in printing messages.
+
+Colors are emulated on black-and-white printers with shades of gray. This
+might produce illegible output, even if your screen colors only use shades of
+gray. If this is the case, try using this command to toggle between color, no
+color, and a black and white representation of the colors and see which works
+best. You change this setting permanently by customizing the option
+`ps-print-color-p'."
+
  (interactive)
  (if (eq mh-ps-print-color-option nil)
      (progn
@@ -186,36 +182,18 @@
      (setq mh-ps-print-color-option nil)
      (message "Colors will not be printed"))))
 
-;;; XXX: Check option 3. Documentation doesn't sound right.
-;;;###mh-autoload
-(defun mh-ps-print-toggle-mime ()
-  "Cycle through available choices on how MIME parts should be printed.
-The available settings are:
-  1. Print only inline MIME parts.
-  2. Print all MIME parts.
-  3. Print no MIME parts."
-  (interactive)
-  (if (eq mh-ps-print-mime nil)
-      (progn
-        (setq mh-ps-print-mime t)
-        (message "Inline parts will be printed, attachments will not be printed"))
-    (if (eq mh-ps-print-mime t)
-        (progn
-          (setq mh-ps-print-mime 1)
-          (message "Both Inline parts and attachments will be printed"))
-      (setq mh-ps-print-mime nil)
-      (message "Neither inline parts nor attachments will be printed"))))
-
 ;;; Old non-PS based printing
 ;;;###mh-autoload
 (defun mh-print-msg (range)
-  "Print RANGE on printer.
+  "Print the messages in RANGE the old fashioned way\\<mh-folder-mode-map>.
+
+The message is formatted with \"mhl\" (see option `mh-mhl-format-file') and
+printed with the \"lpr\" command (see option `mh-lpr-command-format').
 
 Check the documentation of `mh-interactive-range' to see how RANGE is read in
 interactive use.
 
-The variable `mh-lpr-command-format' is used to generate the print command.
-The messages are formatted by mhl. See the variable `mhl-formfile'."
+Consider using \\[mh-ps-print-msg] instead."
   (interactive (list (mh-interactive-range "Print")))
   (message "Printing...")
   (let (msgs)
@@ -247,8 +225,8 @@
     (dolist (msg msgs)
       (let* ((mhl-command (format "%s %s %s"
                                   (expand-file-name "mhl" mh-lib-progs)
-                                  (if mhl-formfile
-                                      (format " -form %s" mhl-formfile)
+                                  (if mh-mhl-format-file
+                                      (format " -form %s" mh-mhl-format-file)
                                     "")
                                   (mh-msg-filename msg)))
              (lpr-command
--- a/lisp/mh-e/mh-utils.el	Fri Dec 02 04:55:39 2005 +0000
+++ b/lisp/mh-e/mh-utils.el	Fri Dec 02 05:54:33 2005 +0000
@@ -1,4 +1,4 @@
-;;; mh-utils.el --- MH-E code needed for both sending and reading
+\;;; mh-utils.el --- MH-E code needed for both sending and reading
 
 ;; Copyright (C) 1993, 1995, 1997,
 ;;  2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
@@ -414,10 +414,11 @@
 
 (defun mh-show-font-lock-fontify-region (beg end loudly)
   "Limit font-lock in `mh-show-mode' to the header.
-Used when `mh-highlight-citation-p' is set to \"'gnus\", leaving the body to
-be dealt with by gnus highlighting. The region between BEG and END is given
-over to be fontified and LOUDLY controls if a user sees a message about the
-fontification operation."
+
+Used when the option `mh-highlight-citation-style' is set to \"Gnus\", leaving
+the body to be dealt with by Gnus highlighting. The region between BEG and END
+is given over to be fontified and LOUDLY controls if a user sees a message
+about the fontification operation."
   (let ((header-end (mh-mail-header-end)))
     (cond
      ((and (< beg header-end)(< end header-end))
@@ -874,12 +875,10 @@
 (mh-defun-show-buffer mh-show-index-sequenced-messages
                       mh-index-sequenced-messages)
 (mh-defun-show-buffer mh-show-catchup mh-catchup)
-(mh-defun-show-buffer mh-show-ps-print-toggle-mime mh-ps-print-toggle-mime)
 (mh-defun-show-buffer mh-show-ps-print-toggle-color mh-ps-print-toggle-color)
 (mh-defun-show-buffer mh-show-ps-print-toggle-faces mh-ps-print-toggle-faces)
 (mh-defun-show-buffer mh-show-ps-print-msg-file mh-ps-print-msg-file)
 (mh-defun-show-buffer mh-show-ps-print-msg mh-ps-print-msg)
-(mh-defun-show-buffer mh-show-ps-print-msg-show mh-ps-print-msg-show)
 (mh-defun-show-buffer mh-show-toggle-mime-buttons mh-toggle-mime-buttons)
 (mh-defun-show-buffer mh-show-display-with-external-viewer
                       mh-display-with-external-viewer)
@@ -962,14 +961,11 @@
 
 (gnus-define-keys (mh-show-ps-print-map "P" mh-show-mode-map)
   "?"	mh-prefix-help
-  "A"	mh-show-ps-print-toggle-mime
   "C"	mh-show-ps-print-toggle-color
   "F"	mh-show-ps-print-toggle-faces
-  "M"	mh-show-ps-print-toggle-mime
   "f"	mh-show-ps-print-msg-file
   "l"   mh-show-print-msg
-  "p"	mh-show-ps-print-msg
-  "s"	mh-show-ps-print-msg-show)
+  "p"	mh-show-ps-print-msg)
 
 (gnus-define-keys (mh-show-thread-map "T" mh-show-mode-map)
   "?"    mh-prefix-help
@@ -1110,9 +1106,9 @@
   (make-local-variable 'font-lock-defaults)
   ;;(set (make-local-variable 'font-lock-support-mode) nil)
   (cond
-   ((equal mh-highlight-citation-p 'font-lock)
+   ((equal mh-highlight-citation-style 'font-lock)
     (setq font-lock-defaults '(mh-show-font-lock-keywords-with-cite t)))
-   ((equal mh-highlight-citation-p 'gnus)
+   ((equal mh-highlight-citation-style 'gnus)
     (setq font-lock-defaults '((mh-show-font-lock-keywords)
                                t nil nil nil
                                (font-lock-fontify-region-function
@@ -1258,7 +1254,7 @@
 (defun mh-show-xface ()
   "Display X-Face."
   (when (and window-system mh-show-use-xface-flag
-             (or mh-decode-mime-flag mhl-formfile
+             (or mh-decode-mime-flag mh-mhl-format-file
                  mh-clean-message-header-flag))
     (funcall mh-show-xface-function)))
 
@@ -1560,24 +1556,24 @@
   (if mh-showing-mode (mh-show msg)))
 
 (defun mh-show (&optional message redisplay-flag)
-  "Show message at cursor.
-If optional argument MESSAGE is non-nil, display that message instead.
-Force a two-window display with the folder window on top (size given by the
-variable `mh-summary-height') and the show buffer below it.
-If the message is already visible, display the start of the message.
+  "Display message\\<mh-folder-mode-map>.
+
+If the message under the cursor is already displayed, this command scrolls to
+the beginning of the message. MH-E normally hides a lot of the superfluous
+header fields that mailers add to a message, but if you wish to see all of
+them, use the command \\[mh-header-display].
 
-If REDISPLAY-FLAG is non-nil, the default when called interactively, the
-message is redisplayed even if the show buffer was already displaying the
-correct message.
+From a program, optional argument MESSAGE can be used to display an
+alternative message. The optional argument REDISPLAY-FLAG forces the redisplay
+of the message even if the show buffer was already displaying the correct
+message.
 
-Display of the message is controlled by setting the variables
-`mh-clean-message-header-flag' and `mhl-formfile'.  The default behavior is
-to scroll uninteresting headers off the top of the window.
-Type \"\\[mh-header-display]\" to see the message with all its headers."
+See the \"mh-show\" customization group for a litany of options that control
+what displayed messages look like."
   (interactive (list nil t))
   (when (or redisplay-flag
             (and mh-showing-with-headers
-                 (or mhl-formfile mh-clean-message-header-flag)))
+                 (or mh-mhl-format-file mh-clean-message-header-flag)))
     (mh-invalidate-show-buffer))
   (mh-show-msg message))
 
@@ -1639,13 +1635,14 @@
     (run-hooks 'mh-show-hook)))
 
 (defun mh-modify (&optional message)
-  "Edit message at cursor.
-If optional argument MESSAGE is non-nil, edit that message instead.
-Force a two-window display with the folder window on top (size given by the
-value of the variable `mh-summary-height') and the message editing buffer below
-it.
+  "Edit message.
 
-The message is displayed in raw form."
+There are times when you need to edit a message. For example, you may need to
+fix a broken Content-Type header field. You can do this with this command. It
+displays the raw message in an editable buffer. When you are done editing,
+save and kill the buffer as you would any other.
+
+From a program, edit MESSAGE instead if it is non-nil."
   (interactive)
   (let* ((message (or message (mh-get-msg-num t)))
          (msg-filename (mh-msg-filename message))
@@ -1700,7 +1697,7 @@
     (unless (mh-buffer-data)
       (setf (mh-buffer-data) (mh-make-buffer-data)))
     ;; Bind variables in folder buffer in case they are local
-    (let ((formfile mhl-formfile)
+    (let ((formfile mh-mhl-format-file)
           (clean-message-header mh-clean-message-header-flag)
           (invisible-headers mh-invisible-header-fields-compiled)
           (visible-headers nil)
@@ -1849,11 +1846,15 @@
               (mh-thread-update-scan-line-map msg notation offset)))))))
 
 (defun mh-goto-msg (number &optional no-error-if-no-message dont-show)
-  "Position the cursor at message NUMBER.
-Optional non-nil second argument NO-ERROR-IF-NO-MESSAGE means return nil
-instead of signaling an error if message does not exist; in this case, the
-cursor is positioned near where the message would have been.
-Non-nil third argument DONT-SHOW means not to show the message."
+  "Go to a message\\<mh-folder-mode-map>.
+
+You can enter the message NUMBER either before or after typing
+\\[mh-goto-msg]. In the latter case, Emacs prompts you.
+
+In a program, optional non-nil second argument NO-ERROR-IF-NO-MESSAGE means
+return nil instead of signaling an error if message does not exist\; in this
+case, the cursor is positioned near where the message would have been. Non-nil
+third argument DONT-SHOW means not to show the message."
   (interactive "NGo to message: ")
   (setq number (prefix-numeric-value number))
   (let ((point (point))