changeset 66354:cf99ce27df54

* mh-comp.el (mh-letter-menu): Rename mh-mhn-compose-external-compressed-tar to mh-mh-compose-external-compressed-tar. Rename mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename mh-edit-mhn to mh-mh-to-mime. Rename mh-mhn-directive-present-p to mh-mh-directive-present-p. Rename mh-revert-mhn-edit to mh-mh-to-mime-undo. Rename mh-gnus-pgp-support-flag to mh-pgp-support-flag. Rename mh-compose-insertion value from 'mhn to 'mh. (mh-insert-signature): Rename mh-mhn-directive-present-p to mh-mh-directive-present-p. (mh-send-letter): Rename mh-mhn-directive-present-p to mh-mh-directive-present-p. Rename mh-edit-mhn to mh-mh-to-mime. (mh-letter-mode-map): Rename mh-edit-mhn to mh-mh-to-mime. Rename mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename mh-mhn-compose-external-compressed-tar to mh-mh-compose-external-compressed-tar. Rename mh-revert-mhn-edit to mh-mh-to-mime-undo. Rename mh-mhn-compose-external-type to mh-mh-compose-external-type. Rename mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename mh-mhn-compose-external-compressed-tar to mh-mh-compose-external-compressed-tar. Rename mh-revert-mhn-edit to mh-mh-to-mime-undo. Rename mh-mhn-compose-external-type to mh-mh-compose-external-type. (mh-send-letter, mh-letter-mode-map): Rename mh-edit-mhn to mh-mh-to-mime, mh-revert-mhn-edit to mh-mh-to-mime-undo. (mh-reply, mh-yank-cur-msg, mh-insert-prefix-string): Rename mh-yank-from-start-of-msg to mh-yank-behavior. (mh-letter-mode, mh-to-field, mh-to-fcc, mh-insert-signature) (mh-check-whom, mh-insert-auto-fields, mh-send-letter) (mh-insert-letter, mh-yank-cur-msg, mh-insert-prefix-string) (mh-fully-kill-draft, mh-open-line, mh-letter-complete) (mh-letter-complete-or-space, mh-letter-confirm-address) (mh-letter-next-header-field-or-indent) (mh-letter-previous-header-field) (mh-letter-toggle-header-field-display): Sync docstrings with manual. * mh-customize.el (mh-edit-mhn-hook): Rename to mh-mh-to-mime-hook. (mh-yank-from-start-of-msg): Rename to mh-yank-behavior. (mh-compose-insertion): Rename values from 'gnus and 'mhn to 'mh and user-visible values from mhn and Gnus to MH and MML. (mh-before-send-letter-hook): Added 'ispell-message option. (mh-mml-method-default): Rename mh-gnus-pgp-support-flag to mh-pgp-support-flag. (mh-compose-insertion, mh-compose-space-does-completion-flag) (mh-delete-yanked-msg-window-flag) (mh-extract-from-attribution-verb, mh-ins-buf-prefix) (mh-letter-complete-function, mh-letter-fill-column) (mh-mml-method-default, mh-signature-file-name) (mh-signature-separator-flag, mh-x-face-file) (mh-yank-behavior, mail-citation-hook) (mh-before-send-letter-hook, mh-mh-to-mime-hook): Sync docstrings with manual. * mh-gnus.el (mml-minibuffer-read-disposition): New function provided for Emacs 21 environments that lack it. * mh-mime.el (mh-mml-query-cryptographic-method): Use default prompt convention. (mh-compose-forward): mh-mh-forward-message requires string arg. (mh-minibuffer-read-type): New function. (mh-mhn-args): Rename to mh-mh-to-mime-args. (mh-mhn-compose-insertion): Rename to mh-mh-attach-file. (mh-mhn-compose-forw): Rename to mh-mh-forward-message. (mh-mhn-compose-type): Rename to mh-mh-compose-type. (mh-mhn-compose-anon-ftp): Rename to mh-mh-compose-anon-ftp. Rename mh-mhn-compose-external-type to mh-mh-compose-external-type. (mh-mhn-compose-external-compressed-tar): Rename to mh-mh-compose-external-compressed-tar. Rename mh-mhn-compose-external-type to mh-mh-compose-external-type. (mh-mhn-compose-external-type): Rename to mh-mh-compose-external-type. (mh-edit-mhn): Rename to mh-mh-to-mime. Rename mh-mhn-args to mh-mh-to-mime-args. Rename mh-edit-mhn-hook to mh-mh-to-mime-hook. Use correct program in message. (mh-mhn-directive-present-p): Rename to mh-mh-directive-present-p. (mh-mml-directive-present-p): Rename to mh-mml-tag-present-p. (mh-compose-forward, mh-mh-attach-file) (mh-mh-compose-anon-ftp, mh-mh-compose-external-compressed-tar) (mh-mh-compose-external-type, mh-mh-forward-message) (mh-mml-attach-file): Use mml-minibuffer-read-description, mh-minibuffer-read-type. (mh-mime-content-types): Moved comment about only being used in Emacs 20 to docstring. (mh-mh-compose-external-type): Rename extra-param argument to parameters. (mh-mml-to-mime, mh-secure-message) (mh-mml-unsecure-message, mh-mime-display-part) (mh-mime-display-single): Rename mh-gnus-pgp-support-flag to mh-pgp-support-flag. (mh-compose-insertion): Rename mh-mhn-compose-insertion to mh-mh-attach-file. (mh-compose-forward): Rename mh-mhn-compose-forw to mh-mh-forward-message. (mh-mhn-compose-insertion): Rename mh-mhn-compose-type to mh-mh-compose-type. (mh-compose-insertion, mh-compose-forward, mh-mh-to-mime-args) (mh-mh-attach-file, mh-mh-compose-type) (mh-mh-compose-anon-ftp, mh-mh-compose-external-compressed-tar) (mh-mh-compose-external-compressed-tar) (mh-mh-compose-external-type, mh-mh-forward-message) (mh-mh-to-mime, mh-mh-quote-unescaped-sharp, (mh-mh-to-mime-undo, mh-mh-directive-present-p, mh-mml-to-mime) (mh-mml-attach-file, mh-secure-message, mh-mml-unsecure-message) (mh-mml-secure-message-sign, mh-mml-secure-message-encrypt) (mh-mml-directive-present-p, mh-destroy-postponed-handles) (mh-display-smileys, mh-display-emphasis, mh-mime-save-parts): Sync docstrings with manual. * mh-utils.el (mh-gnus-pgp-support-flag): Rename to mh-pgp-support-flag.
author Bill Wohler <wohler@newt.com>
date Sun, 23 Oct 2005 21:26:17 +0000
parents e81cb0b6850a
children c0d59eaed181
files lisp/mh-e/ChangeLog lisp/mh-e/mh-comp.el lisp/mh-e/mh-customize.el lisp/mh-e/mh-gnus.el lisp/mh-e/mh-mime.el lisp/mh-e/mh-utils.el
diffstat 6 files changed, 619 insertions(+), 429 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mh-e/ChangeLog	Sun Oct 23 21:12:46 2005 +0000
+++ b/lisp/mh-e/ChangeLog	Sun Oct 23 21:26:17 2005 +0000
@@ -1,3 +1,120 @@
+2005-10-23  Bill Wohler  <wohler@newt.com>
+
+	* mh-comp.el (mh-letter-menu): Rename
+	mh-mhn-compose-external-compressed-tar to
+	mh-mh-compose-external-compressed-tar. Rename
+	mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename
+	mh-edit-mhn to mh-mh-to-mime. Rename mh-mhn-directive-present-p to
+	mh-mh-directive-present-p. Rename mh-revert-mhn-edit to
+	mh-mh-to-mime-undo. Rename mh-gnus-pgp-support-flag to
+	mh-pgp-support-flag. Rename mh-compose-insertion value from 'mhn
+	to 'mh.
+	(mh-insert-signature): Rename mh-mhn-directive-present-p to
+	mh-mh-directive-present-p.
+	(mh-send-letter): Rename mh-mhn-directive-present-p to
+	mh-mh-directive-present-p. Rename mh-edit-mhn to mh-mh-to-mime.
+	(mh-letter-mode-map): Rename mh-edit-mhn to mh-mh-to-mime. Rename
+	mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename
+	mh-mhn-compose-external-compressed-tar to
+	mh-mh-compose-external-compressed-tar. Rename mh-revert-mhn-edit
+	to mh-mh-to-mime-undo. Rename mh-mhn-compose-external-type to
+	mh-mh-compose-external-type. Rename mh-mhn-compose-anon-ftp to
+	mh-mh-compose-anon-ftp. Rename
+	mh-mhn-compose-external-compressed-tar to
+	mh-mh-compose-external-compressed-tar. Rename mh-revert-mhn-edit
+	to mh-mh-to-mime-undo. Rename mh-mhn-compose-external-type to
+	mh-mh-compose-external-type.
+	(mh-send-letter, mh-letter-mode-map): Rename mh-edit-mhn to
+	mh-mh-to-mime, mh-revert-mhn-edit to mh-mh-to-mime-undo.
+	(mh-reply, mh-yank-cur-msg, mh-insert-prefix-string): Rename
+	mh-yank-from-start-of-msg to mh-yank-behavior.
+	(mh-letter-mode, mh-to-field, mh-to-fcc, mh-insert-signature)
+	(mh-check-whom, mh-insert-auto-fields, mh-send-letter)
+	(mh-insert-letter, mh-yank-cur-msg, mh-insert-prefix-string)
+	(mh-fully-kill-draft, mh-open-line, mh-letter-complete)
+	(mh-letter-complete-or-space, mh-letter-confirm-address)
+	(mh-letter-next-header-field-or-indent)
+	(mh-letter-previous-header-field)
+	(mh-letter-toggle-header-field-display): Sync docstrings with
+	manual.
+
+	* mh-customize.el (mh-edit-mhn-hook): Rename to
+	mh-mh-to-mime-hook.
+	(mh-yank-from-start-of-msg): Rename to mh-yank-behavior.
+	(mh-compose-insertion): Rename values from 'gnus and 'mhn to 'mh
+	and user-visible values from mhn and Gnus to MH and MML.
+	(mh-before-send-letter-hook): Added 'ispell-message option.
+	(mh-mml-method-default): Rename mh-gnus-pgp-support-flag to
+	mh-pgp-support-flag.
+	(mh-compose-insertion, mh-compose-space-does-completion-flag)
+	(mh-delete-yanked-msg-window-flag)
+	(mh-extract-from-attribution-verb, mh-ins-buf-prefix)
+	(mh-letter-complete-function, mh-letter-fill-column)
+	(mh-mml-method-default, mh-signature-file-name)
+	(mh-signature-separator-flag, mh-x-face-file)
+	(mh-yank-behavior, mail-citation-hook)
+	(mh-before-send-letter-hook, mh-mh-to-mime-hook): Sync docstrings
+	with manual.
+
+	* mh-gnus.el (mml-minibuffer-read-disposition): New function
+	provided for Emacs 21 environments that lack it.
+
+	* mh-mime.el (mh-mml-query-cryptographic-method): Use default
+	prompt convention.
+	(mh-compose-forward): mh-mh-forward-message requires string arg.
+	(mh-minibuffer-read-type): New function.
+	(mh-mhn-args): Rename to mh-mh-to-mime-args.
+	(mh-mhn-compose-insertion): Rename to mh-mh-attach-file.
+	(mh-mhn-compose-forw): Rename to mh-mh-forward-message.
+	(mh-mhn-compose-type): Rename to mh-mh-compose-type.
+	(mh-mhn-compose-anon-ftp): Rename to mh-mh-compose-anon-ftp.
+	Rename mh-mhn-compose-external-type to
+	mh-mh-compose-external-type.
+	(mh-mhn-compose-external-compressed-tar): Rename to
+	mh-mh-compose-external-compressed-tar. Rename
+	mh-mhn-compose-external-type to mh-mh-compose-external-type.
+	(mh-mhn-compose-external-type): Rename to
+	mh-mh-compose-external-type.
+	(mh-edit-mhn): Rename to mh-mh-to-mime. Rename mh-mhn-args to
+	mh-mh-to-mime-args. Rename mh-edit-mhn-hook to mh-mh-to-mime-hook.
+	Use correct program in message.
+	(mh-mhn-directive-present-p): Rename to mh-mh-directive-present-p.
+	(mh-mml-directive-present-p): Rename to mh-mml-tag-present-p.
+	(mh-compose-forward, mh-mh-attach-file)
+	(mh-mh-compose-anon-ftp, mh-mh-compose-external-compressed-tar)
+	(mh-mh-compose-external-type, mh-mh-forward-message)
+	(mh-mml-attach-file): Use mml-minibuffer-read-description,
+	mh-minibuffer-read-type.
+	(mh-mime-content-types): Moved comment about only being used in
+	Emacs 20 to docstring.
+	(mh-mh-compose-external-type): Rename extra-param argument to
+	parameters.
+	(mh-mml-to-mime, mh-secure-message)
+	(mh-mml-unsecure-message, mh-mime-display-part)
+	(mh-mime-display-single): Rename mh-gnus-pgp-support-flag to
+	mh-pgp-support-flag.
+	(mh-compose-insertion): Rename mh-mhn-compose-insertion to
+	mh-mh-attach-file.
+	(mh-compose-forward): Rename mh-mhn-compose-forw to
+	mh-mh-forward-message.
+	(mh-mhn-compose-insertion): Rename mh-mhn-compose-type to
+	mh-mh-compose-type.
+	(mh-compose-insertion, mh-compose-forward, mh-mh-to-mime-args)
+	(mh-mh-attach-file, mh-mh-compose-type)
+	(mh-mh-compose-anon-ftp, mh-mh-compose-external-compressed-tar)
+	(mh-mh-compose-external-compressed-tar)
+	(mh-mh-compose-external-type, mh-mh-forward-message)
+	(mh-mh-to-mime, mh-mh-quote-unescaped-sharp,
+	(mh-mh-to-mime-undo, mh-mh-directive-present-p, mh-mml-to-mime)
+	(mh-mml-attach-file, mh-secure-message, mh-mml-unsecure-message)
+	(mh-mml-secure-message-sign, mh-mml-secure-message-encrypt)
+	(mh-mml-directive-present-p, mh-destroy-postponed-handles)
+	(mh-display-smileys, mh-display-emphasis, mh-mime-save-parts):
+	Sync docstrings with manual.
+
+	* mh-utils.el (mh-gnus-pgp-support-flag): Rename to
+	mh-pgp-support-flag.
+
 2005-10-17  Peter S Galbraith  <psg@debian.org>
 
 	* mh-identity.el (mh-identity-field-handler): Use
--- a/lisp/mh-e/mh-comp.el	Sun Oct 23 21:12:46 2005 +0000
+++ b/lisp/mh-e/mh-comp.el	Sun Oct 23 21:26:17 2005 +0000
@@ -350,8 +350,8 @@
              (mh-forwarded-letter-subject orig-from orig-subject)))
         (mh-insert-fields "Subject:" forw-subject)
         (goto-char (point-min))
-        ;; If using MML, translate mhn
-        (if (equal mh-compose-insertion 'gnus)
+        ;; If using MML, translate MH-style directive
+        (if (equal mh-compose-insertion 'mml)
             (save-excursion
               (goto-char (mh-mail-header-end))
               (while
@@ -527,8 +527,8 @@
                        (group-reply (if (mh-variant-p 'nmh 'mu-mh)
                                         '("-group" "-nocc" "me")
                                       '("-cc" "all" "-nocc" "me"))))
-                 (cond ((or (eq mh-yank-from-start-of-msg 'autosupercite)
-                            (eq mh-yank-from-start-of-msg 'autoattrib))
+                 (cond ((or (eq mh-yank-behavior 'autosupercite)
+                            (eq mh-yank-behavior 'autoattrib))
                         '("-noformat"))
                        (includep '("-filter" "mhl.reply"))
                        (t '())))
@@ -551,8 +551,8 @@
         (message "Composing a reply...done")
         (mh-compose-and-send-mail draft "" folder message to subject cc
                                   mh-note-repl "Replied:" config))
-      (when (and (or (eq 'autosupercite mh-yank-from-start-of-msg)
-                     (eq 'autoattrib mh-yank-from-start-of-msg))
+      (when (and (or (eq 'autosupercite mh-yank-behavior)
+                     (eq 'autoattrib mh-yank-behavior))
                  (eq (mh-show-buffer-message-number) mh-sent-from-msg))
         (undo-boundary)
         (mh-yank-cur-msg))
@@ -788,13 +788,13 @@
     ["Insert Signature"         mh-insert-signature t]
     ("Encrypt/Sign Message"
      ["Sign Message"
-      mh-mml-secure-message-sign mh-gnus-pgp-support-flag]
+      mh-mml-secure-message-sign mh-pgp-support-flag]
      ["Encrypt Message"
-      mh-mml-secure-message-encrypt mh-gnus-pgp-support-flag]
+      mh-mml-secure-message-encrypt mh-pgp-support-flag]
      ["Sign+Encrypt Message"
-      mh-mml-secure-message-signencrypt mh-gnus-pgp-support-flag]
+      mh-mml-secure-message-signencrypt mh-pgp-support-flag]
      ["Disable Security"
-      mh-mml-unsecure-message mh-gnus-pgp-support-flag]
+      mh-mml-unsecure-message mh-pgp-support-flag]
      "--"
      "Security Method"
      ["PGP (MIME)" (setq mh-mml-method-default "pgpmime")
@@ -810,19 +810,19 @@
      ["Save Method as Default"
       (customize-save-variable 'mh-mml-method-default mh-mml-method-default) t]
      )
-    ["Compose Insertion (MIME)..."      mh-compose-insertion t]
-    ["Compose Compressed tar (MIME)..."
-     mh-mhn-compose-external-compressed-tar t]
-    ["Compose Get File (MIME)..."       mh-mhn-compose-anon-ftp t]
-    ["Compose Forward (MIME)..."        mh-compose-forward t]
+    ["Compose Insertion..."      mh-compose-insertion t]
+    ["Compose Compressed tar (MH)..."
+     mh-mh-compose-external-compressed-tar t]
+    ["Compose Get File (MH)..."       mh-mh-compose-anon-ftp t]
+    ["Compose Forward..."        mh-compose-forward t]
     ;; The next two will have to be merged. But I also need to make sure the
-    ;; user can't mix directives of both types.
-    ["Pull in All Compositions (mhn)"
-     mh-edit-mhn (mh-mhn-directive-present-p)]
-    ["Pull in All Compositions (gnus)"
-     mh-mml-to-mime (mh-mml-directive-present-p)]
-    ["Revert to Non-MIME Edit (mhn)"
-     mh-revert-mhn-edit (equal mh-compose-insertion 'mhn)]
+    ;; user can't mix tags of both types.
+    ["Pull in All Compositions (MH)"
+     mh-mh-to-mime (mh-mh-directive-present-p)]
+    ["Pull in All Compositions (MML)"
+     mh-mml-to-mime (mh-mml-tag-present-p)]
+    ["Revert to Non-MIME Edit (MH)"
+     mh-mh-to-mime-undo (equal mh-compose-insertion 'mh)]
     ["Kill This Draft"          mh-fully-kill-draft t]))
 
 ;;; Help Messages
@@ -878,16 +878,13 @@
 When you have finished composing, type \\[mh-send-letter] to send the message
 using the MH mail handling system.
 
-There are two types of MIME directives used by MH-E: Gnus and MH. The option
-`mh-compose-insertion' controls what type of directives are inserted by MH-E
-commands. These directives can be converted to MIME body parts by running
-\\[mh-edit-mhn] for mhn directives or \\[mh-mml-to-mime] for Gnus directives.
-This step is mandatory if these directives are added manually. If the
-directives are inserted with MH-E commands such as \\[mh-compose-insertion],
-the directives are expanded automatically when the letter is sent.
+There are two types of tags used by MH-E when composing MIME messages: MML and
+MH. The option `mh-compose-insertion' controls what type of tags are inserted
+by MH-E commands. These tags can be converted to MIME body parts by running
+\\[mh-mh-to-mime] for MH-style directives or \\[mh-mml-to-mime] for MML tags.
 
-Options that control this mode can be changed with
-\\[customize-group]; specify the \"mh-compose\" group.
+Options that control this mode can be changed with \\[customize-group];
+specify the \"mh-compose\" group.
 
 When a message is composed, the hooks `text-mode-hook' and
 `mh-letter-mode-hook' are run.
@@ -1016,7 +1013,7 @@
 
 ;;;###mh-autoload
 (defun mh-to-field ()
-  "Move point to the end of a specified header field.
+  "Move to specified header field.
 The field is indicated by the previous keystroke (the last keystroke
 of the command) according to the list in the variable `mh-to-field-choices'.
 Create the field if it does not exist.  Set the mark to point before moving."
@@ -1047,8 +1044,9 @@
 
 ;;;###mh-autoload
 (defun mh-to-fcc (&optional folder)
-  "Insert an Fcc: FOLDER field in the current message.
-Prompt for the field name with a completion list of the current folders."
+  "Move to \"Fcc:\" header field.
+This command will prompt you for the FOLDER name in which to file a copy of
+the draft."
   (interactive)
   (or folder
       (setq folder (mh-prompt-for-folder
@@ -1080,23 +1078,33 @@
 
 ;;;###mh-autoload
 (defun mh-insert-signature (&optional file)
-  "Insert the signature specified by `mh-signature-file-name' or FILE at point.
-A signature separator (`-- ') will be added if the signature block does not
+  "Insert signature in message.
+This command inserts your signature at the current cursor location.
+
+By default, the text of your signature is taken from the file
+\"~/.signature\". You can read from other sources by changing the option
+`mh-signature-file-name'.
+
+A signature separator (\"-- \") will be added if the signature block does not
 contain one and `mh-signature-separator-flag' is on.
+
 The value of `mh-letter-insert-signature-hook' is a list of functions to be
-called, with no arguments, after the signature is inserted.
-The signature can also be inserted with `mh-identity-list'."
-(interactive)
+called, with no arguments, after the signature is inserted. These functions
+may access the actual name of the file or the function used to insert the
+signature with `mh-signature-file-name'.
+
+The signature can also be inserted using Identities (see `mh-identity-list')"
+  (interactive)
   (save-excursion
     (insert "\n")
     (let ((mh-signature-file-name (or file mh-signature-file-name))
-          (mh-mhn-p (mh-mhn-directive-present-p))
-          (mh-mml-p (mh-mml-directive-present-p)))
+          (mh-mh-p (mh-mh-directive-present-p))
+          (mh-mml-p (mh-mml-tag-present-p)))
       (save-restriction
         (narrow-to-region (point) (point))
         (cond
          ((mh-file-is-vcard-p mh-signature-file-name)
-          (if (equal mh-compose-insertion 'gnus)
+          (if (equal mh-compose-insertion 'mml)
               (insert "<#part type=\"text/x-vcard\" filename=\""
                       mh-signature-file-name
                       "\" disposition=inline description=VCard>\n<#/part>")
@@ -1105,7 +1113,7 @@
                     "\" [VCard] " (expand-file-name mh-signature-file-name))))
          (t
           (cond
-           (mh-mhn-p
+           (mh-mh-p
             (insert "#\n" "Content-Description: Signature\n"))
            (mh-mml-p
             (mml-insert-tag 'part 'type "text/plain" 'disposition "inline"
@@ -1124,7 +1132,7 @@
                    mh-signature-separator-flag
                    (> (point-max) (point-min))
                    (not (mh-signature-separator-p)))
-          (cond (mh-mhn-p
+          (cond (mh-mh-p
                  (forward-line 2))
                 (mh-mml-p
                  (forward-line 1)))
@@ -1135,7 +1143,10 @@
 
 ;;;###mh-autoload
 (defun mh-check-whom ()
-  "Verify recipients of the current letter, showing expansion of any aliases."
+  "Verify recipients, showing expansion of any aliases.
+This command expands aliases so you can check the actual address(es) in the
+alias. A new buffer named \"*MH-E Recipients*\" is created with the output of
+\"whom\"."
   (interactive)
   (let ((file-name buffer-file-name))
     (save-buffer)
@@ -1215,7 +1226,7 @@
 
 ;;;###mh-autoload
 (defun mh-insert-auto-fields (&optional non-interactive)
-  "Insert custom fields if To or Cc match `mh-auto-fields-list'.
+  "Insert custom fields if recipient matches `mh-auto-fields-list'.
 Sets buffer-local `mh-insert-auto-fields-done-local' when done and inserted
 something.  If NON-INTERACTIVE is non-nil, do not be verbose and only
 attempt matches if `mh-insert-auto-fields-done-local' is nil.
@@ -1348,12 +1359,17 @@
 
 ;;;###mh-autoload
 (defun mh-send-letter (&optional arg)
-  "Send the draft letter in the current buffer.
-If optional prefix argument ARG is provided, monitor delivery.
-The value of `mh-before-send-letter-hook' is a list of functions to be called,
-with no arguments, before doing anything.
-Run `\\[mh-edit-mhn]' if mhn directives are present; otherwise
-run `\\[mh-mml-to-mime]' if mml directives are present."
+  "Save draft and send message.
+When you are all through editing a message, you send it with this command. You
+can give an argument ARG to monitor the first stage of the delivery\; this
+output can be found in a buffer called \"*MH-E Mail Delivery*\".
+
+The value of `mh-before-send-letter-hook' is a list of functions to be called
+at the beginning of this command. For example, if you want to check your
+spelling in your message before sending, add the `ispell-message' function.
+
+In case the MH \"send\" program is installed under a different name, use
+`mh-send-prog' to tell MH-E the name."
   (interactive "P")
   (run-hooks 'mh-before-send-letter-hook)
   (if (and (mh-insert-auto-fields t)
@@ -1361,9 +1377,9 @@
            (goto-char (point-min)))
       (if (not (y-or-n-p "Auto fields inserted, send? "))
           (error "Send aborted")))
-  (cond ((mh-mhn-directive-present-p)
-         (mh-edit-mhn))
-        ((or (mh-mml-directive-present-p) (not (mh-ascii-buffer-p)))
+  (cond ((mh-mh-directive-present-p)
+         (mh-mh-to-mime))
+        ((or (mh-mml-tag-present-p) (not (mh-ascii-buffer-p)))
          (mh-mml-to-mime)))
   (save-buffer)
   (message "Sending...")
@@ -1419,15 +1435,16 @@
 
 ;;;###mh-autoload
 (defun mh-insert-letter (folder message verbatim)
-  "Insert a message into the current letter.
-Removes the header fields according to the variable
-`mh-invisible-header-fields-compiled'.
-Prefixes each non-blank line with `mh-ins-buf-prefix', unless
-`mh-yank-from-start-of-msg' is set for supercite in which case supercite is
-used to format the message.
-Prompts for FOLDER and MESSAGE.  If prefix argument VERBATIM provided, do
-not indent and do not delete headers.  Leaves the mark before the letter
-and point after it."
+  "Insert a message.
+This command prompts you for the FOLDER and MESSAGE number and inserts the
+message, indented by `mh-ins-buf-prefix' (\"> \") unless `mh-yank-behavior' is
+set to one of the supercite flavors in which case supercite is used to format
+the message. Certain undesirable header fields (see
+`mh-invisible-header-fields-compiled') are removed before insertion.
+
+If given a prefix argument VERBATIM, the header is left intact, the message is
+not indented, and \"> \" is not inserted before each line. This command leaves
+the mark before the letter and point after it."
   (interactive
    (list (mh-prompt-for-folder "Message from" mh-sent-from-folder nil)
          (read-string (concat "Message number"
@@ -1468,13 +1485,25 @@
 ;;;###mh-autoload
 (defun mh-yank-cur-msg ()
   "Insert the current message into the draft buffer.
-Prefix each non-blank line in the message with the string in
-`mh-ins-buf-prefix'.  If a region is set in the message's buffer, then
-only the region will be inserted.  Otherwise, the entire message will
-be inserted if `mh-yank-from-start-of-msg' is non-nil.  If this variable
-is nil, the portion of the message following the point will be yanked.
-If `mh-delete-yanked-msg-window-flag' is non-nil, any window displaying the
-yanked message will be deleted."
+
+It is often useful to insert a snippet of text from a letter that someone
+mailed to provide some context for your reply. This command does this by
+adding an attribution, yanking a portion of text from the message to which
+you're replying, and inserting `mh-ins-buf-prefix' (`> ') before each line.
+
+The attribution consists of the sender's name and email address
+followed by the content of the `mh-extract-from-attribution-verb'
+option.
+
+You can also turn on the `mh-delete-yanked-msg-window-flag' option to delete
+the window containing the original message after yanking it to make more room
+on your screen for your reply.
+
+You can control how the message to which you are replying is yanked
+into your reply using `mh-yank-behavior'.
+
+If this isn't enough, you can gain full control over the appearance of the
+included text by setting `mail-citation-hook' to a function that modifies it."
   (interactive)
   (if (and mh-sent-from-folder
            (save-excursion (set-buffer mh-sent-from-folder) mh-show-buffer)
@@ -1491,9 +1520,9 @@
                (yank-region (mh-mark-active-p nil))
                (mh-ins-str
                 (cond ((and yank-region
-                            (or (eq 'supercite mh-yank-from-start-of-msg)
-                                (eq 'autosupercite mh-yank-from-start-of-msg)
-                                (eq t mh-yank-from-start-of-msg)))
+                            (or (eq 'supercite mh-yank-behavior)
+                                (eq 'autosupercite mh-yank-behavior)
+                                (eq t mh-yank-behavior)))
                        ;; supercite needs the full header
                        (concat
                         (buffer-substring (point-min) (mh-mail-header-end))
@@ -1501,20 +1530,18 @@
                         (buffer-substring (region-beginning) (region-end))))
                       (yank-region
                        (buffer-substring (region-beginning) (region-end)))
-                      ((or (eq 'body mh-yank-from-start-of-msg)
-                           (eq 'attribution
-                               mh-yank-from-start-of-msg)
-                           (eq 'autoattrib
-                               mh-yank-from-start-of-msg))
+                      ((or (eq 'body mh-yank-behavior)
+                           (eq 'attribution mh-yank-behavior)
+                           (eq 'autoattrib mh-yank-behavior))
                        (buffer-substring
                         (save-excursion
                           (goto-char (point-min))
                           (mh-goto-header-end 1)
                           (point))
                         (point-max)))
-                      ((or (eq 'supercite mh-yank-from-start-of-msg)
-                           (eq 'autosupercite mh-yank-from-start-of-msg)
-                           (eq t mh-yank-from-start-of-msg))
+                      ((or (eq 'supercite mh-yank-behavior)
+                           (eq 'autosupercite mh-yank-behavior)
+                           (eq t mh-yank-behavior))
                        (buffer-substring (point-min) (point-max)))
                       (t
                        (buffer-substring (point) (point-max))))))
@@ -1526,8 +1553,8 @@
             (push-mark)                 ;Needed for sc-cite-original
             (goto-char (point-min))     ;Needed for sc-cite-original
             (mh-insert-prefix-string mh-ins-buf-prefix)
-            (when (or (eq 'attribution mh-yank-from-start-of-msg)
-                      (eq 'autoattrib mh-yank-from-start-of-msg))
+            (when (or (eq 'attribution mh-yank-behavior)
+                      (eq 'autoattrib mh-yank-behavior))
               (insert from-attr)
               (mh-identity-insert-attribution-verb nil)
               (insert "\n\n"))
@@ -1569,12 +1596,12 @@
 
 (defun mh-insert-prefix-string (mh-ins-string)
   "Insert prefix string before each line in buffer.
-The inserted letter is cited using `sc-cite-original' if
-`mh-yank-from-start-of-msg' is one of 'supercite or 'autosupercite. Otherwise,
-simply insert MH-INS-STRING before each line."
+The inserted letter is cited using `sc-cite-original' if `mh-yank-behavior' is
+one of 'supercite or 'autosupercite. Otherwise, simply insert MH-INS-STRING
+before each line."
   (goto-char (point-min))
-  (cond ((or (eq mh-yank-from-start-of-msg 'supercite)
-             (eq mh-yank-from-start-of-msg 'autosupercite))
+  (cond ((or (eq mh-yank-behavior 'supercite)
+             (eq mh-yank-behavior 'autosupercite))
          (sc-cite-original))
         (mail-citation-hook
          (run-hooks 'mail-citation-hook))
@@ -1589,8 +1616,10 @@
 
 ;;;###mh-autoload
 (defun mh-fully-kill-draft ()
-  "Kill the draft message file and the draft message buffer.
-Use \\[kill-buffer] if you don't want to delete the draft message file."
+  "Quit editing and delete draft message.
+If for some reason you are not happy with the draft, you can use the this
+command to kill the draft buffer and delete the draft message. Use the
+\\[kill-buffer] command if you don't want to delete the draft message."
   (interactive)
   (if (y-or-n-p "Kill draft message? ")
       (let ((config mh-previous-window-config))
@@ -1618,8 +1647,10 @@
 ;;;###mh-autoload
 (defun mh-open-line ()
   "Insert a newline and leave point after it.
-In addition, insert newline and quoting characters before text after point.
-This is useful in breaking up paragraphs in replies."
+This command is similar to the \\[open-line] command in that it inserts a
+newline after point. It differs in that it also inserts the right number of
+quoting characters and spaces so that the next line begins in the same column
+as it was. This is useful when breaking up paragraphs in replies."
   (interactive)
   (let ((column (current-column))
         (prefix (mh-current-fill-prefix)))
@@ -1707,10 +1738,12 @@
 
 (defun mh-letter-complete (arg)
   "Perform completion on header field or word preceding point.
-If the field contains addresses (for example, `To:' or `Cc:') or folders (for
-example, `Fcc:') then this function will provide alias completion. Elsewhere,
-this function runs `mh-letter-complete-function' instead and passes the prefix
-ARG, if present."
+If the field contains addresses (for example, \"To:\" or \"Cc:\") or folders
+\(for example, \"Fcc:\") then this command will provide alias completion. In
+the body of the message, this command runs `mh-letter-complete-function'
+instead, which is set to \"'ispell-complete-word\" by default. This command
+takes a prefix argument ARG that is passed to the
+`mh-letter-complete-function'."
   (interactive "P")
   (let ((func nil))
     (cond ((not (mh-in-header-p))
@@ -1722,11 +1755,8 @@
 
 (defun mh-letter-complete-or-space (arg)
   "Perform completion or insert space.
-If `mh-compose-space-does-completion-flag' is nil (the default) a space is
-inserted.
-
-Otherwise, if point is in the message header and the preceding character is
-not whitespace then do completion. Otherwise insert a space character.
+Turn on the `mh-compose-space-does-completion-flag' option to use this command
+to perform completion in the header. Otherwise, a space is inserted.
 
 ARG is the number of spaces inserted."
   (interactive "p")
@@ -1744,7 +1774,10 @@
           (t (self-insert-command arg)))))
 
 (defun mh-letter-confirm-address ()
-  "Flash alias expansion if `mh-alias-flash-on-comma' is non-nil."
+  "Flash alias expansion.
+Addresses are separated by a comma\; and when you press the comma, this
+command flashes the alias expansion in the minibuffer if
+`mh-alias-flash-on-comma' is turned on."
   (interactive)
   (cond ((not (mh-in-header-p)) (self-insert-command 1))
         ((eq (cdr (assoc (mh-letter-header-field-at-point)
@@ -1768,8 +1801,12 @@
 ;;;###mh-autoload
 (defun mh-letter-next-header-field-or-indent (arg)
   "Move to next field or indent depending on point.
-In the message header, go to the next field. Elsewhere call
-`indent-relative' as usual with optional prefix ARG."
+Within the header of the message, this command moves between fields, but skips
+those fields listed in `mh-compose-skipped-header-fields'. After the last
+field, this command then moves point to the message body before cycling back
+to the first field. If point is already past the first line of the message
+body, then this command indents by calling `indent-relative' with the given
+prefix argument ARG."
   (interactive "P")
   (let ((header-end (save-excursion
                       (goto-char (mh-mail-header-end))
@@ -1801,7 +1838,10 @@
 ;;;###mh-autoload
 (defun mh-letter-previous-header-field ()
   "Cycle to the previous header field.
-If we are at the first header field go to the start of the message body."
+This command moves backwards between the fields and cycles to the body of the
+message after the first field. Unlike the
+\\[mh-letter-next-header-field-or-indent] command, it will always take point
+to the last field from anywhere in the body."
   (interactive)
   (let ((header-end (mh-mail-header-end)))
     (if (>= (point) header-end)
@@ -1851,11 +1891,11 @@
 
 (defun mh-letter-toggle-header-field-display (arg)
   "Toggle display of header field at point.
-If the header is long or spread over multiple lines then hiding it will show
-the first few characters and replace the rest with an ellipsis.
 
-If ARG is negative then header is hidden, if positive it is displayed. If ARG
-is the symbol `long' then keep at most the first 4 lines."
+Use this command to display ellipsed 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."
   (interactive (list nil))
   (when (and (mh-in-header-p)
              (progn
@@ -1881,6 +1921,8 @@
                  (remove-text-properties begin end '(invisible nil))
                  (search-forward ":" (line-end-position) t)
                  (mh-letter-skip-leading-whitespace-in-header-field))
+                ;; XXX Redesign to make usable by user. Perhaps use a positive
+                ;; numeric prefix to make that many lines visible.
                 ((eq arg 'long)
                  (end-of-line 4)
                  (mh-letter-truncate-header-field end)
@@ -1939,7 +1981,7 @@
   "\C-c\C-^"            mh-insert-signature ;if no C-s
   "\C-c\C-c"            mh-send-letter
   "\C-c\C-d"            mh-insert-identity
-  "\C-c\C-e"            mh-edit-mhn
+  "\C-c\C-e"            mh-mh-to-mime
   "\C-c\C-f\C-b"        mh-to-field
   "\C-c\C-f\C-c"        mh-to-field
   "\C-c\C-f\C-d"        mh-to-field
@@ -1957,26 +1999,26 @@
   "\C-c\C-i"            mh-insert-letter
   "\C-c\C-m\C-e"        mh-mml-secure-message-encrypt
   "\C-c\C-m\C-f"        mh-compose-forward
-  "\C-c\C-m\C-g"        mh-mhn-compose-anon-ftp
+  "\C-c\C-m\C-g"        mh-mh-compose-anon-ftp
   "\C-c\C-m\C-i"        mh-compose-insertion
   "\C-c\C-m\C-m"        mh-mml-to-mime
   "\C-c\C-m\C-n"        mh-mml-unsecure-message
   "\C-c\C-m\C-s"        mh-mml-secure-message-sign
-  "\C-c\C-m\C-t"        mh-mhn-compose-external-compressed-tar
-  "\C-c\C-m\C-u"        mh-revert-mhn-edit
-  "\C-c\C-m\C-x"        mh-mhn-compose-external-type
+  "\C-c\C-m\C-t"        mh-mh-compose-external-compressed-tar
+  "\C-c\C-m\C-u"        mh-mh-to-mime-undo
+  "\C-c\C-m\C-x"        mh-mh-compose-external-type
   "\C-c\C-mee"          mh-mml-secure-message-encrypt
   "\C-c\C-mes"          mh-mml-secure-message-signencrypt
   "\C-c\C-mf"           mh-compose-forward
-  "\C-c\C-mg"           mh-mhn-compose-anon-ftp
+  "\C-c\C-mg"           mh-mh-compose-anon-ftp
   "\C-c\C-mi"           mh-compose-insertion
   "\C-c\C-mm"           mh-mml-to-mime
   "\C-c\C-mn"           mh-mml-unsecure-message
   "\C-c\C-mse"          mh-mml-secure-message-signencrypt
   "\C-c\C-mss"          mh-mml-secure-message-sign
-  "\C-c\C-mt"           mh-mhn-compose-external-compressed-tar
-  "\C-c\C-mu"           mh-revert-mhn-edit
-  "\C-c\C-mx"           mh-mhn-compose-external-type
+  "\C-c\C-mt"           mh-mh-compose-external-compressed-tar
+  "\C-c\C-mu"           mh-mh-to-mime-undo
+  "\C-c\C-mx"           mh-mh-compose-external-type
   "\C-c\C-o"            mh-open-line
   "\C-c\C-q"            mh-fully-kill-draft
   "\C-c\C-s"            mh-insert-signature
--- a/lisp/mh-e/mh-customize.el	Sun Oct 23 21:12:46 2005 +0000
+++ b/lisp/mh-e/mh-customize.el	Sun Oct 23 21:26:17 2005 +0000
@@ -762,13 +762,15 @@
 
 ;;; Editing a Draft (:group 'mh-letter)
 
-(defcustom mh-compose-insertion (if (locate-library "mml") 'gnus 'mhn)
-  "Type of MIME message directives in messages.
-
-By default, this option is set to `Gnus' if it is supported. This option can
-also be set manually to `mhn' if mhn directives are preferred."
-  :type '(choice (const :tag "Gnus" gnus)
-                 (const :tag "mhn"  mhn))
+(defcustom mh-compose-insertion (if (locate-library "mml") 'mml 'mh)
+  "Type of tags used when composing MIME messages. In addition to MH-style
+directives, MH-E also supports MML (MIME Meta Language) tags. (see Info node
+`(emacs-mime)Composing'). This option can be used to choose between them. By
+default, this option is set to \"MML\" if it is supported since it provides a
+lot more functionality. This option can also be set to \"MH\" if MH-style
+directives are preferred."
+  :type '(choice (const :tag "MML" mml)
+                 (const :tag "MH"  mh))
   :group 'mh-letter)
 
 (defcustom mh-compose-skipped-header-fields
@@ -779,20 +781,24 @@
   :group 'mh-letter)
 
 (defcustom mh-compose-space-does-completion-flag nil
-  "*Non-nil means that <SPC> does completion in message header."
+  "*On means \\<mh-letter-mode-map>\\[mh-letter-complete-or-space] does completion in message header."
   :type 'boolean
   :group 'mh-letter)
 
 (defcustom mh-delete-yanked-msg-window-flag nil
-  "*Non-nil means delete any window displaying the message.
-If this option is on, yanking the current message into a draft letter with
-\\<mh-letter-mode-map>\\[mh-yank-cur-msg] deletes any windows displaying the
-message."
+  "*On means delete any window displaying the message.
+This deletes the window containing the original message after yanking it with
+\\<mh-letter-mode-map>\\[mh-yank-cur-msg] to make more room on your screen for
+your reply."
   :type 'boolean
   :group 'mh-letter)
 
 (defcustom mh-extract-from-attribution-verb "wrote:"
-  "*Verb to use for attribution when a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg]."
+  "*Verb to use for attribution when a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg].
+The attribution consists of the sender's name and email address followed by
+the content of this option. This option can be set to \"wrote:\", \"a
+écrit:\", and \"schrieb:\". You can also use the \"Custom String\" menu item
+to enter your own verb."
   :type '(choice (const "wrote:")
                  (const "a écrit:")
                  (const "schrieb:")
@@ -800,28 +806,41 @@
   :group 'mh-letter)
 
 (defcustom mh-ins-buf-prefix "> "
-  "*String to put before each non-blank line of a yanked or inserted message.
-Used when the message is inserted into an outgoing letter
-by \\<mh-letter-mode-map>\\[mh-insert-letter] or \\[mh-yank-cur-msg]."
+  "*String to put before each line of a yanked or inserted message.
+The prefix \"> \" is the default setting of this option. I suggest that you
+not modify this option since it is used by many mailers and news readers:
+messages are far easier to read if several included messages have all been
+indented by the same string."
   :type 'string
   :group 'mh-letter)
 
 (defcustom mh-letter-complete-function 'ispell-complete-word
   "*Function to call when completing outside of address or folder fields.
-By default, this is set to `ispell-complete-word'."
+In the body of the message, \\<mh-letter-mode-map>\\[mh-letter-complete] runs
+this function, which is set to \"ispell-complete-word\" by default."
   :type '(choice function (const nil))
   :group 'mh-letter)
 
 (defcustom mh-letter-fill-column 72
-  "*Fill column to use in `mh-letter-mode'.
-This is usually less than in other text modes because email messages get
-quoted by some prefix (sometimes many times) when they are replied to,
-and it's best to avoid quoted lines that span more than 80 columns."
+  "*Fill column to use in MH Letter mode.
+By default, this option is 72 to allow others to quote your message without
+line wrapping."
   :type 'integer
   :group 'mh-letter)
 
-(defcustom mh-mml-method-default (if mh-gnus-pgp-support-flag "pgpmime" "none")
-  "Default method to use in security directives."
+(defcustom mh-mml-method-default (if mh-pgp-support-flag "pgpmime" "none")
+  "Default method to use in security tags.
+This option is used to select between a variety of mail security mechanisms.
+The default is \"PGP (MIME)\" if it is supported\; otherwise, the default is
+\"None\". Other mechanisms include vanilla \"PGP\" and \"S/MIME\".
+
+The `pgg' customization group may have some settings which may interest you
+\(see Info node `(pgg)').
+
+In particular, I set the option `pgg-encrypt-for-me' to t so that all messages
+I encrypt are encrypted with my public key as well. If you keep a copy of all
+of your outgoing mail with a \"Fcc:\" header field, this setting is vital so
+that you can read the mail you write!"
   :type '(choice (const :tag "PGP (MIME)" "pgpmime")
                  (const :tag "PGP" "pgp")
                  (const :tag "S/MIME" "smime")
@@ -831,13 +850,13 @@
 (defcustom mh-signature-file-name "~/.signature"
   "*Source of user's signature.
 
-By default, the text of your signature is taken from the file `~/.signature'.
+By default, the text of your signature is taken from the file \"~/.signature\".
 You can read from other files by changing this option. This file may contain a
 vCard in which case an attachment is added with the vCard.
 
 This option may also be a symbol, in which case that function is called. You
 may not want a signature separator to be added for you; instead you may want
-to insert one yourself. Variables that you may find useful to do this include
+to insert one yourself. Options that you may find useful to do this include
 `mh-signature-separator' (when inserting a signature separator) and
 `mh-signature-separator-regexp' (for finding said separator). The function
 `mh-signature-separator-p', which reports t if the buffer contains a
@@ -850,7 +869,7 @@
   :group 'mh-letter)
 
 (defcustom mh-signature-separator-flag t
-  "*Non-nil means a signature separator should be inserted.
+  "*On means a signature separator should be inserted.
 It is not recommended that you change this option since various mail user
 agents, including MH-E, use the separator to present the signature
 differently, and to suppress the signature when replying or yanking a letter
@@ -861,21 +880,21 @@
 (defcustom mh-x-face-file "~/.face"
   "*File containing face header field to insert in outgoing mail.
 
-If the file starts with either of the strings `X-Face:', `Face:' or
-`X-Image-URL:' then the contents are added to the message header verbatim.
-Otherwise it is assumed that the file contains the value of the `X-Face:'
+If the file starts with either of the strings \"X-Face:\", \"Face:\" or
+\"X-Image-URL:\" then the contents are added to the message header verbatim.
+Otherwise it is assumed that the file contains the value of the \"X-Face:\"
 header field.
 
-The `X-Face:' header field, which is a low-resolution, black and white image,
-can be generated using the `compface' command, which can be obtained from
-ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z. The \"Online
-X-Face Convertor\" at http://www.dairiki.org/xface/ is a useful resource for
-quick conversion of images into `X-Face:' header fields.
+The \"X-Face:\" header field, which is a low-resolution, black and white
+image, can be generated using the \"compface\"
+(ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z) command. The
+\"Online X-Face Converter\" (http://www.dairiki.org/xface/) is a useful
+resource for quick conversion of images into \"X-Face:\" header fields.
 
-Use the `make-face' script (http://quimby.gnus.org/circus/face/make-face) to
-convert a JPEG image to the higher resolution, color, `Face:' header field.
+Use the \"make-face\" (http://quimby.gnus.org/circus/face/make-face) script to
+convert a JPEG image to the higher resolution, color, \"Face:\" header field.
 
-The URL of any image can be used for the `X-Image-URL:' field and no
+The URL of any image can be used for the \"X-Image-URL:\" field and no
 processing of the image is required.
 
 To prevent the setting of any of these header fields, either set
@@ -884,39 +903,34 @@
   :type 'file
   :group 'mh-letter)
 
-(defcustom mh-yank-from-start-of-msg 'attribution
+(defcustom mh-yank-behavior 'attribution
   "*Controls which part of a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg].
-If t, include the entire message, with full headers.  This is historically
-here for use with supercite, but is now deprecated in favor of the setting
-`supercite' below.
-
-If the symbol `body', then yank the message minus the header.
 
-If the symbol `supercite', include the entire message, with full headers.
-This also causes the invocation of `sc-cite-original' without the setting
-of `mail-citation-hook', now deprecated practice.
+To include the entire message, including the entire header, use \"Body and
+Header\". Use \"Body\" to yank just the body without the header. To yank only
+the portion of the message following the point, set this option to \"Below
+Point\".
 
-If the symbol `autosupercite', do as for `supercite' automatically when
-show buffer matches the message being replied-to.  When this option is used,
-the -noformat switch is passed to the repl program to override a -filter or
--format switch.
+Choose \"Invoke supercite\" to pass the entire message and header through
+supercite.
 
-If the symbol `attribution', then yank the message minus the header and add
-a simple attribution line at the top.
+If the \"Body With Attribution\" setting is used, then the message minus the
+header is yanked and a simple attribution line is added at the top using the
+value of the `mh-extract-from-attribution-verb' option. This is the default.
 
-If the symbol `autoattrib', do as for `attribution' automatically when show
-buffer matches the message being replied-to.  You can make sure this is
-always the case by setting `mh-reply-show-message-flag' to t (which is the
-default) and optionally `mh-delete-yanked-msg-window-flag' to t as well such
-that the show window is never displayed.  When the `autoattrib' option is
-used, the -noformat switch is passed to the repl program to override a
--filter or -format switch.
+If the \"Invoke supercite\" or \"Body With Attribution\" settings are used,
+the \"-noformat\" argument is passed to the \"repl\" program to override a
+\"-filter\" or \"-format\" argument. These settings also have
+\"Automatically\" variants that perform the action automatically when you
+reply so that you don't need to use \\[mh-yank-cur-msg] at all. Note that this
+automatic action is only performed if the show buffer matches the message
+being replied to. People who use the automatic variants tend to turn on the
+`mh-delete-yanked-msg-window-flag' option as well so that the show window is
+never displayed.
 
-If nil, yank only the portion of the message following the point.
-
-If the show buffer has a region, this variable is ignored unless its value is
-one of `attribution' or `autoattrib' in which case the attribution is added
-to the yanked region."
+If the show buffer has a region, the `mh-yank-behavior' option is ignored
+unless its value is one of Attribution variants in which case the attribution
+is added to the yanked region."
   :type '(choice (const :tag "Body and Header" t)
                  (const :tag "Body" body)
                  (const :tag "Below Point" nil)
@@ -1983,26 +1997,17 @@
 
 (defcustom mail-citation-hook nil
   "*Hook for modifying a citation just inserted in the mail buffer.
-Each hook function can find the citation between point and mark.
-And each hook function should leave point and mark around the citation
-text as modified.
-
-If this hook is entirely empty (nil), the text of the message is inserted
-with `mh-ins-buf-prefix' prefixed to each line.
-
-See also the variable `mh-yank-from-start-of-msg', which controls how
-much of the message passed to the hook.
+You can gain full control over the appearance of the included text by setting
+this hook to a function that modifies it. This hook is ignored if the option
+`mh-yank-behavior' is set to one of the supercite flavors. Otherwise, this
+option controls how much of the message is passed to the hook. The function
+can find the citation between point and mark and it should leave point and
+mark around the modified citation text for the next hook function. The
+standard prefix `mh-ins-buf-prefix' is not added if this hook is set.
 
-This hook was historically provided to set up supercite.  You may now leave
-this nil and set up supercite by setting the variable
-`mh-yank-from-start-of-msg' to 'supercite or, for more automatic insertion,
-to 'autosupercite.
-
-The hook 'trivial-cite is NOT part of Emacs.  It is provided from tc.el,
-available here:
- http://shasta.cs.uiuc.edu/~lrclause/tc.html
-If you use it, customize `mh-yank-from-start-of-msg' to
- \"Entire message with headers\"."
+For example, if you use the hook function trivial-cite
+\(http://shasta.cs.uiuc.edu/~lrclause/tc.html) (which is NOT part of Emacs),
+set `mh-yank-behavior' to \"Body and Header\"."
   :type 'hook
   :options '(trivial-cite)
   :group 'mh-hooks
@@ -2022,8 +2027,11 @@
   :group 'mh-show)
 
 (defcustom mh-before-send-letter-hook nil
-  "Invoked at the beginning of the \\<mh-letter-mode-map>\\[mh-send-letter] command."
+  "Invoked at the beginning of the \\<mh-letter-mode-map>\\[mh-send-letter] command.
+For example, if you want to check your spelling in your message before
+sending, add the `ispell-message' function."
   :type 'hook
+  :options '(ispell-message)
   :group 'mh-hooks
   :group 'mh-letter)
 
@@ -2033,8 +2041,8 @@
   :group 'mh-hooks
   :group 'mh-show)
 
-(defcustom mh-edit-mhn-hook nil
-  "Invoked on the formatted letter by \\<mh-letter-mode-map>\\[mh-edit-mhn]."
+(defcustom mh-mh-to-mime-hook nil
+  "Invoked on the formatted letter by \\<mh-letter-mode-map>\\[mh-mh-to-mime]."
   :type 'hook
   :group 'mh-hooks
   :group 'mh-letter)
--- a/lisp/mh-e/mh-gnus.el	Sun Oct 23 21:12:46 2005 +0000
+++ b/lisp/mh-e/mh-gnus.el	Sun Oct 23 21:26:17 2005 +0000
@@ -56,26 +56,26 @@
       `(defmacro ,function ,arg-list ,@body))))
 (put 'mh-defmacro-compat 'lisp-indent-function 'defun)
 
-;; Copy of original function from gnus-util.el
+;; Copy of original function from gnus-util.el.
 (mh-defun-compat gnus-local-map-property (map)
   "Return a list suitable for a text property list specifying keymap MAP."
   (cond (mh-xemacs-flag (list 'keymap map))
         ((>= emacs-major-version 21) (list 'keymap map))
         (t (list 'local-map map))))
 
-;; Copy of original function from mm-decode.el
+;; Copy of original function from mm-decode.el.
 (mh-defun-compat mm-merge-handles (handles1 handles2)
   (append (if (listp (car handles1)) handles1 (list handles1))
           (if (listp (car handles2)) handles2 (list handles2))))
 
-;; Copy of function from mm-decode.el
+;; Copy of function from mm-decode.el.
 (mh-defun-compat mm-set-handle-multipart-parameter (handle parameter value)
   ;; HANDLE could be a CTL.
   (if handle
       (put-text-property 0 (length (car handle)) parameter value
                          (car handle))))
 
-;; Copy of function from mm-view.el
+;; Copy of function from mm-view.el.
 (mh-defun-compat mm-inline-text-vcard (handle)
   (let (buffer-read-only)
     (mm-insert-inline
@@ -89,15 +89,15 @@
 				      'vcard-standard-filter))))))))
 
 ;; Function from mm-decode.el used in PGP messages. Just define it with older
-;; gnus to avoid compiler warning.
+;; Gnus to avoid compiler warning.
 (mh-defun-compat mm-possibly-verify-or-decrypt (parts ctl)
   nil)
 
-;; Copy of original macro is in mm-decode.el
+;; Copy of original macro is in mm-decode.el.
 (mh-defmacro-compat mm-handle-multipart-ctl-parameter (handle parameter)
   `(get-text-property 0 ,parameter (car ,handle)))
 
-;; Copy of original function in mm-decode.el
+;; Copy of original function in mm-decode.el.
 (mh-defun-compat mm-readable-p (handle)
   "Say whether the content of HANDLE is readable."
   (and (< (with-current-buffer (mm-handle-buffer handle)
@@ -107,7 +107,7 @@
          (and (eq (mm-body-7-or-8) '7bit)
               (not (mm-long-lines-p 76))))))
 
-;; Copy of original function in mm-bodies.el
+;; Copy of original function in mm-bodies.el.
 (mh-defun-compat mm-long-lines-p (length)
   "Say whether any of the lines in the buffer is longer than LENGTH."
   (save-excursion
@@ -126,10 +126,25 @@
   nil)
 
 (mh-defun-compat mm-destroy-parts (list)
-  "Older emacs don't have this function."
+  "Older versions of Emacs don't have this function."
   nil)
 
-;;; This is mm-save-part from gnus 5.10 since that function in emacs21.2 is
+;; Copy of original function in mml.el.
+(mh-defun-compat mml-minibuffer-read-disposition (type &optional default)
+  (unless default (setq default
+                        (if (and (string-match "\\`text/" type)
+                                 (not (string-match "\\`text/rtf\\'" type)))
+                            "inline"
+                          "attachment")))
+  (let ((disposition (completing-read
+                      (format "Disposition (default %s): " default)
+                      '(("attachment") ("inline") (""))
+                      nil t nil nil default)))
+    (if (not (equal disposition ""))
+	disposition
+      default)))
+
+;;; This is mm-save-part from Gnus 5.10 since that function in emacs21.2 is
 ;;; buggy (the args to read-file-name are incorrect). When all supported
 ;;; versions of Emacs come with at least Gnus 5.10, we can delete this
 ;;; function and rename calls to mh-mm-save-part to mm-save-part.
@@ -152,7 +167,7 @@
          (mm-save-part-to-file handle file))))
 
 (defun mh-mm-text-html-renderer ()
-  "Find the renderer gnus is using to display text/html MIME parts."
+  "Find the renderer Gnus is using to display text/html MIME parts."
   (or (and (boundp 'mm-inline-text-html-renderer) mm-inline-text-html-renderer)
       (and (boundp 'mm-text-html-renderer) mm-text-html-renderer)))
 
--- a/lisp/mh-e/mh-mime.el	Sun Oct 23 21:12:46 2005 +0000
+++ b/lisp/mh-e/mh-mime.el	Sun Oct 23 21:26:17 2005 +0000
@@ -28,8 +28,9 @@
 ;;; Commentary:
 
 ;; Internal support for MH-E package.
-;; Support for generating an mhn composition file.
-;; MIME is supported only by MH 6.8 or later.
+;; Support for generating MH-style directives for mhn or mhbuild as well as
+;; MML (MIME Meta Language) tags. MH-style directives are supported by MH 6.8
+;; or later.
 
 ;;; Change Log:
 
@@ -41,45 +42,46 @@
 (require 'gnus-util)
 (require 'mh-gnus)
 
+(autoload 'article-emphasize "gnus-art")
 (autoload 'gnus-article-goto-header "gnus-art")
-(autoload 'article-emphasize "gnus-art")
+(autoload 'gnus-eval-format "gnus-spec")
 (autoload 'gnus-get-buffer-create "gnus")
-(autoload 'gnus-eval-format "gnus-spec")
-(autoload 'widget-convert-button "wid-edit")
 (autoload 'message-options-set-recipient "message")
+(autoload 'mml-attach-file "mml")
+(autoload 'mml-insert-empty-tag "mml")
+(autoload 'mml-minibuffer-read-description "mml")
+(autoload 'mml-minibuffer-read-disposition "mml")
+(autoload 'mml-minibuffer-read-file "mml")
+(autoload 'mml-to-mime "mml")
 (autoload 'mml-unsecure-message "mml-sec")
-(autoload 'mml-minibuffer-read-file "mml")
-(autoload 'mml-minibuffer-read-description "mml")
-(autoload 'mml-insert-empty-tag "mml")
-(autoload 'mml-to-mime "mml")
-(autoload 'mml-attach-file "mml")
 (autoload 'rfc2047-decode-region "rfc2047")
+(autoload 'widget-convert-button "wid-edit")
 
 ;;;###mh-autoload
 (defun mh-compose-insertion (&optional inline)
-  "Add a directive to insert a MIME part from a file, using mhn or gnus.
-If the variable `mh-compose-insertion' is set to 'mhn, then that will be used.
-If it is set to 'gnus, then that will be used instead.
+  "Add tag to include a file such as an image or sound.
+You are prompted for the filename containing the object, the media type if it
+cannot be determined automatically, and a content description. If you're using
+MH-style directives, you will also be prompted for additional attributes.
+
+The option `mh-compose-insertion' controls what type of tags are inserted.
 Optional argument INLINE means make it an inline attachment."
   (interactive "P")
-  (if (equal mh-compose-insertion 'gnus)
+  (if (equal mh-compose-insertion 'mml)
       (if inline
           (mh-mml-attach-file "inline")
         (mh-mml-attach-file))
-    (call-interactively 'mh-mhn-compose-insertion)))
+    (call-interactively 'mh-mh-attach-file)))
 
 ;;;###mh-autoload
 (defun mh-compose-forward (&optional description folder messages)
-  "Add a MIME directive to forward a message, using mhn or gnus.
-If the variable `mh-compose-insertion' is set to 'mhn, then that will be used.
-If it is set to 'gnus, then that will be used instead.
-Optional argument DESCRIPTION is a description of the attachment.
-Optional argument FOLDER is the folder from which the forwarded message should
-come.
-Optional argument MESSAGES is the range of messages to forward.
-If any of the optional arguments are absent, they are prompted for."
+  "Add tag to forward a message.
+You are prompted for a content DESCRIPTION, the name of the FOLDER in which
+the messages to forward are located, and the MESSAGES' numbers.
+
+The option `mh-compose-insertion' controls what type of tags are inserted."
   (interactive (let*
-                   ((description (read-string "Forw Content-description: "))
+                   ((description (mml-minibuffer-read-description))
                     (folder (mh-prompt-for-folder "Message from"
                                                   mh-sent-from-folder nil))
                     (messages (let ((default-message
@@ -105,24 +107,24 @@
     (if (null range)
 	(error "No messages in specified range"))
     (dolist (message range)
-      (if (equal mh-compose-insertion 'gnus)
+      (if (equal mh-compose-insertion 'mml)
 	  (mh-mml-forward-message description folder (format "%s" message))
-	(mh-mhn-compose-forw description folder message)))))
+	(mh-mh-forward-message description folder (format "%s" message))))))
 
 ;; To do:
 ;; paragraph code should not fill # lines if MIME enabled.
-;; implement mh-auto-edit-mhn (if non-nil, \\[mh-send-letter]
-;;      invokes mh-edit-mhn automatically before sending.)
-;;      actually, instead of mh-auto-edit-mhn,
+;; implement mh-auto-mh-to-mime (if non-nil, \\[mh-send-letter]
+;;      invokes mh-mh-to-mime automatically before sending.)
+;;      actually, instead of mh-auto-mh-to-mime,
 ;;      should read automhnproc from profile
 ;; MIME option to mh-forward
 ;; command to move to content-description insertion point
 
-(defvar mh-mhn-args nil
-  "Extra arguments to have \\[mh-edit-mhn] pass to the \"mhn\" command.
-The arguments are passed to mhn if \\[mh-edit-mhn] is given a
-prefix argument.  Normally default arguments to mhn are specified in the
-MH profile.")
+(defvar mh-mh-to-mime-args nil
+  "Extra arguments for \\[mh-mh-to-mime] to pass to the \"mhbuild\" command.
+The arguments are passed to \"mhbuild\" if \\[mh-mh-to-mime] is given a prefix
+argument. Normally default arguments to \"mhbuild\" are specified in the MH
+profile.")
 
 (defvar mh-media-type-regexp
   (concat (regexp-opt '("text" "image" "audio" "video" "application"
@@ -196,7 +198,6 @@
                 (mh-file-mime-type-substitute (match-string 0) filename)))
           (kill-buffer tmp-buffer)))))))
 
-;;; This is needed for Emacs20 which doesn't have mailcap-mime-types.
 (defvar mh-mime-content-types
   '(("application/mac-binhex40") ("application/msword")
     ("application/octet-stream") ("application/pdf") ("application/pgp-keys")
@@ -218,8 +219,34 @@
     ("text/richtext") ("text/x-vcard") ("text/xml")
 
     ("video/mpeg") ("video/quicktime"))
-  "Valid MIME content types.
-See documentation for \\[mh-edit-mhn].")
+  "Valid MIME content types for Emacs 20.
+Obsolete; use `mailcap-mime-types'.
+
+See also \\[mh-mh-to-mime].")
+
+;;; Delete mh-minibuffer-read-type and mh-mime-content-types and use
+;;; mml-minibuffer-read-type when Emacs20 is no longer supported unless we
+;;; think (mh-file-mime-type) is better than (mm-default-file-encoding).
+
+(defun mh-minibuffer-read-type (filename &optional default)
+  "Return the content type associated with the given FILENAME.
+If the \"file\" command exists and recognizes the given file, then its value
+is returned\; otherwise, the user is prompted for a type (see
+`mailcap-mime-types' and for Emacs 20, `mh-mime-content-types').
+Optional argument DEFAULT is returned if a type isn't entered."
+  (mailcap-parse-mimetypes)
+  (let* ((default (or default
+		      (mm-default-file-encoding filename)
+		      "application/octet-stream"))
+	 (type (or (mh-file-mime-type filename)
+                   (completing-read
+                    (format "Content type (default %s): " default)
+                    (if (fboundp 'mailcap-mime-types)
+                        (mapcar 'list (mailcap-mime-types))
+                      mh-mime-content-types)))))
+    (if (not (equal type ""))
+        type
+      default)))
 
 ;; RFC 2045 - Multipurpose Internet Mail Extensions (MIME) Part One:
 ;;            Format of Internet Message Bodies.
@@ -248,35 +275,27 @@
   "Valid MIME access-type values.")
 
 ;;;###mh-autoload
-(defun mh-mhn-compose-insertion (filename type description attributes)
-  "Add a directive to insert a MIME message part from a file.
-This is the typical way to insert non-text parts in a message.
+(defun mh-mh-attach-file (filename type description attributes)
+  "Add a tag to insert a MIME message part from a file.
+You are prompted for the FILENAME containing the object, the media TYPE if it
+cannot be determined automatically, and a content DESCRIPTION. In addition,
+you are also prompted for additional ATTRIBUTES.
 
-Arguments are FILENAME, which tells where to find the file, TYPE, the MIME
-content type, DESCRIPTION, a line of text for the Content-Description field.
-ATTRIBUTES is a comma separated list of name=value pairs that is appended to
-the Content-Type field of the attachment.
-
-See also \\[mh-edit-mhn]."
-  (interactive (let ((filename (read-file-name "Insert contents of: ")))
+See also \\[mh-mh-to-mime]."
+  (interactive (let ((filename (mml-minibuffer-read-file "Attach file: ")))
                  (list
                   filename
-                  (or (mh-file-mime-type filename)
-                      (completing-read "Content-Type: "
-                                       (if (fboundp 'mailcap-mime-types)
-                                           (mapcar 'list (mailcap-mime-types))
-                                         mh-mime-content-types)))
-                  (read-string "Content-Description: ")
-                  (read-string "Content-Attributes: "
+                  (mh-minibuffer-read-type filename)
+                  (mml-minibuffer-read-description)
+                  (read-string "Attributes: "
                                (concat "name=\""
                                        (file-name-nondirectory filename)
                                        "\"")))))
-  (mh-mhn-compose-type filename type description attributes ))
+  (mh-mh-compose-type filename type description attributes))
 
-(defun mh-mhn-compose-type (filename type
+(defun mh-mh-compose-type (filename type
                                      &optional description attributes comment)
-  "Insert a mhn directive to insert a file.
-
+  "Insert an MH-style directive to insert a file.
 The file specified by FILENAME is encoded as TYPE. An optional DESCRIPTION is
 used as the Content-Description field, optional set of ATTRIBUTES and an
 optional COMMENT can also be included."
@@ -292,75 +311,62 @@
   (insert "] " (expand-file-name filename))
   (insert "\n"))
 
+;;;###mh-autoload
+(defun mh-mh-compose-anon-ftp (host filename type description)
+  "Add tag to include anonymous ftp reference to a file.
+You can even have your message initiate an \"ftp\" transfer when the
+recipient reads the message. You are prompted for the remote
+HOST and FILENAME, the media TYPE, and the content DESCRIPTION.
+
+See also \\[mh-mh-to-mime]."
+  (interactive (list
+                (read-string "Remote host: ")
+                (read-string "Remote filename: ")
+                (mh-minibuffer-read-type "DUMMY-FILENAME")
+                (mml-minibuffer-read-description)))
+  (mh-mh-compose-external-type "anon-ftp" host filename
+                               type description))
 
 ;;;###mh-autoload
-(defun mh-mhn-compose-anon-ftp (host filename type description)
-  "Add a directive for a MIME anonymous ftp external body part.
-This directive tells MH to include a reference to a message/external-body part
-retrievable by anonymous FTP.
+(defun mh-mh-compose-external-compressed-tar (host filename description)
+  "Add tag to include anonymous ftp reference to a compressed tar file.
+In addition to retrieving the file via anonymous \"ftp\" as per the
+\\[mh-mh-compose-anon-ftp] command, the file will also be uncompressed and
+untarred. You are prompted for the remote HOST and FILENAME and the content
+DESCRIPTION.
 
-Arguments are HOST and FILENAME, which tell where to find the file, TYPE, the
-MIME content type, and DESCRIPTION, a line of text for the Content-description
-header.
-
-See also \\[mh-edit-mhn]."
+See also \\[mh-mh-to-mime]."
   (interactive (list
                 (read-string "Remote host: ")
                 (read-string "Remote filename: ")
-                (completing-read "External Content-Type: "
-                                 (if (fboundp 'mailcap-mime-types)
-                                     (mapcar 'list (mailcap-mime-types))
-                                   mh-mime-content-types))
-                (read-string "External Content-Description: ")))
-  (mh-mhn-compose-external-type "anon-ftp" host filename
-                                type description))
+                (mml-minibuffer-read-description)))
+  (mh-mh-compose-external-type "anon-ftp" host filename
+                               "application/octet-stream"
+                               description
+                               "type=tar; conversions=x-compress"
+                               "mode=image"))
 
 ;;;###mh-autoload
-(defun mh-mhn-compose-external-compressed-tar (host filename description)
-  "Add a directive to include a MIME reference to a compressed tar file.
-The file should be available via anonymous ftp. This directive tells MH to
-include a reference to a message/external-body part.
+(defun mh-mh-compose-external-type (access-type host filename type
+                                                &optional description
+                                                attributes parameters
+                                                comment)
+  "Add tag to refer to a remote file.
+This command is a general utility for referencing external files. In fact, all
+of the other commands that insert directives to access external files call
+this command. You are prompted for the ACCESS-TYPE, remote HOST and FILENAME,
+and content TYPE. If you provide a prefix argument, you are also prompted for
+a content DESCRIPTION, ATTRIBUTES, PARAMETERS, and a COMMENT.
 
-Arguments are HOST and FILENAME, which tell where to find the file, and
-DESCRIPTION, a line of text for the Content-description header.
-
-See also \\[mh-edit-mhn]."
+See also \\[mh-mh-to-mime]."
   (interactive (list
+                (completing-read "Access type: " mh-access-types)
                 (read-string "Remote host: ")
                 (read-string "Remote filename: ")
-                (read-string "Tar file Content-description: ")))
-  (mh-mhn-compose-external-type "anon-ftp" host filename
-                                "application/octet-stream"
-                                description
-                                "type=tar; conversions=x-compress"
-                                "mode=image"))
-
-;;;###mh-autoload
-(defun mh-mhn-compose-external-type (access-type host filename type
-                                                 &optional description
-                                                 attributes extra-params
-                                                 comment)
-  "Add a directive to include a MIME reference to a remote file.
-The file should be available via anonymous ftp. This directive tells MH to
-include a reference to a message/external-body part.
-
-Arguments are ACCESS-TYPE, HOST and FILENAME, which tell where to find the
-file and TYPE which is the MIME Content-Type. Optional arguments include
-DESCRIPTION, a line of text for the Content-description header, ATTRIBUTES,
-EXTRA-PARAMS, and COMMENT.
-
-See also \\[mh-edit-mhn]."
-  (interactive (list
-                (completing-read "Access Type: " mh-access-types)
-                (read-string "Remote host: ")
-                (read-string "Remote url-path: ")
-                (completing-read "Content-Type: "
-                                 (if (fboundp 'mailcap-mime-types)
-                                     (mapcar 'list (mailcap-mime-types))
-                                   mh-mime-content-types))
-                (if current-prefix-arg (read-string "Content-description: "))
+                (mh-minibuffer-read-type "DUMMY-FILENAME")
+                (if current-prefix-arg (mml-minibuffer-read-description))
                 (if current-prefix-arg (read-string "Attributes: "))
-                (if current-prefix-arg (read-string "Extra Parameters: "))
+                (if current-prefix-arg (read-string "Parameters: "))
                 (if current-prefix-arg (read-string "Comment: "))))
   (beginning-of-line)
   (insert "#@" type)
@@ -378,25 +384,24 @@
   (let ((directory (file-name-directory filename)))
     (and directory
          (insert "; directory=\"" directory "\"")))
-  (and extra-params
-       (insert "; " extra-params))
+  (and parameters
+       (insert "; " parameters))
   (insert "\n"))
 
 ;;;###mh-autoload
-(defun mh-mhn-compose-forw (&optional description folder messages)
-  "Add a forw directive to this message, to forward a message with MIME.
-This directive tells MH to include the named messages in this one.
+(defun mh-mh-forward-message (&optional description folder messages)
+  "Add tag to forward a message.
+You are prompted for a content DESCRIPTION, the name of the FOLDER in which
+the messages to forward are located, and the MESSAGES' numbers.
 
-Arguments are DESCRIPTION, a line of text for the Content-description header,
-and FOLDER and MESSAGES, which name the message(s) to be forwarded.
-
-See also \\[mh-edit-mhn]."
+See also \\[mh-mh-to-mime]."
   (interactive (list
-                (read-string "Forw Content-description: ")
+                (mml-minibuffer-read-description)
                 (mh-prompt-for-folder "Message from" mh-sent-from-folder nil)
                 (read-string (concat "Messages"
                                      (if (numberp mh-sent-from-msg)
-                                         (format " (default %d): " mh-sent-from-msg)
+                                         (format " (default %d): "
+                                                 mh-sent-from-msg)
                                        ": ")))))
   (beginning-of-line)
   (insert "#forw [")
@@ -417,62 +422,59 @@
   (insert "\n"))
 
 ;;;###mh-autoload
-(defun mh-edit-mhn (&optional extra-args)
-  "Format the current draft for MIME, expanding any mhn directives.
-
-Process the current draft with the mhn program, which, using directives
-already inserted in the draft, fills in all the MIME components and header
-fields.
-
-This step is performed automatically when sending the message, but this
-function may be called manually before sending the draft as well.
-
-The `\\[mh-revert-mhn-edit]' command undoes this command. The arguments in the
-list `mh-mhn-args' are passed to mhn if this function is passed an optional
-prefix argument EXTRA-ARGS.
+(defun mh-mh-to-mime (&optional extra-args)
+  "Compose MIME message from MH-style directives.
+Typically, you send a message with attachments just like any other message.
+However, you may take a sneak preview of the MIME encoding if you wish by
+running this command.
 
-For assistance with creating mhn directives to insert various types of
-components in a message, see \\[mh-mhn-compose-insertion] (generic insertion
-from a file), \\[mh-mhn-compose-anon-ftp] (external reference to file via
-anonymous ftp), \\[mh-mhn-compose-external-compressed-tar] \ \(reference to
-compressed tar file via anonymous ftp), and \\[mh-mhn-compose-forw] (forward
-message).
+If you wish to pass additional arguments to \"mhbuild\" (\"mhn\") to affect
+how it builds your message, use the `mh-mh-to-mime-args' option. For example,
+you can build a consistency check into the message by setting
+`mh-mh-to-mime-args' to \"-check\". The recipient of your message can then run
+\"mhbuild -check\" on the message--\"mhbuild\" (\"mhn\") will complain if the
+message has been corrupted on the way. This command only consults this option
+when given a prefix argument.
 
-The value of `mh-edit-mhn-hook' is a list of functions to be called, with no
-arguments, after performing the conversion.
+The value of `mh-mh-to-mime-hook' is a list of functions to be called after
+the message has been formatted.
 
-The mhn program is part of MH version 6.8 or later."
+The effects of this command can be undone by running \\[mh-mh-to-mime-undo]."
   (interactive "*P")
-  (mh-mhn-quote-unescaped-sharp)
+  (mh-mh-quote-unescaped-sharp)
   (save-buffer)
-  (message "mhn editing...")
+  (message "Running %s..." (if (mh-variant-p 'nmh) "mhbuild" "mhn"))
   (cond
    ((mh-variant-p 'nmh)
     (mh-exec-cmd-error nil
-                       "mhbuild" (if extra-args mh-mhn-args) buffer-file-name))
+                       "mhbuild"
+                       (if extra-args mh-mh-to-mime-args)
+                       buffer-file-name))
    (t
     (mh-exec-cmd-error (format "mhdraft=%s" buffer-file-name)
-                       "mhn" (if extra-args mh-mhn-args) buffer-file-name)))
+                       "mhn"
+                       (if extra-args mh-mh-to-mime-args)
+                       buffer-file-name)))
   (revert-buffer t t)
-  (message "mhn editing...done")
-  (run-hooks 'mh-edit-mhn-hook))
+  (message "Running %s...done" (if (mh-variant-p 'nmh) "mhbuild" "mhn"))
+  (run-hooks 'mh-mh-to-mime-hook))
 
-(defun mh-mhn-quote-unescaped-sharp ()
-  "Quote `#' characters that haven't been quoted for `mhbuild'.
+(defun mh-mh-quote-unescaped-sharp ()
+  "Quote `#' characters that haven't been quoted for \"mhbuild\".
 If the `#' character is present in the first column, but it isn't part of a
-MHN directive then `mhbuild' gives an error. This function will quote all such
-characters."
+MH-style directive then \"mhbuild\" gives an error. This function will quote
+all such characters."
   (save-excursion
     (goto-char (point-min))
     (while (re-search-forward "^#" nil t)
       (beginning-of-line)
-      (unless (mh-mhn-directive-present-p (point) (line-end-position))
+      (unless (mh-mh-directive-present-p (point) (line-end-position))
         (insert "#"))
       (goto-char (line-end-position)))))
 
 ;;;###mh-autoload
-(defun mh-revert-mhn-edit (noconfirm)
-  "Undo the effect of \\[mh-edit-mhn] by reverting to the backup file.
+(defun mh-mh-to-mime-undo (noconfirm)
+  "Undo effects of \\[mh-mh-to-mime].
 Optional non-nil argument NOCONFIRM means don't ask for confirmation."
   (interactive "*P")
   (if (null buffer-file-name)
@@ -499,25 +501,25 @@
     (after-find-file nil)))
 
 ;;;###mh-autoload
-(defun mh-mhn-directive-present-p (&optional begin end)
-  "Check if the text between BEGIN and END might be a MHN directive.
+(defun mh-mh-directive-present-p (&optional begin end)
+  "Check if the text between BEGIN and END might be a MH-style directive.
 The optional argument BEGIN defaults to the beginning of the buffer, while END
 defaults to the the end of the buffer."
   (unless begin (setq begin (point-min)))
   (unless end (setq end (point-max)))
   (save-excursion
-    (block 'search-for-mhn-directive
+    (block 'search-for-mh-directive
       (goto-char begin)
       (while (re-search-forward "^#" end t)
         (let ((s (buffer-substring-no-properties (point) (line-end-position))))
           (cond ((equal s ""))
                 ((string-match "^forw[ \t\n]+" s)
-                 (return-from 'search-for-mhn-directive t))
+                 (return-from 'search-for-mh-directive t))
                 (t (let ((first-token (car (split-string s "[ \t;@]"))))
                      (when (and first-token
                                 (string-match mh-media-type-regexp
                                               first-token))
-                       (return-from 'search-for-mhn-directive t)))))))
+                       (return-from 'search-for-mh-directive t)))))))
       nil)))
 
 
@@ -526,12 +528,15 @@
 
 ;;;###mh-autoload
 (defun mh-mml-to-mime ()
-  "Compose MIME message from mml directives.
-This step is performed automatically when sending the message, but this
-function may be called manually before sending the draft as well."
+  "Compose MIME message from MML tags.
+Typically, you send a message with attachments just like any other message.
+However, you may take a sneak preview of the MIME encoding if you wish by
+running this command.
+
+This action can be undone by running \\[undo]."
   (interactive)
   (require 'message)
-  (when mh-gnus-pgp-support-flag ;; This is only needed for PGP
+  (when mh-pgp-support-flag ;; This is only needed for PGP
     (message-options-set-recipient))
   (let ((saved-text (buffer-string))
         (buffer (current-buffer))
@@ -573,53 +578,45 @@
   (if current-prefix-arg
       (let ((def (or (car mh-mml-cryptographic-method-history)
                      mh-mml-method-default)))
-        (completing-read (format "Method: [%s] " def)
+        (completing-read (format "Method (default %s): " def)
                          '(("pgp") ("pgpmime") ("smime"))
                          nil t nil 'mh-mml-cryptographic-method-history def))
     mh-mml-method-default))
 
 ;;;###mh-autoload
 (defun mh-mml-attach-file (&optional disposition)
-  "Attach a file to the outgoing MIME message.
-The file is not inserted or encoded until you send the message with
-`\\[mh-send-letter]'.
-Message disposition is \"inline\" or \"attachment\" and is prompted for if
-DISPOSITION is nil.
+  "Add a tag to insert a MIME message part from a file.
+You are prompted for the filename containing the object, the media type if it
+cannot be determined automatically, a content description and the disposition
+of the attachment.
 
-This is basically `mml-attach-file' from gnus, modified such that a prefix
+This is basically `mml-attach-file' from Gnus, modified such that a prefix
 argument yields an `inline' disposition and Content-Type is determined
 automatically."
   (let* ((file (mml-minibuffer-read-file "Attach file: "))
-         (type (or (mh-file-mime-type file)
-                   (completing-read "Content-Type: "
-                                    (if (fboundp 'mailcap-mime-types)
-                                        (mapcar 'list (mailcap-mime-types))
-                                      mh-mime-content-types))))
+         (type (mh-minibuffer-read-type file))
          (description (mml-minibuffer-read-description))
          (dispos (or disposition
-                     (completing-read "Disposition: [attachment] "
-                                      '(("attachment")("inline"))
-                                      nil t nil nil
-                                      "attachment"))))
+                     (mml-minibuffer-read-disposition type))))
     (mml-insert-empty-tag 'part 'type type 'filename file
                           'disposition dispos 'description description)))
 
 (defvar mh-identity-pgg-default-user-id)
 
 (defun mh-secure-message (method mode &optional identity)
-  "Add directive to Encrypt/Sign an entire message.
+  "Add tag to encrypt or sign message.
 METHOD should be one of: \"pgpmime\", \"pgp\", \"smime\".
 MODE should be one of: \"sign\", \"encrypt\", \"signencrypt\", \"none\".
 IDENTITY is optionally the default-user-id to use."
-  (if (not mh-gnus-pgp-support-flag)
-      (error "Sorry.  Your version of gnus does not support PGP/GPG")
+  (if (not mh-pgp-support-flag)
+      (error "Your version of Gnus does not support PGP/GPG")
     ;; Check the arguments
     (let ((valid-methods (list "pgpmime" "pgp" "smime"))
           (valid-modes (list "sign" "encrypt" "signencrypt" "none")))
       (if (not (member method valid-methods))
-          (error "Sorry. METHOD \"%s\" is invalid" method))
+          (error "Method \"%s\" is invalid" method))
       (if (not (member mode valid-modes))
-          (error "Sorry. MODE \"%s\" is invalid" mode))
+          (error "Mode \"%s\" is invalid" mode))
       (mml-unsecure-message)
       (if (not (string= mode "none"))
         (save-excursion
@@ -632,34 +629,46 @@
 
 ;;;###mh-autoload
 (defun mh-mml-unsecure-message (&optional ignore)
-  "Remove any secure message directives.
-The IGNORE argument is not used."
+  "Remove any secure message tags.
+The argument IGNORE is not used."
   (interactive "P")
-  (if (not mh-gnus-pgp-support-flag)
-      (error "Sorry.  Your version of gnus does not support PGP/GPG")
+  (if (not mh-pgp-support-flag)
+      (error "Your version of Gnus does not support PGP/GPG")
     (mml-unsecure-message)))
 
 ;;;###mh-autoload
 (defun mh-mml-secure-message-sign (method)
-  "Add security directive to sign the entire message using METHOD."
+  "Add tag to sign the message.
+A proper multipart message is created for you when you send the message. Use
+the \\[mh-mml-unsecure-message] command to remove this tag. Use a prefix
+argument METHOD to be prompted for one of the possible security methods
+(see `mh-mml-method-default')."
   (interactive (list (mh-mml-query-cryptographic-method)))
   (mh-secure-message method "sign" mh-identity-pgg-default-user-id))
 
 ;;;###mh-autoload
 (defun mh-mml-secure-message-encrypt (method)
-  "Add security directive to encrypt the entire message using METHOD."
+  "Add tag to encrypt the message.
+A proper multipart message is created for you when you send the message. Use
+the \\[mh-mml-unsecure-message] command to remove this tag. Use a prefix
+argument METHOD to be prompted for one of the possible security methods
+(see `mh-mml-method-default')."
   (interactive (list (mh-mml-query-cryptographic-method)))
   (mh-secure-message method "encrypt" mh-identity-pgg-default-user-id))
 
 ;;;###mh-autoload
 (defun mh-mml-secure-message-signencrypt (method)
-  "Add security directive to encrypt and sign the entire message using METHOD."
+  "Add tag to encrypt and sign the message.
+A proper multipart message is created for you when you send the message. Use
+the \\[mh-mml-unsecure-message] command to remove this tag. Use a prefix
+argument METHOD to be prompted for one of the possible security methods
+(see `mh-mml-method-default')."
   (interactive (list (mh-mml-query-cryptographic-method)))
   (mh-secure-message method "signencrypt" mh-identity-pgg-default-user-id))
 
 ;;;###mh-autoload
-(defun mh-mml-directive-present-p ()
-  "Check if the current buffer has text which may be an MML directive."
+(defun mh-mml-tag-present-p ()
+  "Check if the current buffer has text which may be a MML tag."
   (save-excursion
     (goto-char (point-min))
     (re-search-forward
@@ -682,7 +691,7 @@
 
 ;;;###mh-autoload
 (defun mh-destroy-postponed-handles ()
-  "Free MIME data for externally displayed mime parts."
+  "Free MIME data for externally displayed MIME parts."
   (let ((mime-data (mh-buffer-data)))
     (when mime-data
       (mm-destroy-parts (mh-mime-handles mime-data)))
@@ -736,13 +745,13 @@
 
 ;;;###mh-autoload
 (defun mh-display-smileys ()
-  "Function to display smileys."
+  "Display smileys."
   (when (and mh-graphical-smileys-flag (mh-small-show-buffer-p))
     (mh-funcall-if-exists smiley-region (point-min) (point-max))))
 
 ;;;###mh-autoload
 (defun mh-display-emphasis ()
-  "Function to display graphical emphasis."
+  "Display graphical emphasis."
   (when (and mh-graphical-emphasis-flag (mh-small-show-buffer-p))
     (flet ((article-goto-body ()))      ; shadow this function to do nothing
       (save-excursion
@@ -799,8 +808,7 @@
   "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 directives, since this function calls on mhstore or mhn to do the
-actual storing."
+MH profile components, since this function calls on mhstore to do the work."
   (interactive "P")
   (let ((msg (if (eq major-mode 'mh-show-mode)
                  (mh-show-buffer-message-number)
@@ -940,7 +948,7 @@
          (mh-mime-display-single handle))
         ((equal (car handle) "multipart/alternative")
          (mh-mime-display-alternative (cdr handle)))
-        ((and mh-gnus-pgp-support-flag
+        ((and mh-pgp-support-flag
               (or (equal (car handle) "multipart/signed")
                   (equal (car handle) "multipart/encrypted")))
          (mh-mime-display-security handle))
@@ -1047,7 +1055,7 @@
                                      (mm-inlined-p handle)))))))
     (save-restriction
       (narrow-to-region (point) (if (eobp) (point) (1+ (point))))
-      (cond ((and mh-gnus-pgp-support-flag
+      (cond ((and mh-pgp-support-flag
                   (equal type "application/pgp-signature"))
              nil)             ; skip signatures as they are already handled...
             ((not displayp)
--- a/lisp/mh-e/mh-utils.el	Sun Oct 23 21:12:46 2005 +0000
+++ b/lisp/mh-e/mh-utils.el	Sun Oct 23 21:26:17 2005 +0000
@@ -175,8 +175,8 @@
 (defvar mh-globals-hash (make-hash-table)
   "Keeps track of MIME data on a per buffer basis.")
 
-(defvar mh-gnus-pgp-support-flag (not (not (locate-library "mml2015")))
-  "Non-nil means installed Gnus has PGP support.")
+(defvar mh-pgp-support-flag (not (not (locate-library "mml2015")))
+  "Non-nil means PGP support is available.")
 
 (defvar mh-mm-inline-media-tests
   `(("image/jpeg"
@@ -410,10 +410,10 @@
 
 (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 `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."
   (let ((header-end (mh-mail-header-end)))
     (cond
      ((and (< beg header-end)(< end header-end))
@@ -432,7 +432,7 @@
         (require 'gnus-cite))))
 
 (defun mh-gnus-article-highlight-citation ()
-  "Highlight cited text in current buffer using gnus."
+  "Highlight cited text in current buffer using Gnus."
   (interactive)
   ;; Requiring gnus-cite should have been sufficient. However for Emacs21.1,
   ;; recursive-load-depth-limit is only 10, so an error occurs. Also it may be