diff lisp/mh-e/mh-customize.el @ 49459:06b77df47802

* mh-e: Created directory. ChangeLog will appear in a week when we release version 7.2. * lisp/mail/mh-alias.el, lisp/mail/mh-comp.el, lisp/mail/mh-customize.el, lisp/mail/mh-e.el, lisp/mail/mh-funcs.el, lisp/mail/mh-identity.el, lisp/mail/mh-index.el, lisp/mail/mh-loaddefs.el, lisp/mail/mh-mime.el, lisp/mail/mh-pick.el, lisp/mail/mh-seq.el, lisp/mail/mh-speed.el, lisp/mail/mh-utils.el, lisp/mail/mh-xemacs-compat.el: Moved to mh-e. Note that reply2.pbm and reply2.xpm, which were created by the MH-E package, were left in mail since they can probably be used by other mail packages. * makefile.w32-in (WINS): Added mh-e. * makefile.nt (WINS): Added mh-e.
author Bill Wohler <wohler@newt.com>
date Sun, 26 Jan 2003 02:38:37 +0000
parents
children b35587af8747
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/mh-e/mh-customize.el	Sun Jan 26 02:38:37 2003 +0000
@@ -0,0 +1,1751 @@
+;;; mh-customize.el --- MH-E customization
+
+;; Copyright (C) 2002 Free Software Foundation, Inc.
+
+;; Author: Bill Wohler <wohler@newt.com>
+;; Maintainer: Bill Wohler <wohler@newt.com>
+;; Keywords: mail
+;; See: mh-e.el
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; All of the defgroups, defcustoms, and deffaces in MH-E are found here. This
+;; makes it possible to customize modules that aren't loaded yet. It also
+;; makes it easier to organize the customization groups.
+
+;; This file contains the following sections:
+;;
+;; 1. MH-E Customization Groups
+;;
+;;    These are the customization group definitions. These are organized in a
+;;    logical order. High-level, windows and toolbar, folder, message,
+;;    composing and hooks.
+;;
+;; 2. MH-E Customization
+;;
+;;    Here are the actual customization variables. There is a sub-section for
+;;    each group in the MH-E Customization Groups section. Within each
+;;    section, variables are sorted alphabetically. The manual section
+;;    dictates which group a variable should be placed. New variables should
+;;    be placed in the section where they would most likely be defined.
+;;
+;;    All hooks should be placed in the 'mh-hook group; in addition, add the
+;;    group in which the hook is defined in the manual (or, if it is new,
+;;    where it would be defined). These two actions insures that the hooks
+;;    appear last in each group.
+;;
+;; 3. Faces
+
+;;; Change Log:
+
+;; $Id: mh-customize.el,v 1.1 2003/01/08 23:21:16 wohler Exp $
+
+;;; Code:
+
+;;;###mh-autoload
+(defun mh-customize ()
+  "Customize MH-E variables."
+  (interactive)
+  (customize-group 'mh))
+
+;;; MH-E Customization Groups
+
+(defgroup mh nil
+  "GNU Emacs interface to the MH mail system."
+  :link '(custom-manual "(mh-e)Top")
+  :group 'mail)
+
+(defgroup mh-toolbar nil
+  "Toolbar configuration."
+  :prefix "mh-"
+  :group 'mh)
+
+(defgroup mh-speed nil
+  "Speedbar and folder configuration."
+  :prefix "mh-"
+  :link '(custom-manual "(mh-e)Customizing Moving Mail")
+  :group 'mh)
+
+(defgroup mh-folder nil
+  "Options for controlling scan listing."
+  :prefix "mh-"
+  :link '(custom-manual "(mh-e)Customizing Moving Mail")
+  :group 'mh)
+
+(defgroup mh-show nil
+  "Message display."
+  :prefix "mh-"
+  :link '(custom-manual "(mh-e)Customizing Reading")
+  :group 'mh)
+
+(defgroup mh-letter nil
+  "Composing messages."
+  :prefix "mh-"
+  :link '(custom-manual "(mh-e)Customizing Sending")
+  :group 'mh)
+
+(defgroup mh-alias nil
+  "Alias handling."
+  :link '(custom-manual "(mh-e)Customizing mh-e")
+  :prefix "mh-alias-"
+  :group 'mh)
+
+(defgroup mh-index nil
+  "Indexed searching."
+  :link '(custom-manual "(mh-e)Customizing mh-e")
+  :prefix "mh-"
+  :group 'mh)
+
+(defgroup mh-identity nil
+  "Multiple personalities."
+  :link '(custom-manual "(mh-e)Customizing mh-e")
+  :prefix "mh-"
+  :group 'mh)
+
+(defgroup mh-faces nil
+  "Faces used in MH-E."
+  :link '(custom-manual "(mh-e)Customizing mh-e")
+  :prefix "mh-"
+  :group 'faces
+  :group 'mh)
+
+(defgroup mh-hooks nil
+  "MH-E hooks."
+  :link '(custom-manual "(mh-e)Customizing mh-e")
+  :prefix "mh-"
+  :group 'mh)
+
+;;; Faces
+
+(defgroup mh-speed-faces nil
+  "Faces used in speedbar."
+  :link '(custom-manual "(mh-e)Customizing mh-e")
+  :prefix "mh-"
+  :group 'mh-faces
+  :group 'mh-speed)
+
+(defgroup mh-folder-faces nil
+  "Faces used in scan listing."
+  :link '(custom-manual "(mh-e)Customizing mh-e")
+  :prefix "mh-"
+  :group 'mh-faces
+  :group 'mh-folder)
+
+(defgroup mh-show-faces nil
+  "Faces used in message display."
+  :link '(custom-manual "(mh-e)Customizing mh-e")
+  :prefix "mh-"
+  :group 'mh-faces
+  :group 'mh-show)
+
+(defgroup mh-index-faces nil
+  "Faces used in indexed searches."
+  :link '(custom-manual "(mh-e)Customizing mh-e")
+  :prefix "mh-"
+  :group 'mh-faces
+  :group 'mh-index)
+
+
+
+;;; MH-E Customization (:group mh)
+
+;;; Toolbar configuration (:group 'mh-toolbar)
+
+(defconst mh-tool-bar-item-inc         "Incorporate new mail in Inbox")
+(defconst mh-tool-bar-item-save-mime   "Save MIME parts")
+(defconst mh-tool-bar-item-prev-msg    "Previous message")
+(defconst mh-tool-bar-item-page-msg    "Page this message")
+(defconst mh-tool-bar-item-next-msg    "Next message")
+(defconst mh-tool-bar-item-delete      "Mark for deletion")
+(defconst mh-tool-bar-item-refile      "Refile this message")
+(defconst mh-tool-bar-item-undo        "Undo this mark")
+(defconst mh-tool-bar-item-perform     "Perform moves and deletes")
+(defconst mh-tool-bar-item-toggle-show "Toggle showing message")
+(defconst mh-tool-bar-item-reply-from  "Reply to \"from\"")
+(defconst mh-tool-bar-item-reply-to    "Reply to \"to\"")
+(defconst mh-tool-bar-item-reply-all   "Reply to \"all\"")
+(defconst mh-tool-bar-item-reply       "Reply to this message")
+(defconst mh-tool-bar-item-alias       "Grab From alias")
+(defconst mh-tool-bar-item-compose     "Compose new message")
+(defconst mh-tool-bar-item-rescan      "Rescan this folder")
+(defconst mh-tool-bar-item-repack      "Repack this folder")
+(defconst mh-tool-bar-item-search      "Search")
+(defconst mh-tool-bar-item-visit       "Visit other folder")
+(defconst mh-tool-bar-item-prefs       "MH-E preferences")
+(defconst mh-tool-bar-item-help        "Help")
+(defconst mh-tool-bar-item-widen       "Widen from this sequence")
+
+(defconst mh-tool-bar-item-send        "Send this letter")
+(defconst mh-tool-bar-item-attach      "Insert attachment")
+(defconst mh-tool-bar-item-spell       "Check spelling")
+(defconst mh-tool-bar-item-save        "Save current buffer to its file")
+(defconst mh-tool-bar-item-undo-op     "Undo last operation")
+(defconst mh-tool-bar-item-kill
+  "Cut (kill) text in region between mark and current position")
+(defconst mh-tool-bar-item-copy
+  "Copy text in region between mark and current position")
+(defconst mh-tool-bar-item-paste
+  "Paste (yank) text cut or copied earlier")
+(defconst mh-tool-bar-item-kill-draft  "Kill this draft")
+(defconst mh-tool-bar-item-comp-prefs  "MH-E composition preferences")
+
+(defcustom mh-tool-bar-reply-3-buttons-flag nil
+  "*Non-nil means use three buttons for reply commands in tool-bar.
+If you have room on your tool-bar because you are using a large font, you
+may set this variable to expand the single reply button into three buttons
+that won't lead to minibuffer prompt about who to reply to."
+  :type 'boolean
+  :group 'mh-toolbar)
+
+(defcustom mh-tool-bar-search-function 'mh-search-folder
+  "*Function called by the tool-bar search button.
+See `mh-search-folder' and `mh-index-search' for details."
+  :type '(choice (const mh-search-folder)
+                 (const mh-index-search)
+                 (function :tag "Other function"))
+  :group 'mh-toolbar)
+
+(eval-when-compile (defvar tool-bar-map))
+(defvar mh-show-tool-bar-map nil)
+(defun mh-tool-bar-show-set ()
+  "Construct toolbar for `mh-show-mode'."
+  (when (fboundp 'tool-bar-add-item)
+    (setq
+     mh-show-tool-bar-map
+     (let ((tool-bar-map (make-sparse-keymap)))
+       (if (member mh-tool-bar-item-inc mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "mail" 'mh-inc-folder 'mh-showtoolbar-inc-folder
+                              :help mh-tool-bar-item-inc))
+       (if (member mh-tool-bar-item-save-mime mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "attach" 'mh-mime-save-parts
+                              'mh-showtoolbar-mime-save-parts
+                              :help mh-tool-bar-item-save-mime))
+       (if (member mh-tool-bar-item-prev-msg mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "left_arrow" 'mh-show-previous-undeleted-msg
+                              'mh-showtoolbar-prev
+                              :help mh-tool-bar-item-prev-msg))
+       (if (member mh-tool-bar-item-page-msg mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "page-down" 'mh-show-page-msg 'mh-showtoolbar-page
+                              :help mh-tool-bar-item-page-msg))
+       (if (member mh-tool-bar-item-next-msg mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "right_arrow" 'mh-show-next-undeleted-msg
+                              'mh-showtoolbar-next
+                              :help mh-tool-bar-item-next-msg))
+       (if (member mh-tool-bar-item-delete mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "close" 'mh-show-delete-msg
+                              'mh-showtoolbar-delete
+                              :help mh-tool-bar-item-delete))
+       (if (member mh-tool-bar-item-refile mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "refile" 'mh-show-refile-msg
+                              'mh-showtoolbar-refile
+                              :help mh-tool-bar-item-refile))
+       (if (member mh-tool-bar-item-undo mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "undo" 'mh-show-undo  'mh-showtoolbar-undo
+                              :help mh-tool-bar-item-undo))
+       (if (member mh-tool-bar-item-perform mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "execute" 'mh-show-execute-commands
+                              'mh-showtoolbar-exec
+                              :help mh-tool-bar-item-perform))
+       (if (member mh-tool-bar-item-toggle-show  mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "show" 'mh-show-toggle-showing
+                              'mh-showtoolbar-toggle-show
+                              :help mh-tool-bar-item-toggle-show))
+       (if (member mh-tool-bar-item-reply-from mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "reply-from"
+                              (lambda (&optional arg)
+                                (interactive "P")
+                                (set-buffer mh-show-folder-buffer)
+                                (mh-reply (mh-get-msg-num nil) "from" arg))
+                              'mh-showtoolbar-reply-from
+                              :help mh-tool-bar-item-reply-from))
+       (if (member mh-tool-bar-item-reply-to mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "reply-to"
+                              (lambda (&optional arg)
+                                (interactive "P")
+                                (set-buffer mh-show-folder-buffer)
+                                (mh-reply (mh-get-msg-num nil) "to" arg))
+                              'mh-showtoolbar-reply-to
+                              :help mh-tool-bar-item-reply-to))
+       (if (member mh-tool-bar-item-reply-all mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "reply-all"
+                              (lambda (&optional arg)
+                                (interactive "P")
+                                (set-buffer mh-show-folder-buffer)
+                                (mh-reply (mh-get-msg-num nil) "all" arg))
+                              'mh-showtoolbar-reply-all
+                              :help mh-tool-bar-item-reply-all))
+       (if (member mh-tool-bar-item-reply mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "mail/reply2" 'mh-show-reply
+                              'mh-showtoolbar-reply
+                              :help mh-tool-bar-item-reply))
+       (if (member mh-tool-bar-item-alias mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "alias" 'mh-alias-grab-from-field
+                              'mh-showtoolbar-alias
+                              :help mh-tool-bar-item-alias
+                              :enable '(mh-alias-from-has-no-alias-p)))
+       (if (member mh-tool-bar-item-compose mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "mail_compose" 'mh-send 'mh-showtoolbar-compose
+                              :help mh-tool-bar-item-compose))
+       (if (member mh-tool-bar-item-rescan mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "rescan" 'mh-show-rescan-folder
+                              'mh-showtoolbar-rescan
+                              :help mh-tool-bar-item-rescan))
+       (if (member mh-tool-bar-item-repack mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "repack" 'mh-show-pack-folder
+                              'mh-showtoolbar-pack
+                              :help mh-tool-bar-item-repack))
+       (if (member mh-tool-bar-item-search mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "search"
+                              (lambda (&optional arg)
+                                (interactive "P")
+                                (call-interactively
+                                 mh-tool-bar-search-function))
+                              'mh-showtoolbar-search
+                              :help mh-tool-bar-item-search))
+       (if (member mh-tool-bar-item-visit mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "fld_open" 'mh-visit-folder
+                              'mh-showtoolbar-visit
+                              :help mh-tool-bar-item-visit))
+       (if (member mh-tool-bar-item-prefs mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "preferences" (lambda ()
+                                              (interactive)
+                                              (customize-group "mh"))
+                              'mh-showtoolbar-customize
+                              :help mh-tool-bar-item-prefs))
+       (if (member mh-tool-bar-item-help mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "help" (lambda ()
+                                       (interactive)
+                                       (Info-goto-node "(mh-e)Top"))
+                              'mh-showtoolbar-help
+                              :help mh-tool-bar-item-help))
+       tool-bar-map))))
+
+(defvar mh-letter-tool-bar-map nil)
+;;;###mh-autoload
+(defun mh-tool-bar-letter-set ()
+  "Construct toolbar for `mh-letter-mode'."
+  (when (fboundp 'tool-bar-add-item)
+    (setq
+     mh-letter-tool-bar-map
+     (let ((tool-bar-map (make-sparse-keymap)))
+       (if (member mh-tool-bar-item-send mh-tool-bar-letter-buttons)
+           (tool-bar-add-item "mail_send" 'mh-send-letter
+                              'mh-lettertoolbar-send
+                              :help mh-tool-bar-item-send))
+       (if (member mh-tool-bar-item-attach mh-tool-bar-letter-buttons)
+           (tool-bar-add-item "attach" 'mh-compose-insertion
+                              'mh-lettertoolbar-compose
+                              :help mh-tool-bar-item-attach))
+       (if (member mh-tool-bar-item-spell mh-tool-bar-letter-buttons)
+           (tool-bar-add-item "spell" 'ispell-message 'mh-lettertoolbar-ispell
+                              :help mh-tool-bar-item-spell))
+       (if (member mh-tool-bar-item-save mh-tool-bar-letter-buttons)
+           (tool-bar-add-item-from-menu 'save-buffer "save"))
+       (if (member mh-tool-bar-item-undo-op mh-tool-bar-letter-buttons)
+           (tool-bar-add-item-from-menu 'undo "undo"))
+       (if (member mh-tool-bar-item-kill mh-tool-bar-letter-buttons)
+           (tool-bar-add-item-from-menu 'kill-region "cut"))
+       (if (member mh-tool-bar-item-copy mh-tool-bar-letter-buttons)
+           (tool-bar-add-item-from-menu 'menu-bar-kill-ring-save "copy"))
+       (if (member mh-tool-bar-item-paste mh-tool-bar-letter-buttons)
+           (tool-bar-add-item-from-menu 'yank "paste"))
+       (if (member mh-tool-bar-item-kill-draft mh-tool-bar-letter-buttons)
+          (tool-bar-add-item "close" 'mh-fully-kill-draft
+                             'mh-lettertoolbar-kill
+                             :help mh-tool-bar-item-kill-draft))
+       (if (member mh-tool-bar-item-comp-prefs mh-tool-bar-letter-buttons)
+          (tool-bar-add-item "preferences" (lambda ()
+                                             (interactive)
+                                             (customize-group "mh-compose"))
+                             'mh-lettertoolbar-customize
+                             :help mh-tool-bar-item-comp-prefs))
+       (if (member mh-tool-bar-item-help mh-tool-bar-letter-buttons)
+          (tool-bar-add-item "help" (lambda ()
+                                      (interactive)
+                                      (Info-goto-node "(mh-e)Draft Editing"))
+                             'mh-lettertoolbar-help
+                             :help mh-tool-bar-item-help))
+          tool-bar-map))))
+
+(defvar mh-folder-tool-bar-map nil)
+(defvar mh-folder-seq-tool-bar-map nil
+  "Tool-bar to use when narrowed to a sequence in MH-Folder buffers.")
+;;;###mh-autoload
+(defun mh-tool-bar-folder-set ()
+  "Construct toolbar for `mh-folder-mode'."
+  (when (fboundp 'tool-bar-add-item)
+    (setq
+     mh-folder-tool-bar-map
+     (let ((tool-bar-map (make-sparse-keymap)))
+       (if (member mh-tool-bar-item-inc mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "mail" 'mh-inc-folder
+                              'mh-foldertoolbar-inc-folder
+                              :help mh-tool-bar-item-inc))
+       (if (member mh-tool-bar-item-save-mime mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "attach" 'mh-mime-save-parts
+                              'mh-foldertoolbar-mime-save-parts
+                              :help mh-tool-bar-item-save-mime))
+       (if (member mh-tool-bar-item-prev-msg mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "left_arrow" 'mh-previous-undeleted-msg
+                              'mh-foldertoolbar-prev
+                              :help mh-tool-bar-item-prev-msg))
+       (if (member mh-tool-bar-item-page-msg mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "page-down" 'mh-page-msg 'mh-foldertoolbar-page
+                              :help mh-tool-bar-item-page-msg))
+       (if (member mh-tool-bar-item-next-msg mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "right_arrow" 'mh-next-undeleted-msg
+                              'mh-foldertoolbar-next
+                              :help mh-tool-bar-item-next-msg))
+       (if (member mh-tool-bar-item-delete mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "close" 'mh-delete-msg 'mh-foldertoolbar-delete
+                              :help mh-tool-bar-item-delete))
+       (if (member mh-tool-bar-item-refile mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "refile" 'mh-refile-msg 'mh-foldertoolbar-refile
+                              :help mh-tool-bar-item-refile))
+       (if (member mh-tool-bar-item-undo mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "undo" 'mh-undo  'mh-foldertoolbar-undo
+                              :help mh-tool-bar-item-undo))
+       (if (member mh-tool-bar-item-perform mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "execute" 'mh-execute-commands
+                              'mh-foldertoolbar-exec
+                              :help mh-tool-bar-item-perform))
+       (if (member mh-tool-bar-item-toggle-show  mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "show" 'mh-toggle-showing
+                              'mh-foldertoolbar-toggle-show
+                              :help mh-tool-bar-item-toggle-show))
+       (if (member mh-tool-bar-item-reply-from mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "reply-from"
+                              (lambda (&optional arg)
+                                (interactive "P")
+                                (mh-reply (mh-get-msg-num nil) "from" arg))
+                              'mh-foldertoolbar-reply-from
+                              :help mh-tool-bar-item-reply-from))
+       (if (member mh-tool-bar-item-reply-to mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "reply-to"
+                              (lambda (&optional arg)
+                                (interactive "P")
+                                (mh-reply (mh-get-msg-num nil) "to" arg))
+                              'mh-foldertoolbar-reply-to
+                              :help mh-tool-bar-item-reply-to))
+       (if (member mh-tool-bar-item-reply-all mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "reply-all"
+                              (lambda (&optional arg)
+                                (interactive "P")
+                                (mh-reply (mh-get-msg-num nil) "all" arg))
+                              'mh-foldertoolbar-reply-all
+                              :help mh-tool-bar-item-reply-all))
+       (if (member mh-tool-bar-item-reply mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "mail/reply2" 'mh-reply
+                              'mh-foldertoolbar-reply
+                              :help mh-tool-bar-item-reply))
+       (if (member mh-tool-bar-item-alias mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "alias" 'mh-alias-grab-from-field
+                              'mh-foldertoolbar-alias
+                              :help mh-tool-bar-item-alias
+                            :enable '(mh-alias-from-has-no-alias-p)))
+       (if (member mh-tool-bar-item-compose mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "mail_compose" 'mh-send 'mh-foldertoolbar-compose
+                              :help mh-tool-bar-item-compose))
+       (if (member mh-tool-bar-item-rescan mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "rescan" 'mh-rescan-folder
+                              'mh-foldertoolbar-rescan
+                              :help mh-tool-bar-item-rescan))
+       (if (member mh-tool-bar-item-repack mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "repack" 'mh-pack-folder 'mh-foldertoolbar-pack
+                              :help mh-tool-bar-item-repack))
+       (if (member mh-tool-bar-item-search mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "search"
+                              (lambda (&optional arg)
+                                (interactive "P")
+                                (call-interactively
+                                 mh-tool-bar-search-function))
+                              'mh-foldertoolbar-search
+                              :help mh-tool-bar-item-search))
+       (if (member mh-tool-bar-item-visit mh-tool-bar-folder-buttons)
+         (tool-bar-add-item "fld_open" 'mh-visit-folder
+                            'mh-foldertoolbar-visit
+                            :help mh-tool-bar-item-visit))
+       (if (member mh-tool-bar-item-prefs mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "preferences" (lambda ()
+                                              (interactive)
+                                              (customize-group "mh"))
+                              'mh-foldertoolbar-customize
+                              :help mh-tool-bar-item-prefs))
+       (if (member mh-tool-bar-item-help mh-tool-bar-folder-buttons)
+           (tool-bar-add-item "help" (lambda ()
+                                       (interactive)
+                                       (Info-goto-node "(mh-e)Top"))
+                              'mh-foldertoolbar-help
+                              :help mh-tool-bar-item-help))
+       tool-bar-map))
+    
+    (setq mh-folder-seq-tool-bar-map
+          (let ((tool-bar-map (copy-keymap mh-folder-tool-bar-map)))
+            (if (member mh-tool-bar-item-widen mh-tool-bar-folder-buttons)
+                (tool-bar-add-item "widen" 'mh-widen 'mh-foldertoolbar-widen
+                                   :help mh-tool-bar-item-widen))
+            tool-bar-map))))
+
+(defun mh-tool-bar-folder-buttons-set (symbol value)
+  "Update the `mh-tool-bar-folder-buttons' variable, and rebuild the tool-bar.
+Sets the default for SYMBOL (e.g. `mh-tool-bar-folder-buttons') to VALUE (as
+set in customization).  This is called after 'customize is used to alter
+`mh-tool-bar-folder-buttons'."
+  (set-default symbol value)
+  (mh-tool-bar-show-set)
+  (mh-tool-bar-folder-set))
+
+(custom-declare-variable
+ 'mh-tool-bar-folder-buttons
+ '(append
+   (list mh-tool-bar-item-inc
+         mh-tool-bar-item-save-mime
+         mh-tool-bar-item-prev-msg
+         mh-tool-bar-item-page-msg
+         mh-tool-bar-item-next-msg
+         mh-tool-bar-item-delete
+         mh-tool-bar-item-refile
+         mh-tool-bar-item-undo
+         mh-tool-bar-item-perform
+;;;      mh-tool-bar-item-toggle-show
+         )
+   (if mh-tool-bar-reply-3-buttons-flag
+       (list mh-tool-bar-item-reply-from
+             mh-tool-bar-item-reply-to
+             mh-tool-bar-item-reply-all)
+     (list mh-tool-bar-item-reply))
+   (list mh-tool-bar-item-alias
+         mh-tool-bar-item-compose
+         mh-tool-bar-item-rescan
+;;;      mh-tool-bar-item-repack
+         mh-tool-bar-item-search
+         mh-tool-bar-item-visit
+         mh-tool-bar-item-prefs
+         mh-tool-bar-item-help
+         mh-tool-bar-item-widen))
+ "Buttons to include in MH-E folder/show toolbar."
+ :group 'mh-toolbar
+ :set 'mh-tool-bar-folder-buttons-set
+ :type `(set (const ,mh-tool-bar-item-inc)
+             (const ,mh-tool-bar-item-save-mime)
+             (const ,mh-tool-bar-item-prev-msg)
+             (const ,mh-tool-bar-item-page-msg)
+             (const ,mh-tool-bar-item-next-msg)
+             (const ,mh-tool-bar-item-delete)
+             (const ,mh-tool-bar-item-refile)
+             (const ,mh-tool-bar-item-undo)
+             (const ,mh-tool-bar-item-perform)
+             (const ,mh-tool-bar-item-toggle-show)
+             (const ,mh-tool-bar-item-reply-from)
+             (const ,mh-tool-bar-item-reply-to)
+             (const ,mh-tool-bar-item-reply-all)
+             (const ,mh-tool-bar-item-reply)
+             (const ,mh-tool-bar-item-alias)
+             (const ,mh-tool-bar-item-compose)
+             (const ,mh-tool-bar-item-rescan)
+             (const ,mh-tool-bar-item-repack)
+             (const ,mh-tool-bar-item-search)
+             (const ,mh-tool-bar-item-visit)
+             (const ,mh-tool-bar-item-prefs)
+             (const ,mh-tool-bar-item-help)
+             (const ,mh-tool-bar-item-widen)))
+
+(defun mh-tool-bar-letter-buttons-set (symbol value)
+  "Update the `mh-tool-bar-letter-buttons' variable, and rebuild the tool-bar.
+Sets the default for SYMBOL (e.g. `mh-tool-bar-letter-buttons') to VALUE (as
+set in customization).  This is called after 'customize is used to alter
+`mh-tool-bar-letter-buttons'."
+  (set-default symbol value)
+  (mh-tool-bar-letter-set))
+
+(custom-declare-variable
+ 'mh-tool-bar-letter-buttons
+ '(list mh-tool-bar-item-send
+        mh-tool-bar-item-attach
+        mh-tool-bar-item-spell
+        mh-tool-bar-item-save
+        mh-tool-bar-item-undo-op
+        mh-tool-bar-item-kill
+        mh-tool-bar-item-copy
+        mh-tool-bar-item-paste
+        mh-tool-bar-item-kill-draft
+        mh-tool-bar-item-comp-prefs
+        mh-tool-bar-item-help)
+ "Buttons to include in MH-E letter toolbar."
+ :group 'mh-toolbar
+ :set 'mh-tool-bar-letter-buttons-set
+ :type `(set (const ,mh-tool-bar-item-send)
+             (const ,mh-tool-bar-item-attach)
+             (const ,mh-tool-bar-item-spell)
+             (const ,mh-tool-bar-item-save)
+             (const ,mh-tool-bar-item-undo-op)
+             (const ,mh-tool-bar-item-kill)
+             (const ,mh-tool-bar-item-copy)
+             (const ,mh-tool-bar-item-paste)
+             (const ,mh-tool-bar-item-kill-draft)
+             (const ,mh-tool-bar-item-comp-prefs)
+             (const ,mh-tool-bar-item-help)))
+
+
+
+;;; Speedbar and folder configuration (:group 'mh-speed)
+
+(defcustom mh-large-folder 200
+  "The number of messages that indicates a large folder.
+If a folder is deemed to be large, that is the number of messages in it exceed
+this value, then confirmation is needed when it is visited. Even when
+`mh-show-threads-flag' is non-nil, the folder is not automatically threaded, if
+it is large. If set to nil all folders are treated as if they are small."
+  :type '(choice (const :tag "No limit") integer)
+  :group 'mh-speed)
+
+(defcustom mh-speed-flists-interval 60
+  "Time between calls to flists in seconds.
+If 0, flists is not called repeatedly."
+  :type 'integer
+  :group 'mh-speed)
+
+(defcustom mh-speed-run-flists-flag t
+  "Non-nil means flists is used.
+If non-nil, flists is executed every `mh-speed-flists-interval' seconds to
+update the display of the number of unseen and total messages in each folder.
+If resources are limited, this can be set to nil and the speedbar display can
+be updated manually with the \\[mh-speed-flists] command."
+  :type 'boolean
+  :group 'mh-speed)
+
+;;; Options for controlling scan listing (:group 'mh-folder)
+
+(defcustom mh-adaptive-cmd-note-flag t
+  "*Non-nil means that the message number width is determined dynamically.
+This is done once when a folder is first opened by running scan on the last
+message of the folder. The message number for the last message is extracted
+and its width calculated. This width is used when calling `mh-set-cmd-note'.
+
+If you prefer fixed-width message numbers, set this variable to nil and call
+`mh-set-cmd-note' with the width specified by the scan format in
+`mh-scan-format-file'. For example, the default width is 4, so you would use
+\"(mh-set-cmd-note 4)\" if `mh-scan-format-file' were nil."
+  :type 'boolean
+  :group 'mh-folder)
+
+(defcustom mh-auto-folder-collect-flag t
+  "*Non-nil means to collect all folder names at startup in the background.
+Otherwise, the internal list of folder names is built as folders are
+referenced."
+  :type 'boolean
+  :group 'mh-folder)
+
+(defcustom mh-inc-prog "inc"
+  "*Program to run to incorporate new mail into a folder.
+Normally \"inc\".  This file is searched for relative to
+the `mh-progs' directory unless it is an absolute pathname."
+  :type 'string
+  :group 'mh-folder)
+
+(defcustom mh-lpr-command-format "lpr -J '%s'"
+  "*Format for Unix command that prints a message.
+The string should be a Unix command line, with the string '%s' where
+the job's name (folder and message number) should appear.  The formatted
+message text is piped to this command when you type \\<mh-folder-mode-map>`\\[mh-print-msg]'."
+  :type 'string
+  :group 'mh-folder)
+
+(defcustom mh-mime-save-parts-default-directory t
+  "Default directory to use for `mh-mime-save-parts'.
+If nil, prompt and set for next time the command is used during same session.
+If t, prompt always"
+  :type '(choice (const :tag "Prompt the first time" nil)
+                 (const :tag "Prompt always" t)
+                 directory)
+  :group 'mh-folder)
+
+(defcustom mh-recenter-summary-flag nil
+  "*Non-nil means to recenter the summary window.
+Recenter the summary window when the show window is toggled off if non-nil."
+  :type 'boolean
+  :group 'mh-folder)
+
+(defcustom mh-print-background-flag nil
+  "*Non-nil means messages should be printed in the background.
+WARNING: do not delete the messages until printing is finished;
+otherwise, your output may be truncated."
+  :type 'boolean
+  :group 'mh-folder)
+
+(defcustom mh-recursive-folders-flag nil
+  "*Non-nil means that commands which operate on folders do so recursively."
+  :type 'boolean
+  :group 'mh-folder)
+
+(defcustom mh-scan-format-file t
+  "Specifies the format file to pass to the scan program.
+If t, the format string will be taken from the either `mh-scan-format-mh'
+or `mh-scan-format-nmh' depending on whether MH or nmh is in use.
+If nil, the default scan output will be used.
+
+If you customize the scan format, you may need to modify a few variables
+containing regexps that MH-E uses to identify specific portions of the output.
+Use `M-x apropos RET mh-scan.*regexp' to obtain a list of these variables. You
+may also have to call `mh-set-cmd-note' with the width of your message
+numbers. See also `mh-adaptive-cmd-note-flag'."
+  :type '(choice (const :tag "Use MH-E scan format" t)
+                 (const :tag "Use default scan format" nil)
+                 (file  :tag "Specify a scan format file"))
+  :group 'mh-folder)
+
+(defcustom mh-scan-prog "scan"
+  "*Program to run to generate one-line-per-message listing of a folder.
+Normally \"scan\" or a file name linked to scan.  This file is searched
+for relative to the `mh-progs' directory unless it is an absolute pathname."
+  :type 'string
+  :group 'mh-folder)
+(make-variable-buffer-local 'mh-scan-prog)
+
+(defcustom mh-show-threads-flag nil
+  "Non-nil means new folders start in threaded mode.
+Threading large number of messages can be time consuming. So if the flag is
+non-nil then threading will be done only if the number of messages being
+threaded is less than `mh-large-folder'."
+  :type 'boolean
+  :group 'mh-folder)
+
+(defcustom mh-store-default-directory nil
+  "*Last directory used by \\[mh-store-msg]; default for next store.
+A directory name string, or nil to use current directory."
+  :type '(choice (const :tag "Current" nil)
+                 directory)
+  :group 'mh-folder)
+
+(defcustom mh-update-sequences-after-mh-show-flag t
+  "*Non-nil means `mh-update-sequence' is called from `mh-show-mode'.
+If set, `mh-update-sequence' is run every time a message is shown, telling
+MH or nmh that this is your current message.  It's useful, for example, to
+display MIME content using \"M-! mhshow RET\""
+  :type 'boolean
+  :group 'mh-folder)
+
+;;; Message display (:group 'mh-show)
+
+(defcustom mh-bury-show-buffer-flag t
+  "*Non-nil means that the displayed show buffer for a folder is buried."
+  :type 'boolean
+  :group 'mh-show)
+
+(defcustom mh-clean-message-header-flag t
+  "*Non-nil means clean headers of messages that are displayed or inserted.
+The variables `mh-invisible-headers' and `mh-visible-headers' control
+what is removed."
+  :type 'boolean
+  :group 'mh-show)
+
+(defcustom mh-decode-mime-flag (not (not (locate-library "mm-decode")))
+  "*Non-nil means that Gnus is used to show MIME attachments with Gnus."
+  :type 'boolean
+  :group 'mh-show)
+
+(defcustom mh-decode-quoted-printable-flag
+  (not (null (and (fboundp 'executable-find)(executable-find "mimedecode"))))
+  "Non-nil means decode quoted-printable MIME part with `mimedecode'.
+
+Quoted-printable message parts are translated to 8-bit characters by the
+`mimedecode' command. However, unless there is only one quoted-printable body
+part, Gnus will have already decoded the quoted-printable parts.
+
+This variable is initialized t if `mimedecode' is available.
+
+The source code for `mimedecode' can be obtained from
+http://www.freesoft.org/CIE/FAQ/mimedeco.c."
+  :type 'boolean
+  :group 'mh-show)
+
+(defcustom mh-display-buttons-for-inline-parts-flag nil
+  "*Non-nil means display buttons for all inline MIME parts.
+If non-nil, buttons are displayed for all MIME parts. Inline parts start off
+in displayed state but they can be hidden by clicking the button. If nil no
+buttons are shown for inline parts."
+  :type 'boolean
+  :group 'mh-show)
+
+(defcustom mh-do-not-confirm-flag nil
+  "*Non-nil means do not prompt for confirmation.
+Commands such as `mh-pack-folder' prompt to confirm whether to process
+outstanding moves and deletes or not before continuing. A non-nil setting will
+perform the action--which is usually desired but cannot be retracted--without
+question."
+  :type 'boolean
+  :group 'mh-show)
+
+(defcustom mh-graphical-smileys-flag t
+  "*Non-nil means graphical smileys are displayed.
+Non-nil means that small graphics will be used in the show buffer instead of
+patterns like :-), ;-) etc. The setting only has effect if
+`mh-decode-mime-flag' is non-nil."
+  :type 'boolean
+  :group 'mh-show)
+
+(defcustom mh-graphical-emphasis-flag t
+  "*Non-nil means graphical emphasis is displayed.
+Non-nil means that _underline_ will be underlined, *bold* will appear in bold,
+/italic/ will appear in italic etc. See `gnus-emphasis-alist' for the whole
+list. The setting only has effect if `mh-decode-mime-flag' is non-nil."
+  :type 'boolean
+  :group 'mh-show)
+
+(defcustom mh-highlight-citation-p 'gnus
+  "How to highlight citations in show buffers.
+The gnus method uses a different color for each indentation."
+  :type '(choice (const :tag "Use gnus" gnus)
+                 (const :tag "Use font-lock" font-lock)
+                 (const :tag "Don't fontify" nil))
+  :group 'mh-show)
+
+(defcustom mh-max-inline-image-height nil
+  "*Maximum inline image height if Content-Disposition is not present.
+If nil, image will be displayed if its height is smaller than the height of
+the window."
+  :type '(choice (const nil) integer)
+  :group 'mh-show)
+
+(defcustom mh-max-inline-image-width nil
+  "*Maximum inline image width if Content-Disposition is not present.
+If nil, image will be displayed if its width is smaller than the width of the
+window."
+  :type '(choice (const nil) integer)
+  :group 'mh-show)
+
+(defcustom mh-show-maximum-size 0
+  "*Maximum size of message (in bytes) to display automatically.
+Provides an opportunity to skip over large messages which may be slow to load.
+Use a value of 0 to display all messages automatically regardless of size."
+  :type 'integer
+  :group 'mh-show)
+
+;; Use goto-addr if it was already loaded (which probably sets this
+;; variable to t), or if this variable is otherwise set to t.
+(defcustom mh-show-use-goto-addr-flag (and (boundp 'goto-address-highlight-p)
+                                           goto-address-highlight-p)
+  "*Non-nil means highlight URLs and email addresses.
+The `goto-addr' module is used."
+  :type 'boolean
+  :group 'mh-show)
+
+(defcustom mh-show-use-xface-flag
+  (and window-system
+       (not (null (cond
+                   (mh-xemacs-flag
+                    (locate-library "x-face"))
+                   ((>= emacs-major-version 21)
+                    (locate-library "x-face-e21"))
+                   (t                   ;Emacs20
+                    nil))))
+       (not (null (and (fboundp 'executable-find)
+                       (executable-find
+                        "uncompface")))))
+  "*Non-nil means display faces in `mh-show-mode' with external x-face package.
+It is available from ftp://ftp.jpl.org/pub/elisp/. Download it and put its
+files in the Emacs `load-path' and MH-E will invoke it automatically for you if
+this variable is non-nil.
+
+The `uncompface' binary is also required to be in the execute PATH. It can
+be obtained from: ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z"
+  :type 'boolean
+  :group 'mh-show)
+
+(defcustom mh-summary-height (or (and (fboundp 'frame-height)
+                                      (> (frame-height) 24)
+                                      (min 10 (/ (frame-height) 6)))
+                                 4)
+  "*Number of lines in MH-Folder window (including the mode line)."
+  :type 'integer
+  :group 'mh-show)
+
+(defcustom mh-visible-headers nil
+  "*Contains a regexp specifying the headers to keep when cleaning.
+Only used if `mh-clean-message-header-flag' is non-nil. Setting it overrides
+the variable `mh-invisible-headers'."
+  :type '(choice (const nil) regexp)
+  :group 'mh-show)
+
+(defcustom mhl-formfile nil
+  "*Name of format file to be used by mhl to show and print messages.
+A value of t means use the default format file.
+nil means don't use mhl to format messages when showing; mhl is still used,
+with the default format file, to format messages when printing them.
+The format used should specify a non-zero value for overflowoffset so
+the message continues to conform to RFC 822 and MH-E can parse the headers."
+  :type '(choice (const nil) (const t) string)
+  :group 'mh-show)
+(put 'mhl-formfile 'info-file "mh-e")
+
+(defvar mh-invisible-headers nil
+  "*Regexp matching lines in a message header that are not to be shown.
+If `mh-visible-headers' is non-nil, it is used instead to specify what
+to keep.")
+
+(defun mh-invisible-headers ()
+  "Make or remake the variable `mh-invisible-headers'.
+Done using `mh-invisible-header-fields' as input."
+  (setq mh-invisible-headers
+        (concat
+         "^"
+         (let ((max-specpdl-size 1000)) ;workaround for insufficient default
+           (regexp-opt
+            (append
+             (if (not mh-show-use-xface-flag)
+                 '("X-Face: "))
+             mh-invisible-header-fields))))))
+
+(defun mh-invisible-header-fields-set (symbol value)
+  "Update `mh-invisible-header-fields'.
+The function is called with SYMBOL bound to `mh-invisible-header-fields' and
+VALUE is the the list of headers that are invisible. As a side effect, the
+variable `mh-invisible-fields' is set."
+  (set-default symbol value)
+  (mh-invisible-headers))
+
+;; Keep fields alphabetized. Mention source, if known.
+(defcustom mh-invisible-header-fields
+  '("Autoforwarded: "
+    "Bestservhost: "
+    "Content-"                          ; RFC 2045
+    "Delivered-To: "             ; Egroups/yahoogroups mailing list manager
+    "Delivery-Date: "                   ; MH
+    "Delivery: "
+    "Encoding: "
+    "Errors-To: "
+    "Forwarded: "                       ; MH
+    "From "                             ; sendmail
+    "Importance: "                      ; MS Outlook
+    "In-Reply-To: "                     ; MH
+    "Lines: "
+    "List-"                             ; Mailman mailing list manager
+    "List-"                             ; Unknown mailing list managers
+    "List-Subscribe: "                  ; Unknown mailing list managers
+    "List-Unsubscribe: "                ; Unknown mailing list managers
+    "Mail-from: "                       ; MH
+    "Mailing-List: "             ; Egroups/yahoogroups mailing list manager
+    "Message-Id: "                      ; RFC 822
+    "Mime-Version"                      ; RFC 2045
+    "NNTP-"                             ; News
+    "Old-Return-Path: "
+    "Original-Encoded-Information-Types: " ; X400
+    "P1-Content-Type: "                 ; X400
+    "P1-Message-Id: "                   ; X400
+    "P1-Recipient: "                    ; X400
+    "Path: "
+    "Precedence: "
+    "Prev-Resent"                       ; MH
+    "Priority: "
+    "Received: "                        ; RFC 822
+    "References: "
+    "Remailed-"                         ; MH
+    "Replied: "                         ; MH
+    "Resent"                            ; MH
+    "Return-Path: "                     ; RFC 822
+    "Sensitivity: "                     ; MS Outlook
+    "Status: "                          ; sendmail
+    "Ua-Content-Id: "                   ; X400
+    "User-Agent: "
+    "Via: "                             ; MH
+    "X-Abuse-Info: "
+    "X-Accept-Language: "
+    "X-Accept-Language: "               ; Netscape/Mozilla
+    "X-Ack: "
+    "X-Apparently-From: "               ; MS Outlook
+    "X-Apparently-To: "          ; Egroups/yahoogroups mailing list manager
+    "X-Authentication-Warning: "        ; sendmail
+    "X-Beenthere: "                     ; Mailman mailing list manager
+    "X-Complaints-To: "
+    "X-Cron-Env: "
+    "X-Delivered"
+    "X-Envelope-Sender: "
+    "X-Envelope-To: "
+    "X-Folder: "                        ; Spam
+    "X-From-Line"
+    "X-Gnus-Mail-Source: "              ; gnus
+    "X-Habeas-SWE-1: "                  ; Spam
+    "X-Habeas-SWE-2: "                  ; Spam
+    "X-Habeas-SWE-3: "                  ; Spam
+    "X-Habeas-SWE-4: "                  ; Spam
+    "X-Habeas-SWE-5: "                  ; Spam
+    "X-Habeas-SWE-6: "                  ; Spam
+    "X-Habeas-SWE-7: "                  ; Spam
+    "X-Habeas-SWE-8: "                  ; Spam
+    "X-Habeas-SWE-9: "                  ; Spam
+    "X-Info: "                          ; NTMail
+    "X-Juno-"                           ; Juno
+    "X-List-Host: "                     ; Unknown mailing list managers
+    "X-List-Subscribe: "                ; Unknown mailing list managers
+    "X-List-Unsubscribe: "              ; Unknown mailing list managers
+    "X-Listserver: "                    ; Unknown mailing list managers
+    "X-Loop: "                          ; Unknown mailing list managers
+    "X-MIME-Autoconverted: "            ; sendmail
+    "X-MIMETrack: "
+    "X-MS-TNEF-Correlator: "            ; MS Outlook
+    "X-Mailing-List: "                  ; Unknown mailing list managers
+    "X-Mailman-Version: "               ; Mailman mailing list manager
+    "X-Message-Id"
+    "X-MimeOLE: "                       ; MS Outlook
+    "X-Mozilla-Status: "                ; Netscape/Mozilla
+    "X-Msmail-"                         ; MS Outlook
+    "X-News: "                          ; News
+    "X-No-Archive: "
+    "X-Orcl-Content-Type: "
+    "X-Original-Complaints-To: "
+    "X-Original-Date: "                 ; SourceForge mailing list manager
+    "X-Original-Trace: "
+    "X-OriginalArrivalTime: "           ; Hotmail
+    "X-Originating-IP: "                ; Hotmail
+    "X-Priority: "                      ; MS Outlook
+    "X-Qotd-"                           ; User added
+    "X-Received-Date: "
+    "X-Received: "
+    "X-Request-"
+    "X-SBClass: "                       ; Spam
+    "X-SBNote: "                        ; Spam
+    "X-SBPass: "                        ; Spam
+    "X-SBRule: "                        ; Spam
+    "X-Scanned-By"
+    "X-Sender: "
+    "X-Server-Date: "
+    "X-Server-Uuid: "
+    "X-Sieve: "                         ; Sieve filtering
+    "X-Spam-Level: "                    ; Spam
+    "X-Spam-Score: "                    ; Spam
+    "X-Spam-Status: "                   ; Spam
+    "X-SpamBouncer: "                   ; Spam
+    "X-Trace: "
+    "X-UIDL: "
+    "X-UserInfo1: "
+    "X-VSMLoop: "                       ; NTMail
+    "X-Vms-To: "
+    "X-Wss-Id: "                        ; Worldtalk gateways
+    "X-eGroups-"                 ; Egroups/yahoogroups mailing list manager
+    "X-pgp: "
+    "X-submission-address: "
+    "X400-"                             ; X400
+    "Xref: ")
+"*List of header fields that are not to be shown.
+Regexps are not allowed. Unique fields should have a \": \" suffix;
+otherwise, the element can be used to render an entire class of fields
+that start with the same prefix invisible.
+This variable is ignored if `mh-visible-headers' is set."
+  :type '(repeat (string :tag "Header field"))
+  :set 'mh-invisible-header-fields-set
+  :group 'mh-show)
+
+;;; Composing messages (:group 'mh-letter)
+
+(defcustom mh-compose-insertion (if (locate-library "mml") 'gnus 'mhn)
+  "Use either 'gnus or 'mhn to insert MIME message directives in messages."
+  :type '(choice (const :tag "Use gnus" gnus)
+                 (const :tag "Use mhn"  mhn))
+  :group 'mh-letter)
+
+(defcustom mh-compose-letter-function nil
+  "Invoked when setting up a letter draft.
+It is passed three arguments: TO recipients, SUBJECT, and CC recipients."
+  :type '(choice (const nil) function)
+  :group 'mh-letter)
+
+(defcustom mh-delete-yanked-msg-window-flag nil
+  "*Non-nil means delete any window displaying the message.
+Controls window display when a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg].
+If non-nil, yanking the current message into a draft letter deletes any
+windows displaying the message."
+  :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]."
+  :type '(choice (const "wrote:")
+                 (const "a écrit :")
+                 (string :tag "Custom string"))
+  :group 'mh-letter)
+
+(defcustom mh-forward-subject-format "%s: %s"
+  "*Format to generate the Subject: line contents for a forwarded message.
+The two string arguments to the format are the sender of the original
+message and the original subject line."
+  :type 'string
+  :group 'mh-letter)
+
+(defcustom mh-ins-buf-prefix "> "
+  "*String to put before each non-blank line of a yanked or inserted message.
+\\<mh-letter-mode-map>Used when the message is inserted into an outgoing letter
+by \\[mh-insert-letter] or \\[mh-yank-cur-msg]."
+  :type 'string
+  :group 'mh-letter)
+
+(defcustom mh-insert-mail-followup-to-flag t
+  "Non-nil means maybe append a Mail-Followup-To field to the header.
+The insertion is done if the To: or Cc: fields matches an entry in
+`mh-insert-mail-followup-to-list'."
+  :type 'boolean
+  :group 'mh-letter)
+
+(defcustom mh-insert-mail-followup-to-list nil
+  "Alist of addresses for which a Mail-Followup-To field is inserted.
+Each element has the form (REGEXP ADDRESS).
+When the REGEXP appears in the To or cc fields of a message, the corresponding
+ADDRESS is inserted in a Mail-Followup-To field.
+
+Here's a customization example:
+
+  regexp: mh-e-users@lists.s\\\\(ourceforge\\\\|f\\\\).net
+ address: mh-e-users@lists.sourceforge.net
+
+This corresponds to:
+
+  (setq mh-insert-mail-followup-to-list
+        '((\"mh-e-users@lists.s\\\\(ourceforge\\\\|f\\\\).net\"
+           \"mh-e-users@lists.sourceforge.net\")))
+
+While it might be tempting to add a descriptive name to the mailing list
+address, consider that this field will appear in other people's outgoing
+mail in their To: field.  It might be best to keep it simple."
+  :type '(repeat (list (string :tag "regexp") (string :tag "address")))
+  :group 'mh-letter)
+
+(defcustom mh-insert-x-mailer-flag t
+  "*Non-nil means append an X-Mailer field to the header."
+  :type 'boolean
+  :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."
+  :type 'integer
+  :group 'mh-letter)
+
+(defcustom mh-reply-default-reply-to nil
+  "*Sets the person or persons to whom a reply will be sent.
+If nil, prompt for recipient.  If non-nil, then \\<mh-folder-mode-map>`\\[mh-reply]' will use this
+value and it should be one of \"from\", \"to\", \"cc\", or \"all\".
+The values \"cc\" and \"all\" do the same thing."
+  :type '(choice (const :tag "Prompt" nil)
+                 (const "from") (const "to")
+                 (const "cc") (const "all"))
+  :group 'mh-letter)
+
+(defcustom mh-reply-show-message-flag t
+  "*Non-nil means the show buffer is displayed using \\<mh-letter-mode-map>\\[mh-reply].
+
+The setting of this variable determines whether the MH `show-buffer' is
+displayed with the current message when using `mh-reply' without a prefix
+argument.  Set it to nil if you already include the message automatically
+in your draft using
+ repl: -filter repl.filter
+in your ~/.mh_profile file."
+  :type 'boolean
+  :group 'mh-letter)
+
+(defcustom mh-signature-file-name "~/.signature"
+  "*Name of file containing the user's signature.
+Inserted into message by \\<mh-letter-mode-map>\\[mh-insert-signature]."
+  :type 'file
+  :group 'mh-letter)
+
+(defcustom mh-x-face-file "~/.face"
+  "*File name containing the encoded X-Face string to insert in outgoing mail.
+If nil, or the file does not exist, nothing is added to message headers."
+  :type 'file
+  :group 'mh-letter)
+
+(defvar mh-x-mailer-string nil
+  "*String containing the contents of the X-Mailer header field.
+If nil, this variable is initialized to show the version of MH-E, Emacs, and
+MH the first time a message is composed.")
+
+(defcustom mh-yank-from-start-of-msg '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.
+
+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.
+
+If the symbol `attribution', then yank the message minus the header and add
+a simple attribution line at the top.
+
+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 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."
+  :type '(choice (const :tag "Below point" nil)
+                 (const :tag "Without header" body)
+                 (const :tag "Invoke supercite" supercite)
+                 (const :tag "Invoke supercite, automatically" autosupercite)
+                 (const :tag "Without header, with attribution" attribution)
+                 (const :tag "Without header, with attribution, automatically"
+                        autoattrib)
+                 (const :tag "Entire message with headers" t))
+  :group 'mh-letter)
+
+(defcustom mh-letter-complete-function 'ispell-complete-word
+  "*Function to call when completing outside of fields specific to aliases."
+  :type '(choice function (const nil))
+  :group 'mh-letter)
+
+;;; Alias handling (:group 'mh-alias)
+
+(defcustom mh-alias-system-aliases
+  '("/etc/nmh/MailAliases" "/usr/lib/mh/MailAliases" "/etc/passwd")
+  "*A list of system files from which to cull aliases.
+If these files are modified, they are automatically reread. This list need
+include only system aliases and the passwd file, since personal alias files
+listed in your \"AliasFile\" MH profile component are automatically included.
+You can update the alias list manually using \\[mh-alias-reload]."
+  :group 'mh-alias
+  :type '(choice (file) (repeat file)))
+
+(defcustom mh-alias-expand-aliases-flag nil
+  "*Non-nil means to expand aliases entered in the minibuffer.
+In other words, aliases entered in the minibuffer will be expanded to the full
+address in the message draft. By default, this expansion is not performed."
+  :group 'mh-alias
+  :type 'boolean)
+
+(defcustom mh-alias-completion-ignore-case-flag t
+  "*Non-nil means don't consider case significant in MH alias completion.
+This is the default in plain MH, so it is the default here as well. It
+can be useful to set this to t if, for example, you use lowercase
+aliases for people and uppercase for mailing lists."
+  :group 'mh-alias
+  :type 'boolean)
+
+(defcustom mh-alias-flash-on-comma t
+  "*Specify whether to flash or warn on translation.
+When a [comma] is pressed while entering aliases or addresses, setting this
+variable to the following values has the listed effects:
+t   Flash alias translation but don't warn if there is no translation.
+1   Flash alias translation and warn if there is no translation.
+nil Do not flash alias translation nor warn if there is no translation."
+  :group 'mh-alias
+  :type '(choice (const :tag "Flash but don't warn if no translation" t)
+		 (const :tag "Flash and warn if no translation" 1)
+		 (const :tag "Don't flash nor warn if no translation" nil)))
+
+(defcustom mh-alias-local-users t
+  "*If t, local users are completed in MH-E To: and Cc: prompts.
+
+Users with a userid greater than some magic number (usually 200) are available
+for completion.
+
+If you set this variable to a string, it will be executed to generate a
+password file. A value of \"ypcat passwd\" is helpful if NIS is in use."
+  :group 'mh-alias
+  :type '(choice (boolean) (string)))
+
+(defcustom mh-alias-insert-file nil
+  "*Filename to use to store new MH-E aliases.
+This variable can also be a list of filenames, in which case MH-E will prompt
+for one of them. If nil, the default, then MH-E will use the first file found
+in the \"AliasFile\" component of the MH profile."
+  :group 'mh-alias
+  :type '(choice (const :tag "Use AliasFile MH profile component" nil)
+                 (file :tag "Alias file")
+                 (repeat :tag "List of alias files" file)))
+
+(defcustom mh-alias-insertion-location 'sorted
+  "Specifies where new aliases are entered in alias files.
+Options are sorted alphabetically, at the top of the file or at the bottom."
+  :type '(choice (const :tag "Sorted alphabetically" sorted)
+                 (const :tag "At the top of file" top)
+                 (const :tag "At the bottom of file" bottom))
+  :group 'mh-alias)
+
+;;; Indexed searching (:group 'mh-index)
+
+(defcustom mh-index-program nil
+  "Indexing program that MH-E shall use.
+The possible choices are swish++, swish-e, namazu, glimpse and grep. By
+default this variable is nil which means that the programs are tried in order
+and the first one found is used."
+  :type '(choice (const :tag "auto-detect" nil)
+                 (const :tag "swish++" swish++)
+                 (const :tag "swish-e" swish)
+                 (const :tag "namazu" namazu)
+                 (const :tag "glimpse" glimpse)
+                 (const :tag "grep" grep))
+  :group 'mh-index)
+
+;;; Multiple personalities (:group 'mh-identity)
+
+(defcustom mh-identity-list nil
+  "*List holding MH-E identity.
+Omit the colon and trailing space from the field names.
+The keyword name \"none\" is reversed for internal use.
+Use the keyname name \"signature\" to specify either a signature file or a
+function to call to insert a signature at point.
+
+Providing an empty Value (\"\") will cause the field to be deleted.
+
+Example entries using the customize interface:
+   Keyword name: work
+            From
+            Value: John Doe <john@work.com>
+            Organization
+            Value: Acme Inc.
+   Keyword name: home
+            From
+            Value: John Doe <johndoe@home.net>
+            Organization
+            Value:
+
+This would produce the equivalent of:
+ (setq mh-identity-list
+      '((\"work\"
+         ((\"From\" . \"John Doe <john@work.com>\")
+          (\"Organization\" . \"Acme Inc.\")))
+        (\"home\"
+         ((\"From\" . \"John Doe <johndoe@home.net>\")
+          (\"Organization\" . \"\")))))"
+  :type '(repeat (list :tag ""
+                       (string :tag "Keyword name")
+                       (repeat :tag "At least one pair from below"
+                               (choice (cons :tag "From field"
+                                             (const "From")
+                                             (string :tag "Value"))
+                                       (cons :tag "Organization field"
+                                             (const "Organization")
+                                             (string :tag "Value"))
+                                       (cons :tag "Signature"
+                                             (const "signature")
+                                             (choice (file) (function)))
+                                       (cons :tag "Other field & value pair"
+                                             (string :tag "Field")
+                                             (string :tag "Value"))))))
+  :set 'mh-identity-list-set
+  :group 'mh-identity)
+
+(defcustom mh-identity-default nil
+  "Default identity to use when `mh-letter-mode' is called."
+  ;; Dynamically render :type corresponding to `mh-identity-list' entries,
+  ;; e.g.:
+  ;;  :type '(radio (const :tag "none" nil)
+  ;;                (const "home")
+  ;;                (const "work"))
+  :type (append
+         '(radio)
+         (cons '(const :tag "none" nil)
+               (mapcar (function (lambda (arg) `(const ,arg)))
+                       (mapcar 'car mh-identity-list))))
+  :group 'mh-identity)
+
+;;; Hooks (:group 'mh-hooks + group where hook defined)
+
+;;; These are alphabetized. All hooks should be placed in the 'mh-hook group;
+;;; in addition, add the group in which the hook is defined in the manual (or,
+;;; if it is new, where it would be defined).
+
+(defcustom mh-before-quit-hook nil
+  "Invoked by \\<mh-folder-mode-map>`\\[mh-quit]' before quitting MH-E.
+See also `mh-quit-hook'."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-folder)
+
+(defcustom mh-before-send-letter-hook nil
+  "Invoked at the beginning of the \\<mh-letter-mode-map>\\[mh-send-letter] command."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-letter)
+
+(defcustom mh-delete-msg-hook nil
+  "Invoked after marking each message for deletion."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-folder)
+
+(defcustom mh-edit-mhn-hook nil
+  "Invoked on the formatted letter by \\<mh-letter-mode-map>\\[mh-edit-mhn]."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-letter)
+
+(defcustom mh-find-path-hook nil
+  "Invoked by `mh-find-path' after reading the user's MH profile."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-folder)
+
+(defcustom mh-folder-list-change-hook nil
+  "Invoked whenever the cached folder list `mh-folder-list' is changed."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-folder)
+
+(defcustom mh-folder-mode-hook nil
+  "Invoked in `mh-folder-mode' on a new folder."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-folder)
+
+(defcustom mh-folder-updated-hook nil
+  "Invoked when the folder actions (such as moves and deletes) are performed.
+Variables that are useful in this hook include `mh-delete-list' and
+`mh-refile-list' which can be used to see which changes are being made to
+current folder, `mh-current-folder'."
+  :type 'hook
+  :group 'mh-hooks)
+
+(defcustom mh-inc-folder-hook nil
+  "Invoked by \\<mh-folder-mode-map>`\\[mh-inc-folder]' after incorporating mail into a folder."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-folder)
+
+(defcustom mh-index-show-hook nil
+  "Invoked after the message has been displayed."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-index)
+
+(defcustom mh-letter-insert-signature-hook nil
+  "Invoked at the beginning of the \\<mh-letter-mode-map>\\[mh-insert-signature] command.
+Can be used to determine which signature file to use based on message content.
+On return, if `mh-signature-file-name' is non-nil that file will be inserted at
+the current point in the buffer."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-letter)
+
+(defcustom mh-letter-mode-hook nil
+  "Invoked in `mh-letter-mode' on a new letter."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-letter)
+
+(defcustom mh-pick-mode-hook nil
+  "Invoked upon entry to `mh-pick-mode'."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-folder)
+
+(defcustom mh-quit-hook nil
+  "Invoked after \\<mh-folder-mode-map>`\\[mh-quit]' quits MH-E.
+See also `mh-before-quit-hook'."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-folder)
+
+(defcustom mh-refile-msg-hook nil
+  "Invoked after marking each message for refiling."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-folder)
+
+(defcustom mh-show-hook nil
+  "Invoked after \\<mh-folder-mode-map>`\\[mh-show]' shows a message."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-show)
+
+(defcustom mh-show-mode-hook nil
+  "Invoked upon entry to `mh-show-mode'."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-show)
+
+(defcustom mh-unseen-updated-hook nil
+  "Invoked after the unseen sequence has been updated.
+The variable `mh-seen-list' can be used to obtain the list of messages which
+will be removed from the unseen sequence."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-folder)
+
+
+
+;;; Faces
+
+;;; Faces used in speedbar (:group mh-speed-faces)
+
+(defface mh-speedbar-folder-face
+  '((((class color) (background light))
+     (:foreground "blue4"))
+    (((class color) (background dark))
+     (:foreground "light blue")))
+  "Face used for folders in the speedbar buffer."
+  :group 'mh-speed-faces)
+
+(defface mh-speedbar-selected-folder-face
+  '((((class color) (background light))
+     (:foreground "red" :underline t))
+    (((class color) (background dark))
+     (:foreground "red" :underline t))
+    (t (:underline t)))
+  "Face used for the current folder."
+  :group 'mh-speed-faces)
+
+(defface mh-speedbar-folder-with-unseen-messages-face
+  '((t (:inherit mh-speedbar-folder-face :bold t)))
+  "Face used for folders in the speedbar buffer which have unread messages."
+  :group 'mh-speed-faces)
+
+(defface mh-speedbar-selected-folder-with-unseen-messages-face
+  '((t (:inherit mh-speedbar-selected-folder-face :bold t)))
+  "Face used for the current folder when it has unread messages."
+  :group 'mh-speed-faces)
+
+;;; Faces used in scan listing (:group mh-folder-faces)
+
+(defvar mh-folder-body-face 'mh-folder-body-face
+  "Face for highlighting body text in MH-Folder buffers.")
+(defface mh-folder-body-face
+  '((((type tty) (class color)) (:foreground "green"))
+    (((class grayscale) (background light)) (:foreground "DimGray" :italic t))
+    (((class grayscale) (background dark)) (:foreground "LightGray" :italic t))
+    (((class color) (background light)) (:foreground "RosyBrown"))
+    (((class color) (background dark)) (:foreground "LightSalmon"))
+    (t (:italic t)))
+  "Face for highlighting body text in MH-Folder buffers."
+  :group 'mh-folder-faces)
+     
+(defvar mh-folder-cur-msg-face 'mh-folder-cur-msg-face
+  "Face for the current message line in MH-Folder buffers.")
+(defface mh-folder-cur-msg-face
+  '((((type tty pc) (class color))
+     (:background "LightGreen"))
+    (((class color) (background light))
+     (:background "LightGreen")         ;Use this for solid background colour
+     ;;  (:underline t)                 ;Use this for underlining
+     )
+    (((class color) (background dark))
+     (:background "DarkOliveGreen4"))
+    (t (:underline t)))
+  "Face for the current message line in MH-Folder buffers."
+  :group 'mh-folder-faces)
+
+(defvar mh-folder-cur-msg-number-face 'mh-folder-cur-msg-number-face
+  "Face for highlighting the current message in MH-Folder buffers.")
+(defface mh-folder-cur-msg-number-face
+  '((((type tty) (class color)) (:foreground "cyan" :weight bold))
+    (((class grayscale) (background light)) (:foreground "LightGray" :bold t))
+    (((class grayscale) (background dark)) (:foreground "DimGray" :bold t))
+    (((class color) (background light)) (:foreground "Purple"))
+    (((class color) (background dark)) (:foreground "Cyan"))
+    (t (:bold t)))
+  "Face for highlighting the current message in MH-Folder buffers."
+  :group 'mh-folder-faces)
+
+(defvar mh-folder-date-face 'mh-folder-date-face
+  "Face for highlighting the date in MH-Folder buffers.")
+(defface mh-folder-date-face
+  '((((class color) (background light))
+     (:foreground "snow4"))
+    (((class color) (background dark))
+     (:foreground "snow3"))
+    (t
+     (:bold t)))
+  "Face for highlighting the date in MH-Folder buffers."
+  :group 'mh-folder-faces)
+
+(defvar mh-folder-followup-face 'mh-folder-followup-face
+  "Face for highlighting Re: (followup) subject text in MH-Folder buffers.")
+(defface mh-folder-followup-face
+  '((((class color) (background light))
+     (:foreground "blue3"))
+    (((class color) (background dark))
+     (:foreground "LightGoldenRod"))
+    (t
+     (:bold t)))
+  "Face for highlighting Re: (followup) subject text in MH-Folder buffers."
+  :group 'mh-folder-faces)
+
+(defvar mh-folder-msg-number-face 'mh-folder-msg-number-face
+  "Face for highlighting the message number in MH-Folder buffers.")
+(defface mh-folder-msg-number-face
+  '((((class color) (background light))
+     (:foreground "snow4"))
+    (((class color) (background dark))
+     (:foreground "snow3"))
+    (t
+     (:bold t)))
+  "Face for highlighting the message number in MH-Folder buffers."
+  :group 'mh-folder-faces)
+
+(defvar mh-folder-deleted-face 'mh-folder-deleted-face
+  "Face for highlighting deleted messages in MH-Folder buffers.")
+(copy-face 'mh-folder-msg-number-face 'mh-folder-deleted-face)
+
+(defvar mh-folder-refiled-face 'mh-folder-refiled-face
+  "Face for highlighting refiled messages in MH-Folder buffers.")
+(defface mh-folder-refiled-face
+  '((((type tty) (class color)) (:foreground "yellow" :weight light))
+    (((class grayscale) (background light))
+     (:foreground "Gray90" :bold t :italic t))
+    (((class grayscale) (background dark))
+     (:foreground "DimGray" :bold t :italic t))
+    (((class color) (background light)) (:foreground "DarkGoldenrod"))
+    (((class color) (background dark)) (:foreground "LightGoldenrod"))
+    (t (:bold t :italic t)))
+  "Face for highlighting refiled messages in MH-Folder buffers."
+  :group 'mh-folder-faces)
+
+(defvar mh-folder-subject-face 'mh-folder-subject-face
+  "Face for highlighting subject text in MH-Folder buffers.")
+(if (boundp 'facemenu-unlisted-faces)
+    (add-to-list 'facemenu-unlisted-faces "^mh-folder"))
+(defface mh-folder-subject-face
+  '((((class color) (background light))
+     (:foreground "blue4"))
+    (((class color) (background dark))
+     (:foreground "yellow"))
+    (t
+     (:bold t)))
+  "Face for highlighting subject text in MH-Folder buffers."
+  :group 'mh-folder-faces)
+
+(defvar mh-folder-address-face 'mh-folder-address-face
+  "Face for highlighting the address in MH-Folder buffers.")
+(copy-face 'mh-folder-subject-face 'mh-folder-address-face)
+
+(defvar mh-folder-scan-format-face 'mh-folder-scan-format-face
+  "Face for highlighting `mh-scan-format-regexp' matches in MH-Folder buffers.")
+(copy-face 'mh-folder-followup-face 'mh-folder-scan-format-face)
+
+(defvar mh-folder-to-face 'mh-folder-to-face
+  "Face for highlighting the To: string in MH-Folder buffers.")
+(defface mh-folder-to-face
+  '((((type tty) (class color)) (:foreground "green"))
+    (((class grayscale) (background light)) (:foreground "DimGray" :italic t))
+    (((class grayscale) (background dark)) (:foreground "LightGray" :italic t))
+    (((class color) (background light)) (:foreground "RosyBrown"))
+    (((class color) (background dark)) (:foreground "LightSalmon"))
+    (t (:italic t)))
+  "Face for highlighting the To: string in MH-Folder buffers."
+  :group 'mh-folder-faces)
+
+;;; Faces used in message display (:group mh-show-faces)
+
+(defvar mh-show-cc-face 'mh-show-cc-face
+  "Face for highlighting cc header fields.")
+(defface mh-show-cc-face
+  '((((type tty) (class color)) (:foreground "yellow" :weight light))
+    (((class grayscale) (background light))
+     (:foreground "Gray90" :bold t :italic t))
+    (((class grayscale) (background dark))
+     (:foreground "DimGray" :bold t :italic t))
+    (((class color) (background light)) (:foreground "DarkGoldenrod"))
+    (((class color) (background dark)) (:foreground "LightGoldenrod"))
+    (t (:bold t :italic t)))
+  "Face for highlighting cc header fields."
+  :group 'mh-show-faces)
+
+(defvar mh-show-date-face 'mh-show-date-face
+  "Face for highlighting the Date header field.")
+(defface mh-show-date-face
+  '((((type tty) (class color)) (:foreground "green"))
+    (((class grayscale) (background light)) (:foreground "Gray90" :bold t))
+    (((class grayscale) (background dark)) (:foreground "DimGray" :bold t))
+    (((class color) (background light)) (:foreground "ForestGreen"))
+    (((class color) (background dark)) (:foreground "PaleGreen"))
+    (t (:bold t :underline t)))
+  "Face for highlighting the Date header field."
+  :group 'mh-show-faces)
+
+(defvar mh-show-header-face 'mh-show-header-face
+  "Face used to deemphasize unspecified header fields.")
+(defface mh-show-header-face
+  '((((type tty) (class color)) (:foreground "green"))
+    (((class grayscale) (background light)) (:foreground "DimGray" :italic t))
+    (((class grayscale) (background dark)) (:foreground "LightGray" :italic t))
+    (((class color) (background light)) (:foreground "RosyBrown"))
+    (((class color) (background dark)) (:foreground "LightSalmon"))
+    (t (:italic t)))
+  "Face used to deemphasize unspecified header fields."
+  :group 'mh-show-faces)
+
+(defvar mh-show-to-face 'mh-show-to-face
+  "Face for highlighting the To: header field.")
+(if (boundp 'facemenu-unlisted-faces)
+    (add-to-list 'facemenu-unlisted-faces "^mh-show"))
+(defface mh-show-to-face
+  '((((class grayscale) (background light))
+     (:foreground "DimGray" :underline t))
+    (((class grayscale) (background dark))
+     (:foreground "LightGray" :underline t))
+    (((class color) (background light)) (:foreground "SaddleBrown"))
+    (((class color) (background dark))  (:foreground "burlywood"))
+    (t (:underline t)))
+  "Face for highlighting the To: header field."
+  :group 'mh-show-faces)
+
+(defvar mh-show-from-face 'mh-show-from-face
+  "Face for highlighting the From: header field.")
+(defface mh-show-from-face
+  '((((class color) (background light))
+     (:foreground "red3"))
+    (((class color) (background dark))
+     (:foreground "cyan"))
+    (t
+     (:bold t)))
+  "Face for highlighting the From: header field."
+  :group 'mh-show-faces)
+
+(defvar mh-show-subject-face 'mh-show-subject-face
+  "Face for highlighting the Subject header field.")
+(copy-face 'mh-folder-subject-face 'mh-show-subject-face)
+
+;;; Faces used in indexed searches (:group mh-index-faces)
+
+(defvar mh-index-folder-face 'mh-index-folder-face
+  "Face for highlighting folders in MH-Index buffers.")
+(defface mh-index-folder-face
+  '((((class color) (background light))
+     (:foreground "dark green" :bold t))
+    (((class color) (background dark))
+     (:foreground "indian red" :bold t))
+    (t
+     (:bold t)))
+  "Face for highlighting folders in MH-Index buffers."
+  :group 'mh-index-faces)
+
+(provide 'mh-customize)
+
+;;; Local Variables:
+;;; indent-tabs-mode: nil
+;;; sentence-end-double-space: nil
+;;; End:
+
+;;; mh-customize.el ends here