;;; mh-e.el --- GNU Emacs interface to the MH mail system
;; Copyright (C) 1985, 1986, 1987, 1988,
-;; 1990, 1992, 1993, 1994, 1995, 1997, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; 1990, 1992, 1993, 1994, 1995, 1997, 1999,
+;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+;; Free Software Foundation, Inc.
;; Author: Bill Wohler <wohler@newt.com>
;; Maintainer: Bill Wohler <wohler@newt.com>
-;; Version: 8.0.3+cvs
+;; Version: 8.1
;; Keywords: mail
;; This file is part of GNU Emacs.
;; MH-E is an Emacs interface to the MH mail system.
-;; MH-E is supported by GNU Emacs 21 and 22, as well as XEmacs 21
+;; MH-E is supported in GNU Emacs 21 and 22, as well as XEmacs 21
;; (except for versions 21.5.9-21.5.16). It is compatible with MH
;; versions 6.8.4 and higher, all versions of nmh, and GNU mailutils
-;; 0.4 and higher.
+;; 1.0 and higher. Gnus is also required; version 5.10 or higher is
+;; recommended.
;; MH (Message Handler) is a powerful mail reader. See
;; http://rand-mh.sourceforge.net/.
;; Try to keep variables local to a single file. Provide accessors if
;; variables are shared. Use this section as a last resort.
-(defconst mh-version "8.0.3+cvs" "Version number of MH-E.")
+(defconst mh-version "8.1" "Version number of MH-E.")
;; Variants
"/usr/contrib/mh/bin/" ; BSDI
"/usr/pkg/bin/" ; NetBSD
"/usr/local/bin/"
- "/usr/local/bin/mu-mh/" ; GNU mailutils - default
- "/usr/bin/mu-mh/") ; GNU mailutils - packaged
+ "/usr/local/bin/mu-mh/" ; GNU mailutils MH - default
+ "/usr/bin/mu-mh/") ; GNU mailutils MH - packaged
"List of directories to search for variants of the MH variant.
The list `exec-path' is searched in addition to this list.
There's no need for users to modify this list. Instead add extra
process))
(defun mh-exec-cmd-env-daemon (env command filter &rest args)
- "In ennvironment ENV, execute mh-command COMMAND in the background.
+ "In environment ENV, execute mh-command COMMAND in the background.
ENV is nil or a string of space-separated \"var=value\" elements.
Signals an error if process does not complete successfully.
See `mh-variant'."
:group 'mh-e
:type '(repeat (directory))
- :package-version '(MH-E "8.0"))
+ :package-version '(MH-E . "8.0"))
(defun mh-variants ()
"Return a list of installed variants of MH on the system.
(cond
((mh-variant-mh-info dir))
((mh-variant-nmh-info dir))
- ((mh-variant-mu-mh-info dir))))))
+ ((mh-variant-gnu-mh-info dir))))))
(defun mh-variant-mh-info (dir)
- "Return info for MH variant in DIR assuming a temporary buffer is setup."
+ "Return info for MH variant in DIR assuming a temporary buffer is set up."
;; MH does not have the -version option.
;; Its version number is included in the output of "-help" as:
;;
(mh-progs ,dir)
(flists nil)))))))))
-(defun mh-variant-mu-mh-info (dir)
- "Return info for GNU mailutils variant in DIR.
-This assumes that a temporary buffer is setup."
+(defun mh-variant-gnu-mh-info (dir)
+ "Return info for GNU mailutils MH variant in DIR.
+This assumes that a temporary buffer is set up."
;; 'mhparam -version' output:
;; mhparam (GNU mailutils 0.3.2)
(let ((mhparam (expand-file-name "mhparam" dir)))
(let ((version (match-string 1))
(mh-progs dir))
`(,version
- (variant mu-mh)
+ (variant gnu-mh)
(mh-lib-progs ,(mh-profile-component "libdir"))
(mh-lib ,(mh-profile-component "etcdir"))
(mh-progs ,dir)
(expand-file-name "flists" dir)))))))))
(defun mh-variant-nmh-info (dir)
- "Return info for nmh variant in DIR assuming a temporary buffer is setup."
+ "Return info for nmh variant in DIR assuming a temporary buffer is set up."
;; `mhparam -version' outputs:
;; mhparam -- nmh-1.1-RC1 [compiled on chaak at Fri Jun 20 11:03:28 PDT 2003]
(let ((mhparam (expand-file-name "mhparam" dir)))
(and (file-regular-p file) (file-executable-p file)))
(defun mh-variant-set-variant (variant)
- "Setup the system variables for the MH variant named VARIANT.
+ "Set up the system variables for the MH variant named VARIANT.
If VARIANT is a string, use that key in the alist returned by the
function `mh-variants'.
If VARIANT is a symbol, select the first entry that matches that
(defun mh-variant-p (&rest variants)
"Return t if variant is any of VARIANTS.
-Currently known variants are 'MH, 'nmh, and 'mu-mh."
+Currently known variants are 'MH, 'nmh, and 'gnu-mh."
(let ((variant-in-use
(cadr (assoc 'variant (assoc mh-variant-in-use (mh-variants))))))
(not (null (member variant-in-use variants)))))
(defun mh-profile-component (component)
"Return COMPONENT value from mhparam, or nil if unset."
(save-excursion
- ;; MH and nmh use -components, Mailutils uses -component. Since MH
- ;; and nmh work with an unambiguous prefix, the `s' is dropped here.
+ ;; MH and nmh use -components, GNU mailutils MH uses -component.
+ ;; Since MH and nmh work with an unambiguous prefix, the `s' is
+ ;; dropped here.
(mh-exec-cmd-quiet nil "mhparam" "-component" component)
(mh-profile-component-value component)))
Sets `mh-progs', `mh-lib', `mh-lib-progs' and
`mh-flists-present-flag'.
If the VARIANT is \"autodetect\", then first try nmh, then MH and
-finally GNU mailutils."
+finally GNU mailutils MH."
(interactive
(list (completing-read
"MH variant: "
(mapcar (lambda (x) (list (car x))) (mh-variants))
nil t)))
+
+ ;; TODO Remove mu-mh backwards compatibility in 9.0.
+ (when (and (stringp variant)
+ (string-match "^mu-mh" variant))
+ (message
+ (format "%s\n%s; %s" "The variant name mu-mh has been renamed to gnu-mh"
+ "and will be removed in MH-E 9.0"
+ "try M-x customize-option mh-variant"))
+ (sit-for 5)
+ (setq variant (concat "gnu-mh" (substring variant (match-end 0)))))
+
(let ((valid-list (mapcar (lambda (x) (car x)) (mh-variants))))
(cond
((eq variant 'none))
(message "%s installed as MH variant" mh-variant-in-use))
((mh-variant-set-variant 'mh)
(message "%s installed as MH variant" mh-variant-in-use))
- ((mh-variant-set-variant 'mu-mh)
+ ((mh-variant-set-variant 'gnu-mh)
(message "%s installed as MH variant" mh-variant-in-use))
(t
(message "No MH variant found on the system"))))
(message "Warning: %s variant not found. Autodetecting..." variant)
(mh-variant-set 'autodetect)))
(t
- (message "Unknown variant; use %s"
+ (message "Unknown variant %s; use %s"
+ variant
(mapconcat '(lambda (x) (format "%s" (car x)))
(mh-variants) " or "))))))
The default setting of this option is \"Auto-detect\" which means
that MH-E will automatically choose the first of nmh, MH, or GNU
-mailutils that it finds in the directories listed in
+mailutils MH that it finds in the directories listed in
`mh-path' (which you can customize), `mh-sys-path', and
`exec-path'. If MH-E can't find MH at all, you may have to
customize `mh-path' and add the directory in which the command
\"mhparam\" is located. If, on the other hand, you have both nmh
-and mailutils installed (for example) and `mh-variant-in-use' was
-initialized to nmh but you want to use mailutils, then you can
-set this option to \"mailutils\".
+and GNU mailutils MH installed (for example) and
+`mh-variant-in-use' was initialized to nmh but you want to use
+GNU mailutils MH, then you can set this option to \"gnu-mh\".
When this variable is changed, MH-E resets `mh-progs', `mh-lib',
`mh-lib-progs', `mh-flists-present-flag', and `mh-variant-in-use'
(set-default symbol value) ;Done in mh-variant-set-variant!
(mh-variant-set value))
:group 'mh-e
- :package-version '(MH-E "8.0"))
+ :package-version '(MH-E . "8.0"))
\f
The default setting for this option is \"Use MH-E scan Format\". This
means that the format string will be taken from the either
`mh-scan-format-mh' or `mh-scan-format-nmh' depending on whether MH or
-nmh (or GNU mailutils) is in use. This setting also enables you to
+nmh (or GNU mailutils MH) is in use. This setting also enables you to
turn on the `mh-adaptive-cmd-note-flag' option.
You can also set this option to \"Use Default scan Format\" to get the
"X-HPL-"
"X-HR-"
"X-HTTP-UserAgent:"
+ "X-Hz" ; Hertz
"X-Identity:" ; http://www.declude.com/x-note.htm
"X-Image-URL:"
"X-IMAP:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
"X-PMX-Version:"
"X-Postfilter:"
"X-Priority:" ; MS Outlook
+ "X-Proofpoint-" ; Proofpoint mail filter
"X-Provags-ID:"
"X-PSTN-"
"X-Qotd-" ; User added
"X-Request-"
"X-Resolved-to:" ; fastmail.fm
"X-Return-Path-Hint:" ; Roving ConstantContact
+ "X-RIM-" ; Research In Motion (i.e. BlackBerry)
"X-RM"
"X-RocketYMMF:" ; Yahoo
"X-Roving-" ; Roving ConstantContact
:package-version '(MH-E . "8.0"))
(defcustom-mh mh-annotate-msg-hook nil
- "Hook run by `mh-annotate-msg' after annotation.
-Variables that are useful in this hook include `mh-current-folder',
-the current folder, and `mh-annotate-list', the messages annotated."
+ "Hook run whenever a message is sent and after the scan lines and message are annotated.
+Hook functions can access the current folder name with
+`mh-current-folder' and obtain the message numbers of the
+annotated messages with `mh-annotate-list'."
:type 'hook
:group 'mh-hooks
:group 'mh-sending-mail
:group 'mh-search
:package-version '(MH-E . "8.0"))
+(defcustom-mh mh-pack-folder-hook nil
+ "Hook run by \\<mh-folder-mode-map>\\[mh-pack-folder] after renumbering the messages.
+Hook functions can access the current folder name with `mh-current-folder'."
+ :type 'hook
+ :group 'mh-hooks
+ :group 'mh-folder
+ :package-version '(MH-E . "8.2"))
+
(defcustom-mh mh-quit-hook nil
"Hook run by \\<mh-folder-mode-map>\\[mh-quit] after quitting MH-E.