@c %**end of header
@c Version of the software and manual.
-@set VERSION 7.93
-@c EDITION of the manual. It is either empty for the first edition or
+@set VERSION 8.0.1
+@c Edition of the manual. It is either empty for the first edition or
@c has the form ", nth Edition" (without the quotes).
-@set EDITION
-@set UPDATED 2006-03-05
-@set UPDATE-MONTH March, 2006
+@set EDITION
+@set UPDATED 2006-06-20
+@set UPDATE-MONTH June, 2006
@c Other variables.
-@set MH-BOOK-HOME http://www.ics.uci.edu/~mh/book/mh
+@set MH-BOOK-HOME http://rand-mh.sourceforge.net/book/mh
@set MH-E-HOME http://mh-e.sourceforge.net/
@c Copyright
@copying
This is version @value{VERSION}@value{EDITION} of @cite{The MH-E
-Manual}, last updated @value{UPDATED}
+Manual}, last updated @value{UPDATED}.
-Copyright @copyright{} 1995,
- 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+Copyright @copyright{} 1995, 2001, 2002, 2003, 2005, 2006 Free
+Software Foundation, Inc.
@quotation
The MH-E manual is free documentation; you can redistribute it and/or
@cindex Emacs
@cindex Unix commands, Emacs
+@cindex preface
This manual introduces another interface to the MH mail system that is
accessible through the GNU Emacs editor, namely, @emph{MH-E}. MH-E is
@value{VERSION} of MH-E will appear in GNU Emacs 22.1. It is supported
in GNU Emacs 21, 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.}, so you
+all versions of nmh, and GNU mailutils 1.0 and higher.}, so you
shouldn't have to do anything special to use it. This manual covers
-MH-E version @value{VERSION}. @ref{Getting Started} will help you
-decide which version you have.
+MH-E version @value{VERSION}. To help you decide which version you
+have, see @ref{Getting Started}.
+
+@findex help-with-tutorial
+@kindex C-h t
If you don't already use GNU Emacs but want to learn more, you can
read an online tutorial by starting GNU Emacs and typing @kbd{C-h t}
the individual MH commands. When the name is not obvious, I'll guide
you to a relevant MH manual page that describes the action more fully.
+@cindex @cite{MH & nmh: Email for Users & Programmers}
+@cindex MH book
+@cindex info
+@kindex C-h i
+
This manual is available in both Info and online formats. The Info
version is distributed with Emacs and can be accessed with the
-@command{info} command (@samp{info mh-e}) or within Emacs (@kbd{M-x
-info @key{RET} m mh-e @key{RET}}). The online version is available at
+@command{info} command (@samp{info mh-e}) or within Emacs (@kbd{C-h i
+m mh-e @key{RET}}). The online version is available at
@uref{http://mh-e.sourceforge.net/manual/, SourceForge}. Another great
online resource is the book @uref{http://www.ics.uci.edu/~mh/book/,
@cite{MH & nmh: Email for Users & Programmers}} (also known as
@chapter GNU Emacs Terms and Conventions
@cindex Emacs
-@cindex Emacs, terms and conventions
+@cindex Emacs, conventions
+@cindex Emacs, terms
@cindex Unix commands, Emacs
+@cindex conventions, Emacs
+@cindex terms, Emacs
If you're an experienced Emacs user, you can skip the following
conventions and definition of terms and go directly to the next
@cindex Emacs, prefix argument
@cindex prefix argument
+@kindex C-u
A @dfn{prefix argument} allows you to pass an argument to any Emacs
function. To pass an argument, type @kbd{C-u} before the Emacs command
@end quotation
@sp 1
+@cindex @file{.emacs}
@cindex Emacs, variables
+@cindex files, @file{.emacs}
@cindex variables
+@findex setq
Emacs uses @dfn{variables} to hold values. These can be changed via
calls to the function @code{setq} in @file{~/.emacs}.
Face Customization} in @cite{The GNU Emacs Manual}.
@end ifhtml
+@cindex abnormal hooks
@cindex hooks
@cindex normal hooks
-@cindex abnormal hooks
+@findex add-hook
+@findex customize-option
Commands often offer @dfn{hooks} which enable you to extend or modify
the way a command works.
@end ifhtml
for a description about @dfn{normal hooks} and @dfn{abnormal hooks}.
MH-E uses normal hooks in nearly all cases, so you can assume that we
-are talking about normal hooks unless we explicitly mention that a hook
-is abnormal. We also follow the conventions described in that section:
-the name of the abnormal hooks end in @code{-hooks} and all the rest
-of the MH-E hooks end in @code{-hook}.
+are talking about normal hooks unless we explicitly mention that a
+hook is abnormal. We also follow the conventions described in that
+section: the name of the abnormal hooks end in @code{-hooks} and all
+the rest of the MH-E hooks end in @code{-hook}. You can add hooks with
+either @code{customize-option} or @code{add-hook}.
@cindex Emacs, mark
@cindex Emacs, point
@cindex mark
@cindex point
@cindex region
+@kindex C-@@
+@kindex C-@key{SPC}
There are several other terms that are used in Emacs that you should
know. The @dfn{point} is where the cursor currently is. You can save
filling paragraphs. A mark can be set with @kbd{C-@@} (or
@kbd{C-@key{SPC}}).
+@cindex completion
@cindex Emacs, completion
@cindex Emacs, file completion
@cindex Emacs, folder completion
@cindex Emacs, minibuffer
-@cindex completion
@cindex file completion
@cindex folder completion
@cindex minibuffer
+@kindex SPC
+@kindex TAB
The @dfn{minibuffer} is the bottom line of the Emacs window, where all
prompting and multiple-character input is directed. You can use
Note that @key{SPC} cannot be used for completing filenames and
folders.
+@findex help-with-tutorial
+@kindex C-h t
+@kindex M-x
+
The minibuffer is also where you enter Emacs function names after
typing @kbd{M-x}. For example, in the preface, I mentioned that you
could obtain help with @kbd{C-h t} (@code{help-with-tutorial}). What
installing MH-E.
If the @code{mh-version} command displays @samp{No MH variant
-detected}, then you need to install MH or tell MH-E where to find
-MH@footnote{In very old versions of MH-E, you may get the error
+detected}@footnote{In very old versions of MH-E, you may get the error
message, @samp{Cannot find the commands `inc' and `mhl' and the file
`components'} if MH-E can't find MH. In this case, you need to update
MH-E, and you may need to install MH too. However, newer versions of
-MH-E are better at finding MH if it is on your system.}.
+MH-E are better at finding MH if it is on your system.}, then you need
+to install MH or tell MH-E where to find MH.
+
+@cindex Debian
+@cindex nmh
+@cindex GNU mailutils
+
+If you don't have MH on your system already, you must install a
+variant of MH. The Debian mh-e package does this for you automatically
+(@pxref{Getting MH-E}). Most people use
+@uref{http://www.nongnu.org/nmh/, nmh}, but you may be interested in
+trying out @uref{http://www.gnu.org/software/mailutils/, GNU
+mailutils}, which supports IMAP. Your GNU/Linux distribution probably
+has packages for both of these.
+
+@cindex @command{install-mh}
+@cindex MH commands, @command{install-mh}
+@cindex MH book
-The option @code{mh-variant} specifies the variant used by MH-E
-(@pxref{Options}). The default setting of this option is
+If you've never run MH before, you need to run @command{install-mh}
+from the shell before you continue. This sets up your personal MH
+environment@footnote{See the section
+@uref{@value{MH-BOOK-HOME}/../overall/setup.html, Setting Up MH} in the
+MH book.}. If you don't, you'll be greeted with the error message:
+@samp{Install MH and run install-mh before running MH-E}. This is all
+you need to know about MH to use MH-E, but the more you know about MH,
+the more you can leverage its power. See the
+@uref{@value{MH-BOOK-HOME}/../, MH book} to learn more about MH.
+
+@cindex @samp{Path:} MH profile component
+@cindex MH profile
+@cindex MH profile component
+@cindex MH profile component, @samp{Path:}
+
+Your MH environment includes your @dfn{MH profile} which is found in
+the file @file{~/.mh_profile}. This file contains a number of @dfn{MH
+profile components}. For example, the @samp{Path:} MH profile
+component contains the path to your mail directory, which is
+@file{~/Mail} by default.
+
+@cindex @command{mhparam}
+@cindex MH commands, @command{mhparam}
+@vindex exec-path
+@vindex mh-path
+@vindex mh-sys-path
+@vindex mh-variant
+@vindex mh-variant-in-use
+
+There are several options MH-E uses to interact with your MH
+installation. The option @code{mh-variant} specifies the variant used
+by MH-E (@pxref{Options}). The default setting of this option is
@samp{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 @code{mh-path} (which you can customize),
@code{mh-sys-path}, and @code{exec-path}. If MH-E can't find MH at
all, you may have to customize @code{mh-path} and add the directory in
-which the command @code{mhparam} is located. If, on the other hand,
+which the command @command{mhparam} is located. If, on the other hand,
you have both nmh and mailutils installed (for example) and
@code{mh-variant-in-use} was initialized to nmh but you want to use
mailutils, then you can set @code{mh-variant} to @samp{mailutils}.
+@vindex mh-flists-present-flag
+@vindex mh-lib
+@vindex mh-lib-progs
+@vindex mh-progs
+
When @code{mh-variant} is changed, MH-E resets @code{mh-progs},
@code{mh-lib}, @code{mh-lib-progs}, @code{mh-flists-present-flag}, and
@code{mh-variant-in-use} accordingly.
+@cindex @file{.emacs}
+@cindex files, @file{.emacs}
+
@sp 1
@center @strong{NOTE}
@end quotation
@sp 1
-@cindex @command{install-mh}
-@cindex MH commands, @command{install-mh}
-
-If you've never run MH before, you need to run @command{install-mh}
-from the shell before you continue. This sets up your personal MH
-environment@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/setup.htm, Setting Up MH} in the MH book.}.
-If you don't, you'll be greeted with the error message: @samp{Install
-MH and run install-mh before running MH-E}.
-
-@cindex @samp{Draft-Folder:} MH profile component
-@cindex @samp{Path:} MH profile component
-@cindex @samp{Previous-Sequence:} MH profile component
-@cindex @samp{Unseen-Sequence:} MH profile component
@cindex MH profile component, @samp{Draft-Folder:}
@cindex MH profile component, @samp{Path:}
@cindex MH profile component, @samp{Previous-Sequence:}
@cindex MH profile component, @samp{Unseen-Sequence:}
+@cindex @samp{Draft-Folder:} MH profile component
+@cindex @samp{Path:} MH profile component
+@cindex @samp{Previous-Sequence:} MH profile component
+@cindex @samp{Unseen-Sequence:} MH profile component
@findex mh-find-path
@vindex mh-draft-folder
@vindex mh-find-path-hook
@node Tour Through MH-E, Using This Manual, Getting Started, Top
@chapter Tour Through MH-E
+@cindex introduction
+@cindex tour
+@cindex tutorial
+
This chapter introduces some of the terms you'll need to know and then
takes you on a tour of MH-E@footnote{The keys mentioned in these
chapters refer to the default key bindings. If you've changed the
@node Sending Mail Tour, Reading Mail Tour, Tour Through MH-E, Tour Through MH-E
@section Sending Mail
+@cindex MH-Letter mode
+@cindex mode
+@cindex modes, MH-Letter
@cindex sending mail
@findex mh-smail
+@kindex M-x mh-smail
Let's start our tour by sending ourselves a message which we can later
read and process. Enter @kbd{M-x mh-smail} to invoke the MH-E program
-to send messages. You will be prompted in the minibuffer by
-@samp{To:}. Enter your login name. The next prompt is @samp{Cc:}. Hit
-@key{RET} to indicate that no carbon copies are to be sent. At the
-@samp{Subject:} prompt, enter @kbd{Test} or anything else that comes
-to mind.
+to send messages. Your message appears in an Emacs buffer whose
+mode@footnote{A @dfn{mode} changes Emacs to make it easier to edit a
+particular type of text.} is MH-Letter.
-@cindex MH-Letter mode
-@cindex modes, MH-Letter
-@cindex mode
+Enter your login name in the @samp{To:} header field. Press the
+@key{TAB} twice to move the cursor past the @samp{Cc:} field, since no
+carbon copies are to be sent, and on to the @samp{Subject:} field.
+Enter @kbd{Test} or anything else that comes to mind.
-Once you've specified the recipients and subject, your message appears
-in an Emacs buffer whose mode@footnote{A @dfn{mode} changes Emacs to
-make it easier to edit a particular type of text.} is MH-Letter. Enter
-some text in the body of the message, using normal Emacs commands. You
-should now have something like this@footnote{If you're running Emacs
-under the X Window System, then you would also see a menu bar. Under
-Emacs 21, you would also see a tool bar. I've left out the menu bar and
-tool bar in all of the example screens.}:
+Press @key{TAB} again to move the cursor to the body of the message.
+Enter some text, using normal Emacs commands. You should now have
+something like this@footnote{If you're running Emacs under the X
+Window System, then you would also see a menu bar and a tool bar. I've
+left out the menu bar and tool bar in all of the example screens.}:
@cartouche
@smallexample
---:-- *scratch* (Lisp Interaction)--L1--All-------------------------
+--:-- *scratch* All L1 (Lisp Interaction)-------------------------
To: wohler
cc:
Subject: Test
+X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
--------
This is a test message to get the wheels churning...#
---:** @{draft@} (MH-Letter)--L5--All-----------------------------------
-
+--:** @{draft@} All L5 (MH-Letter)----------------------------------
+Type C-c C-c to send message, C-C ? for help
@end smallexample
@end cartouche
@i{MH-E message composition window}
the header.
@cindex help
+@findex describe-mode
+@kindex C-c ?
@kindex C-c C-c
+@kindex C-h m
There are several commands specific to MH-Letter mode@footnote{You can
get quick help for the commands used most often with @kbd{C-c ?} or
@cindex modes, MH-Folder
@cindex reading mail
@findex mh-rmail
+@kindex M-x mh-rmail
To read the mail you've just sent yourself, enter @kbd{M-x mh-rmail}.
This incorporates the new mail and puts the output from
@command{inc}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/reapre.htm, Reading Mail: inc show next
+@uref{@value{MH-BOOK-HOME}/reapre.html, Reading Mail: inc show next
prev} in the MH book.} (called @dfn{scan lines} after the MH program
@command{scan}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/faswsprs.htm, Find and Specify with scan
+@uref{@value{MH-BOOK-HOME}/faswsprs.html, Find and Specify with scan
pick Ranges Sequences} in the MH book.} which prints a one-line
summary of each message) into a buffer called @samp{+inbox} whose
major mode is MH-Folder.
+@findex mh-rmail
+@kindex F r
+@kindex M-x mh-rmail
+
@sp 1
@center @strong{NOTE}
@quotation
+
The @kbd{M-x mh-rmail} command will show you only new mail, not mail
you have already read. If you were to run this tour again, you would
use @kbd{F r} to pull all your messages into MH-E.
3 t08/24 root received fax files on Wed Aug 24 11:00:13 PDT 1
# 4+t08/24 To:wohler Test<<This is a test message to get the wheels
--:%% @{+inbox@} 4 msgs (1-4) (MH-Folder Show)--L4--Bot--------------
+-:%% @{+inbox/select@} 4 msgs (1-4) Bot L4 (MH-Folder Show)---------
To: wohler
Subject: Test
-Date: Wed, 24 Aug 1994 13:01:13 -0700
+X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
+Date: Fri, 17 Mar 2006 10:49:11 -0800
From: Bill Wohler <wohler@@stop.mail-abuse.org>
This is a test message to get the wheels churning...
-
-
---:-- @{show-+inbox@} 4 (MH-Show)--L1--All---------------------------
+--:-- @{show-+inbox@} 4 All L1 (MH-Show)----------------------------
@end smallexample
@end cartouche
@section Processing Mail
@cindex processing mail
+@kindex @key{RET}
@kindex r
The first thing we want to do is reply to the message that we sent
test message and type @kbd{r}. You are prompted in the minibuffer with
@samp{Reply to whom:}. Here MH-E is asking whether you'd like to reply
to the original sender only, to the sender and primary recipients, or
-to the sender and all recipients. If you simply hit @key{RET}, you'll
-reply only to the sender. Hit @key{RET} now.
+to the sender and all recipients. You can press @key{TAB} to see these
+choices. If you simply press @key{RET}, you'll reply only to the
+sender. Press @key{RET} now.
You'll find yourself in an Emacs buffer similar to that when you were
sending the original message, like this:
@cartouche
@smallexample
-To: wohler
-Subject: Re: Test
-In-reply-to: Bill Wohler's message of Wed, 24 Aug 1994 13:01:13 -0700
- <199408242001.NAA00505@@stop.mail-abuse.org>
+To:
+cc:
+Subject: Re: Test
+In-reply-to: <31054.1142621351@@stop.mail-abuse.org>
+References: <31054.1142621351@@stop.mail-abuse.org>
+Comments: In-reply-to Bill Wohler <wohler@@stop.mail-abuse.org>
+ message dated "Fri, 17 Mar 2006 10:49:11 -0800."
+X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
--------
#
---:-- @{draft@} (MH-Letter)--L11--Bot---------------------------------
+--:-- @{draft@} All L10 (MH-Letter)----------------------------------
To: wohler
Subject: Test
-Date: Wed, 24 Aug 1994 13:01:13 -0700
+X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
+Date: Fri, 17 Mar 2006 10:49:11 -0800
From: Bill Wohler <wohler@@stop.mail-abuse.org>
This is a test message to get the wheels churning...
---:-- @{show-+inbox@} 4 (MH-Show)--L1--All----------------------------
-Composing a reply...done
+--:-- @{show-+inbox@} 4 All L1 (MH-Show)----------------------------
+Type C-c C-c to send message, C-c ? for help
@end smallexample
@end cartouche
@i{Composition window during reply}
+@findex backward-char
+@findex forward-char
+@findex next-line
+@findex previous-line
+@kindex C-b
@kindex C-c C-c
@kindex C-c C-f C-t
+@kindex C-f
+@kindex C-n
+@kindex C-p
+@kindex @key{BS}
By default, MH will not add you to the address list of your replies,
so if you find that the @samp{To:} header field is missing, don't
delete the previous character with @key{BS}. When you're finished
editing your message, send it with @kbd{C-c C-c} as before.
+@cindex @command{refile}
+@cindex MH commands, @command{refile}
@cindex folders
+@kindex @key{SPC}
@kindex o
You'll often want to save messages that were sent to you in an
@cindex MH-Folder mode
@cindex modes, MH-Folder
-@kindex @key{RET}
@kindex d
@kindex i
+@kindex @key{RET}
+@kindex n
+@kindex p
@kindex x
Your previous reply is now waiting in the system mailbox. You
@findex mh-smail
@kindex m
+@kindex M-x mh-smail
If you want to send another message you can use @kbd{m} instead of
@kbd{M-x mh-smail}. So go ahead, send some mail to your friends!
@findex describe-mode
@kindex ?
@kindex C-h m
+@kindex F ?
You can get a quick reminder about these commands by typing @kbd{?}.
This lists several @dfn{prefix characters}. To list the commands
@cindex Emacs, quitting
@cindex quitting
+@kindex C-x C-c
+@kindex x
You may now wish to exit @command{emacs} entirely. Use @kbd{C-x C-c}
to exit @command{emacs}. If you exited without running @kbd{x} in the
perform any refiles and deletes that you did there.
@findex mh-rmail
+@kindex C-x b
+@kindex C-x k
+@kindex M-x mh-rmail
@kindex q
If you don't want to leave Emacs, you can type @kbd{q} to bury (hide)
@itemize @bullet
@item
-Print your messages (@ref{Printing}).
+Print your messages (@pxref{Printing}).
@c -------------------------
@item
-Edit messages and include your signature (@ref{Editing Drafts}).
+Edit messages and include your signature (@pxref{Editing Drafts}).
@c -------------------------
@item
-Forward messages (@ref{Forwarding}).
+Forward messages (@pxref{Forwarding}).
@c -------------------------
@item
-Read digests (@ref{Digests}).
+Read digests (@pxref{Digests}).
@c -------------------------
@item
-Edit bounced messages (@ref{Editing Again}).
+Edit bounced messages (@pxref{Editing Again}).
@c -------------------------
@item
-Send multimedia messages (@ref{Adding Attachments}).
+Send multimedia messages (@pxref{Adding Attachments}).
@c -------------------------
@item
-Read HTML messages (@ref{HTML}).
+Read HTML messages (@pxref{HTML}).
@c -------------------------
@item
-Use @ref{Aliases} and @ref{Identities}.
+Use aliases and identities (see @ref{Aliases}, @pxref{Identities}).
@c -------------------------
@item
-Create different views of your mail (@ref{Threading} and @ref{Limits}).
+Create different views of your mail (see @ref{Threading}, @pxref{Limits}).
@c -------------------------
@item
-Deal with junk mail (@ref{Junk}).
+Deal with junk mail (@pxref{Junk}).
@c -------------------------
@item
-Handle signed and encrypted messages (@ref{Reading PGP} and
-@ref{Sending PGP}).
+Handle signed and encrypted messages (see @ref{Reading PGP},
+@pxref{Sending PGP}).
@c -------------------------
@item
Process mail that was sent with @command{shar} or @command{uuencode}
-(@ref{Files and Pipes}).
+(@pxref{Files and Pipes}).
@c -------------------------
@item
-Use sequences conveniently (@ref{Sequences}).
+Use sequences conveniently (@pxref{Sequences}).
@c -------------------------
@item
-Use the @ref{Speedbar}, @ref{Tool Bar}, and @ref{Menu Bar}.
+Use the speedbar, tool bar, and menu bar (see @ref{Speedbar}, see @ref{Tool
+Bar}, @pxref{Menu Bar}).
@c -------------------------
@item
-Show header fields in different fonts (@ref{Reading Mail}).
+Show header fields in different fonts (@pxref{Reading Mail}).
@c -------------------------
@item
-Find previously refiled messages (@ref{Searching}).
+Find previously refiled messages (@pxref{Searching}).
@c -------------------------
@item
-Place messages in a file (@ref{Files and Pipes}).
+Place messages in a file (@pxref{Files and Pipes}).
@end itemize
Remember that you can also use MH commands when you're not running
@findex mh-help
@kindex ?
@kindex C-c ?
+@kindex C-h C-h
+@kindex C-h C-k i
+@kindex C-h i
+@kindex C-h m
There are many commands, but don't get intimidated. There are command
summaries at the beginning of each chapter. In case you have or would
running @kbd{C-h C-h}. This brings up a list of available help topics,
one of which displays the documentation for a given key (like @kbd{C-h
k C-n}). Another useful help feature is to view the manual section
-that describes a given key (such as @kbd{C-h C-k i}). In addition,
+that describes a given key (such as @kbd{C-h K i}). In addition,
review @ref{Conventions}, if any of the GNU Emacs conventions are
strange to you.
GNU Emacs. Note that MH-E does not provide hooks for customizations
that can be done in MH; this omission is intentional.
-@cindex Emacs, Emacs Lisp manual
+@cindex Emacs Lisp Manual
+@cindex Emacs, Emacs Lisp Manual
@cindex Emacs, info
@cindex Emacs, online help
@cindex info
please do not prefix your symbols (variables and functions) with
@samp{mh-}. This prefix is reserved for the MH-E package. To avoid
conflicts with existing MH-E symbols, use a prefix like @samp{my-} or
-your initials.
+your initials. (Unless, of course, your initials happen to be @emph{mh}!)
@menu
* Options::
the string to the right of the variable. For example, you may change
the @command{lpr} command with @samp{nenscript -G -r -2 -i'%s'}. Then
use the @samp{State} combo box and select @samp{Save for Future
-Sessions}. @ref{Printing} talks more about this option.
-
+Sessions}. To read more about @code{mh-lpr-command-format}, see
+@ref{Printing}.
+
+@cindex nil
+@cindex off, option
+@cindex on, option
+@cindex option, turning on and off
+@cindex t
+@findex customize-option
@vindex mh-bury-show-buffer-flag, example
Options can also hold boolean values. In Emacs Lisp, the boolean
default, which places the MH-Show buffer at the bottom of the buffer
stack.
+@vindex mh-mhl-format-file, example
+
The text usually says to turn on an option by setting it to a
@emph{non-@code{nil}} value, because sometimes values other than
-@samp{on} are meaningful (for example, see @code{mh-mhl-format-file},
-described in @ref{Viewing}). Other options, such as hooks, involve a
-little more Emacs Lisp programming expertise.
+@samp{on} are meaningful. An example of this is the variable
+@code{mh-mhl-format-file} (@pxref{Viewing}). Other options, such as
+hooks, involve a little more Emacs Lisp programming expertise.
-@cindex @samp{mh} customization group
@cindex customization group, @samp{mh}
+@cindex @samp{mh} customization group
@findex customize-group
@findex mh-customize
@c Sync with mh-folder-mode docstring.
-@cindex ranges
@cindex message abbreviations
@cindex message ranges
+@cindex ranges
Many commands that operate on individual messages, such as
@code{mh-forward} or @code{mh-refile-msg} take a @code{RANGE}
argument. This argument can be used in several ways.
+@kindex C-u, with ranges
+
If you provide the prefix argument @kbd{C-u} to these commands, then
you will be prompted for the message range. This can be any valid MH
range which can include messages, sequences (@pxref{Sequences}), and
range must be nonempty.
@c -------------------------
@item <num>:N
-@item <num>:+N
+@itemx <num>:+N
@itemx <num>:-N
Up to N messages beginning with (or ending with) message num. Num may
be any of the predefined symbols: first, prev, cur, next or last.
@vindex transient-mark-mode
-If the option @code{transient-mark-mode} is set to @code{t} and you
-set a region in the MH-Folder buffer, then the MH-E command will
-perform the operation on all messages in that region.
+If the option @code{transient-mark-mode} is turned on and you set a
+region in the MH-Folder buffer, then the MH-E command will perform the
+operation on all messages in that region.
@cindex @samp{mh-range} customization group
@cindex customization group, @samp{mh-range}
On means interpret a number as a range (default: @samp{on}).
@end vtable
+@vindex mh-interpret-number-as-range-flag
+
Since one of the most frequent ranges used is @samp{last:N}, MH-E will
interpret input such as @samp{200} as @samp{last:200} if the
@code{mh-interpret-number-as-range-flag} option is on (which is the
@node Folder Selection, , Ranges, Using This Manual
@section Folder Selection
+@cindex completion, folders
+@cindex folders, completion
@cindex folders, selecting
When you choose a folder in MH-E via a command such as @kbd{o}
In addition, MH-E has several ways of choosing a suitable default so
that the folder can often be selected with a single @key{RET} key.
-@cindex @samp{mh-folder-selection} customization group
@cindex customization group, @samp{mh-folder-selection}
+@cindex @samp{mh-folder-selection} customization group
The @samp{mh-folder-selection} customization group contains some
options which are used to help with this.
Prefix used for folder names generated from aliases (default: @code{""}).
@end vtable
+@vindex mh-default-folder-for-message-function
+
You can set the option @code{mh-default-folder-for-message-function}
to a function that provides a default folder for the message to be
refiled. When this function is called, the current buffer contains the
sender as follows:
@enumerate
+@vindex mh-default-folder-list
@item
The folder name associated with the first address found in the list
@code{mh-default-folder-list} is used. Each element in this list
then the address is checked against the recipient instead of the
sender. This is useful for mailing lists.
@c -------------------------
+@vindex mh-default-folder-prefix
@item
An alias prefixed by @code{mh-default-folder-prefix} corresponding to
the address is used. The prefix is used to prevent clutter in your
mail directory. @xref{Aliases}.
@end enumerate
+@vindex mh-default-folder-must-exist-flag
+
If the derived folder does not exist, and
@code{mh-default-folder-must-exist-flag} is @code{t}, then the last
folder name used is suggested. This is useful if you get mail from
@node Incorporating Mail, Reading Mail, Using This Manual, Top
@chapter Incorporating Your Mail
+@cindex @samp{Folder} menu
@cindex incorporating
+@cindex menu, @samp{Folder}
This chapter talks about getting mail from your system mailbox into
your MH @samp{+inbox} folder. The following command accomplishes that
@vtable @code
@item mh-inc-prog
-Program to incorporate mail (default: @samp{"inc"}).
+Program to incorporate mail (default: @code{"inc"}).
@c -------------------------
@item mh-inc-spool-list
Alternate spool files (default: @code{nil}).
The following hook is available.
@vtable @code
+@findex mh-inc-folder
@item mh-inc-folder-hook
-Hook run by @samp{mh-inc-folder} after incorporating mail into a
+Hook run by @code{mh-inc-folder} after incorporating mail into a
folder (default: @code{nil}).
@end vtable
+@cindex @samp{+inbox}
+@findex mh-inc-folder
+@kindex i
+
If at any time you receive new mail, incorporate the new mail into
your @samp{+inbox} buffer with @kbd{i} (@code{mh-inc-folder}). Note
that @kbd{i} will display the @samp{+inbox} buffer, even if there
Emacs can notify you when you have new mail by displaying @samp{Mail}
in the mode line. To enable this behavior, and to have a clock in the
-mode line besides, add the following to @file{~/.emacs}:
+mode line as well, add the following to @file{~/.emacs}:
@findex display-time
-@lisp
+@smalllisp
(display-time)
-@end lisp
+@end smalllisp
@cindex @command{inc}
-@cindex MH commands, @command{inc}
@cindex incorporating
+@cindex MH commands, @command{inc}
+@vindex mh-inc-prog
@vindex mh-progs
The name of the program that incorporates new mail is stored in
-@code{mh-inc-prog}; it is @samp{"inc"} by default. This program
+@code{mh-inc-prog}; it is @code{"inc"} by default. This program
generates a one-line summary for each of the new messages. Unless it
is an absolute pathname, the file is assumed to be in the
@code{mh-progs} directory (@pxref{Getting Started}). You may also link
a file to @command{inc} that uses a different format (see
@samp{mh-profile}(5), and sections
-@uref{@value{MH-BOOK-HOME}/reapre.htm, Reading Mail: inc show next
-prev} and @uref{@value{MH-BOOK-HOME}/mhstr.htm, MH Format Strings} in
+@uref{@value{MH-BOOK-HOME}/reapre.html, Reading Mail: inc show next
+prev} and @uref{@value{MH-BOOK-HOME}/mhstr.html, MH Format Strings} in
the MH book). You'll then need to modify several variables
appropriately (@pxref{Scan Line Formats}).
+@vindex mh-inc-spool-list
+
You can use the @code{mh-inc-spool-list} variable to direct MH-E to
retrieve mail from arbitrary spool files other than your system
mailbox, file it in folders other than your @samp{+inbox}, and assign
mh-e
@end smallexample
+@findex mh-inc-spool-*
+@kindex I *
+
In order to incorporate @file{~/mail/mh-e} into @samp{+mh-e} with an
@kbd{I m} (@code{mh-inc-spool-mh-e}) command, customize this option,
and click on the @samp{INS} button. Enter a @samp{Spool File} of
In XEmacs, the command @command{gnuclient} is used in a similar
fashion.
+@findex mh-inc-folder
+@kindex i
+@vindex mh-inc-folder-hook
+
You can set the hook @code{mh-inc-folder-hook}, which is called after
new mail is incorporated by the @kbd{i} (@code{mh-inc-folder})
command. A good use of this hook is to rescan the whole folder either
@node Reading Mail, Folders, Incorporating Mail, Top
@chapter Reading Your Mail
+@cindex @samp{+inbox}
@cindex MH-Folder mode
@cindex MH-Show mode
@cindex modes, MH-Folder
@cindex modes, MH-Show
@cindex reading mail
-@cindex scan lines
@findex mh-rmail
+@kindex M-x mh-rmail
+@kindex F r
+@kindex F v
The MH-E entry point for reading mail is @kbd{M-x mh-rmail}. This
command incorporates your mail and creates a buffer called
prompt you for folder to visit like @kbd{F v} (for example, @kbd{C-u
M-x mh-rmail @key{RET} bob @key{RET}}). @xref{Folders}.}.
+@cindex @command{scan}
+@cindex @samp{Message} menu
+@cindex MH commands, @command{scan}
+@cindex menu, @samp{Message}
+@cindex scan lines
+
The @samp{+inbox} buffer contains @dfn{scan lines}, which are one-line
summaries of each incorporated message. You can perform most MH
commands on these messages via one- or two-letter commands in either
@c -------------------------
@item mh-fetch-x-image-url
Control fetching of @samp{X-Image-URL:} header field image (default:
-@code{Never Fetch}).
+@samp{Never Fetch}).
@c -------------------------
@item mh-graphical-smileys-flag
On means graphical smileys are displayed (default: @samp{on}).
Additional header fields to hide (default: @code{nil}).
@c -------------------------
@item mh-lpr-command-format
-Command used to print (default: @samp{"lpr -J '%s'"}).
+Command used to print (default: @code{"lpr -J '%s'"}).
@c -------------------------
@item mh-max-inline-image-height
-Maximum inline image height if \"Content-Disposition:\" is not
+Maximum inline image height if @samp{Content-Disposition:} is not
present (default: 0).
@c -------------------------
@item mh-max-inline-image-width
-Maximum inline image width if \"Content-Disposition:\" is not
+Maximum inline image width if @samp{Content-Disposition:} is not
present(default: 0).
@c -------------------------
@item mh-mhl-format-file
On means messages should be printed in the background (default:
@samp{off}).
@c -------------------------
+@item mh-show-buffer-mode-line-buffer-id
+Format string to produce @code{mode-line-buffer-identification} for
+show buffers (default: @code{" @{show-%s@} %d"}).
+@c -------------------------
@item mh-show-maximum-size
Maximum size of message (in bytes) to display automatically (default:
0).
@c -------------------------
@item mh-show-use-xface-flag
-On means display face images in MH-Show buffers (default: @code{on}).
+On means display face images in MH-Show buffers (default: @samp{on}).
@c -------------------------
@item mh-store-default-directory
Default directory for @kbd{X s} (default: @samp{Current}).
all of them, use the command @kbd{,} (comma;
@code{mh-header-display}).
+@vindex mh-show-maximum-size
+
The option @code{mh-show-maximum-size} provides an opportunity to skip
over large messages which may be slow to load. The default value of 0
means that all message are shown regardless of size.
@cindex regular expressions, @code{mh-invisible-header-fields}
@vindex mh-clean-message-header-flag
-@vindex mh-invisible-header-fields-default
@vindex mh-invisible-header-fields
+@vindex mh-invisible-header-fields-default
Normally messages are delivered with a handful of uninteresting header
fields. These are hidden by turning on the option
header field should be generally ignored, report a bug (@pxref{Bug
Reports}).
-@cindex @samp{Face:} header field
-@cindex @samp{X-Face:} header field
-@cindex @samp{X-Image-URL:} header field
@cindex header field, @samp{Face:}
@cindex header field, @samp{X-Face:}
@cindex header field, @samp{X-Image-URL:}
+@cindex @samp{Face:} header field
+@cindex @samp{X-Face:} header field
+@cindex @samp{X-Image-URL:} header field
@vindex mh-show-use-xface-flag
MH-E can display the content of @samp{Face:}, @samp{X-Face:}, and
@command{mhl} from the shell. If you have a format file that you want
MH-E to use, you can set this option to @samp{Specify an mhl Format
File} and enter the name of your format file (@command{mhl}(1) or
-section @uref{@value{MH-BOOK-HOME}/shomes.htm#Usisho, Using mhl} in
+section @uref{@value{MH-BOOK-HOME}/shomes.html#Usisho, Using mhl} in
the MH book tells you how to write one). Your format file should
specify a non-zero value for @samp{overflowoffset} to allow MH-E to
parse the header. Note that @command{mhl} is always used for printing
and forwarding; in this case, the value of @code{mh-mhl-format-file}
is consulted if you have specified a format file.
-@vindex mh-highlight-citation-style
@cindex citations, highlighting
@cindex highlighting citations
+@vindex mh-highlight-citation-style
If the sender of the message has cited other messages in his message,
then MH-E will highlight these citations to emphasize the sender's
Email addresses and URLs in the message are highlighted if the option
@code{goto-address-highlight-p} is on, which it is by default. To view
the web page for a highlighted URL or to send a message using a
-highlighted email address, use @kbd{Mouse-2} or @kbd{C-c @key{RET}}.
-See @ref{Sending Mail}, to see how to configure Emacs to send the
-message using MH-E.
+highlighted email address, use @kbd{Mouse-2} or @kbd{C-c @key{RET}}
+(@code{goto-address-at-point}). @xref{Sending Mail}, to see how to
+configure Emacs to send the message using MH-E.
@cindex boldface, showing
@cindex emphasis
MH-E normally renders signatures and vCards in italics so that the
body of the message stands out more. MH-E depends on the presence of
-the @dfn{signature separator} (@samp{"-- "}) to do this. You can also
+the @dfn{signature separator} (@code{"-- "}) to do this. You can also
customize the face @code{mh-show-signature} so the appearance of the
signature block is more to your liking.
behavior of MH-E in general or when @code{mh-show-mode-hook} is too
early.
-@vindex mh-show-buffer-mode-line-buffer-id
@cindex MH-Show mode
@cindex modes, MH-Show
+@vindex mh-show-buffer-mode-line-buffer-id
For those who like to modify their mode lines, use
@code{mh-show-buffer-mode-line-buffer-id} to modify the mode line in
the MH-Show buffers. Place the two escape strings @samp{%s} and
@samp{%d}, which will display the folder name and the message number,
respectively, somewhere in the string in that order. The default value
-of @samp{"@{show-%s@} %d"} yields a mode line of
+of @code{"@{show-%s@} %d"} yields a mode line of
@smallexample
-----@{show-+inbox@} 4 (MH-Show)--Bot--------------------------------
@node Viewing Attachments, HTML, Viewing, Reading Mail
@section Viewing Attachments
+@cindex attachments
+@cindex body parts
@cindex @command{mhshow}
@cindex @command{show}
@cindex MH commands, @command{mhshow}
@cindex MH commands, @command{show}
@cindex MIME
-@cindex attachments
-@cindex body parts
@cindex multimedia mail
MH has the ability to display @dfn{@sc{mime}} (Multipurpose Internet
Mail Extensions) messages which are simply messages with additional
@dfn{body parts} or @dfn{attachments}. You can use the MH commands
@command{show}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/reapre.htm, Reading Mail: inc show next
+@uref{@value{MH-BOOK-HOME}/reapre.html, Reading Mail: inc show next
prev} in the MH book.} or @command{mhshow}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/usimim.htm#ReMIMa, Reading MIME Mail} in
+@uref{@value{MH-BOOK-HOME}/usimim.html#ReMIMa, Reading MIME Mail} in
the MH book.} from the shell to read @sc{mime} messages@footnote{You
can call them directly from Emacs if you're running the X Window
System: type @kbd{M-! xterm -e mhshow @var{message-number}}. You can
other graphical widgets. @xref{Viewing}.
@cindex buttons
-@kindex Mouse-1
-@kindex Mouse-2
-@kindex @key{RET}
-@findex mh-press-button
+
+Attachments in MH-E are indicated by @dfn{buttons} like this:
+
+@smallexample
+[1. image/jpeg; foo.jpg]...
+@end smallexample
+
@findex mh-next-button
+@findex mh-press-button
@findex mh-prev-button
+@kindex @key{RET}
@kindex K @key{TAB}
@kindex K S-@key{TAB}
-
-Attachments in MH-E are indicated by buttons like this:
-
-@example
-[1. image/jpeg; foo.jpg]...
-@end example
+@kindex Mouse-1
+@kindex Mouse-2
To view the contents of the button, use either @kbd{Mouse-1} or
@kbd{Mouse-2} on the button or @key{RET} (@code{mh-press-button}) when
@cindex attachments, saving
@cindex saving attachments
-
@findex mh-folder-save-mime-part
@kindex K o
components, since this function calls on @command{mhstore}
(@command{mhn}) to do the work.
+@vindex mh-mime-save-parts-default-directory
+
The default value for the option
@code{mh-mime-save-parts-default-directory} is @samp{Prompt Always} so
that you are always prompted for the directory in which to save the
MH-E cannot display all attachments inline however. It can display
text (including @sc{html}) and images.
-@cindex @samp{Content-Disposition:} header field
@cindex header field, @samp{Content-Disposition:}
@cindex inline images
+@cindex @samp{Content-Disposition:} header field
@vindex mh-max-inline-image-height
@vindex mh-max-inline-image-width
@cindex HTML
@cindex Gnus
-@vindex mm-text-html-renderer
MH-E can display messages that have been sent in HTML@footnote{This
feature depends on a version of Gnus that is at least 5.10.}. The
part. However, if there is an HTML body part that is an attachment,
then you'll see a button like this:
-@example
+@smallexample
[1. text/html; foo.html]...
-@end example
+@end smallexample
-See @ref{Viewing Attachments} to see how to read the contents of this
-body part.
+To see how to read the contents of this body part, see @ref{Viewing
+Attachments}.
+
+@vindex mm-text-html-renderer
The browser that MH-E uses is determined by the option
@code{mm-text-html-renderer}. The default setting is set automatically
images as this can tip off spammers that the email address they have
used is valid.
+@vindex mm-text-html-renderer
+
If you're confused about which @code{mm-text-html-renderer} to use,
here's a brief description of each, sorted by popularity, that
includes the results of a quick poll of MH-E users from 2005-12-23.
@table @asis
-
+@cindex browser, @samp{w3m}
+@cindex @samp{w3m}
+@kindex Mouse-2
+@kindex S-Mouse-2
@item @samp{w3m} 7
The @samp{w3m} browser requires an external program. It's quick,
produces pretty nice output, and best of all, it's the only browser
(which can cause text to wrap if the author didn't anticipate that the
page would be viewed in Emacs).
@c -------------------------
+@cindex browser, @samp{w3m-standalone}
+@cindex @samp{w3m-standalone}
@item @samp{w3m-standalone} 3
This browser, along with @samp{nil} for the external browser, are the
only choices that work without having to download a separate lisp
handle the escape @samp{–} (it printed a @samp{?}), but it did
render @samp{®}.
@c -------------------------
+@cindex browser, @samp{links}
+@cindex @samp{links}
@item @samp{links} 1
The @samp{links} browser requires an external program. It's quick, and
produces nicer output than @samp{lynx} on single column mails in
columns and thus seems better than @samp{w3} and
@samp{w3m-standalone}. Converts escapes such as @samp{®} to (R).
@c -------------------------
+@cindex browser, @samp{lynx}
+@cindex @samp{lynx}
@item @samp{lynx} 1
The @samp{lynx} browser requires an external program. It's quick and
produces pretty decent output but it doesn't show links. It doesn't
HTML messages have a button for the body part which you can view with
@kbd{K v} (@code{mh-folder-toggle-mime-part}).
@c -------------------------
+@cindex browser, @samp{w3}
+@cindex @samp{w3}
@item @samp{w3} 0
This choice does not require an external program as all of the
rendering is done in lisp. You do need to get the package separately.
highlighted. Performs well on single-column tables and handles escapes
such as @samp{®}.
@c -------------------------
+@cindex browser, @samp{html2text}
+@cindex @samp{html2text}
@item @samp{html2text} 0
The @samp{html2text} browser requires an external program. I noticed
that it can do some nasty things with simple HTML mails (like filling
reason.
@end table
+@vindex mm-text-html-renderer
+
For a couple more sources of information about
@code{mm-text-html-renderer},
@ifinfo
@cindex digests
@findex mh-page-digest
@findex mh-page-digest-backwards
-@kindex @key{BS}
-@kindex @key{SPC}
@kindex D @key{BS}
@kindex D @key{SPC}
+@kindex @key{BS}
+@kindex @key{SPC}
A digest is a message that contains other messages. Special MH-E
commands let you read digests conveniently. You can use @key{SPC} and
@cindex MH-Folder Show mode
@cindex modes, MH-Folder Show
@findex mh-burst-digest
-@kindex D b
@kindex d
+@kindex D b
@kindex t
Another handy command is @kbd{D b} (@code{mh-burst-digest}). This
command uses the MH command @command{burst}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/burdig.htm, Bursting Messages} in the MH
+@uref{@value{MH-BOOK-HOME}/burdig.html, Bursting Messages} in the MH
book.} to break out each message in the digest into its own message.
Using this command, you can quickly delete unwanted messages, like
this: Once the digest is split up, toggle out of MH-Folder Show mode
@findex mh-ps-print-msg-file
@kindex P f
@kindex P p
+@vindex mh-lpr-command-format
+@vindex mh-print-background-flag
To print messages in MH-E, use the command @kbd{P p}
(@code{mh-ps-print-msg}). You can print all the messages in a range
@kbd{P l} (@code{mh-print-msg}) (the @i{l} is for @i{l}ine printer or
@i{l}pr). You can print all the messages in a range. The message is
formatted with @command{mhl}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/shomes.htm#Usisho, Using mhl} in the MH
+@uref{@value{MH-BOOK-HOME}/shomes.html#Usisho, Using mhl} in the MH
book.} and printed with the @command{lpr} command.
+@kindex P f
+@kindex P l
+@kindex P p
@vindex mh-lpr-command-format
@vindex mh-print-background-flag
performs the actual printing. The string can contain one escape,
@samp{%s}, which is replaced by the name of the folder and the message
number and is useful for print job names. The default setting is
-@samp{"lpr -J '%s'"}. I use @samp{"mpage -h'%s' -b Letter -H1of -mlrtb
+@code{"lpr -J '%s'"}. I use @code{"mpage -h'%s' -b Letter -H1of -mlrtb
-P"} which produces a nice header and adds a bit of margin so the text
fits within my printer's margins. Normally messages are printed in the
foreground. If this is slow on your system, you may elect to turn on
@cindex files
@cindex pipes
-
@findex mh-refile-or-write-again
@findex mh-write-msg-to-file
-@kindex !
@kindex >
+@kindex !
MH-E does offer a couple of commands that are not a part of MH@. The
first one, @kbd{>} (@code{mh-write-msg-to-file}), writes a message to
@findex mh-pipe-msg
@kindex |
+@kindex l
You can also pipe the message through a Unix shell command with the
command @kbd{|} (@code{mh-pipe-msg}). You are prompted for the Unix
directory for storing the content of these messages.
@findex mh-store-buffer
+@kindex @key{RET}
+@kindex X s
By the way, @kbd{X s} calls the Emacs Lisp function
@code{mh-store-buffer}. I mention this because you can use it directly
@findex mh-next-unread-msg
@findex mh-previous-undeleted-msg
@findex mh-previous-unread-msg
+@kindex g
@kindex M-<
@kindex M->
@kindex M-n
@kindex M-p
-@kindex g
@kindex n
@kindex p
@findex previous-line
@kindex C-n
@kindex C-p
+@kindex @key{RET}
You can also use the Emacs commands @kbd{C-p} (@code{previous-line})
and @kbd{C-n} (@code{next-line}) to move up and down the scan lines in
@cindex deleting messages
@findex mh-delete-msg
@kindex d
+@kindex n
+@kindex p
To mark a message for deletion, use the command @kbd{d}
(@code{mh-delete-msg}). A @samp{D} is placed by the message in the
@findex mh-delete-subject
@findex mh-delete-subject-or-thread
+@findex mh-thread-delete
+@findex mh-undo
@kindex k
+@kindex T d
+@kindex u
And to delete more messages faster, you can use @kbd{k}
(@code{mh-delete-subject-or-thread}) to delete all the messages with
an editable buffer. When you are done editing, save and kill the
buffer as you would any other.
+@findex mh-kill-folder
+@findex mh-pack-folder
@vindex mh-do-not-confirm-flag
Commands such as @code{mh-pack-folder} prompt to confirm whether to
@node Folders, Sending Mail, Reading Mail, Top
@chapter Organizing Your Mail with Folders
+@cindex @samp{Folder} menu
+@cindex @samp{Message} menu
@cindex folders
+@cindex menu, @samp{Folder}
+@cindex menu, @samp{Message}
@cindex using folders
This chapter discusses the things you can do with folders within MH-E.
@samp{To:} face.
@end vtable
+@vindex mh-folder-mode-hook
+
The hook @code{mh-folder-mode-hook} is called when visiting a new
folder in MH-Folder mode. This could be used to set your own key
bindings, for example:
MH-E has analogies for each of the MH @command{folder} and
@command{refile} commands@footnote{See the sections
-@uref{@value{MH-BOOK-HOME}/fol.htm#Youfol, Your Current Folder:
-folder} and @uref{@value{MH-BOOK-HOME}/fol.htm#Movref, Moving and
+@uref{@value{MH-BOOK-HOME}/fol.html#Youfol, Your Current Folder:
+folder} and @uref{@value{MH-BOOK-HOME}/fol.html#Movref, Moving and
Linking Messages: refile} in the MH book.}. To refile a message in
another folder, use the command @kbd{o} (@code{mh-refile-msg})
(mnemonic: ``output''). You are prompted for the folder name
be prompted to create it. The hook @code{mh-refile-msg-hook} is called
after a message is marked to be refiled.
+@findex mh-write-msg-to-file
+@kindex !
+
If you are refiling several messages into the same folder, you can use
the command @kbd{!} (@code{mh-refile-or-write-again}) to repeat the
-last refile or write (see the description of @kbd{>}
-(@code{mh-write-msg-to-file} in @ref{Files and Pipes}). You can use a
+last refile or write (for the description of @kbd{>}
+(@code{mh-write-msg-to-file}), @pxref{Files and Pipes}). You can use a
range in either case (for example, @kbd{C-u o 1 3 5-7 last:5 frombob
@key{RET}}, @pxref{Ranges}).
@cindex expunging refiles and deletes
@cindex undoing refiles and deletes
+@findex mh-undo
+@kindex u
If you've deleted a message or refiled it, but changed your mind, you
can cancel the action before you've executed it. Use @kbd{u}
You can also undo refiles and deletes for messages that are found in a
given range (@pxref{Ranges}).
+@findex mh-undo-folder
+@kindex F u
+
Alternatively, you can use @kbd{F u} (@code{mh-undo-folder}) to undo
all refiles and deletes in the current folder.
+@findex mh-execute-commands
+@kindex x
+
If you've marked messages to be deleted or refiled and you want to go
ahead and delete or refile the messages, use @kbd{x}
(@code{mh-execute-commands}). Many MH-E commands that may affect the
numbering of the messages (such as @kbd{F r} or @kbd{F p}) will ask if
you want to process refiles or deletes first and then either run
-@kbd{x} for you or undo the pending refiles and deletes, which are
-lost.
+@kbd{x} for you or undo the pending refiles and deletes.
+
+@kindex x
+@vindex mh-after-commands-processed-hook
+@vindex mh-before-commands-processed-hook
The command @kbd{x} runs @code{mh-before-commands-processed-hook}
before the commands are processed and
affected by deletes and refiles. This list will always include the
current folder @code{mh-current-folder}.
+@findex mh-copy-msg
+@kindex c
+@kindex o
+
If you wish to copy a message to another folder, you can use the
command @kbd{c} (@code{mh-copy-msg}) (see the @option{-link} argument
to @command{refile}(1)). Like the command @kbd{o}, this command
takes place immediately. The original copy remains in the current
folder.
-@cindex MH-Folder Show mode
-@cindex MH-Folder mode
@cindex junk mail
+@cindex MH-Folder mode
+@cindex MH-Folder Show mode
@cindex modes, MH-Folder
@cindex modes, MH-Folder Show
@cindex spam
+@findex mh-toggle-showing
+@kindex t
The command @kbd{t} (@code{mh-toggle-showing}) switches between
MH-Folder mode and MH-Folder Show mode@footnote{For you Emacs wizards,
@cindex modes, MH-Folder
@cindex modes, MH-Show
@cindex moving between messages
+@kindex t
@vindex mh-recenter-summary-flag
-When you use @kbd{t} to toggle between show mode and scan mode, the
-MH-Show buffer is hidden and the MH-Folder buffer is left alone.
-Setting @code{mh-recenter-summary-flag} to a non-@code{nil} value
-causes the toggle to display as many scan lines as possible, with the
-cursor at the middle. The effect of @code{mh-recenter-summary-flag} is
-rather useful, but it can be annoying on a slow network connection.
+When you use @kbd{t} to toggle from MH-Folder Show mode to MH-Folder
+mode, the MH-Show buffer is hidden and the MH-Folder buffer is left
+alone. Setting @code{mh-recenter-summary-flag} to a non-@code{nil}
+value causes the toggle to display as many scan lines as possible,
+with the cursor at the middle. The effect of
+@code{mh-recenter-summary-flag} is rather useful, but it can be
+annoying on a slow network connection.
+
+@findex mh-visit-folder
+@kindex F v
+@vindex mh-large-folder
When you want to read the messages that you have refiled into folders,
use the command @kbd{F v} (@code{mh-visit-folder}) to visit the
this command can also be used to create folders. If you specify a
folder that does not exist, you will be prompted to create it.
+@findex mh-search
+@kindex F s
+
If you forget where you've refiled your messages, you can find them
using @kbd{F s} (@code{mh-search}). @xref{Searching}.
@cindex @command{procmail}
-@cindex @command{rcvstore}
@cindex @samp{unseen} sequence
-@cindex MH commands, @command{rcvstore}
-@cindex Unix commands, @command{procmail}
@cindex sequence, @samp{unseen}
+@cindex Unix commands, @command{procmail}
@cindex unseen messages, viewing
@findex mh-index-new-messages
@kindex F n
@vindex mh-new-messages-folders
-If you use a program such as @command{procmail} to use
-@command{rcvstore} to file your incoming mail automatically, you can
-display new, unseen, messages using the command @kbd{F n}
-(@code{mh-index-new-messages}). All messages in the @samp{unseen}
-sequence from the folders in @code{mh-new-messages-folders} are
-listed. However, this list of folders can be overridden with a prefix
-argument: with a prefix argument, enter a space-separated list of
-folders, or nothing to search all folders.
+If you use a program such as @command{procmail} to file your incoming
+mail automatically, you can display new, unseen, messages using the
+command @kbd{F n} (@code{mh-index-new-messages}). All messages in the
+@samp{unseen} sequence from the folders in
+@code{mh-new-messages-folders} are listed. However, this list of
+folders can be overridden with a prefix argument: with a prefix
+argument, enter a space-separated list of folders, or nothing to
+search all folders.
@cindex @samp{tick} sequence
@cindex sequence, @samp{tick}
@cindex ticked messages, viewing
+@findex mh-index-ticked-messages
+@kindex F '
+@vindex mh-ticked-messages-folders
If you have ticked messages (@pxref{Sequences}), you can display them
using the command @kbd{F '} (@code{mh-index-ticked-messages}). All
With a prefix argument, enter a space-separated list of folders at the
prompt, or nothing to search all folders.
+@vindex mh-new-messages-folders
+@vindex mh-recursive-folders-flag
+@vindex mh-ticked-messages-folders
+
Set the options @code{mh-new-messages-folders} and
@code{mh-ticked-messages-folders} to @samp{Inbox} to search the
@samp{+inbox} folder or @samp{All} to search all of the top level
folders. Otherwise, list the folders that should be searched with the
@samp{Choose Folders} menu item. See @code{mh-recursive-folders-flag}.
-@cindex @samp{*MH-E Folders*}
@cindex buffers, @samp{*MH-E Folders*}
+@cindex @samp{*MH-E Folders*}
+@findex mh-kill-folder
+@findex mh-list-folders
+@findex mh-pack-folder
+@findex mh-rescan-folder
+@findex mh-sort-folder
+@kindex F k
+@kindex F l
+@kindex F p
+@kindex F r
+@kindex F S
Other commands you can perform on folders include: @kbd{F l}
(@code{mh-list-folders}), to place a listing of all the folders in
you don't want to rescan the entire folder, the commands @kbd{F r} or
@kbd{F p} will accept a range (@pxref{Ranges}).
+@kindex @key{TAB}
+@vindex mh-recursive-folders-flag
+
By default, operations on folders work only one level at a time. Set
@code{mh-recursive-folders-flag} to non-@code{nil} to operate on all
folders. This mostly means that you'll be able to see all your folders
when you press @key{TAB} when prompted for a folder name.
+@findex mh-search-p
+@kindex k
@vindex mh-kill-folder-suppress-prompt-hooks
The hook @code{mh-kill-folder-suppress-prompt-hooks} is an abnormal
@quotation
Use this hook with care. If there is a bug in your hook which returns
-@code{t} on @samp{+inbox} and you hit @kbd{k} by accident in the
+@code{t} on @samp{+inbox} and you press @kbd{k} by accident in the
@code{+inbox} folder, you will not be happy.
@end quotation
@sp 1
@cindex @command{sortm}
@cindex @file{.mh_profile}
-@cindex @samp{sortm:} MH profile component
+@cindex files, @file{.mh_profile}
@cindex MH commands, @command{sortm}
@cindex MH profile component, @samp{sortm:}
-@cindex files, @file{.mh_profile}
+@cindex @samp{sortm:} MH profile component
+@kindex F S
+@vindex mh-sortm-args
The option @code{mh-sortm-args} holds extra arguments to pass on to
the command @command{sortm}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/sorsor.htm, Sorting Messages: sortm} in the
+@uref{@value{MH-BOOK-HOME}/sorsor.html, Sorting Messages: sortm} in the
MH book.} when a prefix argument is used with @kbd{F S}. Normally
default arguments to @command{sortm} are specified in the MH profile.
This option may be used to provide an alternate view. For example,
@cindex exiting
@cindex quitting
-@findex mh-rmail
+@findex mh-quit
+@kindex q
When you want to quit using MH-E and go back to editing, you can use
the @kbd{q} (@code{mh-quit}) command. This buries the buffers of the
selecting the @samp{+inbox} buffer or by running @kbd{M-x mh-rmail}
again.
+@findex mh-execute-commands
+@kindex q
@vindex mh-before-quit-hook
+@vindex mh-before-quit-hook, example
@vindex mh-quit-hook
+@vindex mh-quit-hook, example
The two hooks @code{mh-before-quit-hook} and @code{mh-quit-hook} are
-called by @kbd{q} (@code{mh-quit}). The former one is called before
-the quit occurs, so you might use it to perform any MH-E operations;
-you could perform some query and abort the quit or call
-@code{mh-execute-commands}, for example. The latter is not run in an
-MH-E context, so you might use it to modify the window setup. For
-example, if the window configuration was saved as in the example in
-@ref{Miscellaneous Commands and Options}, you would also want to set
-@code{mh-quit-hook} to the following:
+called by @kbd{q}. The former one is called before the quit occurs, so
+you might use it to perform any MH-E operations; you could perform
+some query and abort the quit or call @code{mh-execute-commands}, for
+example. The latter is not run in an MH-E context, so you might use it
+to modify the window setup. If you find that @kbd{q} buries a lot of
+buffers that you would rather remove, you can use both
+@code{mh-before-quit-hook} and @code{mh-quit-hook} to accomplish that.
-@c XXX Replace this with my example for killing the mail buffers.
+@smalllisp
+@group
+(defvar my-mh-folder-buffer-to-delete nil
+ "Folder buffer that is being quit.")
-@vindex mh-quit-hook, example
+(defun my-mh-before-quit-hook ()
+ "Save folder buffer that is to be deleted."
+ (setq my-mh-folder-buffer-to-delete (current-buffer)))
-@smalllisp
-@group
(defun my-mh-quit-hook ()
- "Clear window configuration variables as the MH window is gone."
- (setq my-mh-screen-saved nil)
- (setq my-mh-screen nil)
- (if my-normal-screen
- (set-window-configuration my-normal-screen))
- (setq my-normal-screen nil))
-
-@i{Clean up window setup in mh-quit-hook}
+ "Kill folder buffer rather than just bury it."
+ (set-buffer my-mh-folder-buffer-to-delete)
+ (if (get-buffer mh-show-buffer)
+ (kill-buffer mh-show-buffer))
+ (kill-buffer (current-buffer)))
+
+@i{Kill MH-Folder buffer instead of burying it}
@end group
@end smalllisp
@cindex folders, renaming
@cindex renaming folders
+@findex dired
@findex dired-do-rename
-@kindex R
You can use dired to manipulate the folders themselves. For example, I
renamed my @samp{+out} folder to the more common @samp{+outbox} by
@cindex sending mail
@findex mh-smail
+@kindex M-x mh-smail
You can send a mail message in several ways. You can call @kbd{M-x
mh-smail} directly, or from the command line like this:
@cindex starting from command line
-@example
+@smallexample
$ @kbd{emacs -f mh-smail}
-@end example
+@end smallexample
@findex goto-address-at-point
@vindex mail-user-agent
commands use MH-E by setting the option @code{mail-user-agent} to
@samp{Emacs interface to MH}.
+@cindex @samp{Message} menu
+@cindex menu, @samp{Message}
+
From within MH-E's MH-Folder mode, other methods of sending mail are
available as well. These can also be found in the @samp{Message} menu.
@samp{off}).
@c -------------------------
@item mh-forward-subject-format
-Format string for forwarded message subject (default: @samp{"%s:
+Format string for forwarded message subject (default: @code{"%s:
%s"}).
@c -------------------------
@item mh-insert-x-mailer-flag
@cindex sending mail
@findex mh-smail
@findex mh-smail-other-window
+@kindex M-x mh-smail
+@kindex M-x mh-smail-other-window
Outside of an MH-Folder buffer, you must call either @kbd{M-x
mh-smail} or @kbd{M-x mh-smail-other-window} to compose a new message.
(global-set-key "\C-x4m" 'mh-smail-other-window)
@end smalllisp
-@cindex MH-Letter mode
@cindex draft folder
+@cindex MH-Letter mode
@cindex modes, MH-Letter
@findex mh-send
@kindex m
From within a MH-Folder buffer, you can simply use the command @kbd{m}
(@code{mh-send}). However you invoke @code{mh-send}, your letter
-appears in an Emacs buffer whose mode is MH-Letter (see the Figure in
-@ref{Sending Mail Tour} to see what the buffer looks like). MH-Letter
-mode allows you to edit your message, to check the validity of the
-recipients, to insert attachments and other messages into your
-message, and to send the message. We'll go more into depth about
-editing a @dfn{draft}@footnote{I highly recommend that you use a
-@dfn{draft folder} so that you can edit several drafts in parallel. To
-do so, create a folder named @samp{+drafts} for example, and add the
-profile component @samp{Draft-Folder: drafts} (see
-@code{mh-profile}(5)).} (a message you're composing) in just a moment
-(@pxref{Editing Drafts}).
+appears in an Emacs buffer whose mode is MH-Letter (to see what the
+buffer looks like, @pxref{Sending Mail Tour}). MH-Letter mode allows
+you to edit your message, to check the validity of the recipients, to
+insert attachments and other messages into your message, and to send
+the message. We'll go more into depth about editing a
+@dfn{draft}@footnote{I highly recommend that you use a @dfn{draft
+folder} so that you can edit several drafts in parallel. To do so,
+create a folder named @samp{+drafts} for example, and add the profile
+component @samp{Draft-Folder: drafts} (see @code{mh-profile}(5)).} (a
+message you're composing) in just a moment (@pxref{Editing Drafts}).
@vindex mh-compose-prompt-flag
before the MH-Letter buffer appears, turn on the option
@code{mh-compose-prompt-flag}.
-@cindex @samp{X-Mailer:} header field
@cindex header field, @samp{X-Mailer:}
+@cindex @samp{X-Mailer:} header field
@vindex mh-insert-x-mailer-flag
MH-E adds an @samp{X-Mailer:} header field to the header that includes
@cindex @command{repl}
@cindex @file{components}
@cindex MH commands, @command{repl}
+@cindex MH-Letter mode
@cindex Mail mode
@cindex files, @file{components}
+@cindex modes, MH-Letter
@cindex modes, Mail
@vindex mail-mode-hook
@vindex mh-letter-mode-hook
to modify the header after @command{repl} has done its work, or you
may have a complicated @file{components} file and need to tell MH-E
where the cursor should go. Here's an example of how you would use
-this hook. You can add the hook using @code{add-hook} or by running
-@kbd{M-x customize-option @key{RET} mh-letter-mode-hook
-@key{RET}}---all of the other hooks are set in a similar fashion.
+this hook.
@findex mh-insert-signature, example
(goto-char (point-max)) ; @r{go to end of message to}
(mh-insert-signature))) ; @r{insert signature}
-(add-hook 'mh-letter-mode-hook 'my-mh-letter-mode-hook)
-
@i{Prepare draft for editing via mh-letter-mode-hook}
@end group
@ref{Adding Attachments}.
@vindex mh-compose-letter-function
+@vindex mh-letter-mode-hook
The second hook, a function really, is
@code{mh-compose-letter-function}. Like @code{mh-letter-mode-hook}, it
When you reply to a message, you are first prompted with @samp{Reply
to whom?}. You have several choices here.
-@smallexample
-@group
-@b{Response} @b{Reply Goes To}
-
-@kbd{from} @r{The person who sent the message. This is the default,}
- @r{so @key{RET} is sufficient.}
-
-@kbd{to} @r{Replies to the sender, plus all recipients in the}
- @r{@samp{To:} header field.}
-
-@kbd{all}
-@kbd{cc} @r{Forms a reply to the sender, plus all recipients.}
-@end group
-@end smallexample
+@quotation
+@multitable @columnfractions .20 .80
+@c @headitem Response @tab Reply Goes To
+@c XXX @headitem not yet supported by SourceForge's texi2pdf.
+@item @b{Response} @tab @b{Reply Goes To}
+@c -------------------------
+@item @kbd{from}
+@tab
+The person who sent the message. This is the default, so @key{RET} is
+sufficient.
+@c -------------------------
+@item @kbd{to}
+@tab
+Replies to the sender, plus all recipients in the @samp{To:} header field.
+@c -------------------------
+@item @kbd{cc}@*@kbd{all}
+@tab
+Forms a reply to the addresses in the @samp{Mail-Followup-To:} header
+field if one exists; otherwise forms a reply to the sender, plus all
+recipients.
+@end multitable
+@end quotation
@cindex @command{repl}
@cindex MH commands, @command{repl}
+@vindex mh-reply-default-reply-to
Depending on your answer, @command{repl}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/reprep.htm, Replying to Messages: repl} in
+@uref{@value{MH-BOOK-HOME}/reprep.html, Replying to Messages: repl} in
the MH book.} is given a different argument to form your reply.
Specifically, a choice of @kbd{from} or none at all runs @samp{repl
-nocc all}, and a choice of @kbd{to} runs @samp{repl -cc to}. Finally,
-either @kbd{cc} or @kbd{all} runs @samp{repl -cc all -nocc me}.
-
+either @kbd{cc} or @kbd{all} runs @samp{repl -cc all -nocc me}. If you
+find that most of the time you specify one of these choices when you
+reply to a message, you can change the option
+@code{mh-reply-default-reply-to} from its default value of
+@samp{Prompt} to one of the choices listed above. You can always edit
+the recipients in the draft.
+
+@cindex @samp{repl:} MH profile component
+@cindex MH profile component, @samp{repl:}
@cindex MH-Letter mode
@cindex MH-Show mode
@cindex draft
Two windows are then created. One window contains the message to which
you are replying in an MH-Show buffer. Your draft, in MH-Letter mode
-(@pxref{Editing Drafts}), is in the other window.
+(@pxref{Editing Drafts}), is in the other window. If the reply draft
+was not one that you expected, check the things that affect the
+behavior of @command{repl} which include the @samp{repl:} profile
+component and the @file{replcomps} and @file{replgroupcomps} files.
If you supply a prefix argument (as in @kbd{C-u r}), the message you
are replying to is inserted in your reply after having first been run
through @command{mhl} with the format file @file{mhl.reply}. See
@command{mhl}(1) or the section
-@uref{@value{MH-BOOK-HOME}/shomes.htm#Usisho, Using mhl} in the MH
+@uref{@value{MH-BOOK-HOME}/shomes.html#Usisho, Using mhl} in the MH
book to see how you can modify the default @file{mhl.reply} file.
@vindex mh-yank-behavior
Another way to include the message automatically in your draft is to
use @samp{repl: -filter repl.filter} in your MH profile.
+@vindex mh-reply-show-message-flag
+
If you include the message automatically, you can hide the MH-Show
buffer by turning off the option @code{mh-reply-show-message-flag}.
If you wish to customize the header or other parts of the reply draft,
please see @command{repl}(1) and @code{mh-format}(5).
-@vindex mh-reply-default-reply-to
-
-The @code{mh-reply-default-reply-to} option is set to @samp{Prompt} by
-default so that you are prompted for the recipient of a reply. If you
-find that most of the time that you specify @kbd{cc} when you reply to
-a message, set this option to @samp{cc}. Other choices include
-@samp{from}, @samp{to}, or @samp{all}. You can always edit the
-recipients in the draft.
-
@node Forwarding, Redistributing, Replying, Sending Mail
@section Forwarding Mail
@cindex @command{forw}
-@cindex MH commands, @command{forw}
@cindex draft
@cindex forwarding
+@cindex MH commands, @command{forw}
@findex mh-forward
@kindex f
@vindex mh-forward-hook
are prompted for the @samp{To:} and @samp{cc:} recipients. You are
given a draft to edit that looks like it would if you had run the MH
command @command{forw}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/forfor.htm, Forwarding Messages: forw} in
+@uref{@value{MH-BOOK-HOME}/forfor.html, Forwarding Messages: forw} in
the MH book.}. You can then add some text (@pxref{Editing Drafts}).
You can forward several messages by using a range (@pxref{Ranges}).
All of the messages in the range are inserted into your draft. The
hook @code{mh-forward-hook} is called on the draft.
@cindex @file{.mh_profile}
-@cindex @samp{forw:} MH profile component
-@cindex MH profile component, @samp{forw:}
@cindex files, @file{.mh_profile}
+@cindex MH profile component, @samp{forw:}
+@cindex @samp{forw:} MH profile component
@vindex mh-compose-forward-as-mime-flag
By default, the option @code{mh-compose-forward-as-mime-flag} is on
option is a string which includes two escapes (@samp{%s}). The first
@samp{%s} is replaced with the sender of the original message, and the
second one is replaced with the original @samp{Subject:}. The default
-value of @samp{"%s: %s"} takes a message with the header:
+value of @code{"%s: %s"} takes a message with the header:
@smallexample
@group
the recipient as if the message had come from the original sender.
When you run this command, you are prompted for the recipients.
+@findex mh-edit-again
+@kindex e
+
For more information on redistributing messages, see
@command{dist}(1). Also investigate the command @kbd{e}
(@code{mh-edit-again}) for another way to redistribute messages
The option @code{mh-redist-full-contents-flag} must be turned on if
@command{dist}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/disdis.htm, Distributing Messages with
+@uref{@value{MH-BOOK-HOME}/disdis.html, Distributing Messages with
dist} in the MH book.} requires the whole letter for redistribution,
which is the case if @command{send}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/sensen.htm, Sending Some Mail: comp send}
+@uref{@value{MH-BOOK-HOME}/sensen.html, Sending Some Mail: comp send}
in the MH book.} is compiled with the @sc{berk} option (which many
people abhor). If you find that MH will not allow you to redistribute
a message that has been redistributed before, turn off this option.
@cindex files, @file{draft}
@cindex re-editing drafts
@findex mh-edit-again
+@kindex F v drafts
@kindex e
+@kindex n
If you don't complete a draft for one reason or another, and if the
draft buffer is no longer available, you can pick your draft up again
@key{RET}}, use @kbd{n} to move to the appropriate message, and then
use @kbd{e} to prepare the message for editing.
+@kindex e
+
The @kbd{e} command can also be used to take messages that were sent
to you and to send them to more people.
@cindex Mailer-Daemon
@findex mh-extract-rejected-mail
+@kindex C-c C-c
@kindex E
Don't use @kbd{e} to re-edit a message from a @i{Mailer-Daemon} who
@node Editing Drafts, Aliases, Sending Mail, Top
@chapter Editing a Draft
+@cindex @samp{Letter} menu
@cindex MH-Letter mode
@cindex draft
@cindex editing draft
+@cindex menu, @samp{Letter}
@cindex modes, MH-Letter
When you edit a message that you want to send (called a @dfn{draft} in
@c -------------------------
@item mh-extract-from-attribution-verb
Verb to use for attribution when a message is yanked by @kbd{C-c C-y}
-(default: @samp{"wrote:"}).
+(default: @code{"wrote:"}).
@c -------------------------
@item mh-ins-buf-prefix
String to put before each line of a yanked or inserted message
-(default: @samp{"> "}).
+(default: @code{"> "}).
@c -------------------------
@item mh-letter-complete-function
Function to call when completing outside of address or folder fields
support for it is available; otherwise @samp{None}).
@c -------------------------
@item mh-signature-file-name
-Source of user's signature (default: @samp{"~/.signature"}).
+Source of user's signature (default: @code{"~/.signature"}).
@c -------------------------
@item mh-signature-separator-flag
On means a signature separator should be inserted (default:
@c -------------------------
@item mh-x-face-file
File containing X-Face or Face header field to insert in outgoing mail.
-(default: @samp{"~/.face"}).
+(default: @code{"~/.face"}).
@c -------------------------
@item mh-yank-behavior
Controls which part of a message is yanked by @kbd{C-c C-y} (default:
@findex indent-relative
@findex mh-letter-next-header-field-or-indent
@findex mh-letter-previous-header-field
-@kindex S-@key{TAB}
@kindex @key{TAB}
+@kindex S-@key{TAB}
@vindex mh-compose-skipped-header-fields
@vindex mh-letter-header-field
@findex mh-letter-complete-or-space
@findex mh-letter-confirm-address
@kindex , (comma)
-@kindex M-@key{TAB}
@kindex @key{SPC}
+@kindex M-@key{TAB}
+@vindex mh-alias-flash-on-comma
+@vindex mh-compose-space-does-completion-flag
@vindex mh-letter-complete-function
If the field contains addresses (for example, @samp{To:} or
the alias expansion in the minibuffer if
@code{mh-alias-flash-on-comma} is turned on.
-@kindex C-c C-t
-@findex mh-letter-toggle-header-field-display
@c XXX Document the replacement for the inaccessible 'long argument.
+@findex mh-letter-toggle-header-field-display
+@kindex C-c C-t
+
Use the command @kbd{C-c C-t}
@code{mh-letter-toggle-header-field-display} to display truncated
header fields. This command is a toggle so entering it again will hide
Letter}). For example, let's assume you have the following in your
draft:
-@example
+@smallexample
@group
> Hopefully this gives you an idea of what I'm currently doing. I'm \
not sure yet whether I'm completely satisfied with my setup, but \
it's worked okay for me so far.
@end group
-@end example
+@end smallexample
Running @kbd{M-q} on this paragraph produces:
-@example
+@smallexample
@group
> Hopefully this gives you an idea of what I'm currently doing. I'm not
> sure yet whether I'm completely satisfied with my setup, but it's
> worked okay for me so far.
@end group
-@end example
+@end smallexample
@findex mh-open-line
@findex open-line
replies. For example, if this command was used when point was after
the first period in the paragraph above, the result would be this:
-@example
+@smallexample
@group
> Hopefully this gives you an idea of what I'm currently doing.
> sure yet whether I'm completely satisfied with my setup, but it's
> worked okay for me so far.
@end group
-@end example
+@end smallexample
@node Inserting Letter, Inserting Messages, Editing Message, Editing Drafts
@section Inserting Letter to Which You're Replying
@cindex yanking messages
@findex mh-yank-cur-msg
@kindex C-c C-y
+@vindex mh-ins-buf-prefix
It is often useful to insert a snippet of text from a letter that
someone mailed to provide some context for your reply. The command
you're replying, and inserting @code{mh-ins-buf-prefix} (@samp{> })
before each line.
-@example
+@smallexample
@group
Michael W Thelen <thelenm@@stop.mail-abuse.org> wrote:
> sure yet whether I'm completely satisfied with my setup, but it's
> worked okay for me so far.
@end group
-@end example
+@end smallexample
@vindex mh-extract-from-attribution-verb
@samp{wrote:}, @samp{a écrit:}, and @samp{schrieb:}. You can also use
the @samp{Custom String} menu item to enter your own verb.
+@vindex mail-citation-hook
@vindex mh-ins-buf-prefix
+@vindex mh-yank-behavior
-The prefix @samp{"> "} is the default setting for the option
+The prefix @code{"> "} is the default setting for the option
@code{mh-ins-buf-prefix}. I suggest that you not modify this option
since it is used by many mailers and news readers: messages are far
easier to read if several included messages have all been indented by
option to delete the window containing the original message after
yanking it to make more room on your screen for your reply.
-@vindex mh-yank-behavior
@cindex Emacs, packages, supercite
@cindex supercite package
+@kindex r
+@vindex mail-citation-hook
+@vindex mh-yank-behavior
You can control how the message to which you are replying is yanked
into your reply using @code{mh-yank-behavior}. To include the entire
full-bodied, full-featured, citation package that comes standard with
Emacs.} to pass the entire message and header through supercite.
+@vindex mh-extract-from-attribution-verb
+
If the @samp{Body With Attribution} setting is used, then the message
minus the header is yanked and a simple attribution line is added at
the top using the value of the option
@code{mh-extract-from-attribution-verb}. This is the default.
+@kindex C-c C-y
+@vindex mh-delete-yanked-msg-window-flag
+
If the @samp{Invoke supercite} or @samp{Body With Attribution}
settings are used, the @samp{-noformat} argument is passed to the
@command{repl} program to override a @samp{-filter} or @samp{-format}
@code{mh-delete-yanked-msg-window-flag} as well so that the show
window is never displayed.
+@vindex mh-yank-behavior
+
If the show buffer has a region, the option @code{mh-yank-behavior} is
ignored unless its value is one of @samp{Attribution} variants in
which case the attribution is added to the yanked region.
@findex trivial-cite
@vindex mail-citation-hook
+@vindex mh-ins-buf-prefix
+@vindex mh-yank-behavior
If this isn't enough, you can gain full control over the appearance of
the included text by setting @code{mail-citation-hook} to a function
for the next hook function. The standard prefix
@code{mh-ins-buf-prefix} is not added if this hook is set.
+@cindex Emacs, packages, trivial-cite
+@cindex trivial-cite package
+@vindex mh-yank-behavior
+
For example, if you use the hook function
@uref{http://shasta.cs.uiuc.edu/~lrclause/tc.html,
@code{trivial-cite}} (which is NOT part of Emacs), set
@kindex C-c C-i
@vindex mh-ins-buf-prefix
@vindex mh-invisible-header-fields-compiled
+@vindex mh-yank-behavior
Messages can be inserted with @kbd{C-c C-i} (@code{mh-insert-letter}).
This command prompts you for the folder and message number, which
You can insert your signature at the current cursor location with the
command @kbd{C-c C-s} (@code{mh-insert-signature}).
-@cindex @file{.signature}
@cindex files, @file{.signature}
+@cindex @file{.signature}
@cindex vCard
@vindex mh-signature-file-name
@dfn{vCard} in which case an attachment is added with the vCard.
@findex mh-signature-separator-p
+@vindex mh-signature-file-name
@vindex mh-signature-separator
@vindex mh-signature-separator-regexp
@cindex signature separator
@vindex mh-signature-separator-flag
-A signature separator (@samp{"-- "}) will be added if the signature
+A signature separator (@code{"-- "}) will be added if the signature
block does not contain one and @code{mh-signature-separator-flag} is
on. It is not recommended that you change this option since various
mail user agents, including MH-E, use the separator to present the
yanking a letter into a draft.
@vindex mh-insert-signature-hook
+@vindex mh-signature-file-name
The hook @code{mh-insert-signature-hook} is run after the signature is
inserted. Hook functions may access the actual name of the file or the
The URL of any image can be used for the @samp{X-Image-URL:} field and
no processing of the image is required.
+@vindex mh-x-face-file
+
To prevent the setting of any of these header fields, either set
@code{mh-x-face-file} to @code{nil}, or simply ensure that the file
defined by this option doesn't exist.
binary files, and even commands that fetch a file with @samp{ftp} when
your recipient reads the message!
+@kindex C-c C-m
+
If you were to create a multimedia message with plain MH commands, you
would insert @command{mhbuild} or @command{mhn} directives (henceforth
called @dfn{MH-style directives} into your draft and use the
to insert the directives so you don't need to remember the syntax of
them. Remember: you can always add MH-style directives by
hand@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/usimim.htm#SeMIMa, Sending MIME Mail} in
+@uref{@value{MH-BOOK-HOME}/usimim.html#SeMIMa, Sending MIME Mail} in
the MH book.}.
@cindex MIME Meta Language (MML)
@cindex @command{file}
@cindex @file{/etc/mime.types}
-@cindex Unix commands, @command{file}
@cindex files, @file{/etc/mime.types}
+@cindex Unix commands, @command{file}
@findex mailcap-mime-types
In the cases where MH-E can do so, it will determine the media type
@subheading Including Files
+@cindex attachments, inserting
+@cindex images
@cindex MIME, images
@cindex MIME, sound
@cindex MIME, video
-@cindex attachments, inserting
-@cindex images
@cindex sound
@cindex video
@findex mh-compose-insertion
@kindex C-c C-m C-i
@kindex C-c C-m i
+@vindex mh-compose-insertion
Binaries, images, sound, and video can be inserted in your message
with the command @kbd{C-c C-m C-i} (@code{mh-compose-insertion}). You
@cindex MIME, @command{tar}
@cindex Unix commands, @command{ftp}
@cindex Unix commands, @command{tar}
+@findex mh-mh-compose-anon-ftp
@findex mh-mh-compose-external-compressed-tar
+@kindex C-c C-m C-g
@kindex C-c C-m C-t
@kindex C-c C-m t
---:%% @{+inbox@} 4 msgs (1-4) (MH-Folder Show)--L4--Bot---------------
+--:%% @{+inbox@} 4 msgs (1-4) Bot L4 (MH-Folder Show)---------------
To: wohler
cc:
Subject: Test of MIME
<#part type="image/x-xpm" filename="~/lib/images/setiathome.xpm"
disposition=inline description="SETI@@home logo">
<#/part>
---:** @{draft@} (MH-Letter)--L8--All----------------------------------
+--:** @{draft@} All L8 (MH-Letter)----------------------------------
@end smallexample
@end cartouche
Typically, you send a message with attachments just like any other
message (@pxref{Sending Message}).
+@findex mh-mml-to-mime
+@kindex C-c C-m C-m
+
However, you may take a sneak preview of the @sc{mime} encoding if you
wish by running the command @kbd{C-c C-m C-m} (@code{mh-mml-to-mime}).
The following screen shows the @sc{mime} encoding specified by the
To: wohler
cc:
Subject: Test of MIME
+X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
--------
Content-Transfer-Encoding: base64
Content-Description: SETI@@home logo
-LyogWFBNICovCnN0YXRpYyBjaGFyICogc2V0aWF0aG9tZV94cG1bXSA9IHsKIjQ1IDQ1IDc2NCAy
---:-- @{draft@} (MH-Letter)--L2--Top----------------------------------
+LyogWFBNICovCnN0YXRpYyBjaGFyICogc2V0aWF0aG9tZV94cG1bXSA9IHsKIjQ1IDQ1IDc2N
+--:-- @{draft@} Top L1 (MH-Letter)----------------------------------
@end smallexample
@end cartouche
@i{MH-E @sc{mime} draft ready to send}
+@cindex undo effects of mh-mml-to-mime
+
This action can be undone by running @kbd{C-_} (@code{undo}).
@cindex @command{mhbuild}
@cindex @command{mhn}
@cindex MH commands, @command{mhbuild}
@cindex MH commands, @command{mhn}
+@cindex undo effects of mh-mh-to-mime
@findex mh-mh-to-mime
@findex mh-mh-to-mime-undo
@kindex C-c C-e
+@kindex C-c C-m C-m
@kindex C-c C-m C-u
@kindex C-c C-m u
(@code{mh-mh-to-mime}) instead of @kbd{C-c C-m C-m}. This runs the
command @command{mhbuild} (@command{mhn}) on the message which expands
the tags@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/usimim.htm#SeMIMa, Sending MIME Mail} in
+@uref{@value{MH-BOOK-HOME}/usimim.html#SeMIMa, Sending MIME Mail} in
the MH book.}. This action can be undone by running @kbd{C-c C-m C-u}
(@code{mh-mh-to-mime-undo}), which works by reverting to a backup
file. You are prompted to confirm this action, but you can avoid the
confirmation by adding an argument (for example, @kbd{C-u C-c C-m
C-u}).
+@kindex C-c C-e
@vindex mh-mh-to-mime-args
If you wish to pass additional arguments to @command{mhbuild}
@samp{-check}. The recipient of your message can then run
@samp{mhbuild -check} on the message---@command{mhbuild}
(@command{mhn}) will complain if the message has been corrupted on the
-way. The command @kbd{C-c C-e} (@code{mh-mh-to-mime}) only consults
-this option when given a prefix argument (as in @kbd{C-u C-c C-e}).
+way. The command @kbd{C-c C-e} only consults this option when given a
+prefix argument (as in @kbd{C-u C-c C-e}).
+@kindex C-c C-e
@vindex mh-mh-to-mime-hook
The hook @code{mh-mh-to-mime-hook} is called after the message has
-been formatted by @kbd{C-c C-e} (@code{mh-mh-to-mime})
+been formatted by @kbd{C-c C-e}.
@node Sending PGP, Checking Recipients, Adding Attachments, Editing Drafts
@section Signing and Encrypting Messages
The command @kbd{C-c C-m C-s} (@code{mh-mml-secure-message-sign})
inserts the following tag:
-@example
+@smallexample
<#secure method=pgpmime mode=sign>
-@end example
+@end smallexample
This is used to sign your message digitally. Likewise, the command
@kbd{C-c C-m C-e} (@code{mh-mml-secure-message-encrypt}) inserts the
following tag:
-@example
+@smallexample
<#secure method=pgpmime mode=encrypt>
-@end example
+@end smallexample
This is used to encrypt your message. Finally, the command @kbd{C-c
C-m s e} (@code{mh-mml-secure-message-signencrypt}) inserts the
following tag:
-@example
+@smallexample
<#secure method=pgpmime mode=signencrypt>
-@end example
+@end smallexample
@findex mh-mml-unsecure-message
@kindex C-c C-m C-n
@kindex C-c C-m n
+@vindex mh-mml-method-default
This is used to sign and encrypt your message. In each of these cases,
a proper multipart message is created for you when you send the
@cite{The PGG Manual}}.
@end ifhtml
-@cindex @samp{Fcc:} header field
@cindex header field, @samp{Fcc:}
+@cindex @samp{Fcc:} header field
@vindex pgg-encrypt-for-me
In particular, I turn on the option @code{pgg-encrypt-for-me} so that
you can check the actual address(es) in the alias. A new buffer named
@samp{*MH-E Recipients*} is created with the output of @command{whom}
(@pxref{Miscellaneous})@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/senove.htm#WhaPro, What now? -- and the
+@uref{@value{MH-BOOK-HOME}/senove.html#WhaPro, What now? -- and the
whatnow Program} in the MH book.}.
@node Sending Message, Killing Draft, Checking Recipients, Editing Drafts
@section Sending a Message
-@cindex @samp{*MH-E Mail Delivery*}
@cindex buffers, @samp{*MH-E Mail Delivery*}
+@cindex @samp{*MH-E Mail Delivery*}
@cindex sending mail
@findex mh-send-letter
@kindex C-c C-c
@cindex sending mail
@cindex spell check
+@findex ispell-message
+@kindex C-c C-c
@vindex mh-before-send-letter-hook
The hook @code{mh-before-send-letter-hook} is run at the beginning of
@vindex mh-send-prog
In case the MH @command{send} program@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/sensen.htm, Sending Some Mail: comp send}
+@uref{@value{MH-BOOK-HOME}/sensen.html, Sending Some Mail: comp send}
in the MH book.} is installed under a different name, use
@code{mh-send-prog} to tell MH-E the name.
@c -------------------------
@item mh-alias-local-users-prefix
String prefixed to the real names of users from the password file
-(default: @samp{"local."}.
+(default: @code{"local."}.
@c -------------------------
@item mh-alias-passwd-gecos-comma-separator-flag
On means the GECOS field in the password file uses a comma separator
@code{nil}).
@end vtable
-@heading Adding Addresses to Draft
+@subheading Adding Addresses to Draft
You can use aliases when you are adding recipients to a message.
@findex minibuffer-complete
@kindex @key{TAB}
+@vindex mh-alias-expand-aliases-flag
+@vindex mh-compose-prompt-flag
In order to use minibuffer prompting for recipients and the subject
line in the minibuffer, turn on the option
on the option @code{mh-alias-expand-aliases-flag} if you want these
aliases to be expanded to their respective addresses in the draft.
+@findex mh-letter-complete
+@findex mh-letter-complete-or-space
+@kindex @key{SPC}
+@kindex M-@key{TAB}
+
Otherwise, you can complete aliases in the header of the draft with
@kbd{M-@key{TAB}} (@code{mh-letter-complete}) or @key{SPC}
(@code{mh-letter-complete-or-space}).
+@vindex mh-alias-completion-ignore-case-flag
+
As MH ignores case in the aliases, so too does MH-E. However, you may
turn off the option @code{mh-alias-completion-ignore-case-flag} to
make case significant which can be used to segregate completion of
your aliases. You might use uppercase for mailing lists and lowercase
for people. For example, you might have:
-@example
+@smallexample
mark.baushke: Mark Baushke <mdb@@stop.mail-abuse.org>
MH-E: MH-E Mailing List <mh-e-devel@@stop.mail-abuse.org>
-@end example
+@end smallexample
When this option is turned off, if you were to type @kbd{M} in the
@samp{To:} field and then @kbd{M-@key{TAB}}, then you'd get the list;
only. If you were to enter @kbd{Mark.Baushke}, it would still be
identified with your @samp{mark.baushke} alias.
+@findex mh-alias-minibuffer-confirm-address
+@findex mh-letter-confirm-address
+@vindex mh-alias-flash-on-comma
+@vindex mh-compose-prompt-flag
+
To verify that the alias you've entered is valid, the alias will be
displayed in the minibuffer when you type a comma
(@code{mh-letter-confirm-address} or
For another way to verify the alias expansion, see @ref{Checking
Recipients}.
-@heading Loading Aliases
+@subheading Loading Aliases
@cindex @command{ali}
@cindex @file{/etc/nmh/MailAliases}
MH-E loads aliases for completion and folder name hints from various
places. It uses the MH command @command{ali}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/mh.htm, MH Aliases} in the MH book.} to
+@uref{@value{MH-BOOK-HOME}/mh.html, MH Aliases} in the MH book.} to
read aliases from the files listed in the profile component
@samp{Aliasfile:} as well as system-wide aliases (for example,
@file{/etc/nmh/MailAliases}).
name is present in the password file. Otherwise, the alias will have
the form @samp{local.@var{login}}.
+@vindex mh-alias-local-users-prefix
+
The prefix @samp{local.} can be modified via the option
@code{mh-alias-local-users-prefix}. This option can also be set to
@samp{Use Login}.
For example, consider the following password file entry:
-@example
+@smallexample
psg:x:1000:1000:Peter S Galbraith,,,:/home/psg:/bin/tcsh
-@end example
+@end smallexample
+
+@vindex mh-alias-local-users-prefix
The following settings of option @code{mh-alias-local-users-prefix}
will produce the associated aliases:
psg
@end table
+@vindex mh-alias-passwd-gecos-comma-separator-flag
+
In the example above, commas are used to separate different values
within the so-called GECOS field. This is a fairly common usage.
However, in the rare case that the GECOS field in your password file
can turn the option @code{mh-alias-passwd-gecos-comma-separator-flag}
off.
-@cindex @samp{ypcat passwd}
@cindex NIS, obtaining local aliases from
+@cindex @samp{ypcat passwd}
+@vindex mh-alias-local-users
If you're on a system with thousands of users you don't know, and the
loading of local aliases slows MH-E down noticeably, then the local
executed to generate the password file. For example, use @samp{ypcat
passwd} to obtain the NIS password file.
+@findex mh-alias-reload
+@kindex M-x mh-alias-reload
+@vindex mh-alias-reloaded-hook
+
Since aliases are updated frequently, MH-E reloads aliases
automatically whenever an alias lookup occurs if an alias source has
changed. However, you can reload your aliases manually by calling the
command @kbd{M-x mh-alias-reload} directly. This command runs
@code{mh-alias-reloaded-hook} after the aliases have been loaded.
-@heading Adding Aliases
+@subheading Adding Aliases
In the past, you have manually added aliases to your alias file(s)
listed in your @samp{Aliasfile:} profile component. MH-E provides
other methods for maintaining your alias file(s).
+@findex mh-alias-add-alias
+@kindex M-x mh-alias-add-alias
+
You can use the @kbd{M-x mh-alias-add-alias} command which will prompt
you for the alias and address that you would like to add. If the alias
exists already, you will have the choice of inserting the new alias
might use prefixes for locales, jobs, or activities. For example, I
have:
-@example
+@smallexample
+@group
; Work
attensity.don.mitchell: Don Mitchell <dmitchell@@stop.mail-abuse.com>
isharp.don.mitchell: Don Mitchell <donaldsmitchell@@stop.mail-abuse.com>
; Personal
ariane.kolkmann: Ariane Kolkmann <ArianeKolkmann@@stop.mail-abuse.com>
...
-@end example
+@end group
+@end smallexample
Using prefixes instead of postfixes helps you explore aliases during
completion. If you forget the name of an old dive buddy, you can enter
@samp{div} and then @key{SPC} to get a listing of all your dive buddies.
+@kindex M-x mh-alias-add-address-under-point
+@kindex M-x mh-alias-grab-from-field
+
An alias for the sender of the current message is added automatically
by clicking on the @samp{Grab From alias} tool bar button or by running
the @kbd{M-x mh-alias-grab-from-field} command. Aliases for other
over the desired recipient and giving the @kbd{M-x
mh-alias-add-address-under-point} command.
+@vindex mh-alias-insert-file
+@vindex mh-alias-insertion-location
+
The options @code{mh-alias-insert-file} and
@code{mh-alias-insertion-location} controls how and where these aliases
are inserted.
-The default setting of this option is @samp{Use Aliasfile Profile
-Component}. This option can also hold the name of a file or a list a
-file names. If this option is set to a list of file names, or the
-@samp{Aliasfile:} profile component contains more than one file name,
-MH-E will prompt for one of them.
+@vindex mh-alias-insert-file
+
+The default setting of option @code{mh-alias-insert-file} is @samp{Use
+Aliasfile Profile Component}. This option can also hold the name of a
+file or a list a file names. If this option is set to a list of file
+names, or the @samp{Aliasfile:} profile component contains more than
+one file name, MH-E will prompt for one of them.
+
+@vindex mh-alias-insertion-location
The option @code{mh-alias-insertion-location} is set to
@samp{Alphabetical} by default. If you organize your alias file in
other ways, then the settings @samp{Top} and @samp{Bottom} might be
more appropriate.
-@heading Querying Aliases
+@subheading Querying Aliases
@cindex regular expressions, @code{mh-alias-apropos}
+@findex mh-alias-apropos
+@kindex M-x mh-alias-apropos
If you can't quite remember an alias, you can use @kbd{M-x
mh-alias-apropos} to show all aliases or addresses that match a
This means that you can easily have a different header and signature
at home and at work.
+@cindex @samp{Identity} menu
+@cindex menu, @samp{Identity}
+
A couple of commands are used to insert identities in MH-Letter mode
which are also found in the @samp{Identity} menu.
context are the @samp{From:} and @samp{Organization:} fields, as well
as the signature.
+@vindex mh-identity-list
+
This is done by customizing the option @code{mh-identity-list}. In the
customization buffer for this option, click on the @samp{INS} button
and enter a label such as @samp{Home} or @samp{Work}. Then click on
@cindex Identity menu
@cindex menu, Identity
+@findex mh-insert-identity
+@kindex C-c C-d
You can select the identities you have added via the menu called
@samp{Identity} in the MH-Letter buffer. You can also use @kbd{C-c
C-d} (@code{mh-insert-identity}). To clear the fields and signature
added by the identity, select the @samp{None} identity.
-@cindex @samp{Identity > Save as Default} menu item
+@cindex menu item, @samp{Identity > Customize Identities}
@cindex menu item, @samp{Identity > Save as Default}
-@cindex @samp{Identity > Set Default for Session} menu item
@cindex menu item, @samp{Identity > Set Default for Session}
@cindex @samp{Identity > Customize Identities} menu item
-@cindex menu item, @samp{Identity > Customize Identities}
+@cindex @samp{Identity > Save as Default} menu item
+@cindex @samp{Identity > Set Default for Session} menu item
+@vindex mh-identity-default
The @samp{Identity} menu contains two other items to save you from
having to set the identity on every message. The menu item @samp{Set
Identities} is available for your convenience.
@cindex regular expressions, @code{mh-auto-fields-list}
+@vindex mh-auto-fields-list
The option @code{mh-auto-fields-list} can also be used to set the
identity depending on the recipient to provide even more control. To
Other header fields may be added using this menu item.
@end table
+@findex mh-insert-auto-fields
+@kindex C-c M-d
+@vindex mh-auto-fields-prompt-flag
+
These fields can only be added after the recipient is known. Because
you can continue to add recipients as you edit the draft, MH-E waits
until the message is sent to perform the auto-insertions. This seems
manually. However, if you use this command, the automatic insertion
when the message is sent is disabled.
+@vindex mh-auto-fields-list
+@vindex mh-identity-list
+
You should avoid using the same header field in
@code{mh-auto-fields-list} and @code{mh-identity-list} definitions
that may apply to the same message as the result is undefined.
+@vindex mh-identity-handlers
+@vindex mh-identity-list
+
The option @code{mh-identity-handlers} is used to change the way that
fields, signatures, and attributions in @code{mh-identity-list} are
added. To customize @code{mh-identity-handlers}, replace the name of
click on an @samp{INS} button and insert a field of your choice and
the name of the function you have written to handle it.
+@vindex mh-identity-list
+
The @samp{Field} field can be any field that you've used in your
@code{mh-identity-list}. The special fields @samp{:attribution-verb},
@samp{:signature}, or @samp{:pgg-default-user-id} are used for the
@cindex folder navigation
@cindex speedbar
+@findex mh-visit-folder
+@kindex F v
+@kindex M-x speedbar
+@kindex Mouse-2
You can also use the speedbar
@ifnothtml
count before the next automatic update (@code{mh-speed-refresh}).
@end table
+@findex delete-frame
+@kindex C-x 5 0
+@kindex Mouse-3
+
You can click on @kbd{Mouse-3} to bring up a context menu that
contains these items. Dismiss the speedbar with @kbd{C-x 5 0}
(@code{delete-frame}).
@cindex customization group, @samp{mh-speedbar}
The MH-E speedbar uses the MH command @command{flists}@footnote{See
-the section @uref{@value{MH-BOOK-HOME}/morseq.htm#flist, Searching for
+the section @uref{@value{MH-BOOK-HOME}/morseq.html#flist, Searching for
Sequences with flist} in the MH book.} to generate the list of
folders. The @samp{mh-speedbar} customization group contains the
following option which controls how often the speedbar calls
@node Menu Bar, Tool Bar, Speedbar, Top
@chapter The Menu Bar
-@cindex menu bar
-
+@cindex @samp{Folder} menu
+@cindex @samp{Identity} menu
+@cindex @samp{Letter} menu
+@cindex @samp{Message} menu
+@cindex @samp{Search} menu
+@cindex @samp{Sequence} menu
@cindex Folder menu
@cindex Identity menu
@cindex Letter menu
@cindex Message menu
@cindex Search menu
@cindex Sequence menu
+@cindex menu bar
@cindex menu, Folder
@cindex menu, Identity
@cindex menu, Letter
@cindex menu, Message
@cindex menu, Search
@cindex menu, Sequence
+@cindex menu, @samp{Folder}
+@cindex menu, @samp{Identity}
+@cindex menu, @samp{Letter}
+@cindex menu, @samp{Message}
+@cindex menu, @samp{Search}
+@cindex menu, @samp{Sequence}
@cindex modes, MH-Folder
@cindex modes, MH-Letter
@cindex modes, MH-Search
@chapter The Tool Bar
@cindex tool bar
-@cindex @samp{mh-tool-bar} customization group
-@cindex customization group, @samp{mh-tool-bar}
Emacs also provides a graphical tool bar. For a description of the
tool bar, please
Tool Bars} in @cite{The GNU Emacs Manual}.
@end ifhtml
+@cindex @samp{mh-tool-bar} customization group
+@cindex customization group, @samp{mh-tool-bar}
+
MH-E adds several icons to this tool bar; you can modify the MH-E
aspects of the tool bar via the @samp{mh-tool-bar} customization group.
bar. In XEmacs, you have the opportunity to create a separate tool bar for
the MH-E icons.
+@vindex mh-tool-bar-folder-buttons
+@vindex mh-tool-bar-letter-buttons
+
In either case, you can select which of these functions you'd like to
see by customizing the options @code{mh-tool-bar-folder-buttons} and
@code{mh-tool-bar-letter-buttons}. As you probably guessed, the former
check the functions whose icons you want to see and clear the check
boxes for those you don't.
+@findex mh-search
+@vindex mh-tool-bar-search-function
+
The function associated with the searching icon can be set via the
option @code{mh-tool-bar-search-function}. By default, this is set to
@code{mh-search}. @xref{Searching}. You can also choose @samp{Other
Function} from the @samp{Value Menu} and enter a function of your own
choosing.
+@vindex mh-xemacs-use-tool-bar-flag
+
XEmacs provides a couple of extra options. The first,
@code{mh-xemacs-use-tool-bar-flag}, controls whether to show the MH-E
icons at all. By default, this option is turned on if the window
system supports tool bars. If your system doesn't support tool bars,
then you won't be able to turn on this option.
+@vindex mh-xemacs-tool-bar-position
+
The second extra option is @code{mh-xemacs-tool-bar-position} which
controls the placement of the tool bar along the four edges of the
frame. You can choose from one of @samp{Same As Default Tool Bar},
@samp{Top}, @samp{Bottom}, @samp{Left}, or @samp{Right}. If this
variable is set to anything other than @samp{Same As Default Tool Bar}
and the default tool bar is in a different location, then two tool
-bars will be displayed: the MH-E tool bar and the default tool bar."
+bars will be displayed: the MH-E tool bar and the default tool bar.
@node Searching, Threading, Tool Bar, Top
@chapter Searching Through Messages
+@cindex @samp{Search} menu
+@cindex menu, @samp{Search}
@cindex searching
-
@findex mh-search
@kindex F s
Folder heading face in MH-Folder buffers created by searches.
@end vtable
+@findex mh-search-folder
+@kindex F s
+
The command @kbd{F s} (@code{mh-search-folder}) helps you find
messages in your entire corpus of mail. You can search for messages to
or from a particular person or about a particular subject. In fact,
you can also search for messages containing selected strings in any
arbitrary header field or any string found within the messages.
+@cindex @command{pick}
+@cindex MH commands, @command{pick}
+
Out of the box, MH-E uses @command{pick} to find messages. With a
little extra effort, you can set an indexing program which rewards you
with extremely quick results. The drawback is that sometimes the index
@cartouche
@smallexample
-From: #
+From:
To:
Cc:
Date:
Subject:
--------
+#
-
---:** search-pattern (MH-Search)--L1--All-----------------------------
-
+--:** search-pattern All L7 (MH-Search)---------------------------
+Type C-c C-c to search messages, C-c C-p to use pick, C-c ? for help
@end smallexample
@end cartouche
@i{Search window}
@end group
@end smallexample
+@findex mh-to-field
+@kindex C-c C-f C-t
+
As with MH-Letter mode, MH-Search provides commands like @kbd{C-c C-f
C-t} (@code{mh-to-field}) to help you fill in the blanks.
@xref{Editing Message}.
+@kindex F s
+@vindex mh-search-mode-hook
+
If you find that you do the same thing over and over when editing the
search template, you may wish to bind some shortcuts to keys. This can
be done with the variable @code{mh-search-mode-hook}, which is called
when @kbd{F s} is run on a new pattern.
-@cindex @samp{+mhe-index}
-@cindex folders, @samp{+mhe-index}
@findex mh-index-do-search
-@findex mh-index-next-folder
-@findex mh-index-previous-folder
@findex mh-pick-do-search
-@kindex @key{TAB}
@kindex C-c C-c
-@kindex F s
-@kindex S-@key{TAB}
-@vindex mh-search-folder
+@kindex C-c C-p
To perform the search, type @kbd{C-c C-c} (@code{mh-index-do-search}).
Sometimes you're searching for text that is either not indexed, or
method with the pick method by running the command @kbd{C-c C-p}
(@code{mh-pick-do-search}).
+@cindex folders, @samp{+mhe-index}
+@cindex @samp{+mhe-index}
+@findex mh-index-next-folder
+@findex mh-index-previous-folder
+@kindex @key{TAB}
+@kindex S-@key{TAB}
+@vindex mh-search-folder
+
The messages that are found are put in a temporary sub-folder of
@samp{+mhe-index} and are displayed in an MH-Folder buffer. This
buffer is special because it displays messages from multiple folders;
(@code{mh-index-next-folder}) and @kbd{S-@key{TAB}}
(@code{mh-index-previous-folder}).
+@findex mh-index-visit-folder
+@findex mh-rescan-folder
+@kindex F r
+@kindex v
+
In addition, the command @kbd{v} (@code{mh-index-visit-folder}) can be
used to visit the folder of the message at point. Initially, only the
messages that matched the search criteria are displayed in the folder.
interesting message, or to view surrounding messages with the command
@kbd{F r} @code{mh-rescan-folder}. @xref{Folders}.
+@findex mh-kill-folder
+@kindex F k
+
Because this folder is temporary, you'll probably get in the habit of
killing it when you're done with @kbd{F k} (@code{mh-kill-folder}).
@xref{Folders}.
+@kindex F s
+
You can regenerate the results by running @kbd{F s} with a prefix
argument.
daily from cron:
@smallexample
- swish-e -c /home/user/Mail/.swish/config
+swish-e -c /home/user/Mail/.swish/config
@end smallexample
@subsection mairix
This search method does not require any setup.
Read @command{pick}(1) or the section
-@uref{@value{MH-BOOK-HOME}/finpic.htm, Finding Messages with pick} in
+@uref{@value{MH-BOOK-HOME}/finpic.html, Finding Messages with pick} in
the MH book to find out more about how to enter the criteria.
@subsection grep
limiting (@pxref{Limits}) or using full-text indexed searches
(@pxref{Searching}).
+@cindex root, in threads
+@cindex siblings, in threads
+@cindex ancestor, in threads
+
A thread begins with a single message called a @dfn{root}. All replies
to the same message are @dfn{siblings} of each other. Any message that
has replies to it is an @dfn{ancestor} of those replies.
Display ancestor of current message (@code{mh-thread-ancestor}).
@end table
+@cindex @samp{mh-thread} customization group
+@cindex customization group, @samp{mh-thread}
+
The @samp{mh-thread} customization group contains one option.
@vtable @code
On means new folders start in threaded mode (default: @samp{off}).
@end vtable
+@findex mh-toggle-threads
+@kindex T t
+@vindex mh-large-folder
+@vindex mh-show-threads-flag
+
Threading large number of messages can be time consuming so the option
@code{mh-show-threads-flag} is turned off by default. If you turn on
this option, then threading will be done only if the number of
event, threading can be turned on (and off) with the command @kbd{T t}
(@code{mh-toggle-threads}).
+@findex mh-thread-ancestor
+@findex mh-thread-next-sibling
+@findex mh-thread-previous-sibling
+@kindex T n
+@kindex T p
+@kindex T u
+
There are a few commands to help you navigate threads. If you do not
care for the way a particular thread has turned, you can move up the
chain of messages with the command @kbd{T u}
sibling, skipping the sub-threads. The command @kbd{T u} can also take
a prefix argument to jump to the message that started everything.
+@findex mh-delete-subject-or-thread
+@findex mh-thread-delete
+@findex mh-thread-refile
+@kindex k
+@kindex T d
+@kindex T o
+
There are threaded equivalents for the commands that delete and refile
messages. For example, @kbd{T o} (@code{mh-thread-refile}) refiles the
current message and all its children. Similarly, the command @kbd{T d}
@xref{Navigating}, for a description of the similar command @kbd{k}
(@code{mh-delete-subject-or-thread}).
+@vindex mh-large-folder
+
If you find that threading is too slow, it may be that you have
-@code{mh-large-folder} set too high. Threading is one of the few
+@code{mh-large-folder} set too high. Also, threading is one of the few
features of MH-E that really benefits from compiling. If you haven't
-compiled MH-E, I encourage you to do so@footnote{If you're not sure
-if MH-E has been byte-compiled, you could try running @samp{locate
+compiled MH-E, I encourage you to do so@footnote{If you're not sure if
+MH-E has been byte-compiled, you could try running @samp{locate
mh-thread.elc} or otherwise find MH-E on your system and ensure that
@file{mh-thread.elc} exists. If you have multiple versions and you
find that one is compiled but the other is not, then go into your
@cindex @command{pick}
@cindex MH commands, @command{pick}
+@findex mh-narrow-to-cc
+@findex mh-narrow-to-from
+@findex mh-narrow-to-subject
+@findex mh-narrow-to-to
+@kindex / c
+@kindex / m
+@kindex / s
+@kindex / t
-The commands @kbd{/ c}, @code{/ m}, @code{/ s}, and @code{/ t}
-restrict the display to messages matching the content of the
-respective field in the current message. However, you can give any of
-these a prefix argument to edit the @command{pick} expression used to
-narrow the view@footnote{See @command{pick}(1) or the section
-@uref{@value{MH-BOOK-HOME}/finpic.htm, Finding Messages with pick} in
+The commands @kbd{/ c} (@code{mh-narrow-to-cc}), @kbd{/ m}
+(@code{mh-narrow-to-from}), @kbd{/ s} (@code{mh-narrow-to-subject}),
+and @kbd{/ t} (@code{mh-narrow-to-to}) restrict the display to
+messages matching the content of the respective field in the current
+message. However, you can give any of these a prefix argument to edit
+the @command{pick} expression used to narrow the view@footnote{See
+@command{pick}(1) or the section
+@uref{@value{MH-BOOK-HOME}/finpic.html, Finding Messages with pick} in
the MH book.}.
@cindex @samp{tick} sequence
@cindex sequence, @samp{tick}
@cindex ticked messages, viewing
+@findex mh-narrow-to-range
+@findex mh-narrow-to-tick
+@kindex / '
+@kindex / g
You can also limit the display to messages in the @samp{tick} sequence
with the command @kbd{/ '} (@code{mh-narrow-to-tick}).
@samp{tick} sequence. Use the @kbd{/ g} (@code{mh-narrow-to-range})
command to limit the display to messages in a range (@pxref{Ranges}).
+@findex mh-widen
+@kindex / w
+
Each limit can be undone in turn with the @kbd{/ w} (@code{mh-widen})
command. Give this command a prefix argument to remove all limits.
@node Sequences, Junk, Limits, Top
@chapter Using Sequences
+@cindex @samp{Sequence} menu
+@cindex menu, @samp{Sequence}
@cindex sequences
For the whole scoop on MH sequences, refer to
@samp{mh-sequence}(5)@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/morseq.htm, More About Sequences} in the MH
+@uref{@value{MH-BOOK-HOME}/morseq.html, More About Sequences} in the MH
book.}. As you've read, several of the MH-E commands can operate on a
sequence, which is a shorthand for a range or group of messages. For
example, you might want to forward several messages to a friend or
@cindex @command{pick}
@cindex MH commands, @command{pick}
+@findex mh-put-msg-in-seq
+@kindex S p
To place a message in a sequence, use @kbd{S p}
(@code{mh-put-msg-in-seq}). Give @kbd{S p} a range and you can add all
@cindex @samp{tick} sequence
@cindex sequence, @samp{tick}
@cindex ticking messages
+@findex mh-index-ticked-messages
+@findex mh-toggle-tick
+@kindex '
+@kindex F '
+@kindex S p
One specific use of the @kbd{S p} command is @kbd{'}
(@code{mh-toggle-tick}) which adds messages to the @samp{tick}
-sequence. This sequence can be viewed later with the @kbd{F '} command
-(@pxref{Folders}).
+sequence. This sequence can be viewed later with the @kbd{F '}
+(@code{mh-index-ticked-messages}) command (@pxref{Folders}).
+
+@vindex mh-tick-seq
You can customize the option @code{mh-tick-seq} if you already use the
@samp{tick} sequence for your own use. You can also disable all of the
@cindex MH-Folder mode
@cindex modes, MH-Folder
+@findex mh-narrow-to-seq
+@findex mh-narrow-to-tick
+@findex mh-widen
+@kindex S '
+@kindex S n
+@kindex S w
Once you've placed some messages in a sequence, you may wish to narrow
the field of view to just those messages in the sequence you've
widen the view to all your messages again, use @kbd{S w}
(@code{mh-widen}).
-@cindex @samp{*MH-E Sequences*}
@cindex buffers, @samp{*MH-E Sequences*}
+@cindex @samp{*MH-E Sequences*}
+@findex mh-list-sequences
+@findex mh-msg-is-in-seq
+@kindex S l
+@kindex S s
You can see which sequences in which a message appears with the
command @kbd{S s} (@code{mh-msg-is-in-seq}). Use a prefix argument to
(@code{mh-list-sequences}). The list appears in a buffer named
@samp{*MH-E Sequences*} (@pxref{Miscellaneous}).
-@cindex @samp{Previous-Sequence:} MH profile component
-@cindex @samp{cur} sequence
@cindex MH profile component, @samp{Previous-Sequence:}
-@cindex sequence, @samp{Previous-Sequence}
+@cindex @samp{cur} sequence
+@cindex @samp{Previous-Sequence:} MH profile component
@cindex sequence, @samp{cur}
+@cindex sequence, @samp{Previous-Sequence}
+@vindex mh-refile-preserves-sequences-flag
If a message is in any sequence (except
@samp{Previous-Sequence:}@footnote{See @samp{mh-profile}(5)).} and
sequences in the destination folder. If this behavior is not desired,
then turn off the option @code{mh-refile-preserves-sequences-flag}.
+@findex mh-delete-msg-from-seq
+@findex mh-delete-seq
+@kindex d
+@kindex S d
+@kindex S k
+
If you want to remove a message (or range, @pxref{Ranges}) from a
sequence, use @kbd{S d} (@code{mh-delete-msg-from-seq}). If you want
to delete an entire sequence, use @kbd{S k} (@code{mh-delete-seq}). In
Mail}).
@cindex @samp{Unseen-Sequence:} MH profile component
+@cindex @samp{cur} sequence
+@cindex @samp{tick} sequence
@cindex MH profile component, @samp{Unseen-Sequence:}
@cindex sequence, @samp{Unseen-Sequence}
+@cindex sequence, @samp{cur}
+@cindex sequence, @samp{tick}
+@findex mh-update-sequences
+@kindex M-x mh-update-sequences
+@kindex q
+@kindex x
+@vindex mh-tick-seq
+@vindex mh-update-sequences-after-mh-show-flag
Three sequences are maintained internally by MH-E and pushed out to MH
when a message is shown. They include the sequence specified by your
@cindex @command{mark}
@cindex MH commands, @command{mark}
+@kindex S n
+@kindex S w
With the exceptions of @kbd{S n} and @kbd{S w}, the underlying MH
command dealing with sequences is @command{mark}@footnote{See the
-section @uref{@value{MH-BOOK-HOME}/mmbwm.htm, Make Message Bookmarks
+section @uref{@value{MH-BOOK-HOME}/mmbwm.html, Make Message Bookmarks
with mark} in the MH book.}.
@node Junk, Miscellaneous, Sequences, Top
@cindex spam filters, Spamassassin
@cindex spam filters, bogofilter
-MH-E depends on @uref{http://www.spamassassin.org/, SpamAssassin},
+MH-E depends on @uref{http://spamassassin.apache.org/, SpamAssassin},
@uref{http://bogofilter.sourceforge.net/, bogofilter}, or
@uref{http://spamprobe.sourceforge.net/, SpamProbe} to throw the dreck
away. This chapter describes briefly how to configure these programs
to work well with MH-E and how to use MH-E's interface that provides
continuing education for these programs.
+@vindex mh-junk-program
+
The default setting of the option @code{mh-junk-program} is
@samp{Auto-detect} which means that MH-E will automatically choose one
of SpamAssassin, bogofilter, or SpamProbe in that order. If, for
want to use bogofilter, then you can set this option to
@samp{Bogofilter}.
+@findex mh-junk-blacklist
+@kindex J b
+@vindex mh-junk-disposition
+
The command @kbd{J b} (@code{mh-junk-blacklist}) trains the spam
program in use with the content of the range (@pxref{Ranges}) and then
handles the message(s) as specified by the option
@samp{Delete Spam} but you can also specify the name of the folder
which is useful for building a corpus of spam for training purposes.
+@findex mh-junk-whitelist
+@kindex J w
+
In contrast, the command @kbd{J w} (@code{mh-junk-whitelist})
reclassifies a range of messages (@pxref{Ranges}) as ham if it were
incorrectly classified as spam. It then refiles the message into the
@file{+inbox} folder.
+@vindex mh-junk-background
+
By default, the programs are run in the foreground, but this can be
slow when junking large numbers of messages. If you have enough memory
or don't junk that many messages at the same time, you might try
@cindex @file{.procmailrc}
@cindex files, @file{.procmailrc}
-@heading SpamAssassin
+@subheading SpamAssassin
+
+@cindex Spamassassin
+@cindex spam filters, Spamassassin
SpamAssassin is one of the more popular spam filtering programs. Get
it from your local distribution or from the
-@uref{http://spamassassin.org/, SpamAssassin web site}.
+@uref{http://spamassassin.apache.org/, SpamAssassin web site}.
To use SpamAssassin, add the following recipes to @file{~/.procmailrc}:
First, run @samp{spamassassin -t} on every mail message in your
archive and use @command{gnumeric} to verify that the average plus the
standard deviation of good mail is under 5, the SpamAssassin default
-for "spam".
+for ``spam''.
Using @command{gnumeric}, sort the messages by score and view the
messages with the highest score. Determine the score which encompasses
rules-based filters is a plethora of false positives so it is
worthwhile to check.
+@findex mh-junk-blacklist
+@findex mh-junk-whitelist
+@kindex J b
+@kindex J w
+
If SpamAssassin classifies a message incorrectly, or is unsure, you can
use the MH-E commands @kbd{J b} (@code{mh-junk-blacklist}) and
@kbd{J w} (@code{mh-junk-whitelist}).
0 * * * * sa-learn --rebuild > /dev/null 2>&1
@end smallexample
-@heading Bogofilter
+@subheading Bogofilter
+
+@cindex bogofilter
+@cindex spam filters, bogofilter
Bogofilter is a Bayesian spam filtering program. Get it from your
local distribution or from the
spam/unsure/.
@end smallexample
+@findex mh-junk-blacklist
+@findex mh-junk-whitelist
+@kindex J b
+@kindex J w
+
If bogofilter classifies a message incorrectly, or is unsure, you can
use the MH-E commands @kbd{J b} (@code{mh-junk-blacklist}) and @kbd{J
w} (@code{mh-junk-whitelist}) to update bogofilter's training.
The @cite{Bogofilter tuning HOWTO} describes how you can fine-tune
bogofilter.
-@heading SpamProbe
+@subheading SpamProbe
+
+@cindex SpamProbe
+@cindex spam filters, SpamProbe
SpamProbe is a Bayesian spam filtering program. Get it from your local
distribution or from the @uref{http://spamprobe.sourceforge.net,
spam/.
@end smallexample
+@findex mh-junk-blacklist
+@findex mh-junk-whitelist
+@kindex J b
+@kindex J w
+
If SpamProbe classifies a message incorrectly, you can use the MH-E
commands @kbd{J b} (@code{mh-junk-blacklist}) and @kbd{J w}
(@code{mh-junk-whitelist}) to update SpamProbe's training.
-@heading Other Things You Can Do
+@subheading Other Things You Can Do
There are a couple of things that you can add to @file{~/.procmailrc}
in order to filter out a lot of spam and viruses. The first is to
system.
@end ftable
-@cindex @samp{*MH-E Info*}
-@cindex MH-E version
@cindex buffers, @samp{*MH-E Info*}
+@cindex MH-E version
+@cindex @samp{*MH-E Info*}
@cindex version
+@kindex M-x mh-version
One command worth noting is @kbd{M-x mh-version}. You can compare the
version this command prints to the latest release (@pxref{Getting
@samp{*MH-E Info*}, should usually be included with any bug report you
submit (@pxref{Bug Reports}).
-@heading MH-E Buffers
+@subheading MH-E Buffers
Besides the MH-Folder, MH-Show, and MH-Letter buffers, MH-E creates
several other buffers. They are:
@c -------------------------
@cindex @samp{*mh-temp*}
@cindex buffers, @samp{*mh-temp*}
-@item *mh-temp
+@item *mh-temp*
This is a scratch, ephemeral, buffer used by MH-E functions. Note that
it is hidden because the first character in the name is a space.
You'll generally not have any need for this buffer.
@samp{Use MH-E scan Format}).
@c -------------------------
@item mh-scan-prog
-Program used to scan messages (default: @samp{"scan"}).
+Program used to scan messages (default: @code{"scan"}).
@end vtable
-@findex mh-set-cmd-note
@vindex mh-adaptive-cmd-note-flag
-@vindex mh-scan-format-file
There are a couple of caveats when creating your own scan format file.
First, MH-E will not work if your scan lines do not include message
(@pxref{Threading}).
@cindex message numbers
+@findex mh-set-cmd-note
+@vindex mh-adaptive-cmd-note-flag
+@vindex mh-scan-format-file
If you've created your own format to handle long message numbers,
you'll be pleased to know you no longer need it since MH-E adapts its
format file (see @code{mh-scan-format-file}). For example, the default
width is 4, so you would use @samp{(mh-set-cmd-note 4)}.
-@vindex mh-scan-format-nmh
+@vindex mh-adaptive-cmd-note-flag
+@vindex mh-scan-format-file
@vindex mh-scan-format-mh
+@vindex mh-scan-format-nmh
The default setting for @code{mh-scan-format-file} is @samp{Use MH-E
scan Format}. This means that the format string will be taken from the
you can set this option to @samp{Specify a scan Format File} and enter
the name of your format file.
+@vindex mh-scan-format-file
+@vindex mh-scan-format-mh
+@vindex mh-scan-format-nmh
+
The scan format that MH-E uses when @code{mh-scan-format-file} is set
to its default of @samp{Use MH-E scan Format} is held in the variables
@code{mh-scan-format-nmh} and @code{mh-scan-format-mh} depending on
"%(decode@{subject@})%<@{body@}<<%@{body@}%>")
@end smallexample
-@cindex RFC 2047, decoding
@cindex decoding RFC 2047
+@cindex RFC 2047, decoding
+@vindex mh-scan-format-mh
The setting for @code{mh-scan-format-mh} is similar, except that MH
doesn't have the function @code{decode} (which is used to decode RFC
@vindex mh-scan-prog
The name of the program that generates a listing of one line per
-message is held in @code{mh-scan-prog} (default: @samp{"scan"}).
+message is held in @code{mh-scan-prog} (default: @code{"scan"}).
Unless this variable contains an absolute pathname, it is assumed to
be in the @code{mh-progs} directory (@pxref{Getting Started}). You may
link another program to @command{scan} (see @samp{mh-profile}(5)) to
produce a different type of listing@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/faswsprs.htm, Find and Specify with scan
+@uref{@value{MH-BOOK-HOME}/faswsprs.html, Find and Specify with scan
pick Ranges Sequences} in the MH book.}.
@cindex regular expressions, scan line formats
+@findex mh-set-cmd-note
+@findex setq
If you change the format of the scan lines you'll need to tell MH-E
how to parse the new format. As you will see, quite a lot of variables
-are involved to do that. Use @samp{M-x apropos @key{RET} mh-scan.*regexp'}
-to obtain a list of these variables. You will also have to call
-@code{mh-set-cmd-note} if your notations are not in column 4 (columns
-in Emacs start with 0). Note that unlike most of the user options
-described in this manual, these are variables and must be set with
-@code{setq} instead of in a customization buffer. For help with
-regular expressions, see
+are involved to do that. Use @kbd{M-x apropos @key{RET}
+mh-scan.*regexp @key{RET}} to obtain a list of these variables. You
+will also have to call @code{mh-set-cmd-note} if your notations are
+not in column 4 (columns in Emacs start with 0). Note that unlike most
+of the user options described in this manual, these are variables and
+must be set with @code{setq} instead of in a customization buffer. For
+help with regular expressions, see
@ifnothtml
@ref{Regexps, , Syntax of Regular Expressions, emacs, The
-GNU Emacs Manual}
+GNU Emacs Manual}.
@end ifnothtml
@ifhtml
-the section
+section
@uref{http://www.gnu.org/software/emacs/manual/html_node/Regexps.html,
-Syntax of Regular Expressions} in
-@cite{The GNU Emacs Manual}).
+Syntax of Regular Expressions} in @cite{The GNU Emacs Manual}.
@end ifhtml
The first variable has to do with pruning out garbage.
This regular expression describes a valid scan line. This is used to
eliminate error messages that are occasionally produced by
@command{inc}@footnote{See the section
-@uref{@value{MH-BOOK-HOME}/reapre.htm, Reading Mail: inc show next
-prev} in the MH book.} or @command{scan} (default: @samp{"^ *[0-9]"}).
+@uref{@value{MH-BOOK-HOME}/reapre.html, Reading Mail: inc show next
+prev} in the MH book.} or @command{scan} (default: @code{"^ *[0-9]"}).
@end vtable
Next, many variables control how the scan lines are parsed.
-@vindex mh-folder-font-lock-keywords
-
@vtable @code
@vindex mh-folder-body
@vindex mh-folder-font-lock-keywords
the default setting of @code{mh-folder-font-lock-keywords} expects
this expression to contain at least one parenthesized expression which
matches the body text as in the default of
-@samp{"\\(<<\\([^\n]+\\)?\\)"}. If this regular expression is not
+@code{"\\(<<\\([^\n]+\\)?\\)"}. If this regular expression is not
correct, the body fragment will not be highlighted with the face
@code{mh-folder-body}.
@c -------------------------
from the beginning of the line. Note that the default setting of
@code{mh-folder-font-lock-keywords} expects this expression to contain
at least one parenthesized expression which matches the message number
-as in the default of @w{@samp{"^\\( *[0-9]+\\+\\).*"}}. This
+as in the default of @w{@code{"^\\( *[0-9]+\\+\\).*"}}. This
expression includes the leading space and current message marker
@samp{+} within the parenthesis since it looks better to highlight
these items as well. The highlighting is done with the face
default setting of @code{mh-folder-font-lock-keywords} expects this
expression to contain only one parenthesized expression which matches
the date field as in the default of
-@samp{"\\([0-9][0-9]/[0-9][0-9]\\)"}. If this regular expression is
+@code{"\\([0-9][0-9]/[0-9][0-9]\\)"}. If this regular expression is
not correct, the date will not be highlighted with the face
@code{mh-folder-date}.
@c -------------------------
the beginning of the line. Note that the default setting of
@code{mh-folder-font-lock-keywords} expects this expression to contain
at least one parenthesized expression which matches the message number
-as in the default of @samp{"^\\( *[0-9]+\\)D"}. This expression
+as in the default of @code{"^\\( *[0-9]+\\)D"}. This expression
includes the leading space within the parenthesis since it looks
better to highlight it as well. The highlighting is done with the face
@code{mh-folder-deleted}. This regular expression should be correct as
the beginning of the line. Note that the default setting of
@code{mh-folder-font-lock-keywords} expects this expression to contain
at least one parenthesized expression which matches the message number
-as in the default of @w{@samp{"^\\( *[0-9]+\\)[^D^0-9]"}}. This
+as in the default of @w{@code{"^\\( *[0-9]+\\)[^D^0-9]"}}. This
expression includes the leading space within the parenthesis since it
looks better to highlight it as well. The highlighting is done with
the face @code{mh-folder-msg-number}. This regular expression should
@item mh-scan-msg-format-regexp
This regular expression finds the message number width in a scan
format. Note that the message number must be placed in a parenthesized
-expression as in the default of @samp{"%\\([0-9]*\\)(msg)"}. This
+expression as in the default of @code{"%\\([0-9]*\\)(msg)"}. This
variable is only consulted if @code{mh-scan-format-file} is set to
@samp{Use MH-E scan Format}.
@c -------------------------
This is a format string for the width of the message number in a scan
format. Use @samp{0%d} for zero-filled message numbers. This variable
is only consulted if @code{mh-scan-format-file} is set to @samp{Use
-MH-E scan Format} (default: @samp{"%d"}).
+MH-E scan Format} (default: @code{"%d"}).
@c -------------------------
@item mh-scan-msg-number-regexp
This regular expression extracts the message number. It must match
from the beginning of the line. Note that the message number must be
-placed in a parenthesized expression as in the default of @w{@samp{"^
+placed in a parenthesized expression as in the default of @w{@code{"^
*\\([0-9]+\\)"}}.
@c -------------------------
@item mh-scan-msg-overflow-regexp
This regular expression matches overflowed message numbers (default:
-@samp{"^[?0-9][0-9]"}).
+@code{"^[?0-9][0-9]"}).
@c -------------------------
@item mh-scan-msg-search-regexp
This regular expression matches a particular message. It is a format
string; use @samp{%d} to represent the location of the message number
-within the expression as in the default of @samp{"^[^0-9]*%d[^0-9]"}.
+within the expression as in the default of @code{"^[^0-9]*%d[^0-9]"}.
@c -------------------------
@vindex mh-folder-address
@vindex mh-folder-font-lock-keywords
expects this expression to contain two parenthesized expressions. The
first is expected to match the @samp{To:} that the default scan format
file generates. The second is expected to match the recipient's name
-as in the default of @samp{"\\(To:\\)\\(..............\\)"}. If this
+as in the default of @code{"\\(To:\\)\\(..............\\)"}. If this
regular expression is not correct, the @samp{To:} string will not be
highlighted with the face @code{mh-folder-to} and the recipient will not be
highlighted with the face @code{mh-folder-address}.
the beginning of the line. Note that the default setting of
@code{mh-folder-font-lock-keywords} expects this expression to contain
at least one parenthesized expression which matches the message number
-as in the default of @w{@samp{"^\\( *[0-9]+\\)\\^"}}. This expression
+as in the default of @w{@code{"^\\( *[0-9]+\\)\\^"}}. This expression
includes the leading space within the parenthesis since it looks
better to highlight it as well. The highlighting is done with the face
@code{mh-folder-refiled}. This regular expression should be correct as
first should match the fontification hint (see
@code{mh-scan-format-nmh}) and the second should match the user name
as in the default of
-@w{@samp{"^ *[0-9]+.\\([bct]\\).....[ ]*\\(..................\\)"}}.
+@w{@code{"^ *[0-9]+.\\([bct]\\).....[ ]*\\(..................\\)"}}.
If this regular expression is not correct, the notation hints will not
be highlighted with the face @code{mh-mh-folder-sent-to-me-hint} and
the sender will not be highlighted with the face
sub-expression of the first expression). The third is expected to
match the subject line itself which is highlighted with the face
@code{mh-folder-subject}. For example, the default is
-@w{@samp{"^ *[0-9]+........[ ]*...................}}@*
-@w{@samp{\\([Rr][Ee]\\(\\[[0-9]+\\]\\)?:\\s-*\\)*\\([^<\n]*\\)"}}.
+@w{@code{"^ *[0-9]+........[ ]*...................}}@*
+@w{@code{\\([Rr][Ee]\\(\\[[0-9]+\\]\\)?:\\s-*\\)*\\([^<\n]*\\)"}}.
This regular expression should be correct as it is needed by
non-fontification functions. Note that this example is broken up on
two lines for readability, but is actually a single string.
the scan lines.
@vtable @code
+@findex mh-set-cmd-note
+@vindex mh-adaptive-cmd-note-flag
@item mh-cmd-note
Column for notations (default: 4). This variable should be set with
the function @code{mh-set-cmd-note}. This variable may be updated
@c -------------------------
@item mh-note-copied
Messages that have been copied are marked by this character (default:
-@samp{?C}).
+@code{?C}).
@c -------------------------
+@vindex mh-scan-cur-msg-number-regexp
@item mh-note-cur
The current message (in MH, not in MH-E) is marked by this character
-(default: @samp{?+}). See also @code{mh-scan-cur-msg-number-regexp}.
+(default: @code{?+}). See also @code{mh-scan-cur-msg-number-regexp}.
@c -------------------------
+@vindex mh-scan-deleted-msg-regexp
@item mh-note-deleted
Messages that have been deleted are marked by this character (default:
-@samp{?D}). See also @code{mh-scan-deleted-msg-regexp}.
+@code{?D}). See also @code{mh-scan-deleted-msg-regexp}.
@c -------------------------
@item mh-note-dist
Messages that have been redistributed are marked by this character
-(default: @samp{?R}).
+(default: @code{?R}).
@c -------------------------
@item mh-note-forw
Messages that have been forwarded are marked by this character
-(default: @samp{?F}).
+(default: @code{?F}).
@c -------------------------
@item mh-note-printed
Messages that have been printed are marked by this character (default:
-@samp{?P}).
+@code{?P}).
@c -------------------------
+@vindex mh-scan-refiled-msg-regexp
@item mh-note-refiled
Messages that have been refiled are marked by this character (default:
-@samp{?^}). See also @code{mh-scan-refiled-msg-regexp}.
+@code{?^}). See also @code{mh-scan-refiled-msg-regexp}.
@c -------------------------
@item mh-note-repl
Messages that have been replied to are marked by this character
-(default: @samp{?-}).
+(default: @code{?-}).
@c -------------------------
@item mh-note-seq
Messages in a user-defined sequence are marked by this character
-(default: @samp{?%}). Messages in the @samp{search} sequence are
+(default: @code{?%}). Messages in the @samp{search} sequence are
marked by this character as well.
@end vtable
format places a @samp{+} after the message number for the current
message according to MH; it also uses that column for notations.
-@example
+@smallexample
%20(decode(friendly@{from@})) %50(decode@{subject@}) %4(msg)%<(cur)+%| %>
-@end example
+@end smallexample
+@vindex mh-adaptive-cmd-note-flag
+@vindex mh-scan-format-file
@vindex mh-scan-format-file, example
The first thing you have to do is tell MH-E to use this file.
@vindex mh-scan-valid-regexp, example
-@lisp
+@smalllisp
(setq mh-scan-valid-regexp "[0-9]+[+D^ ]$")
-@end lisp
+@end smalllisp
Now, in order to get rid of the @samp{Cursor not pointing to message}
message, you need to tell MH-E how to access the message number. You
@vindex mh-scan-msg-number-regexp, example
@vindex mh-scan-msg-search-regexp, example
-@lisp
+@smalllisp
(setq mh-scan-msg-number-regexp "^.* \\([0-9]+\\)[+D^ ]$")
(setq mh-scan-msg-search-regexp " %d[+D^ ]$")
-@end lisp
+@end smalllisp
In order to get the next and previous commands working, add this.
@vindex mh-scan-good-msg-regexp, example
-@lisp
+@smalllisp
(setq mh-scan-good-msg-regexp "^.* \\([0-9]+\\)[+D^ ]$")
-@end lisp
+@end smalllisp
Note that the current message isn't marked with a @samp{+} when moving
between the next and previous messages. Here is the code required to
@vindex set-mh-cmd-note, example
@vindex mh-scan-cur-msg-number-regexp, example
-@lisp
+@smalllisp
(set-mh-cmd-note 76)
(setq mh-scan-cur-msg-number-regexp "^.* \\([0-9]+\\)\\+$")
-@end lisp
+@end smalllisp
Finally, add the following to delete and refile messages.
@vindex mh-scan-deleted-msg-regexp, example
@vindex mh-scan-refiled-msg-regexp, example
-@lisp
+@smalllisp
(setq mh-scan-deleted-msg-regexp "^.* \\([0-9]+\\)D$")
(setq mh-scan-refiled-msg-regexp "^.* \\([0-9]+\\)\\^$")
-@end lisp
+@end smalllisp
This is just a bare minimum; it's best to adjust all of the regular
expressions to ensure that MH-E and highlighting perform well.
@samp{unseen} sequence by default, add the following line to your MH
profile:
-@example
+@smallexample
Unseen-Sequence: unseen
-@end example
+@end smallexample
Now view your new messages with the speedbar (@pxref{Speedbar}) or with
@kbd{F n} (@code{mh-index-new-messages}). @xref{Folders}.
@samp{Path} box and enter @file{~/Mail} to tell Gnus where to find
your mail.
@c -------------------------
+@vindex mail-user-agent
@item message-mail-user-agent
In order to send mail within Gnus using MH-E, set this option to
-@samp{mail-user-agent} and set the @samp{mail-user-agent} option to
+@samp{mail-user-agent} and set the @code{mail-user-agent} option to
@samp{Emacs interface to MH}.
@c -------------------------
@item nnmail-keep-last-article
to the GnuCash mailing list, substitute one to which you are
subscribed.
-@example
+@smallexample
MAILDIR=$HOME/`mhparam Path`
# Place mail sent to the GnuCash mailing list in gnucash.spool, where
# Gnus will pick it up.
:0:
* ^TO.*gnucash.*@.*gnucash.org
gnucash.spool
-@end example
+@end smallexample
Wait for some messages to appear in @file{gnucash.spool} and run Gnus
with @kbd{M-x gnus @key{RET}}. To view the folder created in the
@node Bug Reports, Mailing Lists, Odds and Ends, Odds and Ends
@appendixsec Bug Reports
-@cindex SourceForge
@cindex bugs
+@cindex SourceForge
+@kindex M-x mh-version
Bug reports should be filed at
-@uref{https://sourceforge.net/bugs/?group_id=13357, SourceForge}. You
-need to be a SourceForge user to submit bug reports, but this is easy
-enough to do that it shouldn't be a restriction for you. Please
-include the output of @kbd{M-x mh-version} (@pxref{Miscellaneous}) in
-any bug report you send unless you're 110% positive we won't ask for
-it.
+@uref{https://sourceforge.net/tracker/?group_id=13357&atid=113357,
+SourceForge}. You need to be a SourceForge user to submit bug reports,
+but this is easy enough to do that it shouldn't be a restriction for
+you. Please include the output of @kbd{M-x mh-version}
+(@pxref{Miscellaneous}) in any bug report you send unless you're 110%
+positive we won't ask for it.
@node Mailing Lists, MH FAQ and Support, Bug Reports, Odds and Ends
@appendixsec MH-E Mailing Lists
@cindex support
You can find FAQs on MH-E at the
-@uref{https://sourceforge.net/support/?group_id=13357, Support
-Requests} page on SourceForge. If you don't find the answer to your
-question, file a support request and your question will become a new
-FAQ!
+@uref{https://sourceforge.net/tracker/?group_id=13357&atid=213357,
+Support Requests} page on SourceForge. If you don't find the answer to
+your question, file a support request and your question will become a
+new FAQ!
@node Getting MH-E, , MH FAQ and Support, Odds and Ends
@appendixsec Getting MH-E
@cindex change log
@cindex release notes
-@c intentionally wordy to avoid overfull hbox
New MH-E releases are always available for downloading at
@uref{https://sourceforge.net/project/showfiles.php?group_id=13357,
SourceForge} before they appear in an Emacs release. You can read the
MH-E has to offer (although we have no doubt that you will be
extremely interested in all new releases).
-@cindex @samp{MH-E-NEWS}
-@cindex @samp{README}
+@cindex Debian
+
+If you use Debian, you can install the Debian
+@uref{http://packages.debian.org/unstable/mail/mh-e, mh-e package}
+instead.
+
@cindex files, @samp{MH-E-NEWS}
@cindex files, @samp{README}
@cindex news
+@cindex @samp{MH-E-NEWS}
+@cindex @samp{README}
+@kindex M-x mh-version
After you download and extract the MH-E tarball, read the
@file{README} file and @file{MH-E-NEWS}. These correspond to the
After a long break, Stephen handed the reins over to me in 2000. I
moved the project to a new site called SourceForge and organized a
great team of developers. Our first release in late 2001 was version
-6. It appeared in Emacs 21.2 and had menus and tool bar buttons.
+6. It appeared around the time of Emacs 21.2 and had menus and tool
+bar buttons.
Then, indexed searches, improved MIME handling, a speedbar, multiple
identities, alias completion, an index view of unseen messages, spam
software support, Face and X-Image-URL header field support, Fcc
completion, arbitrary range handling, and draft form editing were
-introduced in the version 7 series in Emacs 21.4 (2004).
+introduced in the version 7 series around the time of Emacs 21.4
+(2004). Still, Emacs itself contained version 5 of MH-E released back
+in 1994.
Version 8 development was mostly driven by the rewrite of the manual.
It also brought mailutils support, S/MIME support, picon support, and
an improved interface for hiding header fields. The CVS repository was
migrated from SourceForge to Savannah (only for those files that were
already part of Emacs) and the software was completely reorganized to
-push back two decades of entropy. It appeared in Emacs 22.1 (2006).
+push back two decades of entropy. Version 8 will appear in Emacs 22.1,
+expected to be released in 2006.
Bill Wohler, February 2006