aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Wohler2006-01-03 06:13:43 +0000
committerBill Wohler2006-01-03 06:13:43 +0000
commitaf43518401786b4745d27811df65d9d615780f31 (patch)
tree90b6c3888c4d8edb4644d71cd8cd56d01f6c9f1f
parent31869a0f005faf6b1e4ef65c97858a95547296ab (diff)
downloademacs-af43518401786b4745d27811df65d9d615780f31.tar.gz
emacs-af43518401786b4745d27811df65d9d615780f31.zip
* mh-alias.el (mh-alias-grab-from-field): Remove leading * from
docstring. Does this mean something in a defun? * mh-customize.el (bw-new-face-to-old, bw-old-face-to-new): Checkdoc fix. * mh-e.el (mh-inc-folder): Rename maildrop-name argument to file so it reads better in docstring and manual. Sync docstring with manual. * mh-init.el (mh-defface-compat): Remove trailing space (checkdoc). * mh-alias.el (mh-alias-apropos): Sync docstring with manual. * mh-comp.el (mh-redistribute, mh-to-field, mh-to-fcc) (mh-insert-auto-fields, mh-send-letter, mh-yank-cur-msg) (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): Ditto. * mh-customize.el (mh-alias-completion-ignore-case-flag) (mh-default-folder-for-message-function, mh-mml-method-default) (mh-signature-file-name, mh-yank-behavior, mh-show-hook) (mh-show-mode-hook) Ditto. * mh-e.el (mh-refile-or-write-again, mh-toggle-showing): Ditto. * mh-funcs.el (mh-pipe-msg, mh-sort-folder, mh-undo-folder) (mh-store-msg, mh-store-buffer): Ditto * mh-index.el (mh-index-search, mh-index-do-search) (mh-index-next-folder, mh-index-sequenced-messages): Ditto. * mh-junk.el (mh-spamassassin-blacklist): Ditto. * mh-mime.el (mh-mh-compose-external-compressed-tar) (mh-mh-compose-external-type, mh-mh-to-mime, mh-mh-to-mime-undo) (mh-mml-secure-message-sign, mh-mml-secure-message-encrypt) (mh-mml-secure-message-signencrypt): Ditto * mh-pick.el (mh-search-folder): Ditto. * mh-seq.el (mh-widen): Ditto. * mh-utils.el (mh-show, mh-modify): Ditto.
-rw-r--r--lisp/mh-e/ChangeLog49
-rw-r--r--lisp/mh-e/mh-alias.el6
-rw-r--r--lisp/mh-e/mh-comp.el91
-rw-r--r--lisp/mh-e/mh-customize.el73
-rw-r--r--lisp/mh-e/mh-e.el32
-rw-r--r--lisp/mh-e/mh-funcs.el30
-rw-r--r--lisp/mh-e/mh-index.el96
-rw-r--r--lisp/mh-e/mh-init.el2
-rw-r--r--lisp/mh-e/mh-junk.el83
-rw-r--r--lisp/mh-e/mh-mime.el41
-rw-r--r--lisp/mh-e/mh-pick.el101
-rw-r--r--lisp/mh-e/mh-seq.el10
-rw-r--r--lisp/mh-e/mh-utils.el12
13 files changed, 360 insertions, 266 deletions
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index a8e130bcc1b..9e68139065a 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,52 @@
12006-01-02 Bill Wohler <wohler@newt.com>
2
3 * mh-alias.el (mh-alias-grab-from-field): Remove leading * from
4 docstring. Does this mean something in a defun?
5
6 * mh-customize.el (bw-new-face-to-old, bw-old-face-to-new):
7 Checkdoc fix.
8
9 * mh-e.el (mh-inc-folder): Rename maildrop-name argument to file
10 so it reads better in docstring and manual. Sync docstring with
11 manual.
12
13 * mh-init.el (mh-defface-compat): Remove trailing space (checkdoc).
14
15 * mh-alias.el (mh-alias-apropos): Sync docstring with manual.
16
17 * mh-comp.el (mh-redistribute, mh-to-field, mh-to-fcc)
18 (mh-insert-auto-fields, mh-send-letter, mh-yank-cur-msg)
19 (mh-fully-kill-draft, mh-open-line, mh-letter-complete)
20 (mh-letter-complete-or-space, mh-letter-confirm-address)
21 (mh-letter-next-header-field-or-indent)
22 (mh-letter-previous-header-field): Ditto.
23
24 * mh-customize.el (mh-alias-completion-ignore-case-flag)
25 (mh-default-folder-for-message-function, mh-mml-method-default)
26 (mh-signature-file-name, mh-yank-behavior, mh-show-hook)
27 (mh-show-mode-hook) Ditto.
28
29 * mh-e.el (mh-refile-or-write-again, mh-toggle-showing): Ditto.
30
31 * mh-funcs.el (mh-pipe-msg, mh-sort-folder, mh-undo-folder)
32 (mh-store-msg, mh-store-buffer): Ditto
33
34 * mh-index.el (mh-index-search, mh-index-do-search)
35 (mh-index-next-folder, mh-index-sequenced-messages): Ditto.
36
37 * mh-junk.el (mh-spamassassin-blacklist): Ditto.
38
39 * mh-mime.el (mh-mh-compose-external-compressed-tar)
40 (mh-mh-compose-external-type, mh-mh-to-mime, mh-mh-to-mime-undo)
41 (mh-mml-secure-message-sign, mh-mml-secure-message-encrypt)
42 (mh-mml-secure-message-signencrypt): Ditto
43
44 * mh-pick.el (mh-search-folder): Ditto.
45
46 * mh-seq.el (mh-widen): Ditto.
47
48 * mh-utils.el (mh-show, mh-modify): Ditto.
49
12006-01-02 Mark D. Baushke <mdb@gnu.org> 502006-01-02 Mark D. Baushke <mdb@gnu.org>
2 51
3 * mh-mime.el (mh-mml-unsecure-message): Remove unused argument. 52 * mh-mime.el (mh-mml-unsecure-message): Remove unused argument.
diff --git a/lisp/mh-e/mh-alias.el b/lisp/mh-e/mh-alias.el
index 397cd9ea782..d9d77b6430d 100644
--- a/lisp/mh-e/mh-alias.el
+++ b/lisp/mh-e/mh-alias.el
@@ -1,7 +1,7 @@
1;;; mh-alias.el --- MH-E mail alias completion and expansion 1;;; mh-alias.el --- MH-E mail alias completion and expansion
2;; 2;;
3;; Copyright (C) 1994, 1995, 1996, 1997, 3;; Copyright (C) 1994, 1995, 1996, 1997,
4;; 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Peter S. Galbraith <psg@debian.org> 6;; Author: Peter S. Galbraith <psg@debian.org>
7;; Maintainer: Bill Wohler <wohler@newt.com> 7;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -580,7 +580,7 @@ filing messages."
580 580
581;;;###mh-autoload 581;;;###mh-autoload
582(defun mh-alias-grab-from-field () 582(defun mh-alias-grab-from-field ()
583 "*Add alias for the sender of the current message." 583 "Add alias for the sender of the current message."
584 (interactive) 584 (interactive)
585 (mh-alias-reload-maybe) 585 (mh-alias-reload-maybe)
586 (save-excursion 586 (save-excursion
@@ -609,7 +609,7 @@ filing messages."
609 609
610;;;###mh-autoload 610;;;###mh-autoload
611(defun mh-alias-apropos (regexp) 611(defun mh-alias-apropos (regexp)
612 "Show all aliases or addresses that match REGEXP." 612 "Show all aliases or addresses that match a regular expression REGEXP."
613 (interactive "sAlias regexp: ") 613 (interactive "sAlias regexp: ")
614 (if mh-alias-local-users 614 (if mh-alias-local-users
615 (mh-alias-reload-maybe)) 615 (mh-alias-reload-maybe))
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el
index 113572153af..63c35fd221f 100644
--- a/lisp/mh-e/mh-comp.el
+++ b/lisp/mh-e/mh-comp.el
@@ -1,7 +1,7 @@
1;;; mh-comp.el --- MH-E functions for composing messages 1;;; mh-comp.el --- MH-E functions for composing messages
2 2
3;; Copyright (C) 1993, 1995, 1997, 3;; Copyright (C) 1993, 1995, 1997,
4;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Bill Wohler <wohler@newt.com> 6;; Author: Bill Wohler <wohler@newt.com>
7;; Maintainer: Bill Wohler <wohler@newt.com> 7;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -462,7 +462,7 @@ the message had come from the original sender. When you run this
462command, you are prompted for the TO and CC recipients. The 462command, you are prompted for the TO and CC recipients. The
463default MESSAGE is the current message. 463default MESSAGE is the current message.
464 464
465Also investigate the \\[mh-edit-again] command for another way to 465Also investigate the command \\[mh-edit-again] for another way to
466redistribute messages. 466redistribute messages.
467 467
468See also `mh-redist-full-contents-flag'." 468See also `mh-redist-full-contents-flag'."
@@ -1114,10 +1114,12 @@ lines."
1114;;;###mh-autoload 1114;;;###mh-autoload
1115(defun mh-to-field () 1115(defun mh-to-field ()
1116 "Move to specified header field. 1116 "Move to specified header field.
1117The field is indicated by the previous keystroke (the last keystroke 1117
1118of the command) according to the list in the variable 1118The field is indicated by the previous keystroke (the last
1119`mh-to-field-choices'. Create the field if it does not exist. Set the 1119keystroke of the command) according to the list in the variable
1120mark to point before moving." 1120`mh-to-field-choices'.
1121Create the field if it does not exist.
1122Set the mark to point before moving."
1121 (interactive) 1123 (interactive)
1122 (expand-abbrev) 1124 (expand-abbrev)
1123 (let ((target (cdr (or (assoc (char-to-string (logior last-input-char ?`)) 1125 (let ((target (cdr (or (assoc (char-to-string (logior last-input-char ?`))
@@ -1146,8 +1148,9 @@ mark to point before moving."
1146;;;###mh-autoload 1148;;;###mh-autoload
1147(defun mh-to-fcc (&optional folder) 1149(defun mh-to-fcc (&optional folder)
1148 "Move to \"Fcc:\" header field. 1150 "Move to \"Fcc:\" header field.
1149This command will prompt you for the FOLDER name in which to file a 1151
1150copy of the draft." 1152This command will prompt you for the FOLDER name in which to file
1153a copy of the draft."
1151 (interactive) 1154 (interactive)
1152 (or folder 1155 (or folder
1153 (setq folder (mh-prompt-for-folder 1156 (setq folder (mh-prompt-for-folder
@@ -1333,10 +1336,9 @@ The versions of MH-E, Emacs, and MH are shown."
1333(defun mh-insert-auto-fields (&optional non-interactive) 1336(defun mh-insert-auto-fields (&optional non-interactive)
1334 "Insert custom fields if recipient is found in `mh-auto-fields-list'. 1337 "Insert custom fields if recipient is found in `mh-auto-fields-list'.
1335 1338
1336Sets buffer-local `mh-insert-auto-fields-done-local' when done 1339Sets buffer-local `mh-insert-auto-fields-done-local' if header
1337and inserted something. If NON-INTERACTIVE is non-nil, do not be 1340fields were added. If NON-INTERACTIVE is non-nil, perform actions
1338verbose and only attempt matches if 1341quietly and only if `mh-insert-auto-fields-done-local' is nil.
1339`mh-insert-auto-fields-done-local' is nil.
1340 1342
1341An `identity' entry is skipped if one was already entered 1343An `identity' entry is skipped if one was already entered
1342manually. 1344manually.
@@ -1476,9 +1478,9 @@ command. You can give a prefix argument ARG to monitor the first stage
1476of the delivery\; this output can be found in a buffer called \"*MH-E 1478of the delivery\; this output can be found in a buffer called \"*MH-E
1477Mail Delivery*\". 1479Mail Delivery*\".
1478 1480
1479The hook `mh-before-send-letter-hook' is run at the beginning of the 1481The hook `mh-before-send-letter-hook' is run at the beginning of
1480this command. For example, if you want to check your spelling in your 1482this command. For example, if you want to check your spelling in
1481message before sending, add the `ispell-message' function. 1483your message before sending, add the function `ispell-message'.
1482 1484
1483In case the MH \"send\" program is installed under a different name, 1485In case the MH \"send\" program is installed under a different name,
1484use `mh-send-prog' to tell MH-E the name." 1486use `mh-send-prog' to tell MH-E the name."
@@ -1607,12 +1609,13 @@ text from the message to which you're replying, and inserting
1607`mh-ins-buf-prefix' (`> ') before each line. 1609`mh-ins-buf-prefix' (`> ') before each line.
1608 1610
1609The attribution consists of the sender's name and email address 1611The attribution consists of the sender's name and email address
1610followed by the content of the `mh-extract-from-attribution-verb' 1612followed by the content of the option
1611option. 1613`mh-extract-from-attribution-verb'.
1612 1614
1613You can also turn on the `mh-delete-yanked-msg-window-flag' 1615You can also turn on the option
1614option to delete the window containing the original message after 1616`mh-delete-yanked-msg-window-flag' to delete the window
1615yanking it to make more room on your screen for your reply. 1617containing the original message after yanking it to make more
1618room on your screen for your reply.
1616 1619
1617You can control how the message to which you are replying is 1620You can control how the message to which you are replying is
1618yanked into your reply using `mh-yank-behavior'. 1621yanked into your reply using `mh-yank-behavior'.
@@ -1741,9 +1744,10 @@ Otherwise, simply insert MH-INS-STRING before each line."
1741;;;###mh-autoload 1744;;;###mh-autoload
1742(defun mh-fully-kill-draft () 1745(defun mh-fully-kill-draft ()
1743 "Quit editing and delete draft message. 1746 "Quit editing and delete draft message.
1747
1744If for some reason you are not happy with the draft, you can use 1748If for some reason you are not happy with the draft, you can use
1745the this command to kill the draft buffer and delete the draft 1749this command to kill the draft buffer and delete the draft
1746message. Use the \\[kill-buffer] command if you don't want to 1750message. Use the command \\[kill-buffer] if you don't want to
1747delete the draft message." 1751delete the draft message."
1748 (interactive) 1752 (interactive)
1749 (if (y-or-n-p "Kill draft message? ") 1753 (if (y-or-n-p "Kill draft message? ")
@@ -1771,9 +1775,9 @@ delete the draft message."
1771 1775
1772;;;###mh-autoload 1776;;;###mh-autoload
1773(defun mh-open-line () 1777(defun mh-open-line ()
1774 "Insert a newline and leave point after it. 1778 "Insert a newline and leave point before it.
1775 1779
1776This command is similar to the \\[open-line] command in that it 1780This command is similar to the command \\[open-line] in that it
1777inserts a newline after point. It differs in that it also inserts 1781inserts a newline after point. It differs in that it also inserts
1778the right number of quoting characters and spaces so that the 1782the right number of quoting characters and spaces so that the
1779next line begins in the same column as it was. This is useful 1783next line begins in the same column as it was. This is useful
@@ -1865,12 +1869,13 @@ Any match found replaces the text from BEGIN to END."
1865 1869
1866(defun mh-letter-complete (arg) 1870(defun mh-letter-complete (arg)
1867 "Perform completion on header field or word preceding point. 1871 "Perform completion on header field or word preceding point.
1872
1868If the field contains addresses (for example, \"To:\" or \"Cc:\") 1873If the field contains addresses (for example, \"To:\" or \"Cc:\")
1869or folders (for example, \"Fcc:\") then this command will 1874or folders (for example, \"Fcc:\") then this command will provide
1870provide alias completion. In the body of the message, this 1875alias completion. In the body of the message, this command runs
1871command runs `mh-letter-complete-function' instead, which is set 1876`mh-letter-complete-function' instead, which is set to
1872to \"'ispell-complete-word\" by default. This command takes a 1877`ispell-complete-word' by default. This command takes a prefix
1873prefix argument ARG that is passed to the 1878argument ARG that is passed to the
1874`mh-letter-complete-function'." 1879`mh-letter-complete-function'."
1875 (interactive "P") 1880 (interactive "P")
1876 (let ((func nil)) 1881 (let ((func nil))
@@ -1883,11 +1888,11 @@ prefix argument ARG that is passed to the
1883 1888
1884(defun mh-letter-complete-or-space (arg) 1889(defun mh-letter-complete-or-space (arg)
1885 "Perform completion or insert space. 1890 "Perform completion or insert space.
1886Turn on the `mh-compose-space-does-completion-flag' option to use
1887this command to perform completion in the header. Otherwise, a
1888space is inserted.
1889 1891
1890ARG is the number of spaces inserted." 1892Turn on the option `mh-compose-space-does-completion-flag' to use
1893this command to perform completion in the header. Otherwise, a
1894space is inserted; use a prefix argument ARG to specify more than
1895one space."
1891 (interactive "p") 1896 (interactive "p")
1892 (let ((func nil) 1897 (let ((func nil)
1893 (end-of-prev (save-excursion 1898 (end-of-prev (save-excursion
@@ -1904,9 +1909,10 @@ ARG is the number of spaces inserted."
1904 1909
1905(defun mh-letter-confirm-address () 1910(defun mh-letter-confirm-address ()
1906 "Flash alias expansion. 1911 "Flash alias expansion.
1907Addresses are separated by a comma\; and when you press the 1912
1908comma, this command flashes the alias expansion in the minibuffer 1913Addresses are separated by a comma\; when you press the comma,
1909if `mh-alias-flash-on-comma' is turned on." 1914this command flashes the alias expansion in the minibuffer if
1915`mh-alias-flash-on-comma' is turned on."
1910 (interactive) 1916 (interactive)
1911 (cond ((not (mh-in-header-p)) (self-insert-command 1)) 1917 (cond ((not (mh-in-header-p)) (self-insert-command 1))
1912 ((eq (cdr (assoc (mh-letter-header-field-at-point) 1918 ((eq (cdr (assoc (mh-letter-header-field-at-point)
@@ -1929,9 +1935,11 @@ downcasing the field name."
1929 1935
1930;;;###mh-autoload 1936;;;###mh-autoload
1931(defun mh-letter-next-header-field-or-indent (arg) 1937(defun mh-letter-next-header-field-or-indent (arg)
1932 "Move to next field or indent depending on point. 1938 "Cycle to next field.
1939
1933Within the header of the message, this command moves between 1940Within the header of the message, this command moves between
1934fields, but skips those fields listed in 1941fields that are highlighted with the face
1942`mh-letter-header-field', skipping those fields listed in
1935`mh-compose-skipped-header-fields'. After the last field, this 1943`mh-compose-skipped-header-fields'. After the last field, this
1936command then moves point to the message body before cycling back 1944command then moves point to the message body before cycling back
1937to the first field. If point is already past the first line of 1945to the first field. If point is already past the first line of
@@ -1969,10 +1977,11 @@ body."
1969;;;###mh-autoload 1977;;;###mh-autoload
1970(defun mh-letter-previous-header-field () 1978(defun mh-letter-previous-header-field ()
1971 "Cycle to the previous header field. 1979 "Cycle to the previous header field.
1980
1972This command moves backwards between the fields and cycles to the 1981This command moves backwards between the fields and cycles to the
1973body of the message after the first field. Unlike the 1982body of the message after the first field. Unlike the command
1974\\[mh-letter-next-header-field-or-indent] command, it will always 1983\\[mh-letter-next-header-field-or-indent], it will always take
1975take point to the last field from anywhere in the body." 1984point to the last field from anywhere in the body."
1976 (interactive) 1985 (interactive)
1977 (let ((header-end (mh-mail-header-end))) 1986 (let ((header-end (mh-mail-header-end)))
1978 (if (>= (point) header-end) 1987 (if (>= (point) header-end)
diff --git a/lisp/mh-e/mh-customize.el b/lisp/mh-e/mh-customize.el
index edd6ee41b01..a2b667769bf 100644
--- a/lisp/mh-e/mh-customize.el
+++ b/lisp/mh-e/mh-customize.el
@@ -1,6 +1,6 @@
1;;; mh-customize.el --- MH-E customization 1;;; mh-customize.el --- MH-E customization
2 2
3;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4 4
5;; Author: Bill Wohler <wohler@newt.com> 5;; Author: Bill Wohler <wohler@newt.com>
6;; Maintainer: Bill Wohler <wohler@newt.com> 6;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -260,7 +260,7 @@ accordingly."
260 "*Non-nil means don't consider case significant in MH alias completion. 260 "*Non-nil means don't consider case significant in MH alias completion.
261 261
262As MH ignores case in the aliases, so too does MH-E. However, you 262As MH ignores case in the aliases, so too does MH-E. However, you
263may turn this option off to make case significant which can be 263may turn off this option to make case significant which can be
264used to segregate completion of your aliases. You might use 264used to segregate completion of your aliases. You might use
265lowercase for mailing lists and uppercase for people." 265lowercase for mailing lists and uppercase for people."
266 :type 'boolean 266 :type 'boolean
@@ -435,7 +435,7 @@ an alternate view. For example, \"'(\"-nolimit\" \"-textfield\"
435;;; Folder Selection (:group 'mh-folder-selection) 435;;; Folder Selection (:group 'mh-folder-selection)
436 436
437(defcustom mh-default-folder-for-message-function nil 437(defcustom mh-default-folder-for-message-function nil
438 "Function to select a default folder for refiling or \"Fcc\". 438 "Function to select a default folder for refiling or \"Fcc:\".
439 439
440The current buffer is set to the message being refiled with point 440The current buffer is set to the message being refiled with point
441at the start of the message. This function should return the 441at the start of the message. This function should return the
@@ -898,10 +898,11 @@ vanilla \"PGP\" and \"S/MIME\".
898The `pgg' customization group may have some settings which may 898The `pgg' customization group may have some settings which may
899interest you (see Info node `(pgg)'). 899interest you (see Info node `(pgg)').
900 900
901In particular, I set the option `pgg-encrypt-for-me' to t so that all 901In particular, I turn on the option `pgg-encrypt-for-me' so that
902messages I encrypt are encrypted with my public key as well. If you 902all messages I encrypt are encrypted with my public key as well.
903keep a copy of all of your outgoing mail with a \"Fcc:\" header field, 903If you keep a copy of all of your outgoing mail with a \"Fcc:\"
904this setting is vital so that you can read the mail you write!" 904header field, this setting is vital so that you can read the mail
905you write!"
905 :type '(choice (const :tag "PGP (MIME)" "pgpmime") 906 :type '(choice (const :tag "PGP (MIME)" "pgpmime")
906 (const :tag "PGP" "pgp") 907 (const :tag "PGP" "pgp")
907 (const :tag "S/MIME" "smime") 908 (const :tag "S/MIME" "smime")
@@ -925,8 +926,8 @@ said separator). The function `mh-signature-separator-p', which
925reports t if the buffer contains a separator, may be useful as well. 926reports t if the buffer contains a separator, may be useful as well.
926 927
927The signature is inserted into your message with the command 928The signature is inserted into your message with the command
928\\<mh-letter-mode-map>\\[mh-insert-signature] or with the 929\\<mh-letter-mode-map>\\[mh-insert-signature] or with the option
929`mh-identity-list' option." 930`mh-identity-list'."
930 :type 'file 931 :type 'file
931 :group 'mh-letter) 932 :group 'mh-letter)
932 933
@@ -971,33 +972,33 @@ this option doesn't exist."
971(defcustom mh-yank-behavior 'attribution 972(defcustom mh-yank-behavior 'attribution
972 "*Controls which part of a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg]. 973 "*Controls which part of a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg].
973 974
974To include the entire message, including the entire header, use \"Body 975To include the entire message, including the entire header, use
975and Header\". Use \"Body\" to yank just the body without the header. 976\"Body and Header\". Use \"Body\" to yank just the body without
976To yank only the portion of the message following the point, set this 977the header. To yank only the portion of the message following the
977option to \"Below Point\". 978point, set this option to \"Below Point\".
978 979
979Choose \"Invoke supercite\" to pass the entire message and header 980Choose \"Invoke supercite\" to pass the entire message and header
980through supercite. 981through supercite.
981 982
982If the \"Body With Attribution\" setting is used, then the message 983If the \"Body With Attribution\" setting is used, then the
983minus the header is yanked and a simple attribution line is added at 984message minus the header is yanked and a simple attribution line
984the top using the value of the `mh-extract-from-attribution-verb' 985is added at the top using the value of the option
985option. This is the default. 986`mh-extract-from-attribution-verb'. This is the default.
986 987
987If the \"Invoke supercite\" or \"Body With Attribution\" settings are 988If the \"Invoke supercite\" or \"Body With Attribution\" settings
988used, the \"-noformat\" argument is passed to the \"repl\" program to 989are used, the \"-noformat\" argument is passed to the \"repl\"
989override a \"-filter\" or \"-format\" argument. These settings also 990program to override a \"-filter\" or \"-format\" argument. These
990have \"Automatically\" variants that perform the action automatically 991settings also have \"Automatically\" variants that perform the
991when you reply so that you don't need to use \\[mh-yank-cur-msg] at 992action automatically when you reply so that you don't need to use
992all. Note that this automatic action is only performed if the show 993\\[mh-yank-cur-msg] at all. Note that this automatic action is
993buffer matches the message being replied to. People who use the 994only performed if the show buffer matches the message being
994automatic variants tend to turn on the 995replied to. People who use the automatic variants tend to turn on
995`mh-delete-yanked-msg-window-flag' option as well so that the show 996the option `mh-delete-yanked-msg-window-flag' as well so that the
996window is never displayed. 997show window is never displayed.
997 998
998If the show buffer has a region, the `mh-yank-behavior' option is 999If the show buffer has a region, the option `mh-yank-behavior' is
999ignored unless its value is one of Attribution variants in which case 1000ignored unless its value is one of Attribution variants in which
1000the attribution is added to the yanked region. 1001case the attribution is added to the yanked region.
1001 1002
1002If this option is set to one of the supercite flavors, the hook 1003If this option is set to one of the supercite flavors, the hook
1003`mail-citation-hook' is ignored and `mh-ins-buf-prefix' is not 1004`mail-citation-hook' is ignored and `mh-ins-buf-prefix' is not
@@ -2460,7 +2461,7 @@ See also `mh-before-quit-hook'."
2460 2461
2461It is the last thing called after messages are displayed. It's 2462It is the last thing called after messages are displayed. It's
2462used to affect the behavior of MH-E in general or when 2463used to affect the behavior of MH-E in general or when
2463`mh-show-mode-hook' is too early." 2464`mh-show-mode-hook' is too early. See `mh-show-mode-hook'."
2464 :type 'hook 2465 :type 'hook
2465 :group 'mh-hooks 2466 :group 'mh-hooks
2466 :group 'mh-show) 2467 :group 'mh-show)
@@ -2470,7 +2471,7 @@ used to affect the behavior of MH-E in general or when
2470 2471
2471This hook is called early on in the process of the message 2472This hook is called early on in the process of the message
2472display. It is usually used to perform some action on the 2473display. It is usually used to perform some action on the
2473message's content." 2474message's content. See `mh-show-hook'."
2474 :type 'hook 2475 :type 'hook
2475 :group 'mh-hooks 2476 :group 'mh-hooks
2476 :group 'mh-show) 2477 :group 'mh-show)
@@ -2802,7 +2803,7 @@ The background and foreground are used in the image."
2802 (setq bw-face-generation 'new)))) 2803 (setq bw-face-generation 'new))))
2803 2804
2804(defun bw-new-face-to-old () 2805(defun bw-new-face-to-old ()
2805 "Sets old faces." 2806 "Set old faces."
2806 (face-spec-set 'mh-folder-body 2807 (face-spec-set 'mh-folder-body
2807 (mh-defface-compat 2808 (mh-defface-compat
2808 '((((class color) (min-colors 88) (background light)) 2809 '((((class color) (min-colors 88) (background light))
@@ -2858,7 +2859,7 @@ The background and foreground are used in the image."
2858 (:bold t))))) 2859 (:bold t)))))
2859 2860
2860(defun bw-old-face-to-new () 2861(defun bw-old-face-to-new ()
2861 "Sets new faces." 2862 "Set new faces."
2862 (face-spec-set 'mh-folder-body 2863 (face-spec-set 'mh-folder-body
2863 '((((class color)) 2864 '((((class color))
2864 (:inherit mh-folder-msg-number)) 2865 (:inherit mh-folder-msg-number))
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index 1deb465c1fe..19024ffc6f6 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -2,7 +2,7 @@
2 2
3;; Copyright (C) 1985, 1986, 1987, 1988, 3;; Copyright (C) 1985, 1986, 1987, 1988,
4;; 1990, 1992, 1993, 1994, 1995, 1997, 1999, 4;; 1990, 1992, 1993, 1994, 1995, 1997, 1999,
5;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 5;; 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
6 6
7;; Author: Bill Wohler <wohler@newt.com> 7;; Author: Bill Wohler <wohler@newt.com>
8;; Maintainer: Bill Wohler <wohler@newt.com> 8;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -711,21 +711,18 @@ Use the command \\[mh-show] to show the message normally again."
711 (mh-recenter 0)) 711 (mh-recenter 0))
712 (setq mh-showing-with-headers t))) 712 (setq mh-showing-with-headers t)))
713 713
714(defun mh-inc-folder (&optional maildrop-name folder) 714(defun mh-inc-folder (&optional file folder)
715 "Incorporate new mail into a folder. 715 "Incorporate new mail into a folder.
716 716
717You can incorporate mail from any file into the current folder by 717You can incorporate mail from any file into the current folder by
718specifying a prefix argument; you'll be prompted for the name of 718specifying a prefix argument; you'll be prompted for the name of
719the file to use as well as the destination folder 719the FILE to use as well as the destination FOLDER
720 720
721The hook `mh-inc-folder-hook' is run after incorporating new 721The hook `mh-inc-folder-hook' is run after incorporating new
722mail. Do not call this function from outside MH-E; use 722mail.
723\\[mh-rmail] instead.
724 723
725In a program optional argument MAILDROP-NAME specifies an 724Do not call this function from outside MH-E; use \\[mh-rmail]
726alternate maildrop from the default. The optional argument FOLDER 725instead."
727specifies where to incorporate mail instead of the default named
728by `mh-inbox'."
729 (interactive (list (if current-prefix-arg 726 (interactive (list (if current-prefix-arg
730 (expand-file-name 727 (expand-file-name
731 (read-file-name "inc mail from file: " 728 (read-file-name "inc mail from file: "
@@ -745,7 +742,7 @@ by `mh-inbox'."
745 ((not (eq (current-buffer) (get-buffer folder))) 742 ((not (eq (current-buffer) (get-buffer folder)))
746 (switch-to-buffer folder) 743 (switch-to-buffer folder)
747 (setq mh-previous-window-config config)))) 744 (setq mh-previous-window-config config))))
748 (mh-get-new-mail maildrop-name) 745 (mh-get-new-mail file)
749 (when (and threading-needed-flag 746 (when (and threading-needed-flag
750 (save-excursion 747 (save-excursion
751 (goto-char (point-min)) 748 (goto-char (point-min))
@@ -892,8 +889,10 @@ DONT-UPDATE-LAST-DESTINATION-FLAG is non-nil."
892(defun mh-refile-or-write-again (range &optional interactive-flag) 889(defun mh-refile-or-write-again (range &optional interactive-flag)
893 "Repeat last output command. 890 "Repeat last output command.
894 891
895If you are refiling several messages into the same folder, you can use 892If you are refiling several messages into the same folder, you
896this command to repeat the last refile or write. You can use a range. 893can use this command to repeat the last
894refile (\\[mh-refile-msg]) or write (\\[mh-write-msg-to-file]).
895You can use a range.
897 896
898Check the documentation of `mh-interactive-range' to see how RANGE is 897Check the documentation of `mh-interactive-range' to see how RANGE is
899read in interactive use. 898read in interactive use.
@@ -1255,7 +1254,14 @@ the command \\[mh-refile-or-write-again]."
1255 (append-to-file (point) (point-max) output-file)))) 1254 (append-to-file (point) (point-max) output-file))))
1256 1255
1257(defun mh-toggle-showing () 1256(defun mh-toggle-showing ()
1258 "Toggle the scanning mode/showing mode of displaying messages." 1257 "Toggle between MH-Folder and MH-Folder Show modes.
1258
1259This command switches between MH-Folder mode and MH-Folder Show
1260mode. MH-Folder mode turns off the associated show buffer so that
1261you can perform operations on the messages quickly without
1262reading them. This is an excellent way to prune out your junk
1263mail or to refile a group of messages to another folder for later
1264examination."
1259 (interactive) 1265 (interactive)
1260 (if mh-showing-mode 1266 (if mh-showing-mode
1261 (mh-set-scan-mode) 1267 (mh-set-scan-mode)
diff --git a/lisp/mh-e/mh-funcs.el b/lisp/mh-e/mh-funcs.el
index 800ff96b510..4fb64b4cd17 100644
--- a/lisp/mh-e/mh-funcs.el
+++ b/lisp/mh-e/mh-funcs.el
@@ -1,7 +1,7 @@
1;;; mh-funcs.el --- MH-E functions not everyone will use right away 1;;; mh-funcs.el --- MH-E functions not everyone will use right away
2 2
3;; Copyright (C) 1993, 1995, 3;; Copyright (C) 1993, 1995,
4;; 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Bill Wohler <wohler@newt.com> 6;; Author: Bill Wohler <wohler@newt.com>
7;; Maintainer: Bill Wohler <wohler@newt.com> 7;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -214,9 +214,9 @@ Display RANGE after packing, or the entire folder if RANGE is nil."
214 "Pipe message through shell command COMMAND. 214 "Pipe message through shell command COMMAND.
215 215
216You are prompted for the Unix command through which you wish to 216You are prompted for the Unix command through which you wish to
217run your message. If you give an argument INCLUDE-HEADER to this 217run your message. If you give a prefix argument INCLUDE-HEADER to
218command, the message header is included in the text passed to the 218this command, the message header is included in the text passed
219command." 219to the command."
220 (interactive 220 (interactive
221 (list (read-string "Shell command on message: ") current-prefix-arg)) 221 (list (read-string "Shell command on message: ") current-prefix-arg))
222 (let ((msg-file-to-pipe (mh-msg-filename (mh-get-msg-num t))) 222 (let ((msg-file-to-pipe (mh-msg-filename (mh-get-msg-num t)))
@@ -266,12 +266,11 @@ command."
266 266
267;;;###mh-autoload 267;;;###mh-autoload
268(defun mh-sort-folder (&optional extra-args) 268(defun mh-sort-folder (&optional extra-args)
269 "Sort the messages in the current folder by date. 269 "Sort folder.
270 270
271Calls the MH program sortm to do the work. 271By default, messages are sorted by date. The option
272 272`mh-sortm-args' holds extra arguments to pass on to the command
273The arguments in the list `mh-sortm-args' are passed to sortm if 273\"sortm\" when a prefix argument EXTRA-ARGS is used."
274the optional argument EXTRA-ARGS is given."
275 (interactive "P") 274 (interactive "P")
276 (mh-process-or-undo-commands mh-current-folder) 275 (mh-process-or-undo-commands mh-current-folder)
277 (setq mh-next-direction 'forward) 276 (setq mh-next-direction 'forward)
@@ -288,7 +287,7 @@ the optional argument EXTRA-ARGS is given."
288 287
289;;;###mh-autoload 288;;;###mh-autoload
290(defun mh-undo-folder () 289(defun mh-undo-folder ()
291 "Undo all pending deletes and refiles in current folder." 290 "Undo all refiles and deletes in the current folder."
292 (interactive) 291 (interactive)
293 (cond ((or mh-do-not-confirm-flag 292 (cond ((or mh-do-not-confirm-flag
294 (yes-or-no-p "Undo all commands in folder? ")) 293 (yes-or-no-p "Undo all commands in folder? "))
@@ -310,7 +309,9 @@ however, you have a chance to specify a different extraction
310directory. The next time you use this command, the default 309directory. The next time you use this command, the default
311directory is the last directory you used. If you would like to 310directory is the last directory you used. If you would like to
312change the initial default directory, customize the option 311change the initial default directory, customize the option
313`mh-store-default-directory'." 312`mh-store-default-directory', change the value from \"Current\"
313to \"Directory\", and then enter the name of the directory for
314storing the content of these messages."
314 (interactive (list (let ((udir (or mh-store-default-directory 315 (interactive (list (let ((udir (or mh-store-default-directory
315 default-directory))) 316 default-directory)))
316 (read-file-name "Store message in directory: " 317 (read-file-name "Store message in directory: "
@@ -324,12 +325,9 @@ change the initial default directory, customize the option
324 325
325;;;###mh-autoload 326;;;###mh-autoload
326(defun mh-store-buffer (directory) 327(defun mh-store-buffer (directory)
327 "Store the file(s) contained in the current buffer into DIRECTORY. 328 "Unpack buffer created with \"uudecode\" or \"shar\".
328
329The buffer can contain a shar file or uuencoded file.
330 329
331Default directory is the last directory used, or initially the 330See `mh-store-msg' for a description of DIRECTORY."
332value of `mh-store-default-directory' or the current directory."
333 (interactive (list (let ((udir (or mh-store-default-directory 331 (interactive (list (let ((udir (or mh-store-default-directory
334 default-directory))) 332 default-directory)))
335 (read-file-name "Store buffer in directory: " 333 (read-file-name "Store buffer in directory: "
diff --git a/lisp/mh-e/mh-index.el b/lisp/mh-e/mh-index.el
index c8ec7fb399b..08775c557b1 100644
--- a/lisp/mh-e/mh-index.el
+++ b/lisp/mh-e/mh-index.el
@@ -1,6 +1,6 @@
1;;; mh-index -- MH-E interface to indexing programs 1;;; mh-index -- MH-E interface to indexing programs
2 2
3;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4 4
5;; Author: Satyaki Das <satyaki@theforce.stanford.edu> 5;; Author: Satyaki Das <satyaki@theforce.stanford.edu>
6;; Maintainer: Bill Wohler <wohler@newt.com> 6;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -359,46 +359,52 @@ construct the base name."
359 &optional window-config) 359 &optional window-config)
360 "Perform an indexed search in an MH mail folder. 360 "Perform an indexed search in an MH mail folder.
361 361
362Use a prefix argument to repeat the search. 362Use a prefix argument to repeat the last search.
363 363
364Unlike regular searches, the prompt for the folder to search can be 364Unlike regular searches, the prompt for the folder to search can
365\"all\" to search all folders; in addition, the search works recursively 365be \"all\" to search all folders; in addition, the search works
366on the listed folder. The search criteria are entered in an MH-Pick 366recursively on the listed folder. The search criteria are entered
367buffer as described in `mh-search-folder'. 367in an MH-Pick buffer as described in `mh-search-folder'.\\<mh-pick-mode-map>
368 368
369To perform the search, type \\<mh-pick-mode-map>\\[mh-do-search]. 369To perform the search, type \\[mh-do-search]. Another difference
370Another difference from the regular searches is that because the 370from the regular searches is that because the search operates on
371search operates on more than one folder, the messages that are found 371more than one folder, the messages that are found are put in a
372are put in a temporary sub-folder of \"+mhe-index\" and are displayed in 372temporary sub-folder of \"+mhe-index\" and are displayed in an
373an MH-Folder buffer. This buffer is special because it displays 373MH-Folder buffer. This buffer is special because it displays
374messages from multiple folders; each set of messages from a given 374messages from multiple folders; each set of messages from a given
375folder has a heading with the folder name. 375folder has a heading with the folder name.\\<mh-folder-mode-map>
376 376
377In addition, the \\<mh-folder-mode-map>\\[mh-index-visit-folder] 377The appearance of the heading can be modified by customizing the
378command can be used to visit the folder of the message at point. 378face `mh-index-folder'. You can jump back and forth between the
379Initially, only the messages that matched the search criteria are 379headings using the commands \\[mh-index-next-folder] and
380displayed in the folder. While the temporary buffer has its own set of 380\\[mh-index-previous-folder].
381message numbers, the actual messages numbers are shown in the visited 381
382folder. Thus, the \\[mh-index-visit-folder] command is useful to find 382In addition, the command \\[mh-index-visit-folder] can be used to
383the actual message number of an interesting message, or to view 383visit the folder of the message at point. Initially, only the
384surrounding messages with the \\[mh-rescan-folder] command. 384messages that matched the search criteria are displayed in the
385 385folder. While the temporary buffer has its own set of message
386Because this folder is temporary, you'll probably get in the habit of 386numbers, the actual messages numbers are shown in the visited
387killing it when you're done with \\[mh-kill-folder]. 387folder. Thus, the command \\[mh-index-visit-folder] is useful to
388 388find the actual message number of an interesting message, or to
389If you have run the \\[mh-search-folder] command, but change your mind 389view surrounding messages with the command \\[mh-rescan-folder].
390while entering the search criteria and actually want to run an indexed 390
391search, then you can use the 391Because this folder is temporary, you'll probably get in the
392\\<mh-pick-mode-map>\\[mh-index-do-search] command in the MH-Pick 392habit of killing it when you're done with
393buffer. 393\\[mh-kill-folder].
394 394
395The \\<mh-folder-mode-map>\\[mh-index-search] command runs the command 395If you have run the command \\[mh-search-folder], but change your
396defined by the `mh-index-program' option. The default value is 396mind while entering the search criteria and actually want to run
397\"Auto-detect\" which means that MH-E will automatically choose one of 397an indexed search, then you can use the command
398\\<mh-pick-mode-map>\\[mh-index-do-search] in the MH-Pick
399buffer.\\<mh-folder-mode-map>
400
401The command \\[mh-index-search] runs the command defined by the
402option `mh-index-program'. The default value is \"Auto-detect\"
403which means that MH-E will automatically choose one of
398\"swish++\", \"swish-e\", \"mairix\", \"namazu\", \"pick\" and 404\"swish++\", \"swish-e\", \"mairix\", \"namazu\", \"pick\" and
399\"grep\" in that order. If, for example, you have both \"swish++\" and 405\"grep\" in that order. If, for example, you have both
400\"mairix\" installed and you want to use \"mairix\", then you can set 406\"swish++\" and \"mairix\" installed and you want to use
401this option to \"mairix\". 407\"mairix\", then you can set this option to \"mairix\".
402 408
403 *NOTE* 409 *NOTE*
404 410
@@ -621,7 +627,7 @@ PROC is used to convert the value to actual data."
621 627
622;;;###mh-autoload 628;;;###mh-autoload
623(defun mh-index-do-search () 629(defun mh-index-do-search ()
624 "Construct appropriate regexp and call `mh-index-search'." 630 "Find messages that match the qualifications in the current pattern buffer."
625 (interactive) 631 (interactive)
626 (unless (mh-index-choose) (error "No indexing program found")) 632 (unless (mh-index-choose) (error "No indexing program found"))
627 (let* ((regexp-list (mh-pick-parse-search-buffer)) 633 (let* ((regexp-list (mh-pick-parse-search-buffer))
@@ -736,8 +742,7 @@ parsed."
736;;;###mh-autoload 742;;;###mh-autoload
737(defun mh-index-next-folder (&optional backward-flag) 743(defun mh-index-next-folder (&optional backward-flag)
738 "Jump to the next folder marker. 744 "Jump to the next folder marker.
739The function is only applicable to folders displaying index search 745
740results.
741With non-nil optional argument BACKWARD-FLAG, jump to the previous 746With non-nil optional argument BACKWARD-FLAG, jump to the previous
742group of results." 747group of results."
743 (interactive "P") 748 (interactive "P")
@@ -1305,11 +1310,12 @@ recursively. All parameters ARGS are ignored."
1305 1310
1306;;;###mh-autoload 1311;;;###mh-autoload
1307(defun mh-index-sequenced-messages (folders sequence) 1312(defun mh-index-sequenced-messages (folders sequence)
1308 "Display messages from FOLDERS in SEQUENCE. 1313 "Display messages in any sequence.
1309All messages in the sequence you provide from the folders in 1314
1310`mh-new-messages-folders' are listed. With a prefix argument, 1315All messages from the FOLDERS in `mh-new-messages-folders' in the
1311enter a space-separated list of folders, or nothing to search all 1316SEQUENCE you provide are listed. With a prefix argument, enter a
1312folders." 1317space-separated list of folders at the prompt, or nothing to
1318search all folders."
1313 (interactive 1319 (interactive
1314 (list (if current-prefix-arg 1320 (list (if current-prefix-arg
1315 (split-string (read-string "Search folder(s) (default all): ")) 1321 (split-string (read-string "Search folder(s) (default all): "))
diff --git a/lisp/mh-e/mh-init.el b/lisp/mh-e/mh-init.el
index 2818674afae..ba78c269439 100644
--- a/lisp/mh-e/mh-init.el
+++ b/lisp/mh-e/mh-init.el
@@ -334,7 +334,7 @@ there. Otherwise, the images directory is added to the
334 334
335(defun mh-defface-compat (spec) 335(defun mh-defface-compat (spec)
336 "Convert SPEC for defface if necessary to run on older platforms. 336 "Convert SPEC for defface if necessary to run on older platforms.
337Modifies SPEC in place and returns it. See `defface' for the spec definition. 337Modifies SPEC in place and returns it. See `defface' for the spec definition.
338 338
339When `mh-min-colors-defined-flag' is nil, this function finds a 339When `mh-min-colors-defined-flag' is nil, this function finds a
340display with a single \"class\" requirement with a \"color\" 340display with a single \"class\" requirement with a \"color\"
diff --git a/lisp/mh-e/mh-junk.el b/lisp/mh-e/mh-junk.el
index 5d2bf87581e..71d3fbf7b8b 100644
--- a/lisp/mh-e/mh-junk.el
+++ b/lisp/mh-e/mh-junk.el
@@ -1,6 +1,6 @@
1;;; mh-junk.el --- Interface to anti-spam measures 1;;; mh-junk.el --- Interface to anti-spam measures
2 2
3;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4 4
5;; Author: Satyaki Das <satyaki@theforce.stanford.edu>, 5;; Author: Satyaki Das <satyaki@theforce.stanford.edu>,
6;; Bill Wohler <wohler@newt.com> 6;; Bill Wohler <wohler@newt.com>
@@ -108,10 +108,12 @@ RANGE is read in interactive use."
108(defun mh-spamassassin-blacklist (msg) 108(defun mh-spamassassin-blacklist (msg)
109 "Blacklist MSG with SpamAssassin. 109 "Blacklist MSG with SpamAssassin.
110 110
111SpamAssassin is one of the more popular spam filtering programs. Get 111SpamAssassin is one of the more popular spam filtering programs.
112it from your local distribution or from http://spamassassin.org/. 112Get it from your local distribution or from
113http://spamassassin.org/.
113 114
114To use SpamAssassin, add the following recipes to \".procmailrc\": 115To use SpamAssassin, add the following recipes to
116\".procmailrc\":
115 117
116 MAILDIR=$HOME/`mhparam Path` 118 MAILDIR=$HOME/`mhparam Path`
117 119
@@ -130,56 +132,59 @@ To use SpamAssassin, add the following recipes to \".procmailrc\":
130 132
131If you don't use \"spamc\", use \"spamassassin -P -a\". 133If you don't use \"spamc\", use \"spamassassin -P -a\".
132 134
133Note that one of the recipes above throws away messages with a score 135Note that one of the recipes above throws away messages with a
134greater than or equal to 10. Here's how you can determine a value that 136score greater than or equal to 10. Here's how you can determine a
135works best for you. 137value that works best for you.
136 138
137First, run \"spamassassin -t\" on every mail message in your archive and 139First, run \"spamassassin -t\" on every mail message in your
138use Gnumeric to verify that the average plus the standard deviation of 140archive and use Gnumeric to verify that the average plus the
139good mail is under 5, the SpamAssassin default for \"spam\". 141standard deviation of good mail is under 5, the SpamAssassin
142default for \"spam\".
140 143
141Using Gnumeric, sort the messages by score and view the messages with 144Using Gnumeric, sort the messages by score and view the messages
142the highest score. Determine the score which encompasses all of your 145with the highest score. Determine the score which encompasses all
143interesting messages and add a couple of points to be conservative. 146of your interesting messages and add a couple of points to be
144Add that many dots to the \"X-Spam-Level:\" header field above to send 147conservative. Add that many dots to the \"X-Spam-Level:\" header
145messages with that score down the drain. 148field above to send messages with that score down the drain.
146 149
147In the example above, messages with a score of 5-9 are set aside in 150In the example above, messages with a score of 5-9 are set aside
148the \"+spam\" folder for later review. The major weakness of rules-based 151in the \"+spam\" folder for later review. The major weakness of
149filters is a plethora of false positives so it is worthwhile to check. 152rules-based filters is a plethora of false positives so it is
153worthwhile to check.
150 154
151If SpamAssassin classifies a message incorrectly, or is unsure, you 155If SpamAssassin classifies a message incorrectly, or is unsure,
152can use the MH-E commands \\[mh-junk-blacklist] and 156you can use the MH-E commands \\[mh-junk-blacklist] and
153\\[mh-junk-whitelist]. 157\\[mh-junk-whitelist].
154 158
155The \\[mh-junk-blacklist] command adds a \"blacklist_from\" entry to 159The command \\[mh-junk-blacklist] adds a \"blacklist_from\" entry
156\"~/spamassassin/user_prefs\", deletes the message, and sends the 160to \"~/spamassassin/user_prefs\", deletes the message, and sends
157message to the Razor, so that others might not see this spam. If the 161the message to the Razor, so that others might not see this spam.
158\"sa-learn\" command is available, the message is also recategorized as 162If the \"sa-learn\" command is available, the message is also
159spam. 163recategorized as spam.
160 164
161The \\[mh-junk-whitelist] command adds a \"whitelist_from\" rule to the 165The command \\[mh-junk-whitelist] adds a \"whitelist_from\" rule
162\"~/.spamassassin/user_prefs\" file. If the \"sa-learn\" command is 166to the \"~/.spamassassin/user_prefs\" file. If the \"sa-learn\"
163available, the message is also recategorized as ham. 167command is available, the message is also recategorized as ham.
164 168
165Over time, you'll observe that the same host or domain occurs 169Over time, you'll observe that the same host or domain occurs
166repeatedly in the \"blacklist_from\" entries, so you might think that 170repeatedly in the \"blacklist_from\" entries, so you might think
167you could avoid future spam by blacklisting all mail from a particular 171that you could avoid future spam by blacklisting all mail from a
168domain. The utility function `mh-spamassassin-identify-spammers' helps 172particular domain. The utility function
169you do precisely that. This function displays a frequency count of the 173`mh-spamassassin-identify-spammers' helps you do precisely that.
170hosts and domains in the \"blacklist_from\" entries from the last blank 174This function displays a frequency count of the hosts and domains
171line in \"~/.spamassassin/user_prefs\" to the end of the file. This 175in the \"blacklist_from\" entries from the last blank line in
176\"~/.spamassassin/user_prefs\" to the end of the file. This
172information can be used so that you can replace multiple 177information can be used so that you can replace multiple
173\"blacklist_from\" entries with a single wildcard entry such as: 178\"blacklist_from\" entries with a single wildcard entry such as:
174 179
175 blacklist_from *@*amazingoffersdirect2u.com 180 blacklist_from *@*amazingoffersdirect2u.com
176 181
177In versions of SpamAssassin (2.50 and on) that support a Bayesian 182In versions of SpamAssassin (2.50 and on) that support a Bayesian
178classifier, \\[mh-junk-blacklist] uses the \"sa-learn\" program to 183classifier, \\[mh-junk-blacklist] uses the program \"sa-learn\"
179recategorize the message as spam. Neither MH-E, nor SpamAssassin, 184to recategorize the message as spam. Neither MH-E, nor
180rebuilds the database after adding words, so you will need to run 185SpamAssassin, rebuilds the database after adding words, so you
181\"sa-learn --rebuild\" periodically. This can be done by adding the 186will need to run \"sa-learn --rebuild\" periodically. This can be
182following to your crontab: 187done by adding the following to your crontab:
183 188
184 0 * * * * sa-learn --rebuild > /dev/null 2>&1" 189 0 * * * * sa-learn --rebuild > /dev/null 2>&1"
185 (unless mh-spamassassin-executable 190 (unless mh-spamassassin-executable
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el
index bcf7948964b..9edcf10b36d 100644
--- a/lisp/mh-e/mh-mime.el
+++ b/lisp/mh-e/mh-mime.el
@@ -1,7 +1,7 @@
1;;; mh-mime.el --- MH-E support for composing MIME messages 1;;; mh-mime.el --- MH-E support for composing MIME messages
2 2
3;; Copyright (C) 1993, 1995, 3;; Copyright (C) 1993, 1995,
4;; 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Bill Wohler <wohler@newt.com> 6;; Author: Bill Wohler <wohler@newt.com>
7;; Maintainer: Bill Wohler <wohler@newt.com> 7;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -318,9 +318,10 @@ set of ATTRIBUTES and an optional COMMENT can also be included."
318;;;###mh-autoload 318;;;###mh-autoload
319(defun mh-mh-compose-anon-ftp (host filename type description) 319(defun mh-mh-compose-anon-ftp (host filename type description)
320 "Add tag to include anonymous ftp reference to a file. 320 "Add tag to include anonymous ftp reference to a file.
321You can even have your message initiate an \"ftp\" transfer when 321
322the recipient reads the message. You are prompted for the remote 322You can have your message initiate an \"ftp\" transfer when the
323HOST and FILENAME, the media TYPE, and the content DESCRIPTION. 323recipient reads the message. You are prompted for the remote HOST
324and FILENAME, the media TYPE, and the content DESCRIPTION.
324 325
325See also \\[mh-mh-to-mime]." 326See also \\[mh-mh-to-mime]."
326 (interactive (list 327 (interactive (list
@@ -334,8 +335,9 @@ See also \\[mh-mh-to-mime]."
334;;;###mh-autoload 335;;;###mh-autoload
335(defun mh-mh-compose-external-compressed-tar (host filename description) 336(defun mh-mh-compose-external-compressed-tar (host filename description)
336 "Add tag to include anonymous ftp reference to a compressed tar file. 337 "Add tag to include anonymous ftp reference to a compressed tar file.
338
337In addition to retrieving the file via anonymous \"ftp\" as per 339In addition to retrieving the file via anonymous \"ftp\" as per
338the \\[mh-mh-compose-anon-ftp] command, the file will also be 340the command \\[mh-mh-compose-anon-ftp], the file will also be
339uncompressed and untarred. You are prompted for the remote HOST 341uncompressed and untarred. You are prompted for the remote HOST
340and FILENAME and the content DESCRIPTION. 342and FILENAME and the content DESCRIPTION.
341 343
@@ -356,6 +358,7 @@ See also \\[mh-mh-to-mime]."
356 attributes parameters 358 attributes parameters
357 comment) 359 comment)
358 "Add tag to refer to a remote file. 360 "Add tag to refer to a remote file.
361
359This command is a general utility for referencing external files. 362This command is a general utility for referencing external files.
360In fact, all of the other commands that insert directives to 363In fact, all of the other commands that insert directives to
361access external files call this command. You are prompted for the 364access external files call this command. You are prompted for the
@@ -435,14 +438,14 @@ Typically, you send a message with attachments just like any other
435message. However, you may take a sneak preview of the MIME encoding if 438message. However, you may take a sneak preview of the MIME encoding if
436you wish by running this command. 439you wish by running this command.
437 440
438If you wish to pass additional arguments to \"mhbuild\" (\"mhn\") to 441If you wish to pass additional arguments to \"mhbuild\" (\"mhn\")
439affect how it builds your message, use the `mh-mh-to-mime-args' 442to affect how it builds your message, use the option
440option. For example, you can build a consistency check into the 443`mh-mh-to-mime-args'. For example, you can build a consistency
441message by setting `mh-mh-to-mime-args' to \"-check\". The recipient 444check into the message by setting `mh-mh-to-mime-args' to
442of your message can then run \"mhbuild -check\" on the 445\"-check\". The recipient of your message can then run \"mhbuild
443message--\"mhbuild\" (\"mhn\") will complain if the message has been 446-check\" on the message--\"mhbuild\" (\"mhn\") will complain if
444corrupted on the way. This command only consults this option when 447the message has been corrupted on the way. This command only
445given a prefix argument EXTRA-ARGS. 448consults this option when given a prefix argument EXTRA-ARGS.
446 449
447The hook `mh-mh-to-mime-hook' is called after the message has been 450The hook `mh-mh-to-mime-hook' is called after the message has been
448formatted. 451formatted.
@@ -484,8 +487,10 @@ This function will quote all such characters."
484;;;###mh-autoload 487;;;###mh-autoload
485(defun mh-mh-to-mime-undo (noconfirm) 488(defun mh-mh-to-mime-undo (noconfirm)
486 "Undo effects of \\[mh-mh-to-mime]. 489 "Undo effects of \\[mh-mh-to-mime].
487Optional non-nil argument NOCONFIRM means don't ask for 490
488confirmation." 491It does this by reverting to a backup file. You are prompted to
492confirm this action, but you can avoid the confirmation by adding
493a prefix argument NOCONFIRM."
489 (interactive "*P") 494 (interactive "*P")
490 (if (null buffer-file-name) 495 (if (null buffer-file-name)
491 (error "Buffer does not seem to be associated with any file")) 496 (error "Buffer does not seem to be associated with any file"))
@@ -654,7 +659,7 @@ IDENTITY is optionally the default-user-id to use."
654 "Add tag to sign the message. 659 "Add tag to sign the message.
655 660
656A proper multipart message is created for you when you send the 661A proper multipart message is created for you when you send the
657message. Use the \\[mh-mml-unsecure-message] command to remove 662message. Use the command \\[mh-mml-unsecure-message] to remove
658this tag. Use a prefix argument METHOD to be prompted for one of 663this tag. Use a prefix argument METHOD to be prompted for one of
659the possible security methods (see `mh-mml-method-default')." 664the possible security methods (see `mh-mml-method-default')."
660 (interactive (list (mh-mml-query-cryptographic-method))) 665 (interactive (list (mh-mml-query-cryptographic-method)))
@@ -665,7 +670,7 @@ the possible security methods (see `mh-mml-method-default')."
665 "Add tag to encrypt the message. 670 "Add tag to encrypt the message.
666 671
667A proper multipart message is created for you when you send the 672A proper multipart message is created for you when you send the
668message. Use the \\[mh-mml-unsecure-message] command to remove 673message. Use the command \\[mh-mml-unsecure-message] to remove
669this tag. Use a prefix argument METHOD to be prompted for one of 674this tag. Use a prefix argument METHOD to be prompted for one of
670the possible security methods (see `mh-mml-method-default')." 675the possible security methods (see `mh-mml-method-default')."
671 (interactive (list (mh-mml-query-cryptographic-method))) 676 (interactive (list (mh-mml-query-cryptographic-method)))
@@ -676,7 +681,7 @@ the possible security methods (see `mh-mml-method-default')."
676 "Add tag to encrypt and sign the message. 681 "Add tag to encrypt and sign the message.
677 682
678A proper multipart message is created for you when you send the 683A proper multipart message is created for you when you send the
679message. Use the \\[mh-mml-unsecure-message] command to remove 684message. Use the command \\[mh-mml-unsecure-message] to remove
680this tag. Use a prefix argument METHOD to be prompted for one of 685this tag. Use a prefix argument METHOD to be prompted for one of
681the possible security methods (see `mh-mml-method-default')." 686the possible security methods (see `mh-mml-method-default')."
682 (interactive (list (mh-mml-query-cryptographic-method))) 687 (interactive (list (mh-mml-query-cryptographic-method)))
diff --git a/lisp/mh-e/mh-pick.el b/lisp/mh-e/mh-pick.el
index 03314ffa6c6..8089d3e8ae7 100644
--- a/lisp/mh-e/mh-pick.el
+++ b/lisp/mh-e/mh-pick.el
@@ -1,7 +1,7 @@
1;;; mh-pick.el --- make a search pattern and search for a message in MH-E 1;;; mh-pick.el --- make a search pattern and search for a message in MH-E
2 2
3;; Copyright (C) 1993, 1995, 3;; Copyright (C) 1993, 1995,
4;; 2001, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Bill Wohler <wohler@newt.com> 6;; Author: Bill Wohler <wohler@newt.com>
7;; Maintainer: Bill Wohler <wohler@newt.com> 7;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -54,13 +54,14 @@
54(defun mh-search-folder (folder window-config) 54(defun mh-search-folder (folder window-config)
55 "Search FOLDER for messages matching a pattern. 55 "Search FOLDER for messages matching a pattern.
56 56
57With this command, you can search a folder for messages to or from a 57With this command, you can search a folder for messages to or
58particular person or about a particular subject. In fact, you can also 58from a particular person or about a particular subject. In fact,
59search for messages containing selected strings in any arbitrary 59you can also search for messages containing selected strings in
60header field or any string found within the messages. 60any arbitrary header field or any string found within the
61messages.
61 62
62You are first prompted for the name of the folder to search and then 63You are first prompted for the name of the folder to search and
63placed in the following buffer in MH-Pick mode: 64then placed in the following buffer in MH-Pick mode:
64 65
65 From: 66 From:
66 To: 67 To:
@@ -69,26 +70,27 @@ placed in the following buffer in MH-Pick mode:
69 Subject: 70 Subject:
70 -------- 71 --------
71 72
72Edit this template by entering your search criteria in an appropriate 73Edit this template by entering your search criteria in an
73header field that is already there, or create a new field yourself. If 74appropriate header field that is already there, or create a new
74the string you're looking for could be anywhere in a message, then 75field yourself. If the string you're looking for could be
75place the string underneath the row of dashes. The 76anywhere in a message, then place the string underneath the row
76\\[mh-search-folder] command uses the MH command \"pick\" to do the 77of dashes. The command \\[mh-search-folder] uses the MH command
77real work. 78\"pick\" to do the real work.
78 79
79There are no semantics associated with the search criteria--they are 80There are no semantics associated with the search criteria--they
80simply treated as strings. Case is ignored when all lowercase is used, 81are simply treated as strings. Case is ignored when all lowercase
81and regular expressions (a la \"ed\") are available. It is all right 82is used, and regular expressions (a la \"ed\") are available. It
82to specify several search criteria. What happens then is that a 83is all right to specify several search criteria. What happens
83logical _and_ of the various fields is performed. If you prefer a 84then is that a logical _and_ of the various fields is performed.
84logical _or_ operation, run \\[mh-search-folder] multiple times. 85If you prefer a logical _or_ operation, run \\[mh-search-folder]
85 86multiple times.
86As an example, let's say that we want to find messages from Ginnean 87
87about horseback riding in the Kosciusko National Park (Australia) 88As an example, let's say that we want to find messages from
88during January, 1994. Normally we would start with a broad search and 89Ginnean about horseback riding in the Kosciusko National
89narrow it down if necessary to produce a manageable amount of data, 90Park (Australia) during January, 1994. Normally we would start
90but we'll cut to the chase and create a fairly restrictive set of 91with a broad search and narrow it down if necessary to produce a
91criteria as follows: 92manageable amount of data, but we'll cut to the chase and create
93a fairly restrictive set of criteria as follows:
92 94
93 From: ginnean 95 From: ginnean
94 To: 96 To:
@@ -98,31 +100,32 @@ criteria as follows:
98 -------- 100 --------
99 101
100As with MH-Letter mode, MH-Pick provides commands like 102As with MH-Letter mode, MH-Pick provides commands like
101\\<mh-pick-mode-map>\\[mh-to-field] to help you fill in the blanks. 103\\<mh-pick-mode-map>\\[mh-to-field] to help you fill in the
104blanks.
102 105
103To perform the search, type \\[mh-do-search]. The selected messages 106To perform the search, type \\[mh-do-search]. The selected
104are placed in the \"search\" sequence, which you can use later in 107messages are placed in the \"search\" sequence, which you can use
105forwarding, printing, or narrowing your field of view. Subsequent 108later in forwarding, printing, or narrowing your field of view.
106searches are appended to the \"search\" sequence. If, however, you 109Subsequent searches are appended to the \"search\" sequence. If,
107wish to start with a clean slate, first delete the \"search\" 110however, you wish to start with a clean slate, first delete the
108sequence. 111\"search\" sequence.
109 112
110If you're searching in a folder that is already displayed in an 113If you're searching in a folder that is already displayed in an
111MH-Folder buffer, only those messages contained in the buffer are used 114MH-Folder buffer, only those messages contained in the buffer are
112for the search. Therefore, if you want to search in all messages, 115used for the search. Therefore, if you want to search in all
113first kill the folder's buffer with 116messages, first kill the folder's buffer with
114\\<mh-folder-mode-map>\\[kill-buffer] or scan the entire folder with 117\\<mh-folder-mode-map>\\[kill-buffer] or scan the entire folder
115\\[mh-rescan-folder]. 118with \\[mh-rescan-folder].
116 119
117If you find that you do the same thing over and over when editing the 120If you find that you do the same thing over and over when editing
118search template, you may wish to bind some shortcuts to keys. This can 121the search template, you may wish to bind some shortcuts to keys.
119be done with the variable `mh-pick-mode-hook', which is called when 122This can be done with the variable `mh-pick-mode-hook', which is
120\\[mh-search-folder] is run on a new pattern. 123called when \\[mh-search-folder] is run on a new pattern.
121 124
122If you have run the \\[mh-index-search] command, but change your mind 125If you have run the \\[mh-index-search] command, but change your
123while entering the search criteria and actually want to run a regular 126mind while entering the search criteria and actually want to run
124search, then you can use the \\<mh-pick-mode-map>\\[mh-pick-do-search] 127a regular search, then you can use the command
125command. 128\\<mh-pick-mode-map>\\[mh-pick-do-search] in the MH-Pick buffer.
126 129
127In a program, argument WINDOW-CONFIG is the current window 130In a program, argument WINDOW-CONFIG is the current window
128configuration and is used when the search folder is dismissed." 131configuration and is used when the search folder is dismissed."
diff --git a/lisp/mh-e/mh-seq.el b/lisp/mh-e/mh-seq.el
index 6fb70e61de8..dffb831ad2b 100644
--- a/lisp/mh-e/mh-seq.el
+++ b/lisp/mh-e/mh-seq.el
@@ -1,7 +1,7 @@
1;;; mh-seq.el --- MH-E sequences support 1;;; mh-seq.el --- MH-E sequences support
2 2
3;; Copyright (C) 1993, 1995, 3;; Copyright (C) 1993, 1995,
4;; 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Bill Wohler <wohler@newt.com> 6;; Author: Bill Wohler <wohler@newt.com>
7;; Maintainer: Bill Wohler <wohler@newt.com> 7;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -177,6 +177,7 @@ you want to delete the messages, use \"\\[universal-argument]
177;;;###mh-autoload 177;;;###mh-autoload
178(defun mh-list-sequences () 178(defun mh-list-sequences ()
179 "List all sequences in folder. 179 "List all sequences in folder.
180
180The list appears in a buffer named \"*MH-E Sequences*\"." 181The list appears in a buffer named \"*MH-E Sequences*\"."
181 (interactive) 182 (interactive)
182 (let ((folder mh-current-folder) 183 (let ((folder mh-current-folder)
@@ -219,6 +220,7 @@ The list appears in a buffer named \"*MH-E Sequences*\"."
219;;;###mh-autoload 220;;;###mh-autoload
220(defun mh-msg-is-in-seq (message) 221(defun mh-msg-is-in-seq (message)
221 "Display the sequences in which the current message appears. 222 "Display the sequences in which the current message appears.
223
222Use a prefix argument to display the sequences in which another 224Use a prefix argument to display the sequences in which another
223MESSAGE appears." 225MESSAGE appears."
224 (interactive "P") 226 (interactive "P")
@@ -329,8 +331,10 @@ OP is one of 'widen and 'unthread."
329;;;###mh-autoload 331;;;###mh-autoload
330(defun mh-widen (&optional all-flag) 332(defun mh-widen (&optional all-flag)
331 "Remove last restriction. 333 "Remove last restriction.
332If optional prefix argument ALL-FLAG is non-nil, remove all 334
333limits." 335Each limit or sequence restriction can be undone in turn with
336this command. Give this command a prefix argument ALL-FLAG to
337remove all limits and sequence restrictions."
334 (interactive "P") 338 (interactive "P")
335 (let ((msg (mh-get-msg-num nil))) 339 (let ((msg (mh-get-msg-num nil)))
336 (when mh-folder-view-stack 340 (when mh-folder-view-stack
diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el
index e008c93916e..0bfadfbe238 100644
--- a/lisp/mh-e/mh-utils.el
+++ b/lisp/mh-e/mh-utils.el
@@ -1,7 +1,7 @@
1;;; mh-utils.el --- MH-E code needed for both sending and reading 1;;; mh-utils.el --- MH-E code needed for both sending and reading
2 2
3;; Copyright (C) 1993, 1995, 1997, 3;; Copyright (C) 1993, 1995, 1997,
4;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Bill Wohler <wohler@newt.com> 6;; Author: Bill Wohler <wohler@newt.com>
7;; Maintainer: Bill Wohler <wohler@newt.com> 7;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -1647,6 +1647,14 @@ scrolls to the beginning of the message. MH-E normally hides a lot of
1647the superfluous header fields that mailers add to a message, but if 1647the superfluous header fields that mailers add to a message, but if
1648you wish to see all of them, use the command \\[mh-header-display]. 1648you wish to see all of them, use the command \\[mh-header-display].
1649 1649
1650Two hooks can be used to control how messages are displayed. The
1651first hook, `mh-show-mode-hook', is called early on in the
1652process of the message display. It is usually used to perform
1653some action on the message's content. The second hook,
1654`mh-show-hook', is the last thing called after messages are
1655displayed. It's used to affect the behavior of MH-E in general or
1656when `mh-show-mode-hook' is too early.
1657
1650From a program, optional argument MESSAGE can be used to display an 1658From a program, optional argument MESSAGE can be used to display an
1651alternative message. The optional argument REDISPLAY-FLAG forces the 1659alternative message. The optional argument REDISPLAY-FLAG forces the
1652redisplay of the message even if the show buffer was already 1660redisplay of the message even if the show buffer was already
@@ -1728,7 +1736,7 @@ this with this command. It displays the raw message in an
1728editable buffer. When you are done editing, save and kill the 1736editable buffer. When you are done editing, save and kill the
1729buffer as you would any other. 1737buffer as you would any other.
1730 1738
1731From a program, edit MESSAGE instead if it is non-nil." 1739From a program, edit MESSAGE; nil means edit current message."
1732 (interactive) 1740 (interactive)
1733 (let* ((message (or message (mh-get-msg-num t))) 1741 (let* ((message (or message (mh-get-msg-num t)))
1734 (msg-filename (mh-msg-filename message)) 1742 (msg-filename (mh-msg-filename message))