Move the parts of the old man/makefile.w32-in that do not refer to the
[bpt/emacs.git] / doc / misc / mh-e.texi
CommitLineData
4009494e
GM
1\input texinfo @c -*-texinfo-*-
2@c
3@c Note: This document requires makeinfo version 4.6 or greater to build.
4@c
5@c %**start of header
6@setfilename ../info/mh-e
7@settitle The MH-E Manual
8@c %**end of header
9
10@c Version of the software and manual.
11@set VERSION 8.0.3
12@c Edition of the manual. It is either empty for the first edition or
13@c has the form ", nth Edition" (without the quotes).
14@set EDITION
15@set UPDATED 2006-11-12
16@set UPDATE-MONTH November, 2006
17
18@c Other variables.
19@set MH-BOOK-HOME http://rand-mh.sourceforge.net/book/mh
20@set MH-E-HOME http://mh-e.sourceforge.net/
21
22@c Copyright
23@copying
24This is version @value{VERSION}@value{EDITION} of @cite{The MH-E
25Manual}, last updated @value{UPDATED}.
26
27Copyright @copyright{} 1995, 2001, 2002, 2003, 2005, 2006, 2007 Free
28Software Foundation, Inc.
29
30@quotation
31The MH-E manual is free documentation; you can redistribute it and/or
32modify it under the terms of either:
33
34@enumerate a
35@item
36the GNU Free Documentation License, Version 1.2 or any later version
37published by the Free Software Foundation; with no Invariant Sections,
38no Front-Cover Texts, and no Back-Cover Texts.
39
40@item
41the GNU General Public License as published by the Free Software
42Foundation; either version 3, or (at your option) any later version.
43@end enumerate
44
45The MH-E manual is distributed in the hope that it will be useful, but
46WITHOUT ANY WARRANTY; without even the implied warranty of
47MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
48General Public License or GNU Free Documentation License for more
49details.
50
51The GNU General Public License and the GNU Free Documentation License
52appear as appendices to this document. You may also request copies by
53writing to the Free Software Foundation, Inc., 51 Franklin Street,
54Fifth Floor, Boston, MA 02110-1301, USA.
55@end quotation
56@end copying
57
58@c Info Directory Entry
59@dircategory Emacs
60@direntry
61* MH-E: (mh-e). Emacs interface to the MH mail system.
62@end direntry
63
64@c Title Page
65@setchapternewpage odd
66@titlepage
67@title The MH-E Manual
68@subtitle Version @value{VERSION}@value{EDITION}
69@subtitle @value{UPDATE-MONTH}
70@author Bill Wohler
71
72@c Copyright Page
73@page
74@vskip 0pt plus 1filll
75@insertcopying
76@end titlepage
77
78@ifnottex
79@html
80<!--
81@end html
82@node Top, Preface, (dir), (dir)
83@top The MH-E Manual
84@html
85-->
86@end html
87@insertcopying
88@end ifnottex
89
90@c Table of Contents
91@contents
92
93@html
94<!--
95@end html
96
97@menu
98* Preface:: Preface
99* Conventions:: GNU Emacs Terms and Conventions
100* Getting Started:: Getting Started
101* Tour Through MH-E:: Tour Through MH-E
102* Using This Manual:: Using This Manual
103* Incorporating Mail:: Incorporating Mail
104* Reading Mail:: Reading Mail
105* Folders:: Organizing Your Mail with Folders
106* Sending Mail:: Sending Mail
107* Editing Drafts:: Editing a Draft
108* Aliases:: Aliases
109* Identities:: Identities
110* Speedbar:: The Speedbar
111* Menu Bar:: The Menu Bar
112* Tool Bar:: The Tool Bar
113* Searching:: Searching Through Messages
114* Threading:: Viewing Message Threads
115* Limits:: Limiting Display
116* Sequences:: Using Sequences
117* Junk:: Dealing With Junk Mail
118* Miscellaneous:: Miscellaneous Commands, Variables, and Buffers
119* Scan Line Formats:: Scan Line Formats
120* Procmail:: Reading Mailing Lists Effectively
121* Odds and Ends:: Odds and Ends
122* History:: History of MH-E
123* GFDL:: GNU Free Documentation License
124* GPL:: GNU Public License
125* Key Index:: Key (Character) Index
126* Command Index:: Command Index
127* Option Index:: Option (Variable) Index
128* Concept Index:: Concept Index
129
130@detailmenu
131 --- The Detailed Node Listing ---
132
133Tour Through MH-E
134
135* Sending Mail Tour::
136* Reading Mail Tour::
137* Processing Mail Tour::
138* Leaving MH-E::
139* More About MH-E::
140
141Using This Manual
142
143* Options::
144* Ranges::
145* Folder Selection::
146
147Reading Your Mail
148
149* Viewing::
150* Viewing Attachments::
151* HTML::
152* Digests::
153* Reading PGP::
154* Printing::
155* Files and Pipes::
156* Navigating::
157* Miscellaneous Commands and Options::
158
159Sending Mail
160
161* Composing::
162* Replying::
163* Forwarding::
164* Redistributing::
165* Editing Again::
166
167Editing a Draft
168
169* Editing Message::
170* Inserting Letter::
171* Inserting Messages::
172* Signature::
173* Picture::
174* Adding Attachments::
175* Sending PGP::
176* Checking Recipients::
177* Sending Message::
178* Killing Draft::
179
180Odds and Ends
181
182* Bug Reports::
183* Mailing Lists::
184* MH FAQ and Support::
185* Getting MH-E::
186
187History of MH-E
188
189* From Brian Reid::
190* From Jim Larus::
191* From Stephen Gildea::
192* From Bill Wohler::
193
194@end detailmenu
195@end menu
196
197@html
198-->
199@end html
200
201@node Preface, Conventions, Top, Top
202@unnumbered Preface
203
204@cindex Emacs
205@cindex Unix commands, Emacs
206@cindex preface
207
208This manual introduces another interface to the MH mail system that is
209accessible through the GNU Emacs editor, namely, @emph{MH-E}. MH-E is
210easy to use. I don't assume that you know GNU Emacs or even MH at this
211point, since I didn't know either of them when I discovered MH-E.
212However, MH-E was the tip of the iceberg, and I discovered more and
213more niceties about GNU Emacs and MH@. Now I'm fully hooked on both of
214them.
215
216The MH-E package is distributed with GNU Emacs@footnote{Version
217@value{VERSION} of MH-E will appear in GNU Emacs 22.1. It is supported
218in GNU Emacs 21, as well as XEmacs 21 (except for versions
21921.5.9-21.5.16). It is compatible with MH versions 6.8.4 and higher,
220all versions of nmh, and GNU mailutils 1.0 and higher.}, so you
221shouldn't have to do anything special to use it. This manual covers
222MH-E version @value{VERSION}. To help you decide which version you
223have, see @ref{Getting Started}.
224
225@findex help-with-tutorial
226@kindex C-h t
227
228If you don't already use GNU Emacs but want to learn more, you can
229read an online tutorial by starting GNU Emacs and typing @kbd{C-h t}
230(@code{help-with-tutorial}). (To learn about this notation, see
231@ref{Conventions}.) If you want to take the plunge, consult the
232@iftex
233@cite{GNU Emacs Manual},
234@end iftex
235@ifinfo
236@ref{top, , GNU Emacs Manual, emacs, GNU Emacs Manual},
237@end ifinfo
238@ifhtml
239@uref{http://www.gnu.org/software/emacs/manual/html_node/,
240@cite{GNU Emacs Manual}},
241@end ifhtml
242from the Free Software Foundation.
243
244If more information is needed, you can go to the Unix manual pages of
245the individual MH commands. When the name is not obvious, I'll guide
246you to a relevant MH manual page that describes the action more fully.
247
248@cindex @cite{MH & nmh: Email for Users & Programmers}
249@cindex MH book
250@cindex info
251@kindex C-h i
252
253This manual is available in both Info and online formats. The Info
254version is distributed with Emacs and can be accessed with the
255@command{info} command (@samp{info mh-e}) or within Emacs (@kbd{C-h i
256m mh-e @key{RET}}). The online version is available at
257@uref{http://mh-e.sourceforge.net/manual/, SourceForge}. Another great
258online resource is the book @uref{http://www.ics.uci.edu/~mh/book/,
259@cite{MH & nmh: Email for Users & Programmers}} (also known as
260@dfn{the MH book}).
261
262I hope you enjoy this manual! If you have any comments, or suggestions
263for this document, please let me know.
264
265@cindex Bill Wohler
266@cindex Wohler, Bill
267
268@noindent
269Bill Wohler <@i{wohler at newt.com}>@*
2708 February 1995@*
27124 February 2006
272
273@node Conventions, Getting Started, Preface, Top
274@chapter GNU Emacs Terms and Conventions
275
276@cindex Emacs
277@cindex Emacs, conventions
278@cindex Emacs, terms
279@cindex Unix commands, Emacs
280@cindex conventions, Emacs
281@cindex terms, Emacs
282
283If you're an experienced Emacs user, you can skip the following
284conventions and definition of terms and go directly to the next
285section (@pxref{Getting Started}).
286
287@cindex Emacs commands
288@cindex MH commands
289@cindex Unix commands
290@cindex commands
291@cindex commands, MH
292@cindex commands, Unix
293@cindex commands, shell
294@cindex functions
295@cindex shell commands
296
297In general, @dfn{functions} in this text refer to Emacs Lisp functions
298that one would call from within Emacs Lisp programs (for example,
299@code{(mh-inc-folder)}). On the other hand, @dfn{commands} are those
300things that are run by the user, such as @kbd{i} or @kbd{M-x
301mh-inc-folder}. Programs outside of Emacs are specifically called MH
302commands, shell commands, or Unix commands.
303
304@cindex conventions, key names
305@cindex key names
306
307The conventions for key names are as follows:
308
309@table @kbd
310@item C-x
311Hold down the @key{CTRL} (Control) key and press the @kbd{x} key.
312@c -------------------------
313@item M-x
314Hold down the @key{META} or @key{ALT} key and press the @kbd{x} key.
315
316Since some keyboards don't have a @key{META} key, you can generate
317@kbd{M-x}, for example, by pressing @key{ESC} (Escape),
318@emph{releasing it}, and then pressing the @kbd{x} key.
319@c -------------------------
320@item @key{RET}
321Press the @key{RETURN} or @key{ENTER} key. This is normally used to
322complete a command.
323@c -------------------------
324@item @key{SPC}
325Press the space bar.
326@c -------------------------
327@item @key{TAB}
328Press the @key{TAB} key.
329@c -------------------------
330@item @key{DEL}
331Press the @key{DELETE} key.
332@c -------------------------
333@item @key{BS}
334Press the @key{BACKSPACE} key@footnote{If you are using Version 20 or
335earlier of Emacs, you will need to use the @key{DEL} key.}.
336@end table
337
338@cindex Emacs, prefix argument
339@cindex prefix argument
340@kindex C-u
341
342A @dfn{prefix argument} allows you to pass an argument to any Emacs
343function. To pass an argument, type @kbd{C-u} before the Emacs command
344or keystroke. Numeric arguments can be passed as well. For example, to
345insert five f's, use @kbd{C-u 5 f}. There is a default of four when
346using @kbd{C-u}, and you can use multiple prefix arguments to provide
347arguments of powers of four. To continue our example, you could insert
348four f's with @kbd{C-u f}, 16 f's with @kbd{C-u C-u f}, 64 f's with
349@kbd{C-u C-u C-u f}, and so on. Numeric and valueless negative
350arguments can also be inserted with the @key{META} key. Examples
351include @kbd{M-5} to specify an argument of 5, or @kbd{M--} which
352specifies a negative argument with no particular value.
353
354@sp 1
355@center @strong{NOTE}
356
357@quotation
358The prefix @kbd{C-u} or @kbd{M-} is not necessary in MH-E's MH-Folder
359mode (@pxref{Reading Mail Tour}). In this mode, simply enter the
360numerical argument before entering the command.
361@end quotation
362@sp 1
363
364@cindex @file{.emacs}
365@cindex Emacs, variables
366@cindex files, @file{.emacs}
367@cindex variables
368@findex setq
369
370Emacs uses @dfn{variables} to hold values. These can be changed via
371calls to the function @code{setq} in @file{~/.emacs}.
372
373@cindex Emacs, options
374@cindex options
375@findex customize-group
376@findex customize-option
377
378Variables in MH-E that are normally modified by the user are called
379@dfn{options} and are modified through the customize functions (such
380as @kbd{M-x customize-option} or @kbd{M-x customize-group}).
381@ifnothtml
382@xref{Easy Customization,,,emacs,The GNU Emacs Manual}, in @cite{The
383GNU Emacs Manual}.
384@end ifnothtml
385@ifhtml
386See section
387@uref{http://www.gnu.org/software/emacs/manual/html_node/Easy-Customization.html,
388Easy Customization} in @cite{The GNU Emacs Manual}.
389@end ifhtml
390@xref{Options}.
391
392@cindex Emacs, faces
393@cindex faces
394@cindex highlighting
395@findex customize-face
396
397You can specify various styles for displaying text using @dfn{faces}.
398MH-E provides a set of faces that you can use to personalize the look
399of your MH-E buffers. Use the command @kbd{M-x customize-face} to do
400this.
401@ifnothtml
402@xref{Face Customization,,,emacs,The GNU Emacs Manual}, in @cite{The
403GNU Emacs Manual}.
404@end ifnothtml
405@ifhtml
406See section
407@uref{http://www.gnu.org/software/emacs/manual/html_node/Face-Customization.html,
408Face Customization} in @cite{The GNU Emacs Manual}.
409@end ifhtml
410
411@cindex abnormal hooks
412@cindex hooks
413@cindex normal hooks
414@findex add-hook
415@findex customize-option
416
417Commands often offer @dfn{hooks} which enable you to extend or modify
418the way a command works.
419@ifnothtml
420@ref{Hooks, , Hooks, emacs, The GNU Emacs Manual}, in @cite{The GNU
421Emacs Manual}
422@end ifnothtml
423@ifhtml
424See section
425@uref{http://www.gnu.org/software/emacs/manual/html_node/Hooks.html,
426Hooks} in @cite{The GNU Emacs Manual}
427@end ifhtml
428for a description about @dfn{normal hooks} and @dfn{abnormal hooks}.
429MH-E uses normal hooks in nearly all cases, so you can assume that we
430are talking about normal hooks unless we explicitly mention that a
431hook is abnormal. We also follow the conventions described in that
432section: the name of the abnormal hooks end in @code{-hooks} and all
433the rest of the MH-E hooks end in @code{-hook}. You can add hooks with
434either @code{customize-option} or @code{add-hook}.
435
436@cindex Emacs, mark
437@cindex Emacs, point
438@cindex Emacs, region
439@cindex mark
440@cindex point
441@cindex region
442@kindex C-@@
443@kindex C-@key{SPC}
444
445There are several other terms that are used in Emacs that you should
446know. The @dfn{point} is where the cursor currently is. You can save
447your current place in the file by setting a @dfn{mark}. This operation
448is useful in several ways. The mark can be later used when defining a
449@dfn{region}, which is the text between the point and mark. Many
450commands operate on regions, such as those for deleting text or
451filling paragraphs. A mark can be set with @kbd{C-@@} (or
452@kbd{C-@key{SPC}}).
453
454@cindex completion
455@cindex Emacs, completion
456@cindex Emacs, file completion
457@cindex Emacs, folder completion
458@cindex Emacs, minibuffer
459@cindex file completion
460@cindex folder completion
461@cindex minibuffer
462@kindex SPC
463@kindex TAB
464
465The @dfn{minibuffer} is the bottom line of the Emacs window, where all
466prompting and multiple-character input is directed. You can use
467@dfn{completion} to enter values such as folders. Completion means
468that Emacs fills in text for you when you type @key{SPC} or @key{TAB}.
469A second @key{SPC} or @key{TAB} will list all possibilities at that
470point.
471@ifnothtml
472@xref{Completion, , Completion, emacs, The GNU Emacs Manual}.
473@end ifnothtml
474@ifhtml
475See the section
476@uref{http://www.gnu.org/software/emacs/manual/html_node/Completion.html,
477Completion} in @cite{The GNU Emacs Manual}.
478@end ifhtml
479Note that @key{SPC} cannot be used for completing filenames and
480folders.
481
482@findex help-with-tutorial
483@kindex C-h t
484@kindex M-x
485
486The minibuffer is also where you enter Emacs function names after
487typing @kbd{M-x}. For example, in the preface, I mentioned that you
488could obtain help with @kbd{C-h t} (@code{help-with-tutorial}). What
489this means is that you can get a tutorial by typing either @kbd{C-h t}
490or @kbd{M-x help-with-tutorial}. In the latter case, you are prompted
491for @samp{help-with-tutorial} in the minibuffer after typing
492@kbd{M-x}.
493
494@cindex ~
495
496The @samp{~} notation in filenames represents your home directory.
497This notation is used by many shells including @command{bash},
498@code{tcsh}, and @command{csh}. It is analogous to the environment
499variable @samp{$HOME}. For example, @file{~/.emacs} can be written
500@file{$HOME/.emacs} or using the absolute path as in
501@file{/home/wohler/.emacs} instead.
502
503@cindex Emacs, interrupting
504@cindex Emacs, quitting
505@cindex interrupting
506@cindex quitting
507
508@i{In case of trouble:} Emacs can be interrupted at any time with
509@kbd{C-g}. For example, if you've started a command that requests that
510you enter something in the minibuffer, but then you change your mind,
511type @kbd{C-g} and you'll be back where you started. If you want to
512exit Emacs entirely, use @kbd{C-x C-c}.
513
514@node Getting Started, Tour Through MH-E, Conventions, Top
515@chapter Getting Started
516
517@cindex MH-E, versions
518@cindex history
519@cindex versions of MH-E
520
521Because there are many old versions of MH-E out there, it is important
522to know which version you have. I'll be talking about @w{Version 8}
523which is pretty close to @w{Version 6} and @w{Version 7}. It differs
524from @w{Version 4} and @w{Version 5} and is vastly different from
525@w{Version 3}. @xref{History}.
526
527@findex mh-version
528
529To determine which version of MH-E that you have, enter @kbd{M-x
530mh-version @key{RET}}. Hopefully it says that you're running
531@w{Version @value{VERSION}} which is the latest version as of this
532printing.
533
534If your version is much older than this, please consider upgrading.
535You can have your system administrator upgrade the system-wide
536version, or you can install your own personal version. It's really
537quite easy. @xref{Getting MH-E}, for instructions for getting and
538installing MH-E.
539
540If the @code{mh-version} command displays @samp{No MH variant
541detected}@footnote{In very old versions of MH-E, you may get the error
542message, @samp{Cannot find the commands `inc' and `mhl' and the file
543`components'} if MH-E can't find MH. In this case, you need to update
544MH-E, and you may need to install MH too. However, newer versions of
545MH-E are better at finding MH if it is on your system.}, then you need
546to install MH or tell MH-E where to find MH.
547
548@cindex Debian
549@cindex nmh
550@cindex GNU mailutils
551
552If you don't have MH on your system already, you must install a
553variant of MH. The Debian mh-e package does this for you automatically
554(@pxref{Getting MH-E}). Most people use
555@uref{http://www.nongnu.org/nmh/, nmh}, but you may be interested in
556trying out @uref{http://www.gnu.org/software/mailutils/, GNU
557mailutils}, which supports IMAP. Your GNU/Linux distribution probably
558has packages for both of these.
559
560@cindex @command{install-mh}
561@cindex MH commands, @command{install-mh}
562@cindex MH book
563
564If you've never run MH before, you need to run @command{install-mh}
565from the shell before you continue. This sets up your personal MH
566environment@footnote{See the section
567@uref{@value{MH-BOOK-HOME}/../overall/setup.html, Setting Up MH} in the
568MH book.}. If you don't, you'll be greeted with the error message:
569@samp{Install MH and run install-mh before running MH-E}. This is all
570you need to know about MH to use MH-E, but the more you know about MH,
571the more you can leverage its power. See the
572@uref{@value{MH-BOOK-HOME}/../, MH book} to learn more about MH.
573
574@cindex @samp{Path:} MH profile component
575@cindex MH profile
576@cindex MH profile component
577@cindex MH profile component, @samp{Path:}
578
579Your MH environment includes your @dfn{MH profile} which is found in
580the file @file{~/.mh_profile}. This file contains a number of @dfn{MH
581profile components}. For example, the @samp{Path:} MH profile
582component contains the path to your mail directory, which is
583@file{~/Mail} by default.
584
585@cindex @command{mhparam}
586@cindex MH commands, @command{mhparam}
587@vindex exec-path
588@vindex mh-path
589@vindex mh-sys-path
590@vindex mh-variant
591@vindex mh-variant-in-use
592
593There are several options MH-E uses to interact with your MH
594installation. The option @code{mh-variant} specifies the variant used
595by MH-E (@pxref{Options}). The default setting of this option is
596@samp{Auto-detect} which means that MH-E will automatically choose the
597first of nmh, MH, or GNU mailutils that it finds in the directories
598listed in @code{mh-path} (which you can customize),
599@code{mh-sys-path}, and @code{exec-path}. If MH-E can't find MH at
600all, you may have to customize @code{mh-path} and add the directory in
601which the command @command{mhparam} is located. If, on the other hand,
602you have both nmh and mailutils installed (for example) and
603@code{mh-variant-in-use} was initialized to nmh but you want to use
604mailutils, then you can set @code{mh-variant} to @samp{mailutils}.
605
606@vindex mh-flists-present-flag
607@vindex mh-lib
608@vindex mh-lib-progs
609@vindex mh-progs
610
611When @code{mh-variant} is changed, MH-E resets @code{mh-progs},
612@code{mh-lib}, @code{mh-lib-progs}, @code{mh-flists-present-flag}, and
613@code{mh-variant-in-use} accordingly.
614
615@cindex @file{.emacs}
616@cindex files, @file{.emacs}
617
618@sp 1
619@center @strong{NOTE}
620
621@quotation
622Prior to version 8, it was often necessary to set some of these
623variables in @file{~/.emacs}; now it is no longer necessary and can
624actually cause problems.
625@end quotation
626@sp 1
627
628@cindex MH profile component, @samp{Draft-Folder:}
629@cindex MH profile component, @samp{Path:}
630@cindex MH profile component, @samp{Previous-Sequence:}
631@cindex MH profile component, @samp{Unseen-Sequence:}
632@cindex @samp{Draft-Folder:} MH profile component
633@cindex @samp{Path:} MH profile component
634@cindex @samp{Previous-Sequence:} MH profile component
635@cindex @samp{Unseen-Sequence:} MH profile component
636@findex mh-find-path
637@vindex mh-draft-folder
638@vindex mh-find-path-hook
639@vindex mh-inbox
640@vindex mh-previous-seq
641@vindex mh-unseen-seq
642@vindex mh-user-path
643
644In addition to setting variables that point to MH itself, MH-E also
645sets a handful of variables that point to where you keep your mail.
646During initialization, the function @code{mh-find-path} sets
647@code{mh-user-path} from your @samp{Path:} MH profile component (but
648defaults to @samp{Mail} if one isn't present), @code{mh-draft-folder}
649from @samp{Draft-Folder:}, @code{mh-unseen-seq} from
650@samp{Unseen-Sequence:}, @code{mh-previous-seq} from
651@samp{Previous-Sequence:}, and @code{mh-inbox} from @samp{Inbox:}
652(defaults to @samp{+inbox}). The hook @code{mh-find-path-hook} is run
653after these variables have been set. This hook can be used the change
654the value of these variables if you need to run with different values
655between MH and MH-E.
656
657@node Tour Through MH-E, Using This Manual, Getting Started, Top
658@chapter Tour Through MH-E
659
660@cindex introduction
661@cindex tour
662@cindex tutorial
663
664This chapter introduces some of the terms you'll need to know and then
665takes you on a tour of MH-E@footnote{The keys mentioned in these
666chapters refer to the default key bindings. If you've changed the
667bindings, refer to the command summaries at the beginning of each
668chapter for a mapping between default key bindings and function
669names.}. When you're done, you'll be able to send, read, and file
670mail, which is all that a lot of people ever do. But if you're the
671curious or adventurous type, read the rest of the manual to be able to
672use all the features of MH-E. I suggest you read this chapter first to
673get the big picture, and then you can read the manual as you wish.
674
675@menu
676* Sending Mail Tour::
677* Reading Mail Tour::
678* Processing Mail Tour::
679* Leaving MH-E::
680* More About MH-E::
681@end menu
682
683@node Sending Mail Tour, Reading Mail Tour, Tour Through MH-E, Tour Through MH-E
684@section Sending Mail
685
686@cindex MH-Letter mode
687@cindex mode
688@cindex modes, MH-Letter
689@cindex sending mail
690@findex mh-smail
691@kindex M-x mh-smail
692
693Let's start our tour by sending ourselves a message which we can later
694read and process. Enter @kbd{M-x mh-smail} to invoke the MH-E program
695to send messages. Your message appears in an Emacs buffer whose
696mode@footnote{A @dfn{mode} changes Emacs to make it easier to edit a
697particular type of text.} is MH-Letter.
698
699Enter your login name in the @samp{To:} header field. Press the
700@key{TAB} twice to move the cursor past the @samp{Cc:} field, since no
701carbon copies are to be sent, and on to the @samp{Subject:} field.
702Enter @kbd{Test} or anything else that comes to mind.
703
704Press @key{TAB} again to move the cursor to the body of the message.
705Enter some text, using normal Emacs commands. You should now have
706something like this@footnote{If you're running Emacs under the X
707Window System, then you would also see a menu bar and a tool bar. I've
708left out the menu bar and tool bar in all of the example screens.}:
709
710@cartouche
711@smallexample
712
713
714
715
716
717
718--:-- *scratch* All L1 (Lisp Interaction)-------------------------
719To: wohler
720cc:
721Subject: Test
722X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
723--------
724This is a test message to get the wheels churning...#
725
726
727--:** @{draft@} All L5 (MH-Letter)----------------------------------
728Type C-c C-c to send message, C-C ? for help
729@end smallexample
730@end cartouche
731@i{MH-E message composition window}
732
733Note the line of dashes that separates the header and the body of the
734message. It is essential that these dashes (or a blank line) are
735present or the body of your message will be considered to be part of
736the header.
737
738@cindex help
739@findex describe-mode
740@kindex C-c ?
741@kindex C-c C-c
742@kindex C-h m
743
744There are several commands specific to MH-Letter mode@footnote{You can
745get quick help for the commands used most often with @kbd{C-c ?} or
746more complete help with the @kbd{C-h m} (@code{describe-mode})
747command.}, but at this time we'll only use @kbd{C-c C-c} to send your
748message. Type @kbd{C-c C-c} now. That's all there is to it!
749
750@node Reading Mail Tour, Processing Mail Tour, Sending Mail Tour, Tour Through MH-E
751@section Receiving Mail
752
753@cindex @command{inc}
754@cindex @command{scan}
755@cindex MH commands, @command{inc}
756@cindex MH commands, @command{scan}
757@cindex MH-Folder mode
758@cindex modes, MH-Folder
759@cindex reading mail
760@findex mh-rmail
761@kindex M-x mh-rmail
762
763To read the mail you've just sent yourself, enter @kbd{M-x mh-rmail}.
764This incorporates the new mail and puts the output from
765@command{inc}@footnote{See the section
766@uref{@value{MH-BOOK-HOME}/reapre.html, Reading Mail: inc show next
767prev} in the MH book.} (called @dfn{scan lines} after the MH program
768@command{scan}@footnote{See the section
769@uref{@value{MH-BOOK-HOME}/faswsprs.html, Find and Specify with scan
770pick Ranges Sequences} in the MH book.} which prints a one-line
771summary of each message) into a buffer called @samp{+inbox} whose
772major mode is MH-Folder.
773
774@findex mh-rmail
775@kindex F r
776@kindex M-x mh-rmail
777
778@sp 1
779@center @strong{NOTE}
780
781@quotation
782
783The @kbd{M-x mh-rmail} command will show you only new mail, not mail
784you have already read. If you were to run this tour again, you would
785use @kbd{F r} to pull all your messages into MH-E.
786@end quotation
787@sp 1
788
789@kindex @key{RET}
790@kindex n
791@kindex p
792
793You should see the scan line for your message, and perhaps others. Use
794@kbd{n} or @kbd{p} to move the cursor to your test message and type
795@key{RET} to read your message. You should see something like:
796
797@cartouche
798@smallexample
799 3 t08/24 root received fax files on Wed Aug 24 11:00:13 PDT 1
800# 4+t08/24 To:wohler Test<<This is a test message to get the wheels
801
802-:%% @{+inbox/select@} 4 msgs (1-4) Bot L4 (MH-Folder Show)---------
803To: wohler
804Subject: Test
805X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
806Date: Fri, 17 Mar 2006 10:49:11 -0800
807From: Bill Wohler <wohler@@stop.mail-abuse.org>
808
809This is a test message to get the wheels churning...
810
811
812
813--:-- @{show-+inbox@} 4 All L1 (MH-Show)----------------------------
814
815@end smallexample
816@end cartouche
817@i{After incorporating new messages}
818
819@kindex @key{DEL}
820@kindex @key{SPC}
821
822If you typed a long message, you can view subsequent pages with
823@key{SPC} and previous pages with @key{DEL}.
824
825@node Processing Mail Tour, Leaving MH-E, Reading Mail Tour, Tour Through MH-E
826@section Processing Mail
827
828@cindex processing mail
829@kindex @key{RET}
830@kindex r
831
832The first thing we want to do is reply to the message that we sent
833ourselves. Ensure that the cursor is still on the same line as your
834test message and type @kbd{r}. You are prompted in the minibuffer with
835@samp{Reply to whom:}. Here MH-E is asking whether you'd like to reply
836to the original sender only, to the sender and primary recipients, or
837to the sender and all recipients. You can press @key{TAB} to see these
838choices. If you simply press @key{RET}, you'll reply only to the
839sender. Press @key{RET} now.
840
841You'll find yourself in an Emacs buffer similar to that when you were
842sending the original message, like this:
843
844@cartouche
845@smallexample
846To:
847cc:
848Subject: Re: Test
849In-reply-to: <31054.1142621351@@stop.mail-abuse.org>
850References: <31054.1142621351@@stop.mail-abuse.org>
851Comments: In-reply-to Bill Wohler <wohler@@stop.mail-abuse.org>
852 message dated "Fri, 17 Mar 2006 10:49:11 -0800."
853X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
854--------
855#
856
857--:-- @{draft@} All L10 (MH-Letter)----------------------------------
858To: wohler
859Subject: Test
860X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
861Date: Fri, 17 Mar 2006 10:49:11 -0800
862From: Bill Wohler <wohler@@stop.mail-abuse.org>
863
864This is a test message to get the wheels churning...
865
866--:-- @{show-+inbox@} 4 All L1 (MH-Show)----------------------------
867Type C-c C-c to send message, C-c ? for help
868@end smallexample
869@end cartouche
870@i{Composition window during reply}
871
872@findex backward-char
873@findex forward-char
874@findex next-line
875@findex previous-line
876@kindex C-b
877@kindex C-c C-c
878@kindex C-c C-f C-t
879@kindex C-f
880@kindex C-n
881@kindex C-p
882@kindex @key{BS}
883
884By default, MH will not add you to the address list of your replies,
885so if you find that the @samp{To:} header field is missing, don't
886worry. In this case, type @kbd{C-c C-f C-t} to create and go to the
887@samp{To:} field, where you can type your login name again. You can
888move around with the arrow keys or with @kbd{C-p}
889(@code{previous-line}), @kbd{C-n} (@code{next-line}), @kbd{C-b}
890(@code{backward-char}), and @kbd{C-f} (@code{forward-char}) and can
891delete the previous character with @key{BS}. When you're finished
892editing your message, send it with @kbd{C-c C-c} as before.
893
894@cindex @command{refile}
895@cindex MH commands, @command{refile}
896@cindex folders
897@kindex @key{SPC}
898@kindex o
899
900You'll often want to save messages that were sent to you in an
901organized fashion. This is done with @dfn{folders}. You can use
902folders to keep messages from your friends, or messages related to a
903particular topic. With your cursor in the MH-Folder buffer and
904positioned on the message you sent to yourself, type @kbd{o} to output
905(@command{refile} in MH parlance) that message to a folder. Enter
906@kbd{test} at the @samp{Destination folder:} prompt and type @kbd{y}
907(or @key{SPC}) when MH-E asks to create the folder @samp{+test}. Note
908that a @samp{^} (caret) appears next to the message number, which
909means that the message has been marked for refiling but has not yet
910been refiled. We'll talk about how the refile is actually carried out
911in a moment.
912
913@cindex MH-Folder mode
914@cindex modes, MH-Folder
915@kindex d
916@kindex i
917@kindex @key{RET}
918@kindex n
919@kindex p
920@kindex x
921
922Your previous reply is now waiting in the system mailbox. You
923incorporate this mail into your MH-Folder buffer named @samp{+inbox}
924with the @kbd{i} command. Do this now. After the mail is incorporated,
925use @kbd{n} or @kbd{p} to move the cursor to the new message, and read
926it with @key{RET}. Let's delete this message by typing @kbd{d}. Note
927that a @samp{D} appears next to the message number. This means that
928the message is marked for deletion but is not yet deleted. To perform
929the deletion (and the refile we did previously), use the @kbd{x}
930command.
931
932@findex mh-smail
933@kindex m
934@kindex M-x mh-smail
935
936If you want to send another message you can use @kbd{m} instead of
937@kbd{M-x mh-smail}. So go ahead, send some mail to your friends!
938
939@cindex help
940@cindex prefix characters
941@findex describe-mode
942@kindex ?
943@kindex C-h m
944@kindex F ?
945
946You can get a quick reminder about these commands by typing @kbd{?}.
947This lists several @dfn{prefix characters}. To list the commands
948available via the prefix characters, type the prefix character
949followed by a @kbd{?}, for example, @kbd{F ?}. More complete help is
950available with the @kbd{C-h m} (@code{describe-mode}) command.
951
952@node Leaving MH-E, More About MH-E, Processing Mail Tour, Tour Through MH-E
953@section Leaving MH-E
954
955@cindex Emacs, quitting
956@cindex quitting
957@kindex C-x C-c
958@kindex x
959
960You may now wish to exit @command{emacs} entirely. Use @kbd{C-x C-c}
961to exit @command{emacs}. If you exited without running @kbd{x} in the
962@samp{+inbox} buffer, Emacs will offer to save it for you. Type
963@kbd{y} or @key{SPC} to save @samp{+inbox} changes, which means to
964perform any refiles and deletes that you did there.
965
966@findex mh-rmail
967@kindex C-x b
968@kindex C-x k
969@kindex M-x mh-rmail
970@kindex q
971
972If you don't want to leave Emacs, you can type @kbd{q} to bury (hide)
973the MH-E folder or delete it entirely with @kbd{C-x k}. You can then
974later recall it with @kbd{C-x b} or @kbd{M-x mh-rmail}.
975
976@cindex @command{packf}
977@cindex MH commands, @command{packf}
978@cindex exporting folders
979@cindex folders, exporting
980@cindex mbox-style folder
981
982On the other hand, if you no longer want to use MH and MH-E, you can
983take your mail with you. You can copy all of your mail into a single
984file, mbox-style, by using the MH command @command{packf}. For
985example, to create a file called @file{msgbox} with the messages in
986your @samp{+inbox} folder, use @samp{packf +inbox}. The
987@command{packf} command will append the messages to the file if it
988already exists, so you can use @samp{folders -recurse -fast} in a
989script to copy all of your messages into a single file, or using the
990@samp{-file} argument, a file for each folder.
991
992@node More About MH-E, , Leaving MH-E, Tour Through MH-E
993@section More About MH-E
994
995These are the basic commands to get you going, but there are plenty
996more. If you think that MH-E is for you, read the rest of the manual
997to find out how you can:
998
999@itemize @bullet
1000@item
1001Print your messages (@pxref{Printing}).
1002@c -------------------------
1003@item
1004Edit messages and include your signature (@pxref{Editing Drafts}).
1005@c -------------------------
1006@item
1007Forward messages (@pxref{Forwarding}).
1008@c -------------------------
1009@item
1010Read digests (@pxref{Digests}).
1011@c -------------------------
1012@item
1013Edit bounced messages (@pxref{Editing Again}).
1014@c -------------------------
1015@item
1016Send multimedia messages (@pxref{Adding Attachments}).
1017@c -------------------------
1018@item
1019Read HTML messages (@pxref{HTML}).
1020@c -------------------------
1021@item
1022Use aliases and identities (see @ref{Aliases}, @pxref{Identities}).
1023@c -------------------------
1024@item
1025Create different views of your mail (see @ref{Threading}, @pxref{Limits}).
1026@c -------------------------
1027@item
1028Deal with junk mail (@pxref{Junk}).
1029@c -------------------------
1030@item
1031Handle signed and encrypted messages (see @ref{Reading PGP},
1032@pxref{Sending PGP}).
1033@c -------------------------
1034@item
1035Process mail that was sent with @command{shar} or @command{uuencode}
1036(@pxref{Files and Pipes}).
1037@c -------------------------
1038@item
1039Use sequences conveniently (@pxref{Sequences}).
1040@c -------------------------
1041@item
1042Use the speedbar, tool bar, and menu bar (see @ref{Speedbar}, see @ref{Tool
1043Bar}, @pxref{Menu Bar}).
1044@c -------------------------
1045@item
1046Show header fields in different fonts (@pxref{Reading Mail}).
1047@c -------------------------
1048@item
1049Find previously refiled messages (@pxref{Searching}).
1050@c -------------------------
1051@item
1052Place messages in a file (@pxref{Files and Pipes}).
1053@end itemize
1054
1055Remember that you can also use MH commands when you're not running
1056MH-E (and when you are!).
1057
1058@node Using This Manual, Incorporating Mail, Tour Through MH-E, Top
1059@chapter Using This Manual
1060
1061This chapter begins the meat of the manual which goes into more detail
1062about every MH-E command and option.
1063
1064@cindex Emacs, info
1065@cindex Emacs, online help
1066@cindex info
1067@cindex online help
1068@findex describe-mode
1069@findex mh-help
1070@kindex ?
1071@kindex C-c ?
1072@kindex C-h C-h
1073@kindex C-h C-k i
1074@kindex C-h i
1075@kindex C-h m
1076
1077There are many commands, but don't get intimidated. There are command
1078summaries at the beginning of each chapter. In case you have or would
1079like to rebind the keys, the command summaries also list the
1080associated Emacs Lisp function. Furthermore, even if you're stranded
1081on a desert island with a laptop and are without your manuals, you can
1082get a summary of all these commands with GNU Emacs online help: use
1083@kbd{C-h m} (@code{describe-mode}) for a brief summary of commands,
1084@kbd{?} (@code{mh-help}) for an even briefer summary@footnote{This
1085help appears in a buffer called @samp{*MH-E Help*}
1086(@pxref{Miscellaneous}).} (@kbd{C-c ?} in MH-Letter mode), or @kbd{C-h
1087i} to read this manual via Info. The online help is quite good; try
1088running @kbd{C-h C-h}. This brings up a list of available help topics,
1089one of which displays the documentation for a given key (like @kbd{C-h
1090k C-n}). Another useful help feature is to view the manual section
1091that describes a given key (such as @kbd{C-h K i}). In addition,
1092review @ref{Conventions}, if any of the GNU Emacs conventions are
1093strange to you.
1094
1095In addition to all of the commands, it is also possible to reconfigure
1096MH-E to fit the needs of even the most demanding user. The following
1097chapters also describe all of the options, show the defaults, and make
1098recommendations for customization.
1099
1100However, when customizing your mail environment, first try to change
1101what you want in MH, and only change MH-E if changing MH is not
1102possible. That way you will get the same behavior inside and outside
1103GNU Emacs. Note that MH-E does not provide hooks for customizations
1104that can be done in MH; this omission is intentional.
1105
1106@cindex Emacs Lisp Manual
1107@cindex Emacs, Emacs Lisp Manual
1108@cindex Emacs, info
1109@cindex Emacs, online help
1110@cindex info
1111@cindex online help
1112
1113I hope I've included enough examples here to get you well on your way.
1114If you want to explore Emacs Lisp further, a programming manual does
1115exist,
1116@c Yes, some of the stuff in the following sections is redundant, but
1117@c TeX barfs if the @ifs are inside the @footnote.
1118@iftex
1119@footnote{The @cite{GNU Emacs Lisp Reference Manual} may be available
1120online in the Info system by typing @kbd{C-h i m Emacs Lisp
1121@key{RET}}. It is also available online at @*
1122@uref{http://www.gnu.org/software/emacs/elisp-manual/html_node/}. You
1123can also order a printed manual, which has the desirable side-effect
1124of helping to support the Free Software Foundation which made all this
1125great software available. You can find an order form by running
1126@kbd{C-h C-d}, or you can request an order form from @i{gnu at
1127gnu.org}.}
1128@end iftex
1129@ifinfo
1130@footnote{@xref{Top, The GNU Emacs Lisp Reference Manual, , elisp, GNU
1131Emacs Lisp Reference Manual}, which may be available online in the
1132Info system. It is also available online at
1133@uref{http://www.gnu.org/software/emacs/elisp-manual/html_node/}. You
1134can also order a printed manual, which has the desirable side-effect
1135of helping to support the Free Software Foundation which made all this
1136great software available. You can find an order form by running
1137@kbd{C-h C-d}, or you can request an order form from @i{gnu at
1138gnu.org}.}
1139@end ifinfo
1140@ifhtml
1141@footnote{The
1142@uref{http://www.gnu.org/software/emacs/elisp-manual/html_node/,
1143The GNU Emacs Lisp Reference Manual} may also be available online in
1144the Info system by typing @kbd{C-h i m Emacs Lisp @key{RET}}. You can
1145also order a printed manual, which has the desirable side-effect of
1146helping to support the Free Software Foundation which made all this
1147great software available. You can find an order form by running
1148@kbd{C-h C-d}, or you can request an order form from @i{gnu at
1149gnu.org}.}
1150@end ifhtml
1151and you can look at the code itself for examples. Look in the Emacs
1152Lisp directory on your system (such as
1153@file{/usr/local/lib/emacs/lisp/mh-e}) and find all the @file{mh-*.el}
1154files there. When calling MH-E and other Emacs Lisp functions directly
1155from Emacs Lisp code, you'll need to know the correct arguments. Use
1156the online help for this. For example, try @kbd{C-h f
1157mh-execute-commands @key{RET}}. If you write your own functions,
1158please do not prefix your symbols (variables and functions) with
1159@samp{mh-}. This prefix is reserved for the MH-E package. To avoid
1160conflicts with existing MH-E symbols, use a prefix like @samp{my-} or
1161your initials. (Unless, of course, your initials happen to be @emph{mh}!)
1162
1163@menu
1164* Options::
1165* Ranges::
1166* Folder Selection::
1167@end menu
1168
1169@node Options, Ranges, Using This Manual, Using This Manual
1170@section Options
1171
1172@cindex Emacs, customizing
1173@cindex Emacs, setting options
1174@cindex customizing MH-E
1175@cindex setting options
1176@findex customize-option
1177@vindex mh-lpr-command-format, example
1178
1179Many string or integer options are easy to modify using @kbd{M-x
1180customize-option}. For example, to modify the option that controls
1181printing, you would run @kbd{M-x customize-option @key{RET}
1182mh-lpr-command-format @key{RET}}. In the buffer that appears, modify
1183the string to the right of the variable. For example, you may change
1184the @command{lpr} command with @samp{nenscript -G -r -2 -i'%s'}. Then
1185use the @samp{State} combo box and select @samp{Save for Future
1186Sessions}. To read more about @code{mh-lpr-command-format}, see
1187@ref{Printing}.
1188
1189@cindex nil
1190@cindex off, option
1191@cindex on, option
1192@cindex option, turning on and off
1193@cindex t
1194@findex customize-option
1195@vindex mh-bury-show-buffer-flag, example
1196
1197Options can also hold boolean values. In Emacs Lisp, the boolean
1198values are @code{nil}, which means false, and @code{t}, which means
1199true. The @code{customize-option} function makes it easy to change
1200boolean values; simply click on the toggle button in the customize
1201buffer to switch between @samp{on} (@code{t}) and @samp{off}
1202(@code{nil}). For example, try setting @code{mh-bury-show-buffer-flag}
1203to @samp{off} to keep the MH-Show buffer at the top of the buffer
1204stack. Use the @samp{State} combo box and choose @samp{Set for Current
1205Session} to see how the option affects the show buffer. Then choose
1206the @samp{Erase Customization} menu item to reset the option to the
1207default, which places the MH-Show buffer at the bottom of the buffer
1208stack.
1209
1210@vindex mh-mhl-format-file, example
1211
1212The text usually says to turn on an option by setting it to a
1213@emph{non-@code{nil}} value, because sometimes values other than
1214@samp{on} are meaningful. An example of this is the variable
1215@code{mh-mhl-format-file} (@pxref{Viewing}). Other options, such as
1216hooks, involve a little more Emacs Lisp programming expertise.
1217
1218@cindex customization group, @samp{mh}
1219@cindex @samp{mh} customization group
1220@findex customize-group
1221@findex mh-customize
1222
1223You can browse all of the MH-E options with the @code{customize-group}
1224function. Try entering @kbd{M-x customize-group @key{RET} mh
1225@key{RET}} to view the top-level options as well as buttons for all of
1226the MH-E customization groups. Another way to view the MH-E
1227customization group is to use @kbd{M-x mh-customize @key{RET}}.
1228
1229@node Ranges, Folder Selection, Options, Using This Manual
1230@section Ranges
1231
1232@c Sync with mh-folder-mode docstring.
1233
1234@cindex message abbreviations
1235@cindex message ranges
1236@cindex ranges
1237
1238Many commands that operate on individual messages, such as
1239@code{mh-forward} or @code{mh-refile-msg} take a @code{RANGE}
1240argument. This argument can be used in several ways.
1241
1242@kindex C-u, with ranges
1243
1244If you provide the prefix argument @kbd{C-u} to these commands, then
1245you will be prompted for the message range. This can be any valid MH
1246range which can include messages, sequences (@pxref{Sequences}), and
1247the abbreviations (described in the @command{mh}(1) man page):
1248
1249@table @samp
1250@item <num1>-<num2>
1251Indicates all messages in the range <num1> to <num2>, inclusive. The
1252range must be nonempty.
1253@c -------------------------
1254@item <num>:N
1255@itemx <num>:+N
1256@itemx <num>:-N
1257Up to N messages beginning with (or ending with) message num. Num may
1258be any of the predefined symbols: first, prev, cur, next or last.
1259@c -------------------------
1260@item first:N
1261@itemx prev:N
1262@itemx next:N
1263@itemx last:N
1264The first, previous, next or last messages, if they exist.
1265@c -------------------------
1266@item all
1267All of the messages.
1268@end table
1269
1270For example, a range that shows all of these things is @samp{1 2 3
12715-10 last:5 unseen}.
1272
1273@vindex transient-mark-mode
1274
1275If the option @code{transient-mark-mode} is turned on and you set a
1276region in the MH-Folder buffer, then the MH-E command will perform the
1277operation on all messages in that region.
1278
1279@cindex @samp{mh-range} customization group
1280@cindex customization group, @samp{mh-range}
1281
1282The @samp{mh-range} customization group contains a single option which
1283affects how ranges are interpreted.
1284
1285@vtable @code
1286@item mh-interpret-number-as-range-flag
1287On means interpret a number as a range (default: @samp{on}).
1288@end vtable
1289
1290@vindex mh-interpret-number-as-range-flag
1291
1292Since one of the most frequent ranges used is @samp{last:N}, MH-E will
1293interpret input such as @samp{200} as @samp{last:200} if the
1294@code{mh-interpret-number-as-range-flag} option is on (which is the
1295default). If you need to scan just the message 200, then use the range
1296@samp{200:1} or @samp{200-200}.
1297
1298@node Folder Selection, , Ranges, Using This Manual
1299@section Folder Selection
1300
1301@cindex completion, folders
1302@cindex folders, completion
1303@cindex folders, selecting
1304
1305When you choose a folder in MH-E via a command such as @kbd{o}
1306(@code{mh-refile-msg}), completion is used to enter the folder
1307@ifnothtml
1308(@pxref{Completion, , , emacs, The GNU Emacs Manual}).
1309@end ifnothtml
1310@ifhtml
1311(see the section
1312@uref{http://www.gnu.org/software/emacs/manual/html_node/Completion.html,
1313Completion} in @cite{The GNU Emacs Manual}).
1314@end ifhtml
1315In addition, MH-E has several ways of choosing a suitable default so
1316that the folder can often be selected with a single @key{RET} key.
1317
1318@cindex customization group, @samp{mh-folder-selection}
1319@cindex @samp{mh-folder-selection} customization group
1320
1321The @samp{mh-folder-selection} customization group contains some
1322options which are used to help with this.
1323
1324@vtable @code
1325@item mh-default-folder-for-message-function
1326Function to select a default folder for refiling or @samp{Fcc:}
1327(default: @code{nil}).
1328@c -------------------------
1329@item mh-default-folder-list
1330List of addresses and folders (default: @code{nil}).
1331@c -------------------------
1332@item mh-default-folder-must-exist-flag
1333On means guessed folder name must exist to be used (default:
1334@samp{on}).
1335@c -------------------------
1336@item mh-default-folder-prefix
1337Prefix used for folder names generated from aliases (default: @code{""}).
1338@end vtable
1339
1340@vindex mh-default-folder-for-message-function
1341
1342You can set the option @code{mh-default-folder-for-message-function}
1343to a function that provides a default folder for the message to be
1344refiled. When this function is called, the current buffer contains the
1345message being refiled and point is at the start of the message. This
1346function should return the default folder as a string with a leading
1347@samp{+} sign. It can also return @code{nil} so that the last folder
1348name is used as the default, or an empty string to suppress the
1349default entirely.
1350
1351Otherwise, the name of the destination folder is derived from the
1352sender as follows:
1353
1354@enumerate
1355@vindex mh-default-folder-list
1356@item
1357The folder name associated with the first address found in the list
1358@code{mh-default-folder-list} is used. Each element in this list
1359contains a @samp{Check Recipient} item. If this item is turned on,
1360then the address is checked against the recipient instead of the
1361sender. This is useful for mailing lists.
1362@c -------------------------
1363@vindex mh-default-folder-prefix
1364@item
1365An alias prefixed by @code{mh-default-folder-prefix} corresponding to
1366the address is used. The prefix is used to prevent clutter in your
1367mail directory. @xref{Aliases}.
1368@end enumerate
1369
1370@vindex mh-default-folder-must-exist-flag
1371
1372If the derived folder does not exist, and
1373@code{mh-default-folder-must-exist-flag} is @code{t}, then the last
1374folder name used is suggested. This is useful if you get mail from
1375various people for whom you have an alias, but file them all in the
1376same project folder.
1377
1378@node Incorporating Mail, Reading Mail, Using This Manual, Top
1379@chapter Incorporating Your Mail
1380
1381@cindex @samp{Folder} menu
1382@cindex incorporating
1383@cindex menu, @samp{Folder}
1384
1385This chapter talks about getting mail from your system mailbox into
1386your MH @samp{+inbox} folder. The following command accomplishes that
1387and is found in the @samp{Folder} menu.
1388
1389@table @kbd
1390@cindex @samp{Folder > Incorporate New Mail} menu item
1391@cindex menu item, @samp{Folder > Incorporate New Mail}
1392@findex mh-inc-folder
1393@kindex i
1394@item i
1395Incorporate new mail into a folder (@code{mh-inc-folder}).
1396@end table
1397
1398@cindex @samp{mh-inc} customization group
1399@cindex customization group, @samp{mh-inc}
1400
1401The following options in the @samp{mh-inc} customization group are
1402used.
1403
1404@vtable @code
1405@item mh-inc-prog
1406Program to incorporate mail (default: @code{"inc"}).
1407@c -------------------------
1408@item mh-inc-spool-list
1409Alternate spool files (default: @code{nil}).
1410@end vtable
1411
1412The following hook is available.
1413
1414@vtable @code
1415@findex mh-inc-folder
1416@item mh-inc-folder-hook
1417Hook run by @code{mh-inc-folder} after incorporating mail into a
1418folder (default: @code{nil}).
1419@end vtable
1420
1421@cindex @samp{+inbox}
1422@findex mh-inc-folder
1423@kindex i
1424
1425If at any time you receive new mail, incorporate the new mail into
1426your @samp{+inbox} buffer with @kbd{i} (@code{mh-inc-folder}). Note
1427that @kbd{i} will display the @samp{+inbox} buffer, even if there
1428isn't any new mail. You can incorporate mail from any file into the
1429current folder by specifying a prefix argument; you'll be prompted for
1430the name of the file to use as well as the destination folder (for
1431example, @kbd{C-u i ~/mbox @key{RET} +tmp @key{RET}}).
1432
1433@cindex @file{.emacs}
1434@cindex Emacs, notification of new mail
1435@cindex files, @file{.emacs}
1436@cindex new mail
1437@cindex notification of new mail
1438
1439Emacs can notify you when you have new mail by displaying @samp{Mail}
1440in the mode line. To enable this behavior, and to have a clock in the
1441mode line as well, add the following to @file{~/.emacs}:
1442
1443@findex display-time
1444
1445@smalllisp
1446(display-time)
1447@end smalllisp
1448
1449@cindex @command{inc}
1450@cindex incorporating
1451@cindex MH commands, @command{inc}
1452@vindex mh-inc-prog
1453@vindex mh-progs
1454
1455The name of the program that incorporates new mail is stored in
1456@code{mh-inc-prog}; it is @code{"inc"} by default. This program
1457generates a one-line summary for each of the new messages. Unless it
1458is an absolute pathname, the file is assumed to be in the
1459@code{mh-progs} directory (@pxref{Getting Started}). You may also link
1460a file to @command{inc} that uses a different format (see
1461@samp{mh-profile}(5), and sections
1462@uref{@value{MH-BOOK-HOME}/reapre.html, Reading Mail: inc show next
1463prev} and @uref{@value{MH-BOOK-HOME}/mhstr.html, MH Format Strings} in
1464the MH book). You'll then need to modify several variables
1465appropriately (@pxref{Scan Line Formats}).
1466
1467@vindex mh-inc-spool-list
1468
1469You can use the @code{mh-inc-spool-list} variable to direct MH-E to
1470retrieve mail from arbitrary spool files other than your system
1471mailbox, file it in folders other than your @samp{+inbox}, and assign
1472key bindings to incorporate this mail.
1473
1474@cindex @command{procmail}
1475@cindex @file{.procmailrc}
1476@cindex Unix commands, @command{procmail}
1477@cindex files, @file{.procmailrc}
1478
1479Suppose you are subscribed to the @i{mh-e-devel} mailing list and you
1480use @command{procmail} to filter this mail into @file{~/mail/mh-e}
1481with the following recipe in @file{.procmailrc}:
1482
1483@smallexample
1484PATH=$PATH:/usr/bin/mh
1485MAILDIR=$HOME/`mhparam Path`
1486:0:
1487* ^From mh-e-devel-admin@@stop.mail-abuse.org
1488mh-e
1489@end smallexample
1490
1491@findex mh-inc-spool-*
1492@kindex I *
1493
1494In order to incorporate @file{~/mail/mh-e} into @samp{+mh-e} with an
1495@kbd{I m} (@code{mh-inc-spool-mh-e}) command, customize this option,
1496and click on the @samp{INS} button. Enter a @samp{Spool File} of
1497@samp{~/mail/mh-e}, a @samp{Folder} of @samp{mh-e}, and a @samp{Key
1498Binding} of @samp{m}.
1499
1500@cindex @command{emacsclient}
1501@cindex @command{gnuclient}
1502@cindex @command{xbuffy}
1503@cindex @samp{gnuserv}
1504@cindex Unix commands, @command{emacsclient}
1505@cindex Unix commands, @command{gnuclient}
1506@cindex Unix commands, @command{xbuffy}
1507
1508You can use @command{xbuffy} to automate the incorporation of this
1509mail using the Emacs 22 command @command{emacsclient} as follows:
1510
1511@smallexample
1512box ~/mail/mh-e
1513 title mh-e
1514 origMode
1515 polltime 10
1516 headertime 0
1517 command emacsclient --eval '(mh-inc-spool-mh-e)'
1518@end smallexample
1519
1520In XEmacs, the command @command{gnuclient} is used in a similar
1521fashion.
1522
1523@findex mh-inc-folder
1524@kindex i
1525@vindex mh-inc-folder-hook
1526
1527You can set the hook @code{mh-inc-folder-hook}, which is called after
1528new mail is incorporated by the @kbd{i} (@code{mh-inc-folder})
1529command. A good use of this hook is to rescan the whole folder either
1530after running @kbd{M-x mh-rmail} the first time or when you've changed
1531the message numbers from outside of MH-E.
1532
1533@findex mh-execute-commands
1534@findex mh-rescan-folder, example
1535@findex mh-show, example
1536@vindex mh-inc-folder-hook, example
1537
1538@smalllisp
1539@group
1540(defun my-mh-inc-folder-hook ()
1541 "Hook to rescan folder after incorporating mail."
1542 (if (buffer-modified-p) ; @r{if outstanding refiles and deletes,}
1543 (mh-execute-commands)) ; @r{carry them out}
1544 (mh-rescan-folder) ; @r{synchronize with +inbox}
1545 (mh-show)) ; @r{show the current message}
1546
1547(add-hook 'mh-inc-folder-hook 'my-mh-inc-folder-hook)
1548
1549@i{Rescan folder after incorporating new mail via mh-inc-folder-hook}
1550
1551@end group
1552@end smalllisp
1553
1554@node Reading Mail, Folders, Incorporating Mail, Top
1555@chapter Reading Your Mail
1556
1557@cindex @samp{+inbox}
1558@cindex MH-Folder mode
1559@cindex MH-Show mode
1560@cindex modes, MH-Folder
1561@cindex modes, MH-Show
1562@cindex reading mail
1563@findex mh-rmail
1564@kindex F r
1565@kindex F v
1566@kindex M-x mh-rmail
1567
1568The MH-E entry point for reading mail is @kbd{M-x mh-rmail}. This
1569command incorporates your mail and creates a buffer called
1570@samp{+inbox} in MH-Folder mode. The command @kbd{M-x mh-rmail} shows
1571you only new mail, not mail you have already read@footnote{If you want
1572to see your old mail as well, use @kbd{F r} to pull all your messages
1573into MH-E. Or, give a prefix argument to @code{mh-rmail} so it will
1574prompt you for folder to visit like @kbd{F v} (for example, @kbd{C-u
1575M-x mh-rmail @key{RET} bob @key{RET}}). @xref{Folders}.}.
1576
1577@findex display-time
1578@vindex read-mail-command
1579
1580There are some commands that need to read mail, such as @kbd{Mouse-2}
1581over the @samp{Mail} button that @code{display-time} adds to the mode
1582line. You can configure Emacs to have these commands use MH-E by
1583setting the option @code{read-mail-command} to @samp{mh-rmail}.
1584
1585@cindex @command{scan}
1586@cindex @samp{Message} menu
1587@cindex MH commands, @command{scan}
1588@cindex menu, @samp{Message}
1589@cindex scan lines
1590
1591The @samp{+inbox} buffer contains @dfn{scan lines}, which are one-line
1592summaries of each incorporated message. You can perform most MH
1593commands on these messages via one- or two-letter commands in either
1594the MH-Folder or MH-Show buffers or by using the @samp{Message} menu.
1595See @command{scan}(1) for a description of the contents of the scan
1596lines, and see the Figure in @ref{Reading Mail Tour}, for an example.
1597
1598@table @kbd
1599@kindex ?
1600@findex mh-help
1601@item ?
1602Display cheat sheet for the MH-E commands (@code{mh-help}).
1603@c -------------------------
1604@cindex @samp{Message > Show Message} menu item
1605@cindex menu item, @samp{Message > Show Message}
1606@kindex @key{RET}
1607@findex mh-show
1608@item @key{RET}
1609Display message (@code{mh-show}).
1610@c -------------------------
1611@cindex @samp{Message > Show Message with Header} menu item
1612@cindex menu item, @samp{Message > Show Message with Header}
1613@kindex , (comma)
1614@findex mh-header-display
1615@item , (comma)
1616Display message with all header fields (@code{mh-header-display}).
1617@c -------------------------
1618@kindex ; (semicolon)
1619@findex mh-toggle-mh-decode-mime-flag
1620@item ; (semicolon)
1621Toggle the value of @code{mh-decode-mime-flag}
1622(@code{mh-toggle-mh-decode-mime-flag}).
1623@c -------------------------
1624@kindex @key{SPC}
1625@findex mh-page-msg
1626@item @key{SPC}
1627Display next page in message (@code{mh-page-msg}).
1628@c -------------------------
1629@kindex @key{BS}
1630@findex mh-previous-page
1631@item @key{BS}
1632Display previous page in message (@code{mh-previous-page}).
1633@c -------------------------
1634@cindex @samp{Message > Write Message to File...} menu item
1635@cindex menu item, @samp{Message > Write Message to File...}
1636@kindex >
1637@findex mh-write-msg-to-file
1638@item >
1639Append message to end of file (@code{mh-write-msg-to-file}).
1640@c -------------------------
1641@cindex @samp{Message > Pipe Message to Command...} menu item
1642@cindex menu item, @samp{Message > Pipe Message to Command...}
1643@kindex |
1644@findex mh-pipe-msg
1645@item |
1646Pipe message through shell command (@code{mh-pipe-msg}).
1647@c -------------------------
1648@kindex C-d
1649@findex mh-delete-msg-no-motion
1650@item C-d
1651Delete range, don't move to next message
1652(@code{mh-delete-msg-no-motion}).
1653@c -------------------------
1654@cindex @samp{Message > Delete Message} menu item
1655@cindex menu item, @samp{Message > Delete Message}
1656@kindex d
1657@findex mh-delete-msg
1658@item d
1659Delete range (@code{mh-delete-msg}).
1660@c -------------------------
1661@kindex D ?
1662@findex mh-prefix-help
1663@item D ?
1664Display cheat sheet for the commands of the current prefix in
1665minibuffer (@code{mh-prefix-help}).
1666@c -------------------------
1667@kindex D @key{SPC}
1668@findex mh-page-digest
1669@item D @key{SPC}
1670Display next message in digest (@code{mh-page-digest}).
1671@c -------------------------
1672@kindex D @key{BS}
1673@findex mh-page-digest-backwards
1674@item D @key{BS}
1675Display previous message in digest (@code{mh-page-digest-backwards}).
1676@c -------------------------
1677@cindex @samp{Message > Burst Digest Message} menu item
1678@cindex menu item, @samp{Message > Burst Digest Message}
1679@kindex D b
1680@findex mh-burst-digest
1681@item D b
1682Break up digest into separate messages (@code{mh-burst-digest}).
1683@c -------------------------
1684@cindex @samp{Message > Go to Message by Number...} menu item
1685@cindex menu item, @samp{Message > Go to Message by Number...}
1686@kindex g
1687@findex mh-goto-msg
1688@item g
1689Go to a message (@code{mh-goto-msg}).
1690@c -------------------------
1691@kindex k
1692@findex mh-delete-subject-or-thread
1693@item k
1694Delete messages with same subject or thread
1695(@code{mh-delete-subject-or-thread}).
1696@c -------------------------
1697@kindex K ?
1698@findex mh-prefix-help
1699@item K ?
1700Display cheat sheet for the commands of the current prefix in
1701minibuffer (@code{mh-prefix-help}).
1702@c -------------------------
1703@kindex K @key{TAB}
1704@findex mh-next-button
1705@item K @key{TAB}
1706Go to the next button (@code{mh-next-button}).
1707@c -------------------------
1708@kindex K S-@key{TAB}
1709@findex mh-prev-button
1710@item K S-@key{TAB}
1711Go to the previous button (@code{mh-prev-button}).
1712@c -------------------------
1713@kindex K a
1714@findex mh-mime-save-parts
1715@item K a
1716Save attachments (@code{mh-mime-save-parts}).
1717@c -------------------------
1718@kindex K e
1719@findex mh-display-with-external-viewer
1720@item K e
1721View attachment externally (@code{mh-display-with-external-viewer}).
1722@c -------------------------
1723@kindex K i
1724@findex mh-folder-inline-mime-part
1725@item K i
1726Show attachment verbatim (@code{mh-folder-inline-mime-part}).
1727@c -------------------------
1728@kindex K o
1729@findex mh-folder-save-mime-part
1730@item K o
1731Save (output) attachment (@code{mh-folder-save-mime-part}).
1732@c -------------------------
1733@kindex K t
1734@findex mh-toggle-mime-buttons
1735@item K t
1736Toggle option @code{mh-display-buttons-for-inline-parts-flag}
1737(@code{mh-toggle-mime-buttons}).
1738@c -------------------------
1739@kindex K v
1740@findex mh-folder-toggle-mime-part
1741@item K v
1742View attachment (@code{mh-folder-toggle-mime-part}).
1743@c -------------------------
1744@cindex @samp{Message > Modify Message} menu item
1745@cindex menu item, @samp{Message > Modify Message}
1746@kindex M
1747@findex mh-modify
1748@item M
1749Edit message (@code{mh-modify}).
1750@c -------------------------
1751@cindex @samp{Message > Go to First Message} menu item
1752@cindex menu item, @samp{Message > Go to First Message}
1753@kindex M-<
1754@findex mh-first-msg
1755@item M-<
1756Display first message (@code{mh-first-msg}).
1757@c -------------------------
1758@cindex @samp{Message > Go to Last Message} menu item
1759@cindex menu item, @samp{Message > Go to Last Message}
1760@kindex M->
1761@findex mh-last-msg
1762@item M->
1763Display last message (@code{mh-last-msg}).
1764@c -------------------------
1765@kindex M-n
1766@findex mh-next-unread-msg
1767@item M-n
1768Display next unread message (@code{mh-next-unread-msg}).
1769@c -------------------------
1770@kindex M-p
1771@findex mh-previous-unread-msg
1772@item M-p
1773Display previous unread message (@code{mh-previous-unread-msg}).
1774@c -------------------------
1775@cindex @samp{Message > Next Message} menu item
1776@cindex menu item, @samp{Message > Next Message}
1777@kindex n
1778@findex mh-next-undeleted-msg
1779@item n
1780Display next message (@code{mh-next-undeleted-msg}).
1781@c -------------------------
1782@cindex @samp{Message > Previous Message} menu item
1783@cindex menu item, @samp{Message > Previous Message}
1784@kindex p
1785@findex mh-previous-undeleted-msg
1786@item p
1787Display previous message (@code{mh-previous-undeleted-msg}).
1788@c -------------------------
1789@kindex P ?
1790@findex mh-prefix-help
1791@item P ?
1792Display cheat sheet for the commands of the current prefix in
1793minibuffer (@code{mh-prefix-help}).
1794@c -------------------------
1795@kindex P C
1796@findex mh-ps-print-toggle-color
1797@item P C
1798Toggle whether color is used in printing messages
1799(@code{mh-ps-print-toggle-color}).
1800@c -------------------------
1801@kindex P F
1802@findex mh-ps-print-toggle-faces
1803@item P F
1804Toggle whether printing is done with faces or not
1805(@code{mh-ps-print-toggle-faces}).
1806@c -------------------------
1807@kindex P f
1808@findex mh-ps-print-msg-file
1809@item P f
1810Print range to file (@code{mh-ps-print-msg-file}).
1811@c -------------------------
1812@cindex @samp{Message > Print Message} menu item
1813@cindex menu item, @samp{Message > Print Message}
1814@kindex P l
1815@findex mh-print-msg
1816@item P l
1817Print range the old fashioned way
1818(@code{mh-print-msg}).
1819@c -------------------------
1820@kindex P p
1821@findex mh-ps-print-msg
1822@item P p
1823Print range (@code{mh-ps-print-msg}).
1824@c -------------------------
1825@kindex X ?
1826@findex mh-prefix-help
1827@item X ?
1828Display cheat sheet for the commands of the current prefix in
1829minibuffer (@code{mh-prefix-help}).
1830@c -------------------------
1831@cindex @samp{Message > Unpack Uuencoded Message...} menu item
1832@cindex menu item, @samp{Message > Unpack Uuencoded Message...}
1833@kindex X s
1834@kindex X u
1835@findex mh-store-msg
1836@item X s
1837@itemx X u
1838Unpack message created with @command{uudecode} or @command{shar}
1839(@code{mh-store-msg}).
1840@c -------------------------
1841@kindex Mouse-2
1842@findex mh-show-mouse
1843@item Mouse-2
1844Move point to mouse event and show message (@code{mh-show-mouse}).
1845@end table
1846
1847Within the MH-Show buffer, the following command is defined.
1848
1849@table @kbd
1850@kindex @key{RET}
1851@kindex Mouse-1
1852@kindex Mouse-2
1853@findex mh-press-button
1854@item @key{RET}
1855@itemx Mouse-1
1856@itemx Mouse-2
1857View contents of button (@code{mh-press-button}).
1858@end table
1859
1860@cindex @samp{mh-show} customization group
1861@cindex customization group, @samp{mh-show}
1862
1863The following table lists options in the @samp{mh-show} customization
1864group that are used while reading mail.
1865
1866@vtable @code
1867@item mh-bury-show-buffer-flag
1868On means show buffer is buried (default: @samp{on}).
1869@c -------------------------
1870@item mh-clean-message-header-flag
1871On means remove extraneous header fields (default: @samp{on}).
1872@c -------------------------
1873@item mh-decode-mime-flag
1874On means attachments are handled (default: @samp{on} if the Gnus
1875@samp{mm-decode} package is present).
1876@c -------------------------
1877@item mh-display-buttons-for-alternatives-flag
1878On means display buttons for all alternative attachments (default:
1879@samp{off}).
1880@c -------------------------
1881@item mh-display-buttons-for-inline-parts-flag
1882On means display buttons for all inline attachments (default:
1883@samp{off}).
1884@c -------------------------
1885@item mh-do-not-confirm-flag
1886On means non-reversible commands do not prompt for confirmation
1887(default: @samp{off}).
1888@c -------------------------
1889@item mh-fetch-x-image-url
1890Control fetching of @samp{X-Image-URL:} header field image (default:
1891@samp{Never Fetch}).
1892@c -------------------------
1893@item mh-graphical-smileys-flag
1894On means graphical smileys are displayed (default: @samp{on}).
1895@c -------------------------
1896@item mh-graphical-emphasis-flag
1897On means graphical emphasis is displayed (default: @samp{on}).
1898@c -------------------------
1899@item mh-highlight-citation-style
1900Style for highlighting citations (default: @samp{Multicolor}).
1901@c -------------------------
1902@item mh-invisible-header-fields-default
1903List of hidden header fields (default: a checklist too long to list
1904here).
1905@c -------------------------
1906@item mh-invisible-header-fields
1907Additional header fields to hide (default: @code{nil}).
1908@c -------------------------
1909@item mh-lpr-command-format
1910Command used to print (default: @code{"lpr -J '%s'"}).
1911@c -------------------------
1912@item mh-max-inline-image-height
1913Maximum inline image height if @samp{Content-Disposition:} is not
1914present (default: 0).
1915@c -------------------------
1916@item mh-max-inline-image-width
1917Maximum inline image width if @samp{Content-Disposition:} is not
1918present(default: 0).
1919@c -------------------------
1920@item mh-mhl-format-file
1921Specifies the format file to pass to the @command{mhl} program
1922(default: @samp{Use Default mhl Format (Printing Only)}).
1923@c -------------------------
1924@item mh-mime-save-parts-default-directory
1925Default directory to use for @kbd{K a}.
1926@c -------------------------
1927@item mh-print-background-flag
1928On means messages should be printed in the background (default:
1929@samp{off}).
1930@c -------------------------
1931@item mh-show-buffer-mode-line-buffer-id
1932Format string to produce @code{mode-line-buffer-identification} for
1933show buffers (default: @code{" @{show-%s@} %d"}).
1934@c -------------------------
1935@item mh-show-maximum-size
1936Maximum size of message (in bytes) to display automatically (default:
19370).
1938@c -------------------------
1939@item mh-show-use-xface-flag
1940On means display face images in MH-Show buffers (default: @samp{on}).
1941@c -------------------------
1942@item mh-store-default-directory
1943Default directory for @kbd{X s} (default: @samp{Current}).
1944@c -------------------------
1945@item mh-summary-height
1946Number of lines in MH-Folder buffer (including the mode line)
1947(default: depends on size of frame).
1948@end vtable
1949
1950The following hooks are available.
1951
1952@vtable @code
1953@item mh-delete-msg-hook
1954Hook run after marking each message for deletion (default: @code{nil}).
1955@c -------------------------
1956@item mh-show-hook
1957Hook run after @key{RET} shows a message (default: @code{nil}).
1958@c -------------------------
1959@item mh-show-mode-hook
1960Hook run upon entry to @code{mh-show-mode} (default: @code{nil}).
1961@end vtable
1962
1963The following faces are available.
1964
1965@vtable @code
1966@item mh-show-cc
1967Face used to highlight @samp{cc:} header fields.
1968@c -------------------------
1969@item mh-show-date
1970Face used to highlight @samp{Date:} header fields.
1971@c -------------------------
1972@item mh-show-from
1973Face used to highlight @samp{From:} header fields.
1974@c -------------------------
1975@item mh-show-header
1976Face used to deemphasize less interesting header fields.
1977@c -------------------------
1978@item mh-show-pgg-bad
1979Bad PGG signature face.
1980@c -------------------------
1981@item mh-show-pgg-good
1982Good PGG signature face.
1983@c -------------------------
1984@item mh-show-pgg-unknown
1985Unknown or untrusted PGG signature face.
1986@c -------------------------
1987@item mh-show-signature
1988Signature face.
1989@c -------------------------
1990@item mh-show-subject
1991Face used to highlight @samp{Subject:} header fields.
1992@c -------------------------
1993@item mh-show-to
1994Face used to highlight @samp{To:} header fields.
1995@c -------------------------
1996@item mh-show-xface
1997X-Face image face.
1998@end vtable
1999
2000The functions and variables introduced here are explained in more
2001detail in the following sections.
2002
2003@menu
2004* Viewing::
2005* Viewing Attachments::
2006* HTML::
2007* Digests::
2008* Reading PGP::
2009* Printing::
2010* Files and Pipes::
2011* Navigating::
2012* Miscellaneous Commands and Options::
2013@end menu
2014
2015@node Viewing, Viewing Attachments, Reading Mail, Reading Mail
2016@section Viewing Your Mail
2017
2018@findex mh-header-display
2019@findex mh-page-msg
2020@findex mh-previous-page
2021@findex mh-show
2022@findex mh-show-mouse
2023@kindex , (comma)
2024@kindex . (period)
2025@kindex @key{BS}
2026@kindex @key{RET}
2027@kindex @key{SPC}
2028@kindex Mouse-2
2029
2030The command @key{RET} (@code{mh-show}) displays the message that the
2031cursor is on while @kbd{Mouse-2} (@code{mh-show-mouse}) displays the
2032message that the mouse cursor is on. If the message is already
2033displayed, it scrolls to the beginning of the message. Use @key{SPC}
2034(@code{mh-page-msg}) and @key{BS} (@code{mh-previous-page}) to move
2035forwards and backwards one page at a time through the message. You can
2036give either of these commands a prefix argument that specifies the
2037number of lines to scroll (such as @kbd{10 @key{SPC}}). The @key{SPC}
2038command will also show the next undeleted message if it is used at the
2039bottom of a message. MH-E normally hides a lot of the superfluous
2040header fields that mailers add to a message, but if you wish to see
2041all of them, use the command @kbd{,} (comma;
2042@code{mh-header-display}).
2043
2044@vindex mh-show-maximum-size
2045
2046The option @code{mh-show-maximum-size} provides an opportunity to skip
2047over large messages which may be slow to load. The default value of 0
2048means that all message are shown regardless of size.
2049
2050A litany of options control what displayed messages look like.
2051
2052@vindex mh-show-cc
2053@vindex mh-show-date
2054@vindex mh-show-from
2055@vindex mh-show-header
2056@vindex mh-show-subject
2057@vindex mh-show-to
2058
2059First, the appearance of the header fields can be modified by
2060customizing the associated face: @code{mh-show-to}, @code{mh-show-cc},
2061@code{mh-show-from}, @code{mh-show-date}, and @code{mh-show-subject}.
2062The face @code{mh-show-header} is used to deemphasize the other, less
2063interesting, header fields.
2064
2065@cindex regular expressions, @code{mh-invisible-header-fields}
2066@vindex mh-clean-message-header-flag
2067@vindex mh-invisible-header-fields
2068@vindex mh-invisible-header-fields-default
2069
2070Normally messages are delivered with a handful of uninteresting header
2071fields. These are hidden by turning on the option
2072@code{mh-clean-message-header-flag} (which it is by default). The
2073header fields listed in the option
2074@code{mh-invisible-header-fields-default} are hidden, although you can
2075check off any field that you would like to see. Header fields that you
2076would like to hide that aren't listed can be added to the option
2077@code{mh-invisible-header-fields} with a couple of caveats. Regular
2078expressions are not allowed. Unique fields should have a @samp{:}
2079suffix; otherwise, the element can be used to render invisible an
2080entire class of fields that start with the same prefix. If you think a
2081header field should be generally ignored, report a bug (@pxref{Bug
2082Reports}).
2083
2084@cindex header field, @samp{Face:}
2085@cindex header field, @samp{X-Face:}
2086@cindex header field, @samp{X-Image-URL:}
2087@cindex @samp{Face:} header field
2088@cindex @samp{X-Face:} header field
2089@cindex @samp{X-Image-URL:} header field
2090@vindex mh-show-use-xface-flag
2091
2092MH-E can display the content of @samp{Face:}, @samp{X-Face:}, and
2093@samp{X-Image-URL:} header fields. If any of these fields occur in the
2094header of your message, the sender's face will appear in the
2095@samp{From:} header field. If more than one of these fields appear,
2096then the first field found in the order @samp{Face:}, @samp{X-Face:},
2097and @samp{X-Image-URL:} will be used. The option
2098@code{mh-show-use-xface-flag} is used to turn this feature on and off.
2099This feature will be turned on by default if your system supports it.
2100
2101The first header field used, if present, is the Gnus-specific
2102@samp{Face:} field@footnote{The @samp{Face:} field appeared in GNU
2103Emacs 21 and XEmacs. For more information, see
2104@uref{http://quimby.gnus.org/circus/face/}.}.
2105
2106@cindex @command{uncompface}
2107@cindex Emacs, packages, x-face
2108@cindex Unix commands, @command{uncompface}
2109@cindex x-face package
2110@vindex mh-show-xface
2111
2112Next is the traditional @samp{X-Face:} header field@footnote{The
2113display of this field requires the
2114@uref{ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z,
2115@command{uncompface} program}. Recent versions of XEmacs have internal
2116support for @samp{X-Face:} images. If your version of XEmacs does not,
2117then you'll need both @command{uncompface} and the
2118@uref{ftp://ftp.jpl.org/pub/elisp/, @samp{x-face} package}.}. MH-E
2119renders the foreground and background of the image using the
2120associated attributes of the face @code{mh-show-xface}.
2121
2122@cindex @command{convert}
2123@cindex @command{wget}
2124@cindex ImageMagick
2125@cindex Unix commands, @command{convert}
2126@cindex Unix commands, @command{wget}
2127@vindex mh-fetch-x-image-url
2128
2129Finally, MH-E will display images referenced by the
2130@samp{X-Image-URL:} header field if neither the @samp{Face:} nor the
2131@samp{X-Face:} fields are present@footnote{The display of the images
2132requires the @uref{http://www.gnu.org/software/wget/wget.html,
2133@command{wget} program} to fetch the image and the @command{convert}
2134program from the @uref{http://www.imagemagick.org/, ImageMagick
2135suite}.}. Of the three header fields this is the most efficient in
2136terms of network usage since the image doesn't need to be transmitted
2137with every single mail. The option @code{mh-fetch-x-image-url}
2138controls the fetching of the @samp{X-Image-URL:} header field image
2139with the following values:
2140
2141@table @samp
2142@item Ask Before Fetching
2143You are prompted before the image is fetched. MH-E will remember your
2144reply and will either use the already fetched image the next time the
2145same URL is encountered or silently skip it if you didn't fetch it the
2146first time. This is a good setting.
2147@c -------------------------
2148@item Never Fetch
2149Images are never fetched and only displayed if they are already
2150present in the cache. This is the default.
2151@end table
2152
2153There isn't a value of @samp{Always Fetch} for privacy and DOS (denial
2154of service) reasons. For example, fetching a URL can tip off a spammer
2155that you've read his email (which is why you shouldn't blindly answer
2156yes if you've set this option to @samp{Ask Before Fetching}). Someone
2157may also flood your network and fill your disk drive by sending a
2158torrent of messages, each specifying a unique URL to a very large
2159file.
2160
2161@cindex @file{.mhe-x-image-cache}
2162@cindex files, @file{.mhe-x-image-cache}
2163
2164The cache of images is found in the directory
2165@file{.mhe-x-image-cache} within your MH directory. You can add your
2166own face to the @samp{From:} field too. @xref{Picture}.
2167
2168@cindex @command{mhl}
2169@cindex MH commands, @command{mhl}
2170@vindex mh-mhl-format-file
2171
2172Normally MH-E takes care of displaying messages itself (rather than
2173calling an MH program to do the work). If you'd rather have
2174@command{mhl} display the message (within MH-E), change the option
2175@code{mh-mhl-format-file} from its default value of @samp{Use Default
2176mhl Format (Printing Only)}. You can set this option to @samp{Use
2177Default mhl Format} to get the same output as you would get if you ran
2178@command{mhl} from the shell. If you have a format file that you want
2179MH-E to use, you can set this option to @samp{Specify an mhl Format
2180File} and enter the name of your format file (@command{mhl}(1) or
2181section @uref{@value{MH-BOOK-HOME}/shomes.html#Usisho, Using mhl} in
2182the MH book tells you how to write one). Your format file should
2183specify a non-zero value for @samp{overflowoffset} to allow MH-E to
2184parse the header. Note that @command{mhl} is always used for printing
2185and forwarding; in this case, the value of @code{mh-mhl-format-file}
2186is consulted if you have specified a format file.
2187
2188@cindex citations, highlighting
2189@cindex highlighting citations
2190@vindex mh-highlight-citation-style
2191
2192If the sender of the message has cited other messages in his message,
2193then MH-E will highlight these citations to emphasize the sender's
2194actual response. The option @code{mh-highlight-citation-style} can be
2195customized to change the highlighting style. The @samp{Multicolor}
2196method uses a different color for each indentation while the
2197@samp{Monotone} method highlights all citations in red. To disable
2198highlighting of citations entirely, choose @samp{None}.
2199
2200@cindex URLs, highlighting
2201@cindex email addresses, highlighting
2202@cindex highlighting URLs
2203@cindex highlighting email addresses
2204@cindex links, following
2205@findex goto-address-at-point
2206@kindex C-c @key{RET}
2207@kindex Mouse-2
2208@vindex goto-address-highlight-p
2209
2210Email addresses and URLs in the message are highlighted if the option
2211@code{goto-address-highlight-p} is on, which it is by default. To view
2212the web page for a highlighted URL or to send a message using a
2213highlighted email address, use @kbd{Mouse-2} or @kbd{C-c @key{RET}}
2214(@code{goto-address-at-point}). @xref{Sending Mail}, to see how to
2215configure Emacs to send the message using MH-E.
2216
2217@cindex boldface, showing
2218@cindex emphasis
2219@cindex italics, showing
2220@cindex smileys
2221@cindex typesetting
2222@cindex underline, showing
2223@vindex gnus-emphasis-alist
2224@vindex mh-decode-mime-flag
2225@vindex mh-graphical-emphasis-flag
2226@vindex mh-graphical-smileys-flag
2227
2228It is a long standing custom to inject body language using a
2229cornucopia of punctuation, also known as the @dfn{smileys}. MH-E can
2230render these as graphical widgets if the option
2231@code{mh-graphical-smileys-flag} is turned on, which it is by default.
2232Smileys include patterns such as :-) and ;-). Similarly, a few
2233typesetting features are indicated in ASCII text with certain
2234characters. If your terminal supports it, MH-E can render these
2235typesetting directives naturally if the option
2236@code{mh-graphical-emphasis-flag} is turned on, which it is by
2237default. For example, _underline_ will be
2238@ifhtml
2239@html
2240<u>underlined</u>,
2241@end html
2242@end ifhtml
2243@ifnothtml
2244underlined,
2245@end ifnothtml
2246*bold* will appear in @b{bold}, /italics/ will appear in @i{italics},
2247and so on. See the option @code{gnus-emphasis-alist} for the whole
2248list. Both of these options are disabled if the option
2249@code{mh-decode-mime-flag} is turned off. @xref{Viewing Attachments}.
2250
2251@cindex signature separator
2252@cindex vCard
2253@vindex mh-show-signature
2254
2255MH-E normally renders signatures and vCards in italics so that the
2256body of the message stands out more. MH-E depends on the presence of
2257the @dfn{signature separator} (@code{"-- "}) to do this. You can also
2258customize the face @code{mh-show-signature} so the appearance of the
2259signature block is more to your liking.
2260
2261@vindex mh-show-hook
2262@vindex mh-show-mode-hook
2263
2264Two hooks can be used to control how messages are displayed. The first
2265hook, @code{mh-show-mode-hook}, is called early on in the process of
2266the message display. It is usually used to perform some action on the
2267message's content. The second hook, @code{mh-show-hook}, is the last
2268thing called after messages are displayed. It's used to affect the
2269behavior of MH-E in general or when @code{mh-show-mode-hook} is too
2270early.
2271
2272@cindex MH-Show mode
2273@cindex modes, MH-Show
2274@vindex mh-show-buffer-mode-line-buffer-id
2275
2276For those who like to modify their mode lines, use
2277@code{mh-show-buffer-mode-line-buffer-id} to modify the mode line in
2278the MH-Show buffers. Place the two escape strings @samp{%s} and
2279@samp{%d}, which will display the folder name and the message number,
2280respectively, somewhere in the string in that order. The default value
2281of @code{"@{show-%s@} %d"} yields a mode line of
2282
2283@smallexample
2284-----@{show-+inbox@} 4 (MH-Show)--Bot--------------------------------
2285@end smallexample
2286
2287@node Viewing Attachments, HTML, Viewing, Reading Mail
2288@section Viewing Attachments
2289
2290@cindex attachments
2291@cindex body parts
2292@cindex @command{mhshow}
2293@cindex @command{show}
2294@cindex MH commands, @command{mhshow}
2295@cindex MH commands, @command{show}
2296@cindex MIME
2297@cindex multimedia mail
2298
2299MH has the ability to display @dfn{@sc{mime}} (Multipurpose Internet
2300Mail Extensions) messages which are simply messages with additional
2301@dfn{body parts} or @dfn{attachments}. You can use the MH commands
2302@command{show}@footnote{See the section
2303@uref{@value{MH-BOOK-HOME}/reapre.html, Reading Mail: inc show next
2304prev} in the MH book.} or @command{mhshow}@footnote{See the section
2305@uref{@value{MH-BOOK-HOME}/usimim.html#ReMIMa, Reading MIME Mail} in
2306the MH book.} from the shell to read @sc{mime} messages@footnote{You
2307can call them directly from Emacs if you're running the X Window
2308System: type @kbd{M-! xterm -e mhshow @var{message-number}}. You can
2309leave out the @samp{xterm -e} if you use @command{mhlist} or
2310@command{mhstore}.}.
2311
2312@cindex Emacs, packages, mm-decode
2313@cindex mm-decode package
2314@findex mh-toggle-mh-decode-mime-flag
2315@kindex ; (semicolon)
2316@vindex mh-decode-mime-flag
2317
2318MH-E can handle attachments as well if the Gnus @samp{mm-decode}
2319package is present. If so, the option @code{mh-decode-mime-flag} will
2320be on. Otherwise, you'll see the @sc{mime} body parts rather than text
2321or attachments. There isn't much point in turning off the option
2322@code{mh-decode-mime-flag}; however, you can inspect it if it appears
2323that the body parts are not being interpreted correctly or toggle it
2324with the command @kbd{;} (semicolon;
2325@code{mh-toggle-mh-decode-mime-flag}) to view the raw message. This
2326option also controls the display of quoted-printable messages and
2327other graphical widgets. @xref{Viewing}.
2328
2329@cindex buttons
2330
2331Attachments in MH-E are indicated by @dfn{buttons} like this:
2332
2333@smallexample
2334[1. image/jpeg; foo.jpg]...
2335@end smallexample
2336
2337@findex mh-next-button
2338@findex mh-press-button
2339@findex mh-prev-button
2340@kindex @key{RET}
2341@kindex K @key{TAB}
2342@kindex K S-@key{TAB}
2343@kindex Mouse-1
2344@kindex Mouse-2
2345
2346To view the contents of the button, use either @kbd{Mouse-1} or
2347@kbd{Mouse-2} on the button or @key{RET} (@code{mh-press-button}) when
2348the cursor is over the button. This command is a toggle so if you use
2349it again on the same attachment, it is hidden. If Emacs does not know
2350how to display the attachment, then Emacs offers to save the
2351attachment in a file. To move the cursor to the next button, use the
2352command @kbd{K @key{TAB}} (@code{mh-next-button}). If the end of the
2353buffer is reached then the search wraps over to the start of the
2354buffer. To move the cursor to the previous button, use the command
2355@kbd{K S-@key{TAB}} (@code{mh-prev-button}). If the beginning of the
2356buffer is reached then the search wraps over to the end of the buffer.
2357
2358@cindex attachments, viewing
2359@cindex viewing attachments
2360@findex mh-folder-toggle-mime-part
2361@kindex K v
2362
2363Another way to view the contents of a button is to use the command
2364@kbd{K v} (@code{mh-folder-toggle-mime-part}). This command displays
2365(or hides) the attachment associated with the button under the cursor.
2366If the cursor is not located over a button, then the cursor first
2367moves to the next button, wrapping to the beginning of the message if
2368necessary. This command has the advantage over the previous commands
2369of working from the MH-Folder buffer. You can also provide a numeric
2370prefix argument (as in @kbd{4 K v}) to view the attachment labeled
2371with that number. If Emacs does not know how to display the
2372attachment, then Emacs offers to save the attachment in a file.
2373
2374@cindex @file{/etc/mailcap}
2375@cindex files, @file{/etc/mailcap}
2376@findex mailcap-mime-info
2377@findex mh-display-with-external-viewer
2378@kindex K e
2379
2380If Emacs does not know how to view an attachment, you could save it
2381into a file and then run some program to open it. It is easier,
2382however, to launch the program directly from MH-E with the command
2383@kbd{K e} (@code{mh-display-with-external-viewer}). While you'll most
2384likely use this to view spreadsheets and documents, it is also useful
2385to use your browser to view HTML attachments with higher fidelity than
2386what Emacs can provide. This command displays the attachment
2387associated with the button under the cursor. If the cursor is not
2388located over a button, then the cursor first moves to the next button,
2389wrapping to the beginning of the message if necessary. You can provide
2390a numeric prefix argument (as in @kbd{4 K e}) to view the attachment
2391labeled with that number. This command tries to provide a reasonable
2392default for the viewer by calling the Emacs function
2393@code{mailcap-mime-info}. This function usually reads the file
2394@file{/etc/mailcap}.
2395
2396@cindex attachments, saving
2397@cindex saving attachments
2398@findex mh-folder-save-mime-part
2399@kindex K o
2400
2401Use the command @kbd{K o} (@code{mh-folder-save-mime-part}) to save
2402attachments (the mnemonic is ``output''). This command saves the
2403attachment associated with the button under the cursor. If the cursor
2404is not located over a button, then the cursor first moves to the next
2405button, wrapping to the beginning of the message if necessary. You can
2406also provide a numeric prefix argument (as in @kbd{3 K o}) to save the
2407attachment labeled with that number. This command prompts you for a
2408filename and suggests a specific name if it is available.
2409
2410@cindex @command{mhn}
2411@cindex @command{mhstore}
2412@cindex MH commands, @command{mhn}
2413@cindex MH commands, @command{mhstore}
2414@findex mh-mime-save-parts
2415@kindex K a
2416@vindex mh-mime-save-parts-default-directory
2417
2418You can save all of the attachments at once with the command @kbd{K a}
2419(@code{mh-mime-save-parts}). The attachments are saved in the
2420directory specified by the option
2421@code{mh-mime-save-parts-default-directory} unless you use a prefix
2422argument (as in @kbd{C-u K a}) in which case you are prompted for the
2423directory. These directories may be superseded by MH profile
2424components, since this function calls on @command{mhstore}
2425(@command{mhn}) to do the work.
2426
2427@vindex mh-mime-save-parts-default-directory
2428
2429The default value for the option
2430@code{mh-mime-save-parts-default-directory} is @samp{Prompt Always} so
2431that you are always prompted for the directory in which to save the
2432attachments. However, if you usually use the same directory within a
2433session, then you can set this option to @samp{Prompt the First Time}
2434to avoid the prompt each time. you can make this directory permanent
2435by choosing @samp{Directory} and entering the directory's name.
2436
2437@cindex attachments, inline
2438@cindex inline attachments
2439@findex mh-toggle-mime-buttons
2440@kindex K t
2441@vindex mh-display-buttons-for-inline-parts-flag
2442
2443The sender can request that attachments should be viewed inline so
2444that they do not really appear like an attachment at all to the
2445reader. Most of the time, this is desirable, so by default MH-E
2446suppresses the buttons for inline attachments. On the other hand, you
2447may receive code or HTML which the sender has added to his message as
2448inline attachments so that you can read them in MH-E. In this case, it
2449is useful to see the buttons so that you know you don't have to cut
2450and paste the code into a file; you can simply save the attachment. If
2451you want to make the buttons visible for inline attachments, you can
2452use the command @kbd{K t} (@code{mh-toggle-mime-buttons}) to toggle
2453the visibility of these buttons. You can turn on these buttons
2454permanently by turning on the option
2455@code{mh-display-buttons-for-inline-parts-flag}.
2456
2457MH-E cannot display all attachments inline however. It can display
2458text (including @sc{html}) and images.
2459
2460@cindex header field, @samp{Content-Disposition:}
2461@cindex inline images
2462@cindex @samp{Content-Disposition:} header field
2463@vindex mh-max-inline-image-height
2464@vindex mh-max-inline-image-width
2465
2466Some older mail programs do not insert the needed
2467plumbing@footnote{This plumbing is the @samp{Content-Disposition:}
2468header field.} to tell MH-E whether to display the attachments inline
2469or not. If this is the case, MH-E will display these images inline if
2470they are smaller than the window. However, you might want to allow
2471larger images to be displayed inline. To do this, you can change the
2472options @code{mh-max-inline-image-width} and
2473@code{mh-max-inline-image-height} from their default value of zero to
2474a large number. The size of your screen is a good choice for these
2475numbers.
2476
2477@cindex alternatives
2478@cindex attachments, alternatives
2479@vindex mh-display-buttons-for-alternatives-flag
2480
2481Sometimes, a mail program will produce multiple alternatives of an
2482attachment in increasing degree of faithfulness to the original
2483content. By default, only the preferred alternative is displayed. If
2484the option @code{mh-display-buttons-for-alternatives-flag} is on, then
2485the preferred part is shown inline and buttons are shown for each of
2486the other alternatives.
2487
2488@vindex mm-discouraged-alternatives
2489
2490Many people prefer to see the @samp{text/plain} alternative rather
2491than the @samp{text/html} alternative. To do this in MH-E, customize
2492the option @code{mm-discouraged-alternatives}, and add
2493@samp{text/html}. The next best alternative, if any, will be shown.
2494
2495@kindex K i
2496@findex mh-folder-inline-mime-part
2497
2498You can view the raw contents of an attachment with the command @kbd{K
2499i} (@code{mh-folder-inline-mime-part}). This command displays (or
2500hides) the contents of the attachment associated with the button under
2501the cursor verbatim. If the cursor is not located over a button, then
2502the cursor first moves to the next button, wrapping to the beginning
2503of the message if necessary. You can also provide a numeric prefix
2504argument (as in @kbd{4 K i}) to view the attachment labeled with that
2505number.
2506
2507For additional information on buttons, see
2508@ifinfo
2509@ref{Article Buttons,,,gnus}, and @ref{MIME Commands,,,gnus}.
2510@end ifinfo
2511@ifnotinfo
2512the chapters @uref{http://www.gnus.org/manual/gnus_101.html#SEC101,
2513Article Buttons} and
2514@uref{http://www.gnus.org/manual/gnus_108.html#SEC108, MIME Commands}
2515in the @cite{The Gnus Manual}.
2516@end ifnotinfo
2517
2518@node HTML, Digests, Viewing Attachments, Reading Mail
2519@section HTML
2520
2521@cindex HTML
2522@cindex Gnus
2523
2524MH-E can display messages that have been sent in HTML@footnote{This
2525feature depends on a version of Gnus that is at least 5.10.}. The
2526content of the message will appear in the MH-Show buffer as you would
2527expect if the entire message is HTML, or there is an inline HTML body
2528part. However, if there is an HTML body part that is an attachment,
2529then you'll see a button like this:
2530
2531@smallexample
2532[1. text/html; foo.html]...
2533@end smallexample
2534
2535To see how to read the contents of this body part, see @ref{Viewing
2536Attachments}.
2537
2538@vindex mm-text-html-renderer
2539
2540The browser that MH-E uses is determined by the option
2541@code{mm-text-html-renderer}. The default setting is set automatically
2542based upon the presence of a known browser on your system. If you wish
2543to use a different browser, then set this option accordingly. See the
2544documentation for the browser you use for additional information on
2545how to use it. In particular, find and disable the option to render
2546images as this can tip off spammers that the email address they have
2547used is valid.
2548
2549@vindex mm-text-html-renderer
2550
2551If you're confused about which @code{mm-text-html-renderer} to use,
2552here's a brief description of each, sorted by popularity, that
2553includes the results of a quick poll of MH-E users from 2005-12-23.
2554
2555@table @asis
2556@cindex browser, @samp{w3m}
2557@cindex @samp{w3m}
2558@kindex Mouse-2
2559@kindex S-Mouse-2
2560@item @samp{w3m} 7
2561The @samp{w3m} browser requires an external program. It's quick,
2562produces pretty nice output, and best of all, it's the only browser
2563that highlights links. These can be clicked with @kbd{Mouse-2} to view
2564the content of the link in @samp{w3m} or with @kbd{S-Mouse-2} to view
2565the content of the link in an external browser. The @samp{w3m} browser
2566handles tables well and actually respects the table's width parameter
2567(which can cause text to wrap if the author didn't anticipate that the
2568page would be viewed in Emacs).
2569@c -------------------------
2570@cindex browser, @samp{w3m-standalone}
2571@cindex @samp{w3m-standalone}
2572@item @samp{w3m-standalone} 3
2573This browser, along with @samp{nil} for the external browser, are the
2574only choices that work without having to download a separate lisp
2575package or external program. This browser is quick, but does not show
2576links. It handles simple tables but some tables get rendered much
2577wider than the Emacs frame. This browser was the only one not to
2578handle the escape @samp{&ndash;} (it printed a @samp{?}), but it did
2579render @samp{&reg;}.
2580@c -------------------------
2581@cindex browser, @samp{links}
2582@cindex @samp{links}
2583@item @samp{links} 1
2584The @samp{links} browser requires an external program. It's quick, and
2585produces nicer output than @samp{lynx} on single column mails in
2586tables. However, it doesn't show links and it doesn't do as nice a job
2587on multi-column tables as some lines wrap. At least it fits in 80
2588columns and thus seems better than @samp{w3} and
2589@samp{w3m-standalone}. Converts escapes such as @samp{&reg;} to (R).
2590@c -------------------------
2591@cindex browser, @samp{lynx}
2592@cindex @samp{lynx}
2593@item @samp{lynx} 1
2594The @samp{lynx} browser requires an external program. It's quick and
2595produces pretty decent output but it doesn't show links. It doesn't
2596seem to do multi-column tables which makes output much cleaner. It
2597centers the output and wraps long lines more than most. Handles
2598@samp{&reg;}.
2599@c -------------------------
2600@item @samp{nil} 1
2601This choice obviously requires an external browser. Like
2602@samp{w3m-standalone}, it works out of the box. With this setting,
2603HTML messages have a button for the body part which you can view with
2604@kbd{K v} (@code{mh-folder-toggle-mime-part}).
2605@c -------------------------
2606@cindex browser, @samp{w3}
2607@cindex @samp{w3}
2608@item @samp{w3} 0
2609This choice does not require an external program as all of the
2610rendering is done in lisp. You do need to get the package separately.
2611This browser is @strong{slow}, and doesn't appear to have been updated
2612since 2001 and the author hasn't responded to my emails. It displays
2613unknown tags instead of hiding them, so you get to see all the
2614Microsoft crap in certain messages. Tends to make multi-column tables
2615wider than even a full-screen Emacs can handle. Like @samp{w3m}, you
2616can follow links, but you have to find them first as they are not
2617highlighted. Performs well on single-column tables and handles escapes
2618such as @samp{&reg;}.
2619@c -------------------------
2620@cindex browser, @samp{html2text}
2621@cindex @samp{html2text}
2622@item @samp{html2text} 0
2623The @samp{html2text} browser requires an external program. I noticed
2624that it can do some nasty things with simple HTML mails (like filling
2625the entire message as if it were one paragraph, including signature).
2626On another message, it displayed half of the HTML tags for some
2627reason.
2628@end table
2629
2630@vindex mm-text-html-renderer
2631
2632For a couple more sources of information about
2633@code{mm-text-html-renderer},
2634@ifinfo
2635@xref{Display Customization,,,emacs-mime}, and the documentation for
2636the Gnus command @kbd{W h} (@pxref{Article Washing,,,gnus},).
2637@end ifinfo
2638@ifnotinfo
2639see section @uref{http://www.gnus.org/manual/emacs-mime_6.html,
2640Display Customization} in the @cite{The Emacs MIME Manual} and the
2641documentation for the Gnus command @kbd{W h} (see section
2642@uref{http://www.gnus.org/manual/gnus_99.html, Article Washing} in the
2643@cite{The Gnus Manual}).
2644@end ifnotinfo
2645
2646@node Digests, Reading PGP, HTML, Reading Mail
2647@section Digests
2648
2649@cindex digests
2650@findex mh-page-digest
2651@findex mh-page-digest-backwards
2652@kindex D @key{BS}
2653@kindex D @key{SPC}
2654@kindex @key{BS}
2655@kindex @key{SPC}
2656
2657A digest is a message that contains other messages. Special MH-E
2658commands let you read digests conveniently. You can use @key{SPC} and
2659@key{BS} to page through the digest as if it were a normal message,
2660but if you wish to skip to the next message in the digest, use
2661@kbd{D @key{SPC}} (@code{mh-page-digest}). To return to a previous message,
2662use @kbd{D @key{BS}} (@code{mh-page-digest-backwards}).
2663
2664@cindex @command{burst}
2665@cindex MH commands, @command{burst}
2666@cindex MH-Folder Show mode
2667@cindex modes, MH-Folder Show
2668@findex mh-burst-digest
2669@kindex d
2670@kindex D b
2671@kindex t
2672
2673Another handy command is @kbd{D b} (@code{mh-burst-digest}). This
2674command uses the MH command @command{burst}@footnote{See the section
2675@uref{@value{MH-BOOK-HOME}/burdig.html, Bursting Messages} in the MH
2676book.} to break out each message in the digest into its own message.
2677Using this command, you can quickly delete unwanted messages, like
2678this: Once the digest is split up, toggle out of MH-Folder Show mode
2679with @kbd{t} (@pxref{Folders}) so that the scan lines fill the screen
2680and messages aren't displayed. Then use @kbd{d} (@pxref{Reading Mail})
2681to quickly delete messages that you don't want to read (based on the
2682@samp{Subject:} header field). You can also burst the digest to reply
2683directly to the people who posted the messages in the digest. One
2684problem you may encounter is that the @samp{From:} header fields are
2685preceded with a @samp{>} so that your reply can't create the
2686@samp{To:} field correctly. In this case, you must correct the
2687@samp{To:} field yourself. This is described later (@pxref{Editing
2688Drafts}).
2689
2690@node Reading PGP, Printing, Digests, Reading Mail
2691@section Signed and Encrypted Messages
2692
2693@cindex GPG
2694@cindex GnuPG
2695@cindex Gnus
2696@cindex OpenPGP
2697@cindex PGP
2698@cindex RFC 3156
2699@cindex encrypted messages
2700@cindex security
2701@cindex signed messages
2702
2703You can read encrypted or signed PGP or GPG messages with
2704MH-E@footnote{This feature depends on post-5.10 versions of Gnus.
2705@cite{MIME Security with OpenPGP} is documented in
2706@uref{http://www.rfc-editor.org/rfc/rfc3156.txt, RFC 3156}. However,
2707MH-E can also decrypt old-style PGP messages that are not in MIME
2708format.}. This section assumes that you already have a good
2709understanding of GPG and have set up your keys appropriately.
2710
2711If someone sends you a signed message, here is what you'll see:
2712
2713@smallexample
2714@group
2715[[PGP Signed Part:Bill Wohler <wohler@@stop.mail-abuse.org>]]
2716This is a signed message.
2717
2718[[End of PGP Signed Part]]
2719@end group
2720@end smallexample
2721
2722@cindex keychain
2723@cindex key server
2724@cindex signed messages
2725
2726If the key for the given signature is not in your keychain, you'll be
2727given the opportunity to fetch the key from a key server and verify
2728the key. If the message is really large, the verification process can
2729take a long time. You can press @kbd{C-g} at any time to
2730cancel@footnote{Unfortunately in the current version, the validation
2731process doesn't display a message so it appears that MH-E has hung. We
2732hope that this will be fixed in the future.}.
2733
2734If the signature doesn't check out, you might see something like this:
2735
2736@smallexample
2737@group
2738[[PGP Signed Part:Failed]]
2739This is a signed message.
2740This is garbage added after the signature was made.
2741
2742[[End of PGP Signed Part]]
2743@end group
2744@end smallexample
2745
2746@cindex decrypting messages
2747
2748If someone sends you an encrypted message, MH-E will ask for your
2749passphrase to decrypt the message. You should see something like this:
2750
2751@smallexample
2752@group
2753[[PGP Encrypted Part:OK]]
2754
2755[[PGP Signed Part:Bill Wohler <wohler@@stop.mail-abuse.org>]]
2756This is the secret message.
2757
2758[[End of PGP Signed Part]]
2759
2760[[End of PGP Encrypted Part]]
2761@end group
2762@end smallexample
2763
2764If there is a problem decrypting the message, the button will say:
2765
2766@smallexample
2767[[PGP Encrypted Part:Failed]]
2768@end smallexample
2769
2770You can read the contents of this button using the methods described in
2771@ref{Viewing Attachments}. If the message were corrupted, you'd see
2772this:
2773
2774@smallexample
2775[[PGP Encrypted Part:Failed]
2776Invalid base64 data]
2777@end smallexample
2778
2779If your passphrase were incorrect, you'd see something like this:
2780
2781@smallexample
2782[GNUPG:] ENC_TO CD9C88BB610BD9AD 1 0
2783[GNUPG:] USERID_HINT CD9C88BB610BD9AD Bill Wohler <wohler@@stop.mail-abuse.org>
2784[GNUPG:] NEED_PASSPHRASE CD9C88BB610BD9AD CD9C88BB610BD9AD 1 0
2785[GNUPG:] BAD_PASSPHRASE CD9C88BB610BD9AD
2786gpg: encrypted with 1024-bit RSA key, ID 610BD9AD, created 1997-09-09
2787 "Bill Wohler <wohler@@stop.mail-abuse.org>"
2788gpg: public key decryption failed: bad passphrase
2789[GNUPG:] BEGIN_DECRYPTION
2790[GNUPG:] DECRYPTION_FAILED
2791gpg: decryption failed: secret key not available
2792[GNUPG:] END_DECRYPTION
2793
2794gpg exited abnormally: '2'
2795@end smallexample
2796
2797@vindex mh-show-pgg-bad
2798@vindex mh-show-pgg-good
2799@vindex mh-show-pgg-unknown
2800
2801The appearance of the buttons is controlled by the faces
2802@code{mh-show-pgg-good}, @code{mh-show-pgg-bad}, and
2803@code{mh-show-pgg-unknown} depending on the validity of the signature.
2804The latter is used whether the signature is unknown or untrusted.
2805
2806@cindex @samp{pgg} customization group
2807@cindex PGG
2808@cindex customization group, @samp{pgg}
2809
2810The @samp{pgg} customization group may have some settings which may
2811interest you.
2812@iftex
2813See @cite{The PGG Manual}.
2814@end iftex
2815@ifinfo
2816@xref{Top, , The PGG Manual, pgg, The PGG Manual}.
2817@end ifinfo
2818@ifhtml
2819See
2820@uref{http://www.dk.xemacs.org/Documentation/packages/html/pgg.html,
2821@cite{The PGG Manual}}.
2822@end ifhtml
2823
2824@node Printing, Files and Pipes, Reading PGP, Reading Mail
2825@section Printing Your Mail
2826
2827@cindex printing
2828@findex mh-ps-print-msg
2829@findex mh-ps-print-msg-file
2830@kindex P f
2831@kindex P p
2832@vindex mh-lpr-command-format
2833@vindex mh-print-background-flag
2834
2835To print messages in MH-E, use the command @kbd{P p}
2836(@code{mh-ps-print-msg}). You can print all the messages in a range
2837(as in @kbd{C-u P p 1 3 5-7 last:5 frombob @key{RET}},
2838@pxref{Ranges}). You can also send the output to a file with @kbd{P f}
2839(@code{mh-ps-print-msg-file}). This command will print inline text
2840attachments but will not decrypt messages. However, when a message is
2841displayed in an MH-Show buffer, then that buffer is used verbatim for
2842printing with the caveat that only text attachments, if opened inline,
2843are printed. Therefore, encrypted messages can be printed by showing
2844and decrypting them first. The commands @kbd{P p} and @kbd{P f} do not
2845use the options @code{mh-lpr-command-format} or
2846@code{mh-print-background-flag}, described below.
2847
2848@findex mh-ps-print-toggle-color
2849@kindex P C
2850@vindex ps-print-color-p
2851
2852Colors are emulated on black-and-white printers with shades of gray.
2853This might produce illegible output, even if your screen colors only
2854use shades of gray. If this is the case, try using the command @kbd{P
2855C} (@code{mh-ps-print-toggle-color}) to toggle between color, no
2856color, and a black and white representation of the colors and see
2857which works best. You change this setting permanently by customizing
2858the option @code{ps-print-color-p}.
2859
2860@findex mh-ps-print-toggle-faces
2861@kindex P F
2862
2863Another related function is the command @kbd{P F}
2864(@code{mh-ps-print-toggle-faces}). This command toggles between using
2865faces and not. When faces are enabled, the printed message will look
2866very similar to the message in the MH-Show buffer.
2867
2868@cindex ps-print package
2869@cindex Emacs, packages, ps-print
2870
2871MH-E uses the @samp{ps-print} package to do the printing, so you can
2872customize the printing further by going to the @samp{ps-print}
2873customization group.
2874
2875@cindex @command{lpr}
2876@cindex @command{mhl}
2877@cindex MH commands, @command{mhl}
2878@cindex Unix commands, @command{lpr}
2879@findex mh-print-msg
2880@kindex P l
2881
2882An alternative to using the @samp{ps-print} package is the command
2883@kbd{P l} (@code{mh-print-msg}) (the @i{l} is for @i{l}ine printer or
2884@i{l}pr). You can print all the messages in a range. The message is
2885formatted with @command{mhl}@footnote{See the section
2886@uref{@value{MH-BOOK-HOME}/shomes.html#Usisho, Using mhl} in the MH
2887book.} and printed with the @command{lpr} command.
2888
2889@kindex P f
2890@kindex P l
2891@kindex P p
2892@vindex mh-lpr-command-format
2893@vindex mh-print-background-flag
2894
2895The command @kbd{P l} uses two options. The option
2896@code{mh-lpr-command-format} contains the Unix command line which
2897performs the actual printing. The string can contain one escape,
2898@samp{%s}, which is replaced by the name of the folder and the message
2899number and is useful for print job names. The default setting is
2900@code{"lpr -J '%s'"}. I use @code{"mpage -h'%s' -b Letter -H1of -mlrtb
2901-P"} which produces a nice header and adds a bit of margin so the text
2902fits within my printer's margins. Normally messages are printed in the
2903foreground. If this is slow on your system, you may elect to turn on
2904the option @code{mh-print-background-flag} to print in the background.
2905If you do this, do not delete the message until it is printed or else
2906the output may be truncated. These options are not used by the
2907commands @kbd{P p} or @kbd{P f}.
2908
2909@node Files and Pipes, Navigating, Printing, Reading Mail
2910@section Files and Pipes
2911
2912@cindex files
2913@cindex pipes
2914@findex mh-refile-or-write-again
2915@findex mh-write-msg-to-file
2916@kindex >
2917@kindex !
2918
2919MH-E does offer a couple of commands that are not a part of MH@. The
2920first one, @kbd{>} (@code{mh-write-msg-to-file}), writes a message to
2921a file. You are prompted for the filename. If the file already exists,
2922the message is appended to it. You can also write the message to the
2923file without the header by specifying a prefix argument (such as
2924@kbd{C-u > /tmp/foobar @key{RET}}). Subsequent writes to the same file
2925can be made with the command @kbd{!}
2926(@code{mh-refile-or-write-again}).
2927
2928@findex mh-pipe-msg
2929@kindex |
2930@kindex l
2931
2932You can also pipe the message through a Unix shell command with the
2933command @kbd{|} (@code{mh-pipe-msg}). You are prompted for the Unix
2934command through which you wish to run your message. If you give a
2935prefix argument to this command, the message header is included in the
2936text passed to the command (the contrived example @kbd{C-u | lpr}
2937would be done with the @kbd{l} command instead).
2938
2939@cindex @command{shar}
2940@cindex @command{uuencode}
2941@cindex Unix commands, @command{shar}
2942@cindex Unix commands, @command{uuencode}
2943@findex mh-store-msg
2944@kindex X s
2945@vindex mh-store-default-directory
2946
2947If the message is a shell archive @command{shar} or has been run
2948through @command{uuencode} use @kbd{X s} (@code{mh-store-msg}) to
2949extract the body of the message. The default directory for extraction
2950is the current directory; however, you have a chance to specify a
2951different extraction directory. The next time you use this command,
2952the default directory is the last directory you used. If you would
2953like to change the initial default directory, customize the option
2954@code{mh-store-default-directory}, change the value from
2955@samp{Current} to @samp{Directory}, and then enter the name of the
2956directory for storing the content of these messages.
2957
2958@findex mh-store-buffer
2959@kindex @key{RET}
2960@kindex X s
2961
2962By the way, @kbd{X s} calls the Emacs Lisp function
2963@code{mh-store-buffer}. I mention this because you can use it directly
2964if you're editing a buffer that contains a file that has been run
2965through @command{uuencode} or @command{shar}. For example, you can
2966extract the contents of the current buffer in your home directory by
2967typing @kbd{M-x mh-store-buffer @key{RET} ~ @key{RET}}.
2968
2969@node Navigating, Miscellaneous Commands and Options, Files and Pipes, Reading Mail
2970@section Navigating
2971
2972@cindex moving between messages
2973@cindex navigation
2974@findex mh-first-msg
2975@findex mh-goto-msg
2976@findex mh-last-msg
2977@findex mh-next-undeleted-msg
2978@findex mh-next-unread-msg
2979@findex mh-previous-undeleted-msg
2980@findex mh-previous-unread-msg
2981@kindex g
2982@kindex M-<
2983@kindex M->
2984@kindex M-n
2985@kindex M-p
2986@kindex n
2987@kindex p
2988
2989To move on to the next message, use the command @kbd{n}
2990(@code{mh-next-undeleted-msg}); use @kbd{p}
2991(@code{mh-previous-undeleted-msg}) to read the previous message. To
2992move to the next unread message, use @kbd{M-n}
2993(@code{mh-next-unread-msg}); use @kbd{M-p}
2994(@code{mh-previous-unread-msg}) to move to the previous unread
2995message. These commands can be given a prefix argument to specify how
2996many messages to skip (for example, @kbd{5 n}). You can also move to a
2997specific message with @kbd{g} (@code{mh-goto-msg}). You can enter the
2998message number either before or after typing @kbd{g}. In the latter
2999case, Emacs prompts you. Finally, you can go to the first or last
3000message with @kbd{M-<} (@code{mh-first-msg}) and @kbd{M->}
3001(@code{mh-last-msg}) respectively.
3002
3003@cindex MH-Folder mode
3004@cindex modes, MH-Folder
3005@findex next-line
3006@findex previous-line
3007@kindex C-n
3008@kindex C-p
3009@kindex @key{RET}
3010
3011You can also use the Emacs commands @kbd{C-p} (@code{previous-line})
3012and @kbd{C-n} (@code{next-line}) to move up and down the scan lines in
3013the MH-Folder window. These commands can be used in conjunction with
3014@key{RET} to look at deleted or refiled messages.
3015
3016@cindex deleting messages
3017@findex mh-delete-msg
3018@kindex d
3019@kindex n
3020@kindex p
3021
3022To mark a message for deletion, use the command @kbd{d}
3023(@code{mh-delete-msg}). A @samp{D} is placed by the message in the
3024scan window, and the next undeleted message is displayed. If the
3025previous command had been @kbd{p}, then the next message displayed is
3026the first undeleted message previous to the message just deleted. Use
3027@kbd{n} to force subsequent @kbd{d} commands to move forward to the
3028next undeleted message after deleting the message under the cursor.
3029You may also specify a range (for example, @kbd{C-u d 1 3 5-7 last:5
3030frombob @key{RET}}, @pxref{Ranges}).
3031
3032@findex mh-delete-msg-no-motion
3033@kindex C-d
3034
3035The command @kbd{C-d} (@code{mh-delete-msg-no-motion}) marks the
3036message (or messages in range) for deletion but leaves the cursor at
3037the current message in case you wish to perform other operations on
3038the message.
3039
3040@findex mh-delete-subject
3041@findex mh-delete-subject-or-thread
3042@findex mh-thread-delete
3043@findex mh-undo
3044@kindex k
3045@kindex T d
3046@kindex u
3047
3048And to delete more messages faster, you can use @kbd{k}
3049(@code{mh-delete-subject-or-thread}) to delete all the messages with
3050the same subject as the current message. This command puts these
3051messages in a sequence named @samp{subject}. You can undo this action
3052by using @kbd{u} (@code{mh-undo}) with a prefix argument and then
3053specifying the @samp{subject} sequence. However, if the buffer is
3054displaying a threaded view of the folder then @kbd{k} behaves like
3055@kbd{T d} (@code{mh-thread-delete}). @xref{Threading}.
3056
3057@findex mh-execute-commands
3058@kindex x
3059
3060However you mark a message for deletion, the command @kbd{x}
3061(@code{mh-execute-commands}) actually carries out the deletion
3062(@pxref{Folders}).
3063
3064@vindex mh-delete-msg-hook
3065
3066The hook @code{mh-delete-msg-hook} is called after you mark a message
3067for deletion. For example, a past maintainer of MH-E used this once
3068when he kept statistics on his mail usage.
3069
3070@node Miscellaneous Commands and Options, , Navigating, Reading Mail
3071@section Miscellaneous Commands and Options
3072
3073This section contains a few more miscellaneous commands and options.
3074
3075@cindex editing message
3076@findex mh-modify
3077@kindex M
3078
3079There are times when you need to edit a message. For example, you may
3080need to fix a broken Content-Type header field. You can do this with
3081the command @kbd{M} (@code{mh-modify}). It displays the raw message in
3082an editable buffer. When you are done editing, save and kill the
3083buffer as you would any other.
3084
3085@findex mh-kill-folder
3086@findex mh-pack-folder
3087@vindex mh-do-not-confirm-flag
3088
3089Commands such as @code{mh-pack-folder} prompt to confirm whether to
3090process outstanding moves and deletes or not before continuing.
3091Turning on the option @code{mh-do-not-confirm-flag} means that these
3092actions will be performed---which is usually desired but cannot be
3093retracted---without question@footnote{In previous versions of MH-E,
3094this option suppressed the confirmation in @code{mh-kill-folder}.
3095Since this kept most users from setting this option,
3096@code{mh-kill-folder} was modified in version 6.0 to always ask for
3097confirmation subject to @code{mh-kill-folder-suppress-prompt-hook}.
3098@xref{Folders}.}.
3099
3100@cindex MH-Folder mode
3101@cindex modes, MH-Folder
3102@vindex mh-summary-height
3103
3104The option @code{mh-summary-height} controls the number of scan lines
3105displayed in the MH-Folder window, including the mode line. The
3106default value of this option is @samp{Automatic} which means that the
3107MH-Folder buffer will maintain the same proportional size if the frame
3108is resized. If you'd prefer a fixed height, then choose the
3109@samp{Fixed Size} option and enter the number of lines you'd like to
3110see.
3111
3112@vindex mh-bury-show-buffer-flag
3113
3114Normally the buffer for displaying messages is buried at the bottom at
3115the buffer stack. You may wish to disable this feature by turning off
3116the option @code{mh-bury-show-buffer-flag}. One advantage of not
3117burying the show buffer is that one can delete the show buffer more
3118easily in an electric buffer list because of its proximity to its
3119associated MH-Folder buffer. Try running @kbd{M-x
3120electric-buffer-list} to see what I mean.
3121
3122@cindex @file{.emacs}
3123@cindex files, @file{.emacs}
3124@cindex reading mail
3125
3126Before we leave this section, I'll include a function that I use as a
3127front end to MH-E@footnote{Stephen Gildea's favorite binding is
3128@kbd{(global-set-key "\C-cr" 'mh-rmail)}.}. It toggles between your
3129working window configuration, which may be quite involved---windows
3130filled with source, compilation output, man pages, and other
3131documentation---and your MH-E window configuration. Like the rest of
3132the customization described in this section, simply add the following
3133code to @file{~/.emacs}.
3134
3135@iftex
3136@filbreak
3137@end iftex
3138
3139@findex mh-rmail, example
3140
3141@smalllisp
3142@group
3143(defvar my-mh-screen-saved nil
3144 "Set to non-@code{nil} when MH-E window configuration shown.")
3145(defvar my-normal-screen nil "Normal window configuration.")
3146(defvar my-mh-screen nil "MH-E window configuration.")
3147
3148(defun my-mh-rmail (&optional arg)
3149 "Toggle between MH-E and normal screen configurations.
3150With non-@code{nil} or prefix argument, @i{inc} mailbox as well
3151when going into mail."
3152 (interactive "P") ; @r{user callable function, P=prefix arg}
3153 (setq my-mh-screen-saved ; @r{save state}
3154 (cond
3155 ;; @r{Bring up MH-E screen if arg or normal window configuration.}
3156 ;; @r{If arg or +inbox buffer doesn't exist, run mh-rmail.}
3157 ((or arg (null my-mh-screen-saved))
3158 (setq my-normal-screen (current-window-configuration))
3159 (if (or arg (null (get-buffer "+inbox")))
3160 (mh-rmail)
3161 (set-window-configuration my-mh-screen))
3162 t) ; @r{set my-mh-screen-saved to @code{t}}
3163 ;; @r{Otherwise, save MH-E screen and restore normal screen.}
3164 (t
3165 (setq my-mh-screen (current-window-configuration))
3166 (set-window-configuration my-normal-screen)
3167 nil)))) ; @r{set my-mh-screen-saved to nil}
3168
3169(global-set-key "\C-x\r" 'my-mh-rmail) ;@r{ call with C-x @key{RET}}
3170
3171@i{Starting MH-E}
3172
3173@end group
3174@end smalllisp
3175
3176If you type an argument (@kbd{C-u}) or if @code{my-mh-screen-saved} is
3177@code{nil} (meaning a non-MH-E window configuration), the current
3178window configuration is saved, either the @samp{+inbox} buffer is
3179displayed or @code{mh-rmail} is run, and the MH-E window configuration
3180is shown. Otherwise, the MH-E window configuration is saved and the
3181original configuration is displayed.
3182
3183@node Folders, Sending Mail, Reading Mail, Top
3184@chapter Organizing Your Mail with Folders
3185
3186@cindex @samp{Folder} menu
3187@cindex @samp{Message} menu
3188@cindex folders
3189@cindex menu, @samp{Folder}
3190@cindex menu, @samp{Message}
3191@cindex using folders
3192
3193This chapter discusses the things you can do with folders within MH-E.
3194The commands in this chapter are also found in the @samp{Folder} and
3195@samp{Message} menus.
3196
3197@table @kbd
3198@kindex ?
3199@findex mh-help
3200@item ?
3201Display cheat sheet for the MH-E commands (@code{mh-help}).
3202@c -------------------------
3203@kindex !
3204@findex mh-refile-or-write-again
3205@item !
3206Repeat last output command (@code{mh-refile-or-write-again}).
3207@c -------------------------
3208@cindex @samp{Message > Copy Message to Folder...} menu item
3209@cindex menu item, @samp{Message > Copy Message to Folder...}
3210@kindex c
3211@findex mh-copy-msg
3212@item c
3213Copy range to folder (@code{mh-copy-msg}).
3214@c -------------------------
3215@kindex F ?
3216@findex mh-prefix-help
3217@item F ?
3218Display cheat sheet for the commands of the current prefix in
3219minibuffer (@code{mh-prefix-help}).
3220@c -------------------------
3221@kindex F '
3222@findex mh-index-ticked-messages
3223@item F '
3224Display ticked messages (@code{mh-index-ticked-messages}).
3225@c -------------------------
3226@kindex F c
3227@findex mh-catchup
3228@item F c
3229Delete range from the @samp{unseen} sequence (@code{mh-catchup}).
3230@c -------------------------
3231@kindex F k
3232@findex mh-kill-folder
3233@item F k
3234Remove folder (@code{mh-kill-folder}).
3235@c -------------------------
3236@cindex @samp{Folder > List Folders} menu item
3237@cindex menu item, @samp{Folder > List Folders}
3238@kindex F l
3239@findex mh-list-folders
3240@item F l
3241List all folders (@code{mh-list-folders}).
3242@c -------------------------
3243@cindex @samp{Folder > View New Messages} menu item
3244@cindex menu item, @samp{Folder > View New Messages}
3245@kindex F n
3246@findex mh-index-new-messages
3247@item F n
3248Display unseen messages (@code{mh-index-new-messages}).
3249@c -------------------------
3250@cindex @samp{Folder > Pack Folder} menu item
3251@cindex menu item, @samp{Folder > Pack Folder}
3252@kindex F p
3253@findex mh-pack-folder
3254@item F p
3255Pack folder (@code{mh-pack-folder}).
3256@c -------------------------
3257@kindex F q
3258@findex mh-index-sequenced-messages
3259@item F q
3260Display messages in any sequence (@code{mh-index-sequenced-messages}).
3261@c -------------------------
3262@cindex @samp{Folder > Rescan Folder} menu item
3263@cindex menu item, @samp{Folder > Rescan Folder}
3264@kindex F r
3265@findex mh-rescan-folder
3266@item F r
3267Rescan folder (@code{mh-rescan-folder}).
3268@c -------------------------
3269@cindex @samp{Folder > Search...} menu item
3270@cindex menu item, @samp{Folder > Search...}
3271@kindex F s
3272@findex mh-search
3273@item F s
3274Search your MH mail (@code{mh-search}).
3275@c -------------------------
3276@cindex @samp{Folder > Sort Folder} menu item
3277@cindex menu item, @samp{Folder > Sort Folder}
3278@kindex F S
3279@findex mh-sort-folder
3280@item F S
3281Sort folder (@code{mh-sort-folder}).
3282@c -------------------------
3283@kindex F u
3284@findex mh-undo-folder
3285@item F u
3286Undo all refiles and deletes in the current folder (@code{mh-undo-folder}).
3287@c -------------------------
3288@cindex @samp{Folder > Visit a Folder...} menu item
3289@cindex menu item, @samp{Folder > Visit a Folder...}
3290@kindex F v
3291@findex mh-visit-folder
3292@item F v
3293Visit folder (@code{mh-visit-folder}).
3294@c -------------------------
3295@cindex @samp{Message > Refile Message} menu item
3296@cindex menu item, @samp{Message > Refile Message}
3297@kindex o
3298@findex mh-refile-msg
3299@item o
3300Refile (output) range into folder (@code{mh-refile-msg}).
3301@c -------------------------
3302@cindex @samp{Folder > Quit MH-E} menu item
3303@cindex menu item, @samp{Folder > Quit MH-E}
3304@kindex q
3305@findex mh-quit
3306@item q
3307Quit the current MH-E folder (@code{mh-quit}).
3308@c -------------------------
3309@cindex @samp{Folder > Toggle Show/Folder} menu item
3310@cindex menu item, @samp{Folder > Toggle Show/Folder}
3311@kindex t
3312@findex mh-toggle-showing
3313@item t
3314Toggle between MH-Folder and MH-Folder Show modes
3315(@code{mh-toggle-showing}).
3316@c -------------------------
3317@cindex @samp{Message > Undo Delete/Refile} menu item
3318@cindex menu item, @samp{Message > Undo Delete/Refile}
3319@kindex u
3320@findex mh-undo
3321@item u
3322Undo pending deletes or refiles in range (@code{mh-undo}).
3323@c -------------------------
3324@cindex @samp{Message > Execute Delete/Refile} menu item
3325@cindex menu item, @samp{Message > Execute Delete/Refile}
3326@kindex x
3327@findex mh-execute-commands
3328@item x
3329Process outstanding delete and refile requests
3330(@code{mh-execute-commands}).
3331@end table
3332
3333@cindex @samp{mh-folder} customization group
3334@cindex customization group, @samp{mh-folder}
3335
3336The @samp{mh-folder} customization group is used to tune these
3337commands.
3338
3339@vtable @code
3340@item mh-new-messages-folders
3341Folders searched for the @samp{unseen} sequence (default:
3342@code{Inbox}).
3343@c -------------------------
3344@item mh-ticked-messages-folders
3345Folders searched for @code{mh-tick-seq} (default: @code{t}).
3346@c -------------------------
3347@item mh-large-folder
3348The number of messages that indicates a large folder (default: 200).
3349@c -------------------------
3350@item mh-recenter-summary-flag
3351On means to recenter the summary window (default: @samp{off}).
3352@c -------------------------
3353@item mh-recursive-folders-flag
3354On means that commands which operate on folders do so recursively
3355(default: @samp{off}).
3356@c -------------------------
3357@item mh-sortm-args
3358Additional arguments for @command{sortm} (default: @code{nil}).
3359@end vtable
3360
3361The following hooks are available.
3362
3363@vtable @code
3364@item mh-after-commands-processed-hook
3365Hook run by @kbd{x} after performing outstanding refile and delete
3366requests (default: @code{nil}).
3367@c -------------------------
3368@item mh-before-commands-processed-hook
3369Hook run by @kbd{x} before performing outstanding refile and delete
3370requests (default: @code{nil}).
3371@c -------------------------
3372@item mh-before-quit-hook
3373Hook run by q before quitting MH-E (default: @code{nil}).
3374@c -------------------------
3375@item mh-folder-mode-hook
3376Hook run by @code{mh-folder-mode} when visiting a new folder (default:
3377@code{nil}).
3378@c -------------------------
3379@item mh-kill-folder-suppress-prompt-hook
3380Abnormal hook run at the beginning of @code{mh-kill-folder} (default:
3381@code{'mh-search-p}).
3382@c -------------------------
3383@item mh-quit-hook
3384Hook run by q after quitting MH-E (default: @code{nil}).
3385@c -------------------------
3386@item mh-refile-msg-hook
3387Hook run by o after marking each message for refiling (default:
3388@code{nil}).
3389@end vtable
3390
3391The following faces are available for customizing the appearance of
3392the MH-Folder buffer. @xref{Scan Line Formats}.
3393
3394@vtable @code
3395@item mh-folder-address
3396Recipient face.
3397@c -------------------------
3398@item mh-folder-body
3399Body text face.
3400@c -------------------------
3401@item mh-folder-cur-msg-number
3402Current message number face.
3403@c -------------------------
3404@item mh-folder-date
3405Date face.
3406@c -------------------------
3407@item mh-folder-deleted
3408Deleted message face.
3409@c -------------------------
3410@item mh-folder-followup
3411@samp{Re:} face.
3412@c -------------------------
3413@item mh-folder-msg-number
3414Message number face.
3415@c -------------------------
3416@item mh-folder-refiled
3417Refiled message face.
3418@c -------------------------
3419@vindex mh-scan-format-nmh
3420@vindex mh-scan-sent-to-me-sender-regexp
3421@item mh-folder-sent-to-me-hint
3422Fontification hint face in messages sent directly to us. The detection
3423of messages sent to us is governed by the scan format
3424@code{mh-scan-format-nmh} and regular expression
3425@code{mh-scan-sent-to-me-sender-regexp}.
3426@c -------------------------
3427@vindex mh-scan-format-nmh
3428@vindex mh-scan-sent-to-me-sender-regexp
3429@item mh-folder-scan-format
3430Sender face in messages sent directly to us. The detection of messages
3431sent to us is governed by the scan format @code{mh-scan-format-nmh}
3432and regular expression @code{mh-scan-sent-to-me-sender-regexp}.
3433@c -------------------------
3434@item mh-folder-subject
3435Subject face.
3436@c -------------------------
3437@item mh-folder-tick
3438Ticked message face.
3439@c -------------------------
3440@item mh-folder-to
3441@samp{To:} face.
3442@end vtable
3443
3444@vindex mh-folder-mode-hook
3445
3446The hook @code{mh-folder-mode-hook} is called when visiting a new
3447folder in MH-Folder mode. This could be used to set your own key
3448bindings, for example:
3449
3450@vindex mh-folder-mode-hook, example
3451
3452@smalllisp
3453@group
3454(defvar my-mh-init-done nil
3455 "Non-@code{nil} when one-time MH-E settings made.")
3456
3457(defun my-mh-folder-mode-hook ()
3458 "Hook to set key bindings in MH-Folder mode."
3459 (if (not my-mh-init-done) ; @r{only need to bind the keys once }
3460 (progn
3461 (local-set-key "//" 'my-search-msg)
3462 (local-set-key "b" 'mh-burst-digest) ; @r{better use of @kbd{b}}
3463 (setq my-mh-init-done t))))
3464
3465(add-hook 'mh-folder-mode-hook 'my-mh-folder-mode-hook)
3466
3467(defun my-search-msg ()
3468 "Search for a regexp in the current message."
3469 (interactive) ; @r{user function}
3470 (save-window-excursion
3471 (other-window 1) ; @r{go to next window}
3472 (isearch-forward-regexp))) ; @r{string search; hit return}
3473 ; @r{ when done}
3474
3475@i{Create additional key bindings via mh-folder-mode-hook}
3476
3477@end group
3478@end smalllisp
3479
3480@cindex @command{folder}
3481@cindex @command{refile}
3482@cindex MH commands, @command{folder}
3483@cindex MH commands, @command{refile}
3484@findex mh-refile-msg
3485@kindex o
3486@vindex mh-refile-msg-hook
3487
3488MH-E has analogies for each of the MH @command{folder} and
3489@command{refile} commands@footnote{See the sections
3490@uref{@value{MH-BOOK-HOME}/fol.html#Youfol, Your Current Folder:
3491folder} and @uref{@value{MH-BOOK-HOME}/fol.html#Movref, Moving and
3492Linking Messages: refile} in the MH book.}. To refile a message in
3493another folder, use the command @kbd{o} (@code{mh-refile-msg})
3494(mnemonic: ``output''). You are prompted for the folder name
3495(@pxref{Folder Selection}). Note that this command can also be used to
3496create folders. If you specify a folder that does not exist, you will
3497be prompted to create it. The hook @code{mh-refile-msg-hook} is called
3498after a message is marked to be refiled.
3499
3500@findex mh-write-msg-to-file
3501@kindex !
3502
3503If you are refiling several messages into the same folder, you can use
3504the command @kbd{!} (@code{mh-refile-or-write-again}) to repeat the
3505last refile or write (for the description of @kbd{>}
3506(@code{mh-write-msg-to-file}), @pxref{Files and Pipes}). You can use a
3507range in either case (for example, @kbd{C-u o 1 3 5-7 last:5 frombob
3508@key{RET}}, @pxref{Ranges}).
3509
3510@cindex expunging refiles and deletes
3511@cindex undoing refiles and deletes
3512@findex mh-undo
3513@kindex u
3514
3515If you've deleted a message or refiled it, but changed your mind, you
3516can cancel the action before you've executed it. Use @kbd{u}
3517(@code{mh-undo}) to undo a refile on or deletion of a single message.
3518You can also undo refiles and deletes for messages that are found in a
3519given range (@pxref{Ranges}).
3520
3521@findex mh-undo-folder
3522@kindex F u
3523
3524Alternatively, you can use @kbd{F u} (@code{mh-undo-folder}) to undo
3525all refiles and deletes in the current folder.
3526
3527@findex mh-execute-commands
3528@kindex x
3529
3530If you've marked messages to be deleted or refiled and you want to go
3531ahead and delete or refile the messages, use @kbd{x}
3532(@code{mh-execute-commands}). Many MH-E commands that may affect the
3533numbering of the messages (such as @kbd{F r} or @kbd{F p}) will ask if
3534you want to process refiles or deletes first and then either run
3535@kbd{x} for you or undo the pending refiles and deletes.
3536
3537@kindex x
3538@vindex mh-after-commands-processed-hook
3539@vindex mh-before-commands-processed-hook
3540
3541The command @kbd{x} runs @code{mh-before-commands-processed-hook}
3542before the commands are processed and
3543@code{mh-after-commands-processed-hook} after the commands are
3544processed. Variables that are useful with the former hook include
3545@code{mh-delete-list} and @code{mh-refile-list} which can be used to
3546see which changes will be made to the current folder,
3547@code{mh-current-folder}. Variables that are useful with the latter
3548hook include @code{mh-folders-changed}, which lists which folders were
3549affected by deletes and refiles. This list will always include the
3550current folder @code{mh-current-folder}.
3551
3552@findex mh-copy-msg
3553@kindex c
3554@kindex o
3555
3556If you wish to copy a message to another folder, you can use the
3557command @kbd{c} (@code{mh-copy-msg}) (see the @option{-link} argument
3558to @command{refile}(1)). Like the command @kbd{o}, this command
3559prompts you for the name of the target folder and you can specify a
3560range (@pxref{Ranges}). Note that unlike the command @kbd{o}, the copy
3561takes place immediately. The original copy remains in the current
3562folder.
3563
3564@cindex junk mail
3565@cindex MH-Folder mode
3566@cindex MH-Folder Show mode
3567@cindex modes, MH-Folder
3568@cindex modes, MH-Folder Show
3569@cindex spam
3570@findex mh-toggle-showing
3571@kindex t
3572
3573The command @kbd{t} (@code{mh-toggle-showing}) switches between
3574MH-Folder mode and MH-Folder Show mode@footnote{For you Emacs wizards,
3575this is implemented as an Emacs minor mode.}. MH-Folder mode turns off
3576the associated show buffer so that you can perform operations on the
3577messages quickly without reading them. This is an excellent way to
3578prune out your junk mail or to refile a group of messages to another
3579folder for later examination.
3580
3581@cindex MH-Folder mode
3582@cindex MH-Show mode
3583@cindex modes, MH-Folder
3584@cindex modes, MH-Show
3585@cindex moving between messages
3586@kindex t
3587@vindex mh-recenter-summary-flag
3588
3589When you use @kbd{t} to toggle from MH-Folder Show mode to MH-Folder
3590mode, the MH-Show buffer is hidden and the MH-Folder buffer is left
3591alone. Setting @code{mh-recenter-summary-flag} to a non-@code{nil}
3592value causes the toggle to display as many scan lines as possible,
3593with the cursor at the middle. The effect of
3594@code{mh-recenter-summary-flag} is rather useful, but it can be
3595annoying on a slow network connection.
3596
3597@findex mh-visit-folder
3598@kindex F v
3599@vindex mh-large-folder
3600
3601When you want to read the messages that you have refiled into folders,
3602use the command @kbd{F v} (@code{mh-visit-folder}) to visit the
3603folder. You are prompted for the folder name. The folder buffer will
3604show just unseen messages if there are any; otherwise, it will show
3605all the messages in the buffer as long there are fewer than
3606@code{mh-large-folder} messages. If there are more, then you are
3607prompted for a range of messages to scan. You can provide a prefix
3608argument in order to specify a range of messages to show when you
3609visit the folder (@pxref{Ranges}). In this case, regions are not used
3610to specify the range and @code{mh-large-folder} is ignored. Note that
3611this command can also be used to create folders. If you specify a
3612folder that does not exist, you will be prompted to create it.
3613
3614@findex mh-search
3615@kindex F s
3616
3617If you forget where you've refiled your messages, you can find them
3618using @kbd{F s} (@code{mh-search}). @xref{Searching}.
3619
3620@cindex @command{procmail}
3621@cindex @samp{unseen} sequence
3622@cindex sequence, @samp{unseen}
3623@cindex Unix commands, @command{procmail}
3624@cindex unseen messages, viewing
3625@findex mh-index-new-messages
3626@kindex F n
3627@vindex mh-new-messages-folders
3628
3629If you use a program such as @command{procmail} to file your incoming
3630mail automatically, you can display new, unseen, messages using the
3631command @kbd{F n} (@code{mh-index-new-messages}). All messages in the
3632@samp{unseen} sequence from the folders in
3633@code{mh-new-messages-folders} are listed. However, this list of
3634folders can be overridden with a prefix argument: with a prefix
3635argument, enter a space-separated list of folders, or nothing to
3636search all folders.
3637
3638@cindex @samp{tick} sequence
3639@cindex sequence, @samp{tick}
3640@cindex ticked messages, viewing
3641@findex mh-index-ticked-messages
3642@kindex F '
3643@vindex mh-ticked-messages-folders
3644
3645If you have ticked messages (@pxref{Sequences}), you can display them
3646using the command @kbd{F '} (@code{mh-index-ticked-messages}). All
3647messages in the @samp{tick} sequence from the folders in
3648@code{mh-ticked-messages-folders} are listed. With a prefix argument,
3649enter a space-separated list of folders, or nothing to search all
3650folders.
3651
3652@findex mh-index-sequenced-messages
3653@kindex F q
3654@vindex mh-new-messages-folders
3655
3656You can display messages in any sequence with the command @kbd{F q}
3657(@code{mh-index-sequenced-messages}). All messages from the folders in
3658@code{mh-new-messages-folders} in the sequence you provide are listed.
3659With a prefix argument, enter a space-separated list of folders at the
3660prompt, or nothing to search all folders.
3661
3662@vindex mh-new-messages-folders
3663@vindex mh-recursive-folders-flag
3664@vindex mh-ticked-messages-folders
3665
3666Set the options @code{mh-new-messages-folders} and
3667@code{mh-ticked-messages-folders} to @samp{Inbox} to search the
3668@samp{+inbox} folder or @samp{All} to search all of the top level
3669folders. Otherwise, list the folders that should be searched with the
3670@samp{Choose Folders} menu item. See @code{mh-recursive-folders-flag}.
3671
3672@cindex buffers, @samp{*MH-E Folders*}
3673@cindex @samp{*MH-E Folders*}
3674@findex mh-kill-folder
3675@findex mh-list-folders
3676@findex mh-pack-folder
3677@findex mh-rescan-folder
3678@findex mh-sort-folder
3679@kindex F k
3680@kindex F l
3681@kindex F p
3682@kindex F r
3683@kindex F S
3684
3685Other commands you can perform on folders include: @kbd{F l}
3686(@code{mh-list-folders}), to place a listing of all the folders in
3687your mail directory in a buffer called @samp{*MH-E Folders*}
3688(@pxref{Miscellaneous}); @kbd{F k} (@code{mh-kill-folder}), to remove
3689a folder; @kbd{F S} (@code{mh-sort-folder}), to sort the messages by
3690date (see @command{sortm}(1) to see how to sort by other criteria);
3691@kbd{F p} (@code{mh-pack-folder}), to pack a folder, removing gaps
3692from the numbering sequence; and @kbd{F r} (@code{mh-rescan-folder}),
3693to rescan the folder, which is useful to grab all messages in your
3694@samp{+inbox} after processing your new mail for the first time. If
3695you don't want to rescan the entire folder, the commands @kbd{F r} or
3696@kbd{F p} will accept a range (@pxref{Ranges}).
3697
3698@kindex @key{TAB}
3699@vindex mh-recursive-folders-flag
3700
3701By default, operations on folders work only one level at a time. Set
3702@code{mh-recursive-folders-flag} to non-@code{nil} to operate on all
3703folders. This mostly means that you'll be able to see all your folders
3704when you press @key{TAB} when prompted for a folder name.
3705
3706@findex mh-search-p
3707@kindex k
3708@vindex mh-kill-folder-suppress-prompt-hooks
3709
3710The hook @code{mh-kill-folder-suppress-prompt-hooks} is an abnormal
3711hook run at the beginning of the command @kbd{k}. The hook functions
3712are called with no arguments and should return a non-nil value to
3713suppress the normal prompt when you remove a folder. This is useful
3714for folders that are easily regenerated. The default value of
3715@code{mh-search-p} suppresses the prompt on folders generated by
3716searching.
3717
3718@sp 1
3719@center @strong{NOTE}
3720
3721@quotation
3722Use this hook with care. If there is a bug in your hook which returns
3723@code{t} on @samp{+inbox} and you press @kbd{k} by accident in the
3724@code{+inbox} folder, you will not be happy.
3725@end quotation
3726@sp 1
3727
3728@cindex @command{sortm}
3729@cindex @file{.mh_profile}
3730@cindex files, @file{.mh_profile}
3731@cindex MH commands, @command{sortm}
3732@cindex MH profile component, @samp{sortm:}
3733@cindex @samp{sortm:} MH profile component
3734@kindex F S
3735@vindex mh-sortm-args
3736
3737The option @code{mh-sortm-args} holds extra arguments to pass on to
3738the command @command{sortm}@footnote{See the section
3739@uref{@value{MH-BOOK-HOME}/sorsor.html, Sorting Messages: sortm} in the
3740MH book.} when a prefix argument is used with @kbd{F S}. Normally
3741default arguments to @command{sortm} are specified in the MH profile.
3742This option may be used to provide an alternate view. For example,
3743@samp{'(\"-nolimit\" \"-textfield\" \"subject\")} is a useful setting.
3744
3745@cindex exiting
3746@cindex quitting
3747@findex mh-quit
3748@kindex q
3749
3750When you want to quit using MH-E and go back to editing, you can use
3751the @kbd{q} (@code{mh-quit}) command. This buries the buffers of the
3752current MH-E folder and restores the buffers that were present when
3753you first ran @kbd{M-x mh-rmail}. It also removes any MH-E working
3754buffers whose name begins with @samp{ *mh-} or @samp{*MH-E }
3755(@pxref{Miscellaneous}). You can later restore your MH-E session by
3756selecting the @samp{+inbox} buffer or by running @kbd{M-x mh-rmail}
3757again.
3758
3759@findex mh-execute-commands
3760@kindex q
3761@vindex mh-before-quit-hook
3762@vindex mh-before-quit-hook, example
3763@vindex mh-quit-hook
3764@vindex mh-quit-hook, example
3765
3766The two hooks @code{mh-before-quit-hook} and @code{mh-quit-hook} are
3767called by @kbd{q}. The former one is called before the quit occurs, so
3768you might use it to perform any MH-E operations; you could perform
3769some query and abort the quit or call @code{mh-execute-commands}, for
3770example. The latter is not run in an MH-E context, so you might use it
3771to modify the window setup. If you find that @kbd{q} buries a lot of
3772buffers that you would rather remove, you can use both
3773@code{mh-before-quit-hook} and @code{mh-quit-hook} to accomplish that.
3774
3775@smalllisp
3776@group
3777(defvar my-mh-folder-buffer-to-delete nil
3778 "Folder buffer that is being quit.")
3779
3780(defun my-mh-before-quit-hook ()
3781 "Save folder buffer that is to be deleted."
3782 (setq my-mh-folder-buffer-to-delete (current-buffer)))
3783
3784(defun my-mh-quit-hook ()
3785 "Kill folder buffer rather than just bury it."
3786 (set-buffer my-mh-folder-buffer-to-delete)
3787 (if (get-buffer mh-show-buffer)
3788 (kill-buffer mh-show-buffer))
3789 (kill-buffer (current-buffer)))
3790
3791@i{Kill MH-Folder buffer instead of burying it}
3792@end group
3793@end smalllisp
3794
3795@cindex folders, renaming
3796@cindex renaming folders
3797@findex dired
3798@findex dired-do-rename
3799
3800You can use dired to manipulate the folders themselves. For example, I
3801renamed my @samp{+out} folder to the more common @samp{+outbox} by
3802running dired on my mail directory (@kbd{M-x dired RET ~/Mail RET}),
3803moving my cursor to @samp{out} and using the command @kbd{R}
3804(@code{dired-do-rename}).
3805
3806@node Sending Mail, Editing Drafts, Folders, Top
3807@chapter Sending Mail
3808
3809@cindex sending mail
3810@findex mh-smail
3811@kindex M-x mh-smail
3812
3813You can send a mail message in several ways. You can call @kbd{M-x
3814mh-smail} directly, or from the command line like this:
3815
3816@cindex starting from command line
3817
3818@smallexample
3819$ @kbd{emacs -f mh-smail}
3820@end smallexample
3821
3822@findex goto-address-at-point
3823@vindex mail-user-agent
3824
3825There are some commands that need to send a mail message, such as
3826@code{goto-address-at-point}. You can configure Emacs to have these
3827commands use MH-E by setting the option @code{mail-user-agent} to
3828@samp{Emacs interface to MH}.
3829
3830@cindex @samp{Message} menu
3831@cindex menu, @samp{Message}
3832
3833From within MH-E's MH-Folder mode, other methods of sending mail are
3834available as well. These can also be found in the @samp{Message} menu.
3835
3836@table @kbd
3837@cindex @samp{Message > Edit Message Again} menu item
3838@cindex menu item, @samp{Message > Edit Message Again}
3839@kindex e
3840@findex mh-edit-again
3841@item e
3842Edit a message to send it again (@code{mh-edit-again}).
3843@c -------------------------
3844@cindex @samp{Message > Re-edit a Bounced Message} menu item
3845@cindex menu item, @samp{Message > Re-edit a Bounced Message}
3846@kindex E
3847@findex mh-extract-rejected-mail
3848@item E
3849Edit a message that was returned by the mail system
3850(@code{mh-extract-rejected-mail}).
3851@c -------------------------
3852@cindex @samp{Message > Forward Message...} menu item
3853@cindex menu item, @samp{Message > Forward Message...}
3854@kindex f
3855@findex mh-forward
3856@item f
3857Forward message (@code{mh-forward}).
3858@c -------------------------
3859@cindex @samp{Message > Reply to Message...} menu item
3860@cindex menu item, @samp{Message > Reply to Message...}
3861@kindex r
3862@findex mh-reply
3863@item r
3864Reply to a message (@code{mh-reply}).
3865@c -------------------------
3866@cindex @samp{Message > Compose a New Message} menu item
3867@cindex menu item, @samp{Message > Compose a New Message}
3868@kindex s
3869@findex mh-send
3870@item s
3871Compose a message (@code{mh-send}).
3872@c -------------------------
3873@cindex @samp{Message > Redistribute Message...} menu item
3874@cindex menu item, @samp{Message > Redistribute Message...}
3875@kindex M-d
3876@findex mh-redistribute
3877@item M-d
3878Redistribute a message (@code{mh-redistribute}).
3879@c -------------------------
3880@findex mh-smail
3881@item M-x mh-smail
3882Compose a message with the MH mail system.
3883@c -------------------------
3884@findex mh-smail-other-window
3885@item M-x mh-smail-other-window
3886Compose a message with the MH mail system in other window.
3887@end table
3888
3889@cindex @samp{mh-sending-mail} customization group
3890@cindex customization group, @samp{mh-sending-mail}
3891
3892In addition, several options from the @samp{mh-sending-mail}
3893customization group are useful when sending mail or replying to mail.
3894They are summarized in the following table.
3895
3896@vtable @code
3897@item mh-compose-forward-as-mime-flag
3898On means that messages are forwarded as attachments (default:
3899@samp{on}).
3900@c -------------------------
3901@item mh-compose-letter-function
3902Hook run when starting a new draft (default: @code{nil}).
3903@c -------------------------
3904@item mh-compose-prompt-flag
3905On means prompt for header fields when composing a new draft (default:
3906@samp{off}).
3907@c -------------------------
3908@item mh-forward-subject-format
3909Format string for forwarded message subject (default: @code{"%s:
3910%s"}).
3911@c -------------------------
3912@item mh-insert-x-mailer-flag
3913On means append an @samp{X-Mailer:} header field to the header
3914(default: @samp{on}).
3915@c -------------------------
3916@item mh-redist-full-contents-flag
3917On means the @command{dist} command needs entire letter for
3918redistribution (default: @samp{off}).
3919@c -------------------------
3920@item mh-reply-default-reply-to
3921Sets the person or persons to whom a reply will be sent (default:
3922@samp{Prompt}).
3923@c -------------------------
3924@item mh-reply-show-message-flag
3925On means the MH-Show buffer is displayed using @kbd{r}
3926(@code{mh-reply}) (default: @samp{on}).
3927@end vtable
3928
3929The following hooks are available.
3930
3931@vtable @code
3932@item mh-forward-hook
3933Hook run by @code{mh-forward} on a forwarded letter (default:
3934@code{nil}).
3935@c -------------------------
3936@item mh-letter-mode-hook
3937Hook run by @code{mh-letter-mode} on a new letter (default:
3938@code{nil}).
3939@end vtable
3940
3941The functions and options introduced here are explained in more detail
3942in the following sections.
3943
3944@menu
3945* Composing::
3946* Replying::
3947* Forwarding::
3948* Redistributing::
3949* Editing Again::
3950@end menu
3951
3952@node Composing, Replying, Sending Mail, Sending Mail
3953@section Composing
3954
3955@cindex @file{.emacs}
3956@cindex MH-Folder mode
3957@cindex composing mail
3958@cindex draft
3959@cindex files, @file{.emacs}
3960@cindex modes, MH-Folder
3961@cindex sending mail
3962@findex mh-smail
3963@findex mh-smail-other-window
3964@kindex M-x mh-smail
3965@kindex M-x mh-smail-other-window
3966
3967Outside of an MH-Folder buffer, you must call either @kbd{M-x
3968mh-smail} or @kbd{M-x mh-smail-other-window} to compose a new message.
3969The former command always creates a two-window layout with the current
3970buffer on top and the draft on the bottom. Use the latter command if
3971you would rather preserve the window layout. You may find adding the
3972following key bindings to @file{~/.emacs} useful:
3973
3974@smalllisp
3975(global-set-key "\C-xm" 'mh-smail)
3976(global-set-key "\C-x4m" 'mh-smail-other-window)
3977@end smalllisp
3978
3979@cindex draft folder
3980@cindex MH-Letter mode
3981@cindex modes, MH-Letter
3982@findex mh-send
3983@kindex m
3984
3985From within a MH-Folder buffer, you can simply use the command @kbd{m}
3986(@code{mh-send}). However you invoke @code{mh-send}, your letter
3987appears in an Emacs buffer whose mode is MH-Letter (to see what the
3988buffer looks like, @pxref{Sending Mail Tour}). MH-Letter mode allows
3989you to edit your message, to check the validity of the recipients, to
3990insert attachments and other messages into your message, and to send
3991the message. We'll go more into depth about editing a
3992@dfn{draft}@footnote{I highly recommend that you use a @dfn{draft
3993folder} so that you can edit several drafts in parallel. To do so,
3994create a folder named @samp{+drafts} for example, and add the profile
3995component @samp{Draft-Folder: drafts} (see @code{mh-profile}(5)).} (a
3996message you're composing) in just a moment (@pxref{Editing Drafts}).
3997
3998@vindex mh-compose-prompt-flag
3999
4000If you prefer to be prompted for the recipient and subject fields
4001before the MH-Letter buffer appears, turn on the option
4002@code{mh-compose-prompt-flag}.
4003
4004@cindex header field, @samp{X-Mailer:}
4005@cindex @samp{X-Mailer:} header field
4006@vindex mh-insert-x-mailer-flag
4007
4008MH-E adds an @samp{X-Mailer:} header field to the header that includes
4009the version of MH-E and Emacs that you are using. If you don't want to
4010participate in our marketing, you can turn off the option
4011@code{mh-insert-x-mailer-flag}.
4012
4013@cindex @command{repl}
4014@cindex @file{components}
4015@cindex MH commands, @command{repl}
4016@cindex MH-Letter mode
4017@cindex Mail mode
4018@cindex files, @file{components}
4019@cindex modes, MH-Letter
4020@cindex modes, Mail
4021@vindex mail-mode-hook
4022@vindex mh-letter-mode-hook
4023@vindex text-mode-hook
4024
4025Two hooks are provided to run commands on your freshly created draft.
4026The first hook, @code{mh-letter-mode-hook}, allows you to do some
4027processing before editing a letter@footnote{Actually, because
4028MH-Letter mode inherits from Mail mode, the hooks
4029@code{text-mode-hook} and @code{mail-mode-hook} are run (in that
4030order) before @code{mh-letter-mode-hook}.}. For example, you may wish
4031to modify the header after @command{repl} has done its work, or you
4032may have a complicated @file{components} file and need to tell MH-E
4033where the cursor should go. Here's an example of how you would use
4034this hook.
4035
4036@findex mh-insert-signature, example
4037
4038@smalllisp
4039@group
4040(defvar letter-mode-init-done-flag nil
4041 "Non-nil means one-time MH-E settings have been made.")
4042
4043(defun my-mh-letter-mode-hook ()
4044 "Prepare letter for editing."
4045 (when (not letter-mode-init-done) ; @r{only need to bind the keys once}
4046 (local-set-key "\C-ctb" 'add-enriched-text)
4047 (local-set-key "\C-cti" 'add-enriched-text)
4048 (local-set-key "\C-ctf" 'add-enriched-text)
4049 (local-set-key "\C-cts" 'add-enriched-text)
4050 (local-set-key "\C-ctB" 'add-enriched-text)
4051 (local-set-key "\C-ctu" 'add-enriched-text)
4052 (local-set-key "\C-ctc" 'add-enriched-text)
4053 (setq letter-mode-init-done t))
4054 (save-excursion
4055 (goto-char (point-max)) ; @r{go to end of message to}
4056 (mh-insert-signature))) ; @r{insert signature}
4057
4058@i{Prepare draft for editing via mh-letter-mode-hook}
4059
4060@end group
4061@end smalllisp
4062
4063The function, @code{add-enriched-text} is defined in the example in
4064@ref{Adding Attachments}.
4065
4066@vindex mh-compose-letter-function
4067@vindex mh-letter-mode-hook
4068
4069The second hook, a function really, is
4070@code{mh-compose-letter-function}. Like @code{mh-letter-mode-hook}, it
4071is called just before editing a new message; however, it is the last
4072function called before you edit your message. The consequence of this
4073is that you can write a function to write and send the message for
4074you. This function is passed three arguments: the contents of the
4075@samp{To:}, @samp{Subject:}, and @samp{Cc:} header fields.
4076
4077@node Replying, Forwarding, Composing, Sending Mail
4078@section Replying to Mail
4079
4080@cindex @command{mhl}
4081@cindex @file{mhl.reply}
4082@cindex MH commands, @command{mhl}
4083@cindex files, @file{mhl.reply}
4084@cindex replying
4085@findex mh-reply
4086@kindex r
4087
4088To compose a reply to a message, use the @kbd{r} (@code{mh-reply})
4089command.
4090
4091When you reply to a message, you are first prompted with @samp{Reply
4092to whom?}. You have several choices here.
4093
4094@quotation
4095@multitable @columnfractions .20 .80
4096@c @headitem Response @tab Reply Goes To
4097@c XXX @headitem not yet supported by SourceForge's texi2pdf.
4098@item @b{Response} @tab @b{Reply Goes To}
4099@c -------------------------
4100@item @kbd{from}
4101@tab
4102The person who sent the message. This is the default, so @key{RET} is
4103sufficient.
4104@c -------------------------
4105@item @kbd{to}
4106@tab
4107Replies to the sender, plus all recipients in the @samp{To:} header field.
4108@c -------------------------
4109@item @kbd{cc}@*@kbd{all}
4110@tab
4111Forms a reply to the addresses in the @samp{Mail-Followup-To:} header
4112field if one exists; otherwise forms a reply to the sender, plus all
4113recipients.
4114@end multitable
4115@end quotation
4116
4117@cindex @command{repl}
4118@cindex MH commands, @command{repl}
4119@vindex mh-reply-default-reply-to
4120
4121Depending on your answer, @command{repl}@footnote{See the section
4122@uref{@value{MH-BOOK-HOME}/reprep.html, Replying to Messages: repl} in
4123the MH book.} is given a different argument to form your reply.
4124Specifically, a choice of @kbd{from} or none at all runs @samp{repl
4125-nocc all}, and a choice of @kbd{to} runs @samp{repl -cc to}. Finally,
4126either @kbd{cc} or @kbd{all} runs @samp{repl -cc all -nocc me}. If you
4127find that most of the time you specify one of these choices when you
4128reply to a message, you can change the option
4129@code{mh-reply-default-reply-to} from its default value of
4130@samp{Prompt} to one of the choices listed above. You can always edit
4131the recipients in the draft.
4132
4133@cindex @samp{repl:} MH profile component
4134@cindex MH profile component, @samp{repl:}
4135@cindex MH-Letter mode
4136@cindex MH-Show mode
4137@cindex draft
4138@cindex modes, MH-Letter
4139@cindex modes, MH-Show
4140
4141Two windows are then created. One window contains the message to which
4142you are replying in an MH-Show buffer. Your draft, in MH-Letter mode
4143(@pxref{Editing Drafts}), is in the other window. If the reply draft
4144was not one that you expected, check the things that affect the
4145behavior of @command{repl} which include the @samp{repl:} profile
4146component and the @file{replcomps} and @file{replgroupcomps} files.
4147
4148If you supply a prefix argument (as in @kbd{C-u r}), the message you
4149are replying to is inserted in your reply after having first been run
4150through @command{mhl} with the format file @file{mhl.reply}. See
4151@command{mhl}(1) or the section
4152@uref{@value{MH-BOOK-HOME}/shomes.html#Usisho, Using mhl} in the MH
4153book to see how you can modify the default @file{mhl.reply} file.
4154
4155@vindex mh-yank-behavior
4156
4157Alternatively, you can customize the option @code{mh-yank-behavior}
4158and choose one of its @samp{Automatically} variants to do the same
4159thing. @xref{Inserting Letter}. If you do so, the prefix argument has
4160no effect.
4161
4162Another way to include the message automatically in your draft is to
4163use @samp{repl: -filter repl.filter} in your MH profile.
4164
4165@vindex mh-reply-show-message-flag
4166
4167If you include the message automatically, you can hide the MH-Show
4168buffer by turning off the option @code{mh-reply-show-message-flag}.
4169
4170If you wish to customize the header or other parts of the reply draft,
4171please see @command{repl}(1) and @code{mh-format}(5).
4172
4173@node Forwarding, Redistributing, Replying, Sending Mail
4174@section Forwarding Mail
4175
4176@cindex @command{forw}
4177@cindex draft
4178@cindex forwarding
4179@cindex MH commands, @command{forw}
4180@findex mh-forward
4181@kindex f
4182@vindex mh-forward-hook
4183
4184To forward a message, use the @kbd{f} (@code{mh-forward}) command. You
4185are prompted for the @samp{To:} and @samp{cc:} recipients. You are
4186given a draft to edit that looks like it would if you had run the MH
4187command @command{forw}@footnote{See the section
4188@uref{@value{MH-BOOK-HOME}/forfor.html, Forwarding Messages: forw} in
4189the MH book.}. You can then add some text (@pxref{Editing Drafts}).
4190You can forward several messages by using a range (@pxref{Ranges}).
4191All of the messages in the range are inserted into your draft. The
4192hook @code{mh-forward-hook} is called on the draft.
4193
4194@cindex @file{.mh_profile}
4195@cindex files, @file{.mh_profile}
4196@cindex MH profile component, @samp{forw:}
4197@cindex @samp{forw:} MH profile component
4198@vindex mh-compose-forward-as-mime-flag
4199
4200By default, the option @code{mh-compose-forward-as-mime-flag} is on
4201which means that the forwarded messages are included as attachments.
4202If you would prefer to forward your messages verbatim (as text,
4203inline), then turn off this option. Forwarding messages verbatim works
4204well for short, textual messages, but your recipient won't be able to
4205view any non-textual attachments that were in the forwarded message.
4206Be aware that if you have @samp{forw: -mime} in your MH profile, then
4207forwarded messages will always be included as attachments regardless
4208of the settings of @code{mh-compose-forward-as-mime-flag}.
4209
4210@vindex mh-forward-subject-format
4211
4212The format of the @samp{Subject:} header field for forwarded messages
4213is controlled by the option @code{mh-forward-subject-format}. This
4214option is a string which includes two escapes (@samp{%s}). The first
4215@samp{%s} is replaced with the sender of the original message, and the
4216second one is replaced with the original @samp{Subject:}. The default
4217value of @code{"%s: %s"} takes a message with the header:
4218
4219@smallexample
4220@group
4221To: Bill Wohler <wohler@@stop.mail-abuse.org>
4222Subject: Re: 49er football
4223From: Greg DesBrisay <gd@@stop.mail-abuse.org>
4224@end group
4225@end smallexample
4226
4227and creates a subject header field of:
4228
4229@smallexample
4230Subject: Greg DesBrisay: Re: 49er football
4231@end smallexample
4232
4233@node Redistributing, Editing Again, Forwarding, Sending Mail
4234@section Redistributing Your Mail
4235
4236@cindex @command{dist}
4237@cindex MH commands, @command{dist}
4238@cindex redistributing
4239@findex mh-redistribute
4240@kindex M-d
4241
4242The command @kbd{M-d} (@code{mh-redistribute}) is similar in function
4243to forwarding mail, but it does not allow you to edit the message, nor
4244does it add your name to the @samp{From:} header field. It appears to
4245the recipient as if the message had come from the original sender.
4246When you run this command, you are prompted for the recipients.
4247
4248@findex mh-edit-again
4249@kindex e
4250
4251For more information on redistributing messages, see
4252@command{dist}(1). Also investigate the command @kbd{e}
4253(@code{mh-edit-again}) for another way to redistribute messages
4254(@pxref{Editing Again}).
4255
4256@cindex @command{send}
4257@cindex MH commands, @command{send}
4258@vindex mh-redist-full-contents-flag
4259
4260The option @code{mh-redist-full-contents-flag} must be turned on if
4261@command{dist}@footnote{See the section
4262@uref{@value{MH-BOOK-HOME}/disdis.html, Distributing Messages with
4263dist} in the MH book.} requires the whole letter for redistribution,
4264which is the case if @command{send}@footnote{See the section
4265@uref{@value{MH-BOOK-HOME}/sensen.html, Sending Some Mail: comp send}
4266in the MH book.} is compiled with the @sc{berk} option (which many
4267people abhor). If you find that MH will not allow you to redistribute
4268a message that has been redistributed before, turn off this option.
4269
4270@node Editing Again, , Redistributing, Sending Mail
4271@section Editing Old Drafts and Bounced Messages
4272
4273@cindex @file{draft}
4274@cindex files, @file{draft}
4275@cindex re-editing drafts
4276@findex mh-edit-again
4277@kindex F v drafts
4278@kindex e
4279@kindex n
4280
4281If you don't complete a draft for one reason or another, and if the
4282draft buffer is no longer available, you can pick your draft up again
4283with @kbd{e} (@code{mh-edit-again}). If you don't use a draft
4284folder, your last @file{draft} file will be used. If you use draft
4285folders, you'll need to visit the draft folder with @kbd{F v drafts
4286@key{RET}}, use @kbd{n} to move to the appropriate message, and then
4287use @kbd{e} to prepare the message for editing.
4288
4289@kindex e
4290
4291The @kbd{e} command can also be used to take messages that were sent
4292to you and to send them to more people.
4293
4294@cindex Mailer-Daemon
4295@findex mh-extract-rejected-mail
4296@kindex C-c C-c
4297@kindex E
4298
4299Don't use @kbd{e} to re-edit a message from a @i{Mailer-Daemon} who
4300complained that your mail wasn't posted for some reason or another. In
4301this case, use @kbd{E} (@code{mh-extract-rejected-mail}) to prepare
4302the message for editing by removing the @i{Mailer-Daemon} envelope and
4303unneeded header fields. Fix whatever addressing problem you had, and
4304send the message again with @kbd{C-c C-c}.
4305
4306@node Editing Drafts, Aliases, Sending Mail, Top
4307@chapter Editing a Draft
4308
4309@cindex @samp{Letter} menu
4310@cindex MH-Letter mode
4311@cindex draft
4312@cindex editing draft
4313@cindex menu, @samp{Letter}
4314@cindex modes, MH-Letter
4315
4316When you edit a message that you want to send (called a @dfn{draft} in
4317this case), the mode used is MH-Letter. This mode provides several
4318commands in addition to the normal Emacs editing commands to help you
4319edit your draft. These can also be found in the @samp{Letter} menu.
4320
4321@table @kbd
4322@kindex @key{SPC}
4323@findex mh-letter-complete-or-space
4324@item @key{SPC}
4325Perform completion or insert space (@code{mh-letter-complete-or-space}).
4326@c -------------------------
4327@kindex M-@key{TAB}
4328@findex mh-letter-complete
4329@item M-@key{TAB}
4330Perform completion on header field or word preceding point
4331(@code{mh-letter-complete}).
4332@c -------------------------
4333@kindex , (comma)
4334@findex mh-letter-confirm-address
4335@item , (comma)
4336Flash alias expansion (@code{mh-letter-confirm-address}).
4337@c -------------------------
4338@kindex @key{TAB}
4339@findex mh-letter-next-header-field-or-indent
4340@item @key{TAB}
4341Cycle to next field (@code{mh-letter-next-header-field-or-indent}).
4342@c -------------------------
4343@kindex S-@key{TAB}
4344@findex mh-letter-previous-header-field
4345@item S-@key{TAB}
4346Cycle to the previous header field
4347(@code{mh-letter-previous-header-field}).
4348@c -------------------------
4349@kindex C-c ?
4350@findex mh-help
4351@item C-c ?
4352Display cheat sheet for the MH-E commands (@code{mh-help}).
4353@c -------------------------
4354@cindex @samp{Letter > Send This Draft} menu item
4355@cindex menu item, @samp{Letter > Send This Draft}
4356@kindex C-c C-c
4357@findex mh-send-letter
4358@item C-c C-c
4359Save draft and send message (@code{mh-send-letter}).
4360@c -------------------------
4361@kindex C-c C-d
4362@findex mh-insert-identity
4363@item C-c C-d
4364Insert fields specified by the given identity
4365(@code{mh-insert-identity}). @xref{Identities}.
4366@c -------------------------
4367@cindex @samp{Letter > Pull in All Compositions (MH)} menu item
4368@cindex menu item, @samp{Letter > Pull in All Compositions (MH)}
4369@kindex C-c C-e
4370@findex mh-mh-to-mime
4371@item C-c C-e
4372Compose @sc{mime} message from MH-style directives
4373(@code{mh-mh-to-mime}).
4374@c -------------------------
4375@kindex C-c C-f C-a
4376@kindex C-c C-f a
4377@findex mh-to-field
4378@item C-c C-f C-a
4379@itemx C-c C-f a
4380Move to @samp{Mail-Reply-To:} header field (@code{mh-to-field}).
4381@c -------------------------
4382@kindex C-c C-f C-b
4383@kindex C-c C-f b
4384@item C-c C-f C-b
4385@itemx C-c C-f b
4386Move to @samp{Bcc:} header field (@code{mh-to-field}).
4387@c -------------------------
4388@kindex C-c C-f C-c
4389@kindex C-c C-f c
4390@item C-c C-f C-c
4391@itemx C-c C-f c
4392Move to @samp{Cc:} header field (@code{mh-to-field}).
4393@c -------------------------
4394@kindex C-c C-f C-d
4395@kindex C-c C-f d
4396@item C-c C-f C-d
4397@itemx C-c C-f d
4398Move to @samp{Dcc:} header field (@code{mh-to-field}).
4399@c -------------------------
4400@kindex C-c C-f C-f
4401@kindex C-c C-f f
4402@findex mh-to-fcc
4403@item C-c C-f C-f
4404@itemx C-c C-f f
4405Move to @samp{Fcc:} header field (@code{mh-to-fcc}).
4406@c -------------------------
4407@kindex C-c C-f C-l
4408@kindex C-c C-f l
4409@item C-c C-f C-l
4410@itemx C-c C-f l
4411Move to @samp{Mail-Followup-To:} header field (@code{mh-to-field}).
4412@c -------------------------
4413@kindex C-c C-f C-m
4414@kindex C-c C-f m
4415@item C-c C-f C-m
4416@itemx C-c C-f m
4417Move to @samp{From:} header field (@code{mh-to-field}).
4418@c -------------------------
4419@kindex C-c C-f C-r
4420@kindex C-c C-f r
4421@item C-c C-f C-r
4422@itemx C-c C-f r
4423Move to @samp{Reply-To:} header field (@code{mh-to-field}).
4424@c -------------------------
4425@kindex C-c C-f C-s
4426@kindex C-c C-f s
4427@item C-c C-f C-s
4428@itemx C-c C-f s
4429Move to @samp{Subject:} header field (@code{mh-to-field}).
4430@c -------------------------
4431@kindex C-c C-f C-t
4432@kindex C-c C-f t
4433@item C-c C-f C-t
4434@itemx C-c C-f t
4435Move to @samp{To:} header field (@code{mh-to-field}).
4436@c -------------------------
4437@cindex @samp{Letter > Insert a Message...} menu item
4438@cindex menu item, @samp{Letter > Insert a Message...}
4439@kindex C-c C-i
4440@findex mh-insert-letter
4441@item C-c C-i
4442Insert a message (@code{mh-insert-letter}).
4443@c -------------------------
4444@kindex C-c C-m C-e
4445@findex mh-mml-secure-message-encrypt
4446@item C-c C-m C-e
4447Add tag to encrypt the message (@code{mh-mml-secure-message-encrypt}).
4448@c -------------------------
4449@cindex @samp{Letter > Compose Forward...} menu item
4450@cindex menu item, @samp{Letter > Compose Forward...}
4451@kindex C-c C-m C-f
4452@kindex C-c C-m f
4453@findex mh-compose-forward
4454@item C-c C-m C-f
4455@itemx C-c C-m f
4456Add tag to forward a message (@code{mh-compose-forward}).
4457@c -------------------------
4458@cindex @samp{Letter > Compose Get File (MH)...} menu item
4459@cindex menu item, @samp{Letter > Compose Get File (MH)...}
4460@kindex C-c C-m C-g
4461@kindex C-c C-m g
4462@findex mh-mh-compose-anon-ftp
4463@item C-c C-m C-g
4464@itemx C-c C-m g
4465Add tag to include anonymous ftp reference to a file
4466(@code{mh-mh-compose-anon-ftp}).
4467@c -------------------------
4468@cindex @samp{Letter > Compose Insertion...} menu item
4469@cindex menu item, @samp{Letter > Compose Insertion...}
4470@kindex C-c C-m C-i
4471@kindex C-c C-m i
4472@findex mh-compose-insertion
4473@item C-c C-m C-i
4474@itemx C-c C-m i
4475Add tag to include a file such as an image or sound
4476(@code{mh-compose-insertion}).
4477@c -------------------------
4478@cindex @samp{Letter > Pull in All Compositions (MML)} menu item
4479@cindex menu item, @samp{Letter > Pull in All Compositions (MML)}
4480@kindex C-c C-m C-m
4481@kindex C-c C-m m
4482@findex mh-mml-to-mime
4483@item C-c C-m C-m
4484@itemx C-c C-m m
4485Compose @sc{mime} message from MML tags (@code{mh-mml-to-mime}).
4486@c -------------------------
4487@kindex C-c C-m C-n
4488@kindex C-c C-m n
4489@findex mh-mml-unsecure-message
4490@item C-c C-m C-n
4491@itemx C-c C-m n
4492Remove any secure message tags (@code{mh-mml-unsecure-message}).
4493@c -------------------------
4494@kindex C-c C-m C-s
4495@findex mh-mml-secure-message-sign
4496@item C-c C-m C-s
4497Add tag to sign the message (@code{mh-mml-secure-message-sign}).
4498@c -------------------------
4499@cindex @samp{Letter > Compose Compressed tar (MH)...} menu item
4500@cindex menu item, @samp{Letter > Compose Compressed tar (MH)...}
4501@kindex C-c C-m C-t
4502@kindex C-c C-m t
4503@findex mh-mh-compose-external-compressed-tar
4504@item C-c C-m C-t
4505@itemx C-c C-m t
4506Add tag to include anonymous ftp reference to a compressed tar file
4507(@code{mh-mh-compose-external-compressed-tar}).
4508@c -------------------------
4509@cindex @samp{Letter > Revert to Non-MIME Edit (MH)} menu item
4510@cindex menu item, @samp{Letter > Revert to Non-MIME Edit (MH)}
4511@kindex C-c C-m C-u
4512@kindex C-c C-m u
4513@findex mh-mh-to-mime-undo
4514@item C-c C-m C-u
4515@itemx C-c C-m u
4516Undo effects of @kbd{C-c C-e} (@code{mh-mh-to-mime-undo}).
4517@c -------------------------
4518@kindex C-c C-m C-x
4519@kindex C-c C-m x
4520@findex mh-mh-compose-external-type
4521@item C-c C-m C-x
4522@itemx C-c C-m x
4523Add tag to refer to a remote file
4524(@code{mh-mh-compose-external-type}).
4525@c -------------------------
4526@kindex C-c C-m e e
4527@findex mh-mml-secure-message-encrypt
4528@item C-c C-m e e
4529Add tag to encrypt the message (@code{mh-mml-secure-message-encrypt}).
4530@c -------------------------
4531@kindex C-c C-m e s
4532@findex mh-mml-secure-message-signencrypt
4533@item C-c C-m e s
4534Add tag to encrypt and sign the message@*
4535(@code{mh-mml-secure-message-signencrypt}).
4536@c -------------------------
4537@kindex C-c C-m s e
4538@findex mh-mml-secure-message-signencrypt
4539@item C-c C-m s e
4540Add tag to encrypt and sign the message@*
4541(@code{mh-mml-secure-message-signencrypt}).
4542@c -------------------------
4543@kindex C-c C-m s s
4544@findex mh-mml-secure-message-sign
4545@item C-c C-m s s
4546Add tag to sign the message (@code{mh-mml-secure-message-sign}).
4547@c -------------------------
4548@cindex @samp{Letter > Split Current Line} menu item
4549@cindex menu item, @samp{Letter > Split Current Line}
4550@kindex C-c C-o
4551@findex mh-open-line
4552@item C-c C-o
4553Insert a newline and leave point before it (@code{mh-open-line}).
4554@c -------------------------
4555@cindex @samp{Letter > Kill This Draft} menu item
4556@cindex menu item, @samp{Letter > Kill This Draft}
4557@kindex C-c C-q
4558@findex mh-fully-kill-draft
4559@item C-c C-q
4560Quit editing and delete draft message (@code{mh-fully-kill-draft}).
4561@c -------------------------
4562@cindex @samp{Letter > Insert Signature} menu item
4563@cindex menu item, @samp{Letter > Insert Signature}
4564@kindex C-c C-s
4565@findex mh-insert-signature
4566@item C-c C-s
4567Insert signature in message (@code{mh-insert-signature}).
4568@c -------------------------
4569@kindex C-c C-t
4570@findex mh-letter-toggle-header-field-display
4571@item C-c C-t
4572Toggle display of header field at point
4573(@code{mh-letter-toggle-header-field-display}).
4574@c -------------------------
4575@cindex @samp{Letter > Check Recipient} menu item
4576@cindex menu item, @samp{Letter > Check Recipient}
4577@kindex C-c C-w
4578@findex mh-check-whom
4579@item C-c C-w
4580Verify recipients, showing expansion of any aliases
4581(@code{mh-check-whom}).
4582@c -------------------------
4583@cindex @samp{Letter > Yank Current Message} menu item
4584@cindex menu item, @samp{Letter > Yank Current Message}
4585@kindex C-c C-y
4586@findex mh-yank-cur-msg
4587@item C-c C-y
4588Insert the current message into the draft buffer
4589(@code{mh-yank-cur-msg}).
4590@c -------------------------
4591@kindex C-c M-d
4592@findex mh-insert-auto-fields
4593@item C-c M-d
4594Insert custom fields if recipient is found in
4595@code{mh-auto-fields-list} (@code{mh-insert-auto-fields}).
4596@xref{Identities}.
4597@end table
4598
4599@cindex @samp{mh-letter} customization group
4600@cindex customization group, @samp{mh-letter}
4601
4602Several options from the @samp{mh-letter} customization group are used
4603while editing a draft.
4604
4605@vtable @code
4606@item mh-compose-insertion
4607Type of @sc{mime} message tags in messages (default: @samp{MML} if
4608available; otherwise @samp{MH}).
4609@c -------------------------
4610@item mh-compose-skipped-header-fields
4611List of header fields to skip over when navigating in draft (default:
4612@code{'("From"} @code{"Organization"} @code{"References"}
4613@code{"In-Reply-To"} @code{"X-Face"} @code{"Face"}
4614@code{"X-Image-URL"} @code{"X-Mailer")}.
4615@c -------------------------
4616@item mh-compose-space-does-completion-flag
4617On means @key{SPC} does completion in message header (default:
4618@samp{off}).
4619@c -------------------------
4620@item mh-delete-yanked-msg-window-flag
4621On means delete any window displaying the message (default: @samp{off}).
4622@c -------------------------
4623@item mh-extract-from-attribution-verb
4624Verb to use for attribution when a message is yanked by @kbd{C-c C-y}
4625(default: @code{"wrote:"}).
4626@c -------------------------
4627@item mh-ins-buf-prefix
4628String to put before each line of a yanked or inserted message
4629(default: @code{"> "}).
4630@c -------------------------
4631@item mh-letter-complete-function
4632Function to call when completing outside of address or folder fields
4633(default: @code{ispell-complete-word}).
4634@c -------------------------
4635@item mh-letter-fill-column
4636Fill column to use in MH-Letter mode (default: 72).
4637@c -------------------------
4638@item mh-mml-method-default
4639Default method to use in security tags (default: @samp{PGP (MIME)} if
4640support for it is available; otherwise @samp{None}).
4641@c -------------------------
4642@item mh-signature-file-name
4643Source of user's signature (default: @code{"~/.signature"}).
4644@c -------------------------
4645@item mh-signature-separator-flag
4646On means a signature separator should be inserted (default:
4647@samp{on}).
4648@c -------------------------
4649@item mh-x-face-file
4650File containing X-Face or Face header field to insert in outgoing mail.
4651(default: @code{"~/.face"}).
4652@c -------------------------
4653@item mh-yank-behavior
4654Controls which part of a message is yanked by @kbd{C-c C-y} (default:
4655@samp{Body With Attribution}).
4656@end vtable
4657
4658The following hooks are available.
4659
4660@vtable @code
4661@item mail-citation-hook
4662Hook for modifying a citation just inserted in the mail buffer
4663(default: @code{nil}).
4664@c -------------------------
4665@item mh-before-send-letter-hook
4666Hook run at the beginning of the @kbd{C-c C-c} command (default:
4667@samp{nil}).
4668@c -------------------------
4669@item mh-mh-to-mime-hook
4670Hook run on the formatted letter by @kbd{C-c C-e} (default:
4671@samp{nil}).
4672@c -------------------------
4673@item mh-insert-signature-hook
4674Hook run by @kbd{C-c C-s} after signature has been inserted (default:
4675@code{nil}).
4676@end vtable
4677
4678The following face is available.
4679
4680@vtable @code
4681@item mh-letter-header-field
4682Editable header field value face in draft buffers.
4683@end vtable
4684
4685The commands and options introduced here are explained in more
4686detail in the following sections.
4687
4688@menu
4689* Editing Message::
4690* Inserting Letter::
4691* Inserting Messages::
4692* Signature::
4693* Picture::
4694* Adding Attachments::
4695* Sending PGP::
4696* Checking Recipients::
4697* Sending Message::
4698* Killing Draft::
4699@end menu
4700
4701@node Editing Message, Inserting Letter, Editing Drafts, Editing Drafts
4702@section Editing the Message
4703
4704@cindex @samp{Bcc:} header field
4705@cindex @samp{Cc:} header field
4706@cindex @samp{Dcc:} header field
4707@cindex @samp{From:} header field
4708@cindex @samp{Mail-Followup-To:} header field
4709@cindex @samp{Mail-Reply-To:} header field
4710@cindex @samp{Reply-To:} header field
4711@cindex @samp{Subject:} header field
4712@cindex @samp{To:} header field
4713@cindex editing header
4714@cindex header field, @samp{Bcc:}
4715@cindex header field, @samp{Cc:}
4716@cindex header field, @samp{Dcc:}
4717@cindex header field, @samp{From:}
4718@cindex header field, @samp{Mail-Followup-To:}
4719@cindex header field, @samp{Mail-Reply-To:}
4720@cindex header field, @samp{Reply-To:}
4721@cindex header field, @samp{Subject:}
4722@cindex header field, @samp{To:}
4723@findex mh-to-field
4724@kindex C-c C-f C-t
4725@kindex C-c C-f t
4726
4727Because the header is part of the message, you can edit the header
4728fields as you wish. However, several convenience commands exist to
4729help you create and edit them. For example, the command @kbd{C-c C-f
4730C-t} (@code{mh-to-field}; alternatively, @kbd{C-c C-f t}) moves the
4731cursor to the @samp{To:} header field, creating it if necessary. The
4732commands for moving to the @samp{Cc:}, @samp{Subject:}, @samp{From:},
4733@samp{Reply-To:}, @samp{Mail-Reply-To:}, @samp{Mail-Followup-To},
4734@samp{Bcc:}, and @samp{Dcc:} header fields are similar.
4735
4736@findex mh-to-fcc
4737@kindex C-c C-f C-f
4738@kindex C-c C-f f
4739
4740One command behaves differently from the others, namely, @kbd{C-c C-f
4741C-f} (@code{mh-to-fcc}; alternatively, @kbd{C-c C-f f}). This command
4742will prompt you for the folder name in which to file a copy of the
4743draft. @xref{Folder Selection}.
4744
4745@findex indent-relative
4746@findex mh-letter-next-header-field-or-indent
4747@findex mh-letter-previous-header-field
4748@kindex @key{TAB}
4749@kindex S-@key{TAB}
4750@vindex mh-compose-skipped-header-fields
4751@vindex mh-letter-header-field
4752
4753Within the header of the message, the command@* @key{TAB}
4754(@code{mh-letter-next-header-field-or-indent}) moves between fields
4755that are highlighted with the face @code{mh-letter-header-field},
4756skipping those fields listed in
4757@code{mh-compose-skipped-header-fields}. After the last field, this
4758command then moves point to the message body before cycling back to
4759the first field. If point is already past the first line of the
4760message body, then this command indents by calling
4761@code{indent-relative} with the given prefix argument. The command
4762@kbd{S-@key{TAB}} (@code{mh-letter-previous-header-field}) moves
4763backwards between the fields and cycles to the body of the message
4764after the first field. Unlike the command @key{TAB}, it will always
4765take point to the last field from anywhere in the body.
4766
4767@cindex alias completion
4768@cindex completion
4769@cindex spell check
4770@findex ispell-complete-word
4771@findex mh-letter-complete
4772@findex mh-letter-complete-or-space
4773@findex mh-letter-confirm-address
4774@kindex , (comma)
4775@kindex @key{SPC}
4776@kindex M-@key{TAB}
4777@vindex mh-alias-flash-on-comma
4778@vindex mh-compose-space-does-completion-flag
4779@vindex mh-letter-complete-function
4780
4781If the field contains addresses (for example, @samp{To:} or
4782@samp{Cc:}) or folders (for example, @samp{Fcc:}) then the command
4783@kbd{M-@key{TAB}} (@code{mh-letter-complete}) will provide alias
4784completion (@pxref{Aliases}). In the body of the message,
4785@kbd{M-@key{TAB}} runs @code{mh-letter-complete-function} instead,
4786which is set to @samp{'ispell-complete-word} by default. The command
4787@kbd{M-@key{TAB}} (@code{mh-letter-complete}) takes a prefix argument
4788that is passed to the @code{mh-letter-complete-function}. In addition,
4789turn on the option @code{mh-compose-space-does-completion-flag} to use
4790the command @key{SPC} (@code{mh-letter-complete-or-space}) to perform
4791completion in the header as well; use a prefix argument to specify
4792more than one space. Addresses are separated by a comma; when you
4793press the comma, the command @code{mh-letter-confirm-address} flashes
4794the alias expansion in the minibuffer if
4795@code{mh-alias-flash-on-comma} is turned on.
4796
4797@c XXX Document the replacement for the inaccessible 'long argument.
4798
4799@findex mh-letter-toggle-header-field-display
4800@kindex C-c C-t
4801
4802Use the command @kbd{C-c C-t}
4803@code{mh-letter-toggle-header-field-display} to display truncated
4804header fields. This command is a toggle so entering it again will hide
4805the field. This command takes a prefix argument: if negative then the
4806field is hidden, if positive then the field is displayed (for example,
4807@kbd{C-u C-c C-t}).
4808
4809Be sure to leave a row of dashes or a blank line between the header
4810and the body of the message.
4811
4812@vindex mh-letter-fill-column
4813
4814The body of the message is edited as you would edit any Emacs buffer
4815although there are a few commands and options to assist you. You can
4816change the fill column in MH-Letter mode with the option
4817@code{mh-letter-fill-column}. By default, this option is 72 to allow
4818others to quote your message without line wrapping.
4819
4820@cindex filling paragraphs
4821@cindex paragraphs, filling
4822@findex fill-paragraph
4823@kindex M-q
4824@vindex mh-ins-buf-prefix
4825
4826You'll often include messages that were sent from user agents that
4827haven't yet realized that paragraphs consist of more than a single
4828line. This makes for long lines that wrap in an ugly fashion. You'll
4829find that @kbd{M-q} (@code{fill-paragraph}) works well even on these
4830quoted messages, even if they are nested, just as long as all of the
4831quotes match the value of @code{mh-ins-buf-prefix} (@pxref{Inserting
4832Letter}). For example, let's assume you have the following in your
4833draft:
4834
4835@smallexample
4836@group
4837> Hopefully this gives you an idea of what I'm currently doing. I'm \
4838not sure yet whether I'm completely satisfied with my setup, but \
4839it's worked okay for me so far.
4840@end group
4841@end smallexample
4842
4843Running @kbd{M-q} on this paragraph produces:
4844
4845@smallexample
4846@group
4847> Hopefully this gives you an idea of what I'm currently doing. I'm not
4848> sure yet whether I'm completely satisfied with my setup, but it's
4849> worked okay for me so far.
4850@end group
4851@end smallexample
4852
4853@findex mh-open-line
4854@findex open-line
4855@kindex C-c C-o
4856@kindex C-o
4857
4858The command @kbd{C-c C-o} (@code{mh-open-line}) is similar to the
4859command @kbd{C-o} (@code{open-line}) in that it inserts a newline
4860after point. It differs in that it also inserts the right number of
4861quoting characters and spaces so that the next line begins in the same
4862column as it was. This is useful when breaking up paragraphs in
4863replies. For example, if this command was used when point was after
4864the first period in the paragraph above, the result would be this:
4865
4866@smallexample
4867@group
4868> Hopefully this gives you an idea of what I'm currently doing.
4869
4870> I'm not
4871> sure yet whether I'm completely satisfied with my setup, but it's
4872> worked okay for me so far.
4873@end group
4874@end smallexample
4875
4876@node Inserting Letter, Inserting Messages, Editing Message, Editing Drafts
4877@section Inserting Letter to Which You're Replying
4878
4879@cindex inserting messages
4880@cindex replying to messages
4881@cindex yanking messages
4882@findex mh-yank-cur-msg
4883@kindex C-c C-y
4884@vindex mh-ins-buf-prefix
4885
4886It is often useful to insert a snippet of text from a letter that
4887someone mailed to provide some context for your reply. The command
4888@kbd{C-c C-y} (@code{mh-yank-cur-msg}) does this by adding an
4889attribution, yanking a portion of text from the message to which
4890you're replying, and inserting @code{mh-ins-buf-prefix} (@samp{> })
4891before each line.
4892
4893@smallexample
4894@group
4895Michael W Thelen <thelenm@@stop.mail-abuse.org> wrote:
4896
4897> Hopefully this gives you an idea of what I'm currently doing. I'm not
4898> sure yet whether I'm completely satisfied with my setup, but it's
4899> worked okay for me so far.
4900@end group
4901@end smallexample
4902
4903@vindex mh-extract-from-attribution-verb
4904
4905The attribution consists of the sender's name and email address
4906followed by the content of the option
4907@code{mh-extract-from-attribution-verb}. This option can be set to
4908