84306
|
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
|
|
24 This is version @value{VERSION}@value{EDITION} of @cite{The MH-E
|
|
25 Manual}, last updated @value{UPDATED}.
|
|
26
|
|
27 Copyright @copyright{} 1995, 2001, 2002, 2003, 2005, 2006, 2007 Free
|
|
28 Software Foundation, Inc.
|
|
29
|
|
30 @quotation
|
|
31 The MH-E manual is free documentation; you can redistribute it and/or
|
|
32 modify it under the terms of either:
|
|
33
|
|
34 @enumerate a
|
|
35 @item
|
|
36 the GNU Free Documentation License, Version 1.2 or any later version
|
|
37 published by the Free Software Foundation; with no Invariant Sections,
|
|
38 no Front-Cover Texts, and no Back-Cover Texts.
|
|
39
|
|
40 @item
|
|
41 the GNU General Public License as published by the Free Software
|
|
42 Foundation; either version 3, or (at your option) any later version.
|
|
43 @end enumerate
|
|
44
|
|
45 The MH-E manual is distributed in the hope that it will be useful, but
|
|
46 WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
47 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
48 General Public License or GNU Free Documentation License for more
|
|
49 details.
|
|
50
|
|
51 The GNU General Public License and the GNU Free Documentation License
|
|
52 appear as appendices to this document. You may also request copies by
|
|
53 writing to the Free Software Foundation, Inc., 51 Franklin Street,
|
|
54 Fifth 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
|
|
133 Tour 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
|
|
141 Using This Manual
|
|
142
|
|
143 * Options::
|
|
144 * Ranges::
|
|
145 * Folder Selection::
|
|
146
|
|
147 Reading 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
|
|
159 Sending Mail
|
|
160
|
|
161 * Composing::
|
|
162 * Replying::
|
|
163 * Forwarding::
|
|
164 * Redistributing::
|
|
165 * Editing Again::
|
|
166
|
|
167 Editing 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
|
|
180 Odds and Ends
|
|
181
|
|
182 * Bug Reports::
|
|
183 * Mailing Lists::
|
|
184 * MH FAQ and Support::
|
|
185 * Getting MH-E::
|
|
186
|
|
187 History 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
|
|
208 This manual introduces another interface to the MH mail system that is
|
|
209 accessible through the GNU Emacs editor, namely, @emph{MH-E}. MH-E is
|
|
210 easy to use. I don't assume that you know GNU Emacs or even MH at this
|
|
211 point, since I didn't know either of them when I discovered MH-E.
|
|
212 However, MH-E was the tip of the iceberg, and I discovered more and
|
|
213 more niceties about GNU Emacs and MH@. Now I'm fully hooked on both of
|
|
214 them.
|
|
215
|
|
216 The 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
|
|
218 in GNU Emacs 21, as well as XEmacs 21 (except for versions
|
|
219 21.5.9-21.5.16). It is compatible with MH versions 6.8.4 and higher,
|
|
220 all versions of nmh, and GNU mailutils 1.0 and higher.}, so you
|
|
221 shouldn't have to do anything special to use it. This manual covers
|
|
222 MH-E version @value{VERSION}. To help you decide which version you
|
|
223 have, see @ref{Getting Started}.
|
|
224
|
|
225 @findex help-with-tutorial
|
|
226 @kindex C-h t
|
|
227
|
|
228 If you don't already use GNU Emacs but want to learn more, you can
|
|
229 read 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
|
|
242 from the Free Software Foundation.
|
|
243
|
|
244 If more information is needed, you can go to the Unix manual pages of
|
|
245 the individual MH commands. When the name is not obvious, I'll guide
|
|
246 you 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
|
|
253 This manual is available in both Info and online formats. The Info
|
|
254 version 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
|
|
256 m mh-e @key{RET}}). The online version is available at
|
|
257 @uref{http://mh-e.sourceforge.net/manual/, SourceForge}. Another great
|
|
258 online 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
|
|
262 I hope you enjoy this manual! If you have any comments, or suggestions
|
|
263 for this document, please let me know.
|
|
264
|
|
265 @cindex Bill Wohler
|
|
266 @cindex Wohler, Bill
|
|
267
|
|
268 @noindent
|
|
269 Bill Wohler <@i{wohler at newt.com}>@*
|
|
270 8 February 1995@*
|
|
271 24 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
|
|
283 If you're an experienced Emacs user, you can skip the following
|
|
284 conventions and definition of terms and go directly to the next
|
|
285 section (@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
|
|
297 In general, @dfn{functions} in this text refer to Emacs Lisp functions
|
|
298 that one would call from within Emacs Lisp programs (for example,
|
|
299 @code{(mh-inc-folder)}). On the other hand, @dfn{commands} are those
|
|
300 things that are run by the user, such as @kbd{i} or @kbd{M-x
|
|
301 mh-inc-folder}. Programs outside of Emacs are specifically called MH
|
|
302 commands, shell commands, or Unix commands.
|
|
303
|
|
304 @cindex conventions, key names
|
|
305 @cindex key names
|
|
306
|
|
307 The conventions for key names are as follows:
|
|
308
|
|
309 @table @kbd
|
|
310 @item C-x
|
|
311 Hold down the @key{CTRL} (Control) key and press the @kbd{x} key.
|
|
312 @c -------------------------
|
|
313 @item M-x
|
|
314 Hold down the @key{META} or @key{ALT} key and press the @kbd{x} key.
|
|
315
|
|
316 Since 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}
|
|
321 Press the @key{RETURN} or @key{ENTER} key. This is normally used to
|
|
322 complete a command.
|
|
323 @c -------------------------
|
|
324 @item @key{SPC}
|
|
325 Press the space bar.
|
|
326 @c -------------------------
|
|
327 @item @key{TAB}
|
|
328 Press the @key{TAB} key.
|
|
329 @c -------------------------
|
|
330 @item @key{DEL}
|
|
331 Press the @key{DELETE} key.
|
|
332 @c -------------------------
|
|
333 @item @key{BS}
|
|
334 Press the @key{BACKSPACE} key@footnote{If you are using Version 20 or
|
|
335 earlier 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
|
|
342 A @dfn{prefix argument} allows you to pass an argument to any Emacs
|
|
343 function. To pass an argument, type @kbd{C-u} before the Emacs command
|
|
344 or keystroke. Numeric arguments can be passed as well. For example, to
|
|
345 insert five f's, use @kbd{C-u 5 f}. There is a default of four when
|
|
346 using @kbd{C-u}, and you can use multiple prefix arguments to provide
|
|
347 arguments of powers of four. To continue our example, you could insert
|
|
348 four 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
|
|
350 arguments can also be inserted with the @key{META} key. Examples
|
|
351 include @kbd{M-5} to specify an argument of 5, or @kbd{M--} which
|
|
352 specifies a negative argument with no particular value.
|
|
353
|
|
354 @sp 1
|
|
355 @center @strong{NOTE}
|
|
356
|
|
357 @quotation
|
|
358 The prefix @kbd{C-u} or @kbd{M-} is not necessary in MH-E's MH-Folder
|
|
359 mode (@pxref{Reading Mail Tour}). In this mode, simply enter the
|
|
360 numerical 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
|
|
370 Emacs uses @dfn{variables} to hold values. These can be changed via
|
|
371 calls 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
|
|
378 Variables in MH-E that are normally modified by the user are called
|
|
379 @dfn{options} and are modified through the customize functions (such
|
|
380 as @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
|
|
383 GNU Emacs Manual}.
|
|
384 @end ifnothtml
|
|
385 @ifhtml
|
|
386 See section
|
|
387 @uref{http://www.gnu.org/software/emacs/manual/html_node/Easy-Customization.html,
|
|
388 Easy 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
|
|
397 You can specify various styles for displaying text using @dfn{faces}.
|
|
398 MH-E provides a set of faces that you can use to personalize the look
|
|
399 of your MH-E buffers. Use the command @kbd{M-x customize-face} to do
|
|
400 this.
|
|
401 @ifnothtml
|
|
402 @xref{Face Customization,,,emacs,The GNU Emacs Manual}, in @cite{The
|
|
403 GNU Emacs Manual}.
|
|
404 @end ifnothtml
|
|
405 @ifhtml
|
|
406 See section
|
|
407 @uref{http://www.gnu.org/software/emacs/manual/html_node/Face-Customization.html,
|
|
408 Face 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
|
|
417 Commands often offer @dfn{hooks} which enable you to extend or modify
|
|
418 the way a command works.
|
|
419 @ifnothtml
|
|
420 @ref{Hooks, , Hooks, emacs, The GNU Emacs Manual}, in @cite{The GNU
|
|
421 Emacs Manual}
|
|
422 @end ifnothtml
|
|
423 @ifhtml
|
|
424 See section
|
|
425 @uref{http://www.gnu.org/software/emacs/manual/html_node/Hooks.html,
|
|
426 Hooks} in @cite{The GNU Emacs Manual}
|
|
427 @end ifhtml
|
|
428 for a description about @dfn{normal hooks} and @dfn{abnormal hooks}.
|
|
429 MH-E uses normal hooks in nearly all cases, so you can assume that we
|
|
430 are talking about normal hooks unless we explicitly mention that a
|
|
431 hook is abnormal. We also follow the conventions described in that
|
|
432 section: the name of the abnormal hooks end in @code{-hooks} and all
|
|
433 the rest of the MH-E hooks end in @code{-hook}. You can add hooks with
|
|
434 either @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
|
|
445 There are several other terms that are used in Emacs that you should
|
|
446 know. The @dfn{point} is where the cursor currently is. You can save
|
|
447 your current place in the file by setting a @dfn{mark}. This operation
|
|
448 is 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
|
|
450 commands operate on regions, such as those for deleting text or
|
|
451 filling 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
|
|
465 The @dfn{minibuffer} is the bottom line of the Emacs window, where all
|
|
466 prompting and multiple-character input is directed. You can use
|
|
467 @dfn{completion} to enter values such as folders. Completion means
|
|
468 that Emacs fills in text for you when you type @key{SPC} or @key{TAB}.
|
|
469 A second @key{SPC} or @key{TAB} will list all possibilities at that
|
|
470 point.
|
|
471 @ifnothtml
|
|
472 @xref{Completion, , Completion, emacs, The GNU Emacs Manual}.
|
|
473 @end ifnothtml
|
|
474 @ifhtml
|
|
475 See the section
|
|
476 @uref{http://www.gnu.org/software/emacs/manual/html_node/Completion.html,
|
|
477 Completion} in @cite{The GNU Emacs Manual}.
|
|
478 @end ifhtml
|
|
479 Note that @key{SPC} cannot be used for completing filenames and
|
|
480 folders.
|
|
481
|
|
482 @findex help-with-tutorial
|
|
483 @kindex C-h t
|
|
484 @kindex M-x
|
|
485
|
|
486 The minibuffer is also where you enter Emacs function names after
|
|
487 typing @kbd{M-x}. For example, in the preface, I mentioned that you
|
|
488 could obtain help with @kbd{C-h t} (@code{help-with-tutorial}). What
|
|
489 this means is that you can get a tutorial by typing either @kbd{C-h t}
|
|
490 or @kbd{M-x help-with-tutorial}. In the latter case, you are prompted
|
|
491 for @samp{help-with-tutorial} in the minibuffer after typing
|
|
492 @kbd{M-x}.
|
|
493
|
|
494 @cindex ~
|
|
495
|
|
496 The @samp{~} notation in filenames represents your home directory.
|
|
497 This notation is used by many shells including @command{bash},
|
|
498 @code{tcsh}, and @command{csh}. It is analogous to the environment
|
|
499 variable @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
|
|
510 you enter something in the minibuffer, but then you change your mind,
|
|
511 type @kbd{C-g} and you'll be back where you started. If you want to
|
|
512 exit 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
|
|
521 Because there are many old versions of MH-E out there, it is important
|
|
522 to know which version you have. I'll be talking about @w{Version 8}
|
|
523 which is pretty close to @w{Version 6} and @w{Version 7}. It differs
|
|
524 from @w{Version 4} and @w{Version 5} and is vastly different from
|
|
525 @w{Version 3}. @xref{History}.
|
|
526
|
|
527 @findex mh-version
|
|
528
|
|
529 To determine which version of MH-E that you have, enter @kbd{M-x
|
|
530 mh-version @key{RET}}. Hopefully it says that you're running
|
|
531 @w{Version @value{VERSION}} which is the latest version as of this
|
|
532 printing.
|
|
533
|
|
534 If your version is much older than this, please consider upgrading.
|
|
535 You can have your system administrator upgrade the system-wide
|
|
536 version, or you can install your own personal version. It's really
|
|
537 quite easy. @xref{Getting MH-E}, for instructions for getting and
|
|
538 installing MH-E.
|
|
539
|
|
540 If the @code{mh-version} command displays @samp{No MH variant
|
|
541 detected}@footnote{In very old versions of MH-E, you may get the error
|
|
542 message, @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
|
|
544 MH-E, and you may need to install MH too. However, newer versions of
|
|
545 MH-E are better at finding MH if it is on your system.}, then you need
|
|
546 to install MH or tell MH-E where to find MH.
|
|
547
|
|
548 @cindex Debian
|
|
549 @cindex nmh
|
|
550 @cindex GNU mailutils
|
|
551
|
|
552 If you don't have MH on your system already, you must install a
|
|
553 variant 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
|
|
556 trying out @uref{http://www.gnu.org/software/mailutils/, GNU
|
|
557 mailutils}, which supports IMAP. Your GNU/Linux distribution probably
|
|
558 has packages for both of these.
|
|
559
|
|
560 @cindex @command{install-mh}
|
|
561 @cindex MH commands, @command{install-mh}
|
|
562 @cindex MH book
|
|
563
|
|
564 If you've never run MH before, you need to run @command{install-mh}
|
|
565 from the shell before you continue. This sets up your personal MH
|
|
566 environment@footnote{See the section
|
|
567 @uref{@value{MH-BOOK-HOME}/../overall/setup.html, Setting Up MH} in the
|
|
568 MH 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
|
|
570 you need to know about MH to use MH-E, but the more you know about MH,
|
|
571 the 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
|
|
579 Your MH environment includes your @dfn{MH profile} which is found in
|
|
580 the file @file{~/.mh_profile}. This file contains a number of @dfn{MH
|
|
581 profile components}. For example, the @samp{Path:} MH profile
|
|
582 component 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
|
|
593 There are several options MH-E uses to interact with your MH
|
|
594 installation. The option @code{mh-variant} specifies the variant used
|
|
595 by MH-E (@pxref{Options}). The default setting of this option is
|
|
596 @samp{Auto-detect} which means that MH-E will automatically choose the
|
|
597 first of nmh, MH, or GNU mailutils that it finds in the directories
|
|
598 listed 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
|
|
600 all, you may have to customize @code{mh-path} and add the directory in
|
|
601 which the command @command{mhparam} is located. If, on the other hand,
|
|
602 you have both nmh and mailutils installed (for example) and
|
|
603 @code{mh-variant-in-use} was initialized to nmh but you want to use
|
|
604 mailutils, 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
|
|
611 When @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
|
|
622 Prior to version 8, it was often necessary to set some of these
|
|
623 variables in @file{~/.emacs}; now it is no longer necessary and can
|
|
624 actually 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
|
|
644 In addition to setting variables that point to MH itself, MH-E also
|
|
645 sets a handful of variables that point to where you keep your mail.
|
|
646 During initialization, the function @code{mh-find-path} sets
|
|
647 @code{mh-user-path} from your @samp{Path:} MH profile component (but
|
|
648 defaults to @samp{Mail} if one isn't present), @code{mh-draft-folder}
|
|
649 from @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
|
|
653 after these variables have been set. This hook can be used the change
|
|
654 the value of these variables if you need to run with different values
|
|
655 between 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
|
|
664 This chapter introduces some of the terms you'll need to know and then
|
|
665 takes you on a tour of MH-E@footnote{The keys mentioned in these
|
|
666 chapters refer to the default key bindings. If you've changed the
|
|
667 bindings, refer to the command summaries at the beginning of each
|
|
668 chapter for a mapping between default key bindings and function
|
|
669 names.}. When you're done, you'll be able to send, read, and file
|
|
670 mail, which is all that a lot of people ever do. But if you're the
|
|
671 curious or adventurous type, read the rest of the manual to be able to
|
|
672 use all the features of MH-E. I suggest you read this chapter first to
|
|
673 get 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
|
|
693 Let's start our tour by sending ourselves a message which we can later
|
|
694 read and process. Enter @kbd{M-x mh-smail} to invoke the MH-E program
|
|
695 to send messages. Your message appears in an Emacs buffer whose
|
|
696 mode@footnote{A @dfn{mode} changes Emacs to make it easier to edit a
|
|
697 particular type of text.} is MH-Letter.
|
|
698
|
|
699 Enter 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
|
|
701 carbon copies are to be sent, and on to the @samp{Subject:} field.
|
|
702 Enter @kbd{Test} or anything else that comes to mind.
|
|
703
|
|
704 Press @key{TAB} again to move the cursor to the body of the message.
|
|
705 Enter some text, using normal Emacs commands. You should now have
|
|
706 something like this@footnote{If you're running Emacs under the X
|
|
707 Window System, then you would also see a menu bar and a tool bar. I've
|
|
708 left 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)-------------------------
|
|
719 To: wohler
|
|
720 cc:
|
|
721 Subject: Test
|
|
722 X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
|
|
723 --------
|
|
724 This is a test message to get the wheels churning...#
|
|
725
|
|
726
|
|
727 --:** @{draft@} All L5 (MH-Letter)----------------------------------
|
|
728 Type 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
|
|
733 Note the line of dashes that separates the header and the body of the
|
|
734 message. It is essential that these dashes (or a blank line) are
|
|
735 present or the body of your message will be considered to be part of
|
|
736 the 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
|
|
744 There are several commands specific to MH-Letter mode@footnote{You can
|
|
745 get quick help for the commands used most often with @kbd{C-c ?} or
|
|
746 more complete help with the @kbd{C-h m} (@code{describe-mode})
|
|
747 command.}, but at this time we'll only use @kbd{C-c C-c} to send your
|
|
748 message. 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
|
|
763 To read the mail you've just sent yourself, enter @kbd{M-x mh-rmail}.
|
|
764 This 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
|
|
767 prev} 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
|
|
770 pick Ranges Sequences} in the MH book.} which prints a one-line
|
|
771 summary of each message) into a buffer called @samp{+inbox} whose
|
|
772 major 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
|
|
783 The @kbd{M-x mh-rmail} command will show you only new mail, not mail
|
|
784 you have already read. If you were to run this tour again, you would
|
|
785 use @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
|
|
793 You 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)---------
|
|
803 To: wohler
|
|
804 Subject: Test
|
|
805 X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
|
|
806 Date: Fri, 17 Mar 2006 10:49:11 -0800
|
|
807 From: Bill Wohler <wohler@@stop.mail-abuse.org>
|
|
808
|
|
809 This 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
|
|
822 If 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
|
|
832 The first thing we want to do is reply to the message that we sent
|
|
833 ourselves. Ensure that the cursor is still on the same line as your
|
|
834 test 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
|
|
836 to the original sender only, to the sender and primary recipients, or
|
|
837 to the sender and all recipients. You can press @key{TAB} to see these
|
|
838 choices. If you simply press @key{RET}, you'll reply only to the
|
|
839 sender. Press @key{RET} now.
|
|
840
|
|
841 You'll find yourself in an Emacs buffer similar to that when you were
|
|
842 sending the original message, like this:
|
|
843
|
|
844 @cartouche
|
|
845 @smallexample
|
|
846 To:
|
|
847 cc:
|
|
848 Subject: Re: Test
|
|
849 In-reply-to: <31054.1142621351@@stop.mail-abuse.org>
|
|
850 References: <31054.1142621351@@stop.mail-abuse.org>
|
|
851 Comments: In-reply-to Bill Wohler <wohler@@stop.mail-abuse.org>
|
|
852 message dated "Fri, 17 Mar 2006 10:49:11 -0800."
|
|
853 X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
|
|
854 --------
|
|
855 #
|
|
856
|
|
857 --:-- @{draft@} All L10 (MH-Letter)----------------------------------
|
|
858 To: wohler
|
|
859 Subject: Test
|
|
860 X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
|
|
861 Date: Fri, 17 Mar 2006 10:49:11 -0800
|
|
862 From: Bill Wohler <wohler@@stop.mail-abuse.org>
|
|
863
|
|
864 This is a test message to get the wheels churning...
|
|
865
|
|
866 --:-- @{show-+inbox@} 4 All L1 (MH-Show)----------------------------
|
|
867 Type 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
|
|
884 By default, MH will not add you to the address list of your replies,
|
|
885 so if you find that the @samp{To:} header field is missing, don't
|
|
886 worry. 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
|
|
888 move 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
|
|
891 delete the previous character with @key{BS}. When you're finished
|
|
892 editing 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
|
|
900 You'll often want to save messages that were sent to you in an
|
|
901 organized fashion. This is done with @dfn{folders}. You can use
|
|
902 folders to keep messages from your friends, or messages related to a
|
|
903 particular topic. With your cursor in the MH-Folder buffer and
|
|
904 positioned 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
|
|
908 that a @samp{^} (caret) appears next to the message number, which
|
|
909 means that the message has been marked for refiling but has not yet
|
|
910 been refiled. We'll talk about how the refile is actually carried out
|
|
911 in 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
|
|
922 Your previous reply is now waiting in the system mailbox. You
|
|
923 incorporate this mail into your MH-Folder buffer named @samp{+inbox}
|
|
924 with the @kbd{i} command. Do this now. After the mail is incorporated,
|
|
925 use @kbd{n} or @kbd{p} to move the cursor to the new message, and read
|
|
926 it with @key{RET}. Let's delete this message by typing @kbd{d}. Note
|
|
927 that a @samp{D} appears next to the message number. This means that
|
|
928 the message is marked for deletion but is not yet deleted. To perform
|
|
929 the deletion (and the refile we did previously), use the @kbd{x}
|
|
930 command.
|
|
931
|
|
932 @findex mh-smail
|
|
933 @kindex m
|
|
934 @kindex M-x mh-smail
|
|
935
|
|
936 If 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
|
|
946 You can get a quick reminder about these commands by typing @kbd{?}.
|
|
947 This lists several @dfn{prefix characters}. To list the commands
|
|
948 available via the prefix characters, type the prefix character
|
|
949 followed by a @kbd{?}, for example, @kbd{F ?}. More complete help is
|
|
950 available 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
|
|
960 You may now wish to exit @command{emacs} entirely. Use @kbd{C-x C-c}
|
|
961 to 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
|
|
964 perform 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
|
|
972 If you don't want to leave Emacs, you can type @kbd{q} to bury (hide)
|
|
973 the MH-E folder or delete it entirely with @kbd{C-x k}. You can then
|
|
974 later 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
|
|
982 On the other hand, if you no longer want to use MH and MH-E, you can
|
|
983 take your mail with you. You can copy all of your mail into a single
|
|
984 file, mbox-style, by using the MH command @command{packf}. For
|
|
985 example, to create a file called @file{msgbox} with the messages in
|
|
986 your @samp{+inbox} folder, use @samp{packf +inbox}. The
|
|
987 @command{packf} command will append the messages to the file if it
|
|
988 already exists, so you can use @samp{folders -recurse -fast} in a
|
|
989 script 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
|
|
995 These are the basic commands to get you going, but there are plenty
|
|
996 more. If you think that MH-E is for you, read the rest of the manual
|
|
997 to find out how you can:
|
|
998
|
|
999 @itemize @bullet
|
|
1000 @item
|
|
1001 Print your messages (@pxref{Printing}).
|
|
1002 @c -------------------------
|
|
1003 @item
|
|
1004 Edit messages and include your signature (@pxref{Editing Drafts}).
|
|
1005 @c -------------------------
|
|
1006 @item
|
|
1007 Forward messages (@pxref{Forwarding}).
|
|
1008 @c -------------------------
|
|
1009 @item
|
|
1010 Read digests (@pxref{Digests}).
|
|
1011 @c -------------------------
|
|
1012 @item
|
|
1013 Edit bounced messages (@pxref{Editing Again}).
|
|
1014 @c -------------------------
|
|
1015 @item
|
|
1016 Send multimedia messages (@pxref{Adding Attachments}).
|
|
1017 @c -------------------------
|
|
1018 @item
|
|
1019 Read HTML messages (@pxref{HTML}).
|
|
1020 @c -------------------------
|
|
1021 @item
|
|
1022 Use aliases and identities (see @ref{Aliases}, @pxref{Identities}).
|
|
1023 @c -------------------------
|
|
1024 @item
|
|
1025 Create different views of your mail (see @ref{Threading}, @pxref{Limits}).
|
|
1026 @c -------------------------
|
|
1027 @item
|
|
1028 Deal with junk mail (@pxref{Junk}).
|
|
1029 @c -------------------------
|
|
1030 @item
|
|
1031 Handle signed and encrypted messages (see @ref{Reading PGP},
|
|
1032 @pxref{Sending PGP}).
|
|
1033 @c -------------------------
|
|
1034 @item
|
|
1035 Process mail that was sent with @command{shar} or @command{uuencode}
|
|
1036 (@pxref{Files and Pipes}).
|
|
1037 @c -------------------------
|
|
1038 @item
|
|
1039 Use sequences conveniently (@pxref{Sequences}).
|
|
1040 @c -------------------------
|
|
1041 @item
|
|
1042 Use the speedbar, tool bar, and menu bar (see @ref{Speedbar}, see @ref{Tool
|
|
1043 Bar}, @pxref{Menu Bar}).
|
|
1044 @c -------------------------
|
|
1045 @item
|
|
1046 Show header fields in different fonts (@pxref{Reading Mail}).
|
|
1047 @c -------------------------
|
|
1048 @item
|
|
1049 Find previously refiled messages (@pxref{Searching}).
|
|
1050 @c -------------------------
|
|
1051 @item
|
|
1052 Place messages in a file (@pxref{Files and Pipes}).
|
|
1053 @end itemize
|
|
1054
|
|
1055 Remember that you can also use MH commands when you're not running
|
|
1056 MH-E (and when you are!).
|
|
1057
|
|
1058 @node Using This Manual, Incorporating Mail, Tour Through MH-E, Top
|
|
1059 @chapter Using This Manual
|
|
1060
|
|
1061 This chapter begins the meat of the manual which goes into more detail
|
|
1062 about 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
|
|
1077 There are many commands, but don't get intimidated. There are command
|
|
1078 summaries at the beginning of each chapter. In case you have or would
|
|
1079 like to rebind the keys, the command summaries also list the
|
|
1080 associated Emacs Lisp function. Furthermore, even if you're stranded
|
|
1081 on a desert island with a laptop and are without your manuals, you can
|
|
1082 get 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
|
|
1085 help appears in a buffer called @samp{*MH-E Help*}
|
|
1086 (@pxref{Miscellaneous}).} (@kbd{C-c ?} in MH-Letter mode), or @kbd{C-h
|
|
1087 i} to read this manual via Info. The online help is quite good; try
|
|
1088 running @kbd{C-h C-h}. This brings up a list of available help topics,
|
|
1089 one of which displays the documentation for a given key (like @kbd{C-h
|
|
1090 k C-n}). Another useful help feature is to view the manual section
|
|
1091 that describes a given key (such as @kbd{C-h K i}). In addition,
|
|
1092 review @ref{Conventions}, if any of the GNU Emacs conventions are
|
|
1093 strange to you.
|
|
1094
|
|
1095 In addition to all of the commands, it is also possible to reconfigure
|
|
1096 MH-E to fit the needs of even the most demanding user. The following
|
|
1097 chapters also describe all of the options, show the defaults, and make
|
|
1098 recommendations for customization.
|
|
1099
|
|
1100 However, when customizing your mail environment, first try to change
|
|
1101 what you want in MH, and only change MH-E if changing MH is not
|
|
1102 possible. That way you will get the same behavior inside and outside
|
|
1103 GNU Emacs. Note that MH-E does not provide hooks for customizations
|
|
1104 that 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
|
|
1113 I hope I've included enough examples here to get you well on your way.
|
|
1114 If you want to explore Emacs Lisp further, a programming manual does
|
|
1115 exist,
|
|
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
|
|
1120 online 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
|
|
1123 can also order a printed manual, which has the desirable side-effect
|
|
1124 of helping to support the Free Software Foundation which made all this
|
|
1125 great 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
|
|
1127 gnu.org}.}
|
|
1128 @end iftex
|
|
1129 @ifinfo
|
|
1130 @footnote{@xref{Top, The GNU Emacs Lisp Reference Manual, , elisp, GNU
|
|
1131 Emacs Lisp Reference Manual}, which may be available online in the
|
|
1132 Info system. It is also available online at
|
|
1133 @uref{http://www.gnu.org/software/emacs/elisp-manual/html_node/}. You
|
|
1134 can also order a printed manual, which has the desirable side-effect
|
|
1135 of helping to support the Free Software Foundation which made all this
|
|
1136 great 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
|
|
1138 gnu.org}.}
|
|
1139 @end ifinfo
|
|
1140 @ifhtml
|
|
1141 @footnote{The
|
|
1142 @uref{http://www.gnu.org/software/emacs/elisp-manual/html_node/,
|
|
1143 The GNU Emacs Lisp Reference Manual} may also be available online in
|
|
1144 the Info system by typing @kbd{C-h i m Emacs Lisp @key{RET}}. You can
|
|
1145 also order a printed manual, which has the desirable side-effect of
|
|
1146 helping to support the Free Software Foundation which made all this
|
|
1147 great 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
|
|
1149 gnu.org}.}
|
|
1150 @end ifhtml
|
|
1151 and you can look at the code itself for examples. Look in the Emacs
|
|
1152 Lisp directory on your system (such as
|
|
1153 @file{/usr/local/lib/emacs/lisp/mh-e}) and find all the @file{mh-*.el}
|
|
1154 files there. When calling MH-E and other Emacs Lisp functions directly
|
|
1155 from Emacs Lisp code, you'll need to know the correct arguments. Use
|
|
1156 the online help for this. For example, try @kbd{C-h f
|
|
1157 mh-execute-commands @key{RET}}. If you write your own functions,
|
|
1158 please do not prefix your symbols (variables and functions) with
|
|
1159 @samp{mh-}. This prefix is reserved for the MH-E package. To avoid
|
|
1160 conflicts with existing MH-E symbols, use a prefix like @samp{my-} or
|
|
1161 your 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
|
|
1179 Many string or integer options are easy to modify using @kbd{M-x
|
|
1180 customize-option}. For example, to modify the option that controls
|
|
1181 printing, you would run @kbd{M-x customize-option @key{RET}
|
|
1182 mh-lpr-command-format @key{RET}}. In the buffer that appears, modify
|
|
1183 the string to the right of the variable. For example, you may change
|
|
1184 the @command{lpr} command with @samp{nenscript -G -r -2 -i'%s'}. Then
|
|
1185 use the @samp{State} combo box and select @samp{Save for Future
|
|
1186 Sessions}. 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
|
|
1197 Options can also hold boolean values. In Emacs Lisp, the boolean
|
|
1198 values are @code{nil}, which means false, and @code{t}, which means
|
|
1199 true. The @code{customize-option} function makes it easy to change
|
|
1200 boolean values; simply click on the toggle button in the customize
|
|
1201 buffer to switch between @samp{on} (@code{t}) and @samp{off}
|
|
1202 (@code{nil}). For example, try setting @code{mh-bury-show-buffer-flag}
|
|
1203 to @samp{off} to keep the MH-Show buffer at the top of the buffer
|
|
1204 stack. Use the @samp{State} combo box and choose @samp{Set for Current
|
|
1205 Session} to see how the option affects the show buffer. Then choose
|
|
1206 the @samp{Erase Customization} menu item to reset the option to the
|
|
1207 default, which places the MH-Show buffer at the bottom of the buffer
|
|
1208 stack.
|
|
1209
|
|
1210 @vindex mh-mhl-format-file, example
|
|
1211
|
|
1212 The 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
|
|
1216 hooks, 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
|
|
1223 You can browse all of the MH-E options with the @code{customize-group}
|
|
1224 function. 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
|
|
1226 the MH-E customization groups. Another way to view the MH-E
|
|
1227 customization 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
|
|
1238 Many commands that operate on individual messages, such as
|
|
1239 @code{mh-forward} or @code{mh-refile-msg} take a @code{RANGE}
|
|
1240 argument. This argument can be used in several ways.
|
|
1241
|
|
1242 @kindex C-u, with ranges
|
|
1243
|
|
1244 If you provide the prefix argument @kbd{C-u} to these commands, then
|
|
1245 you will be prompted for the message range. This can be any valid MH
|
|
1246 range which can include messages, sequences (@pxref{Sequences}), and
|
|
1247 the abbreviations (described in the @command{mh}(1) man page):
|
|
1248
|
|
1249 @table @samp
|
|
1250 @item <num1>-<num2>
|
|
1251 Indicates all messages in the range <num1> to <num2>, inclusive. The
|
|
1252 range must be nonempty.
|
|
1253 @c -------------------------
|
|
1254 @item <num>:N
|
|
1255 @itemx <num>:+N
|
|
1256 @itemx <num>:-N
|
|
1257 Up to N messages beginning with (or ending with) message num. Num may
|
|
1258 be 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
|
|
1264 The first, previous, next or last messages, if they exist.
|
|
1265 @c -------------------------
|
|
1266 @item all
|
|
1267 All of the messages.
|
|
1268 @end table
|
|
1269
|
|
1270 For example, a range that shows all of these things is @samp{1 2 3
|
|
1271 5-10 last:5 unseen}.
|
|
1272
|
|
1273 @vindex transient-mark-mode
|
|
1274
|
|
1275 If the option @code{transient-mark-mode} is turned on and you set a
|
|
1276 region in the MH-Folder buffer, then the MH-E command will perform the
|
|
1277 operation on all messages in that region.
|
|
1278
|
|
1279 @cindex @samp{mh-range} customization group
|
|
1280 @cindex customization group, @samp{mh-range}
|
|
1281
|
|
1282 The @samp{mh-range} customization group contains a single option which
|
|
1283 affects how ranges are interpreted.
|
|
1284
|
|
1285 @vtable @code
|
|
1286 @item mh-interpret-number-as-range-flag
|
|
1287 On means interpret a number as a range (default: @samp{on}).
|
|
1288 @end vtable
|
|
1289
|
|
1290 @vindex mh-interpret-number-as-range-flag
|
|
1291
|
|
1292 Since one of the most frequent ranges used is @samp{last:N}, MH-E will
|
|
1293 interpret 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
|
|
1295 default). 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
|
|
1305 When 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,
|
|
1313 Completion} in @cite{The GNU Emacs Manual}).
|
|
1314 @end ifhtml
|
|
1315 In addition, MH-E has several ways of choosing a suitable default so
|
|
1316 that 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
|
|
1321 The @samp{mh-folder-selection} customization group contains some
|
|
1322 options which are used to help with this.
|
|
1323
|
|
1324 @vtable @code
|
|
1325 @item mh-default-folder-for-message-function
|
|
1326 Function to select a default folder for refiling or @samp{Fcc:}
|
|
1327 (default: @code{nil}).
|
|
1328 @c -------------------------
|
|
1329 @item mh-default-folder-list
|
|
1330 List of addresses and folders (default: @code{nil}).
|
|
1331 @c -------------------------
|
|
1332 @item mh-default-folder-must-exist-flag
|
|
1333 On means guessed folder name must exist to be used (default:
|
|
1334 @samp{on}).
|
|
1335 @c -------------------------
|
|
1336 @item mh-default-folder-prefix
|
|
1337 Prefix used for folder names generated from aliases (default: @code{""}).
|
|
1338 @end vtable
|
|
1339
|
|
1340 @vindex mh-default-folder-for-message-function
|
|
1341
|
|
1342 You can set the option @code{mh-default-folder-for-message-function}
|
|
1343 to a function that provides a default folder for the message to be
|
|
1344 refiled. When this function is called, the current buffer contains the
|
|
1345 message being refiled and point is at the start of the message. This
|
|
1346 function 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
|
|
1348 name is used as the default, or an empty string to suppress the
|
|
1349 default entirely.
|
|
1350
|
|
1351 Otherwise, the name of the destination folder is derived from the
|
|
1352 sender as follows:
|
|
1353
|
|
1354 @enumerate
|
|
1355 @vindex mh-default-folder-list
|
|
1356 @item
|
|
1357 The folder name associated with the first address found in the list
|
|
1358 @code{mh-default-folder-list} is used. Each element in this list
|
|
1359 contains a @samp{Check Recipient} item. If this item is turned on,
|
|
1360 then the address is checked against the recipient instead of the
|
|
1361 sender. This is useful for mailing lists.
|
|
1362 @c -------------------------
|
|
1363 @vindex mh-default-folder-prefix
|
|
1364 @item
|
|
1365 An alias prefixed by @code{mh-default-folder-prefix} corresponding to
|
|
1366 the address is used. The prefix is used to prevent clutter in your
|
|
1367 mail directory. @xref{Aliases}.
|
|
1368 @end enumerate
|
|
1369
|
|
1370 @vindex mh-default-folder-must-exist-flag
|
|
1371
|
|
1372 If the derived folder does not exist, and
|
|
1373 @code{mh-default-folder-must-exist-flag} is @code{t}, then the last
|
|
1374 folder name used is suggested. This is useful if you get mail from
|
|
1375 various people for whom you have an alias, but file them all in the
|
|
1376 same 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
|
|
1385 This chapter talks about getting mail from your system mailbox into
|
|
1386 your MH @samp{+inbox} folder. The following command accomplishes that
|
|
1387 and 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
|
|
1395 Incorporate 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
|
|
1401 The following options in the @samp{mh-inc} customization group are
|
|
1402 used.
|
|
1403
|
|
1404 @vtable @code
|
|
1405 @item mh-inc-prog
|
|
1406 Program to incorporate mail (default: @code{"inc"}).
|
|
1407 @c -------------------------
|
|
1408 @item mh-inc-spool-list
|
|
1409 Alternate spool files (default: @code{nil}).
|
|
1410 @end vtable
|
|
1411
|
|
1412 The following hook is available.
|
|
1413
|
|
1414 @vtable @code
|
|
1415 @findex mh-inc-folder
|
|
1416 @item mh-inc-folder-hook
|
|
1417 Hook run by @code{mh-inc-folder} after incorporating mail into a
|
|
1418 folder (default: @code{nil}).
|
|
1419 @end vtable
|
|
1420
|
|
1421 @cindex @samp{+inbox}
|
|
1422 @findex mh-inc-folder
|
|
1423 @kindex i
|
|
1424
|
|
1425 If at any time you receive new mail, incorporate the new mail into
|
|
1426 your @samp{+inbox} buffer with @kbd{i} (@code{mh-inc-folder}). Note
|
|
1427 that @kbd{i} will display the @samp{+inbox} buffer, even if there
|
|
1428 isn't any new mail. You can incorporate mail from any file into the
|
|
1429 current folder by specifying a prefix argument; you'll be prompted for
|
|
1430 the name of the file to use as well as the destination folder (for
|
|
1431 example, @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
|
|
1439 Emacs can notify you when you have new mail by displaying @samp{Mail}
|
|
1440 in the mode line. To enable this behavior, and to have a clock in the
|
|
1441 mode 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
|
|
1455 The name of the program that incorporates new mail is stored in
|
|
1456 @code{mh-inc-prog}; it is @code{"inc"} by default. This program
|
|
1457 generates a one-line summary for each of the new messages. Unless it
|
|
1458 is an absolute pathname, the file is assumed to be in the
|
|
1459 @code{mh-progs} directory (@pxref{Getting Started}). You may also link
|
|
1460 a 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
|
|
1463 prev} and @uref{@value{MH-BOOK-HOME}/mhstr.html, MH Format Strings} in
|
|
1464 the MH book). You'll then need to modify several variables
|
|
1465 appropriately (@pxref{Scan Line Formats}).
|
|
1466
|
|
1467 @vindex mh-inc-spool-list
|
|
1468
|
|
1469 You can use the @code{mh-inc-spool-list} variable to direct MH-E to
|
|
1470 retrieve mail from arbitrary spool files other than your system
|
|
1471 mailbox, file it in folders other than your @samp{+inbox}, and assign
|
|
1472 key 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
|
|
1479 Suppose you are subscribed to the @i{mh-e-devel} mailing list and you
|
|
1480 use @command{procmail} to filter this mail into @file{~/mail/mh-e}
|
|
1481 with the following recipe in @file{.procmailrc}:
|
|
1482
|
|
1483 @smallexample
|
|
1484 PATH=$PATH:/usr/bin/mh
|
|
1485 MAILDIR=$HOME/`mhparam Path`
|
|
1486 :0:
|
|
1487 * ^From mh-e-devel-admin@@stop.mail-abuse.org
|
|
1488 mh-e
|
|
1489 @end smallexample
|
|
1490
|
|
1491 @findex mh-inc-spool-*
|
|
1492 @kindex I *
|
|
1493
|
|
1494 In 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,
|
|
1496 and 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
|
|
1498 Binding} 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
|
|
1508 You can use @command{xbuffy} to automate the incorporation of this
|
|
1509 mail using the Emacs 22 command @command{emacsclient} as follows:
|
|
1510
|
|
1511 @smallexample
|
|
1512 box ~/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
|
|
1520 In XEmacs, the command @command{gnuclient} is used in a similar
|
|
1521 fashion.
|
|
1522
|
|
1523 @findex mh-inc-folder
|
|
1524 @kindex i
|
|
1525 @vindex mh-inc-folder-hook
|
|
1526
|
|
1527 You can set the hook @code{mh-inc-folder-hook}, which is called after
|
|
1528 new mail is incorporated by the @kbd{i} (@code{mh-inc-folder})
|
|
1529 command. A good use of this hook is to rescan the whole folder either
|
|
1530 after running @kbd{M-x mh-rmail} the first time or when you've changed
|
|
1531 the 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
|
|
1568 The MH-E entry point for reading mail is @kbd{M-x mh-rmail}. This
|
|
1569 command incorporates your mail and creates a buffer called
|
|
1570 @samp{+inbox} in MH-Folder mode. The command @kbd{M-x mh-rmail} shows
|
|
1571 you only new mail, not mail you have already read@footnote{If you want
|
|
1572 to see your old mail as well, use @kbd{F r} to pull all your messages
|
|
1573 into MH-E. Or, give a prefix argument to @code{mh-rmail} so it will
|
|
1574 prompt you for folder to visit like @kbd{F v} (for example, @kbd{C-u
|
|
1575 M-x mh-rmail @key{RET} bob @key{RET}}). @xref{Folders}.}.
|
|
1576
|
|
1577 @findex display-time
|
|
1578 @vindex read-mail-command
|
|
1579
|
|
1580 There are some commands that need to read mail, such as @kbd{Mouse-2}
|
|
1581 over the @samp{Mail} button that @code{display-time} adds to the mode
|
|
1582 line. You can configure Emacs to have these commands use MH-E by
|
|
1583 setting 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
|
|
1591 The @samp{+inbox} buffer contains @dfn{scan lines}, which are one-line
|
|
1592 summaries of each incorporated message. You can perform most MH
|
|
1593 commands on these messages via one- or two-letter commands in either
|
|
1594 the MH-Folder or MH-Show buffers or by using the @samp{Message} menu.
|
|
1595 See @command{scan}(1) for a description of the contents of the scan
|
|
1596 lines, and see the Figure in @ref{Reading Mail Tour}, for an example.
|
|
1597
|
|
1598 @table @kbd
|
|
1599 @kindex ?
|
|
1600 @findex mh-help
|
|
1601 @item ?
|
|
1602 Display 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}
|
|
1609 Display 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)
|
|
1616 Display 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)
|
|
1621 Toggle 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}
|
|
1627 Display next page in message (@code{mh-page-msg}).
|
|
1628 @c -------------------------
|
|
1629 @kindex @key{BS}
|
|
1630 @findex mh-previous-page
|
|
1631 @item @key{BS}
|
|
1632 Display 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 >
|
|
1639 Append 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 |
|
|
1646 Pipe 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
|
|
1651 Delete 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
|
|
1659 Delete range (@code{mh-delete-msg}).
|
|
1660 @c -------------------------
|
|
1661 @kindex D ?
|
|
1662 @findex mh-prefix-help
|
|
1663 @item D ?
|
|
1664 Display cheat sheet for the commands of the current prefix in
|
|
1665 minibuffer (@code{mh-prefix-help}).
|
|
1666 @c -------------------------
|
|
1667 @kindex D @key{SPC}
|
|
1668 @findex mh-page-digest
|
|
1669 @item D @key{SPC}
|
|
1670 Display 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}
|
|
1675 Display 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
|
|
1682 Break 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
|
|
1689 Go to a message (@code{mh-goto-msg}).
|
|
1690 @c -------------------------
|
|
1691 @kindex k
|
|
1692 @findex mh-delete-subject-or-thread
|
|
1693 @item k
|
|
1694 Delete 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 ?
|
|
1700 Display cheat sheet for the commands of the current prefix in
|
|
1701 minibuffer (@code{mh-prefix-help}).
|
|
1702 @c -------------------------
|
|
1703 @kindex K @key{TAB}
|
|
1704 @findex mh-next-button
|
|
1705 @item K @key{TAB}
|
|
1706 Go 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}
|
|
1711 Go to the previous button (@code{mh-prev-button}).
|
|
1712 @c -------------------------
|
|
1713 @kindex K a
|
|
1714 @findex mh-mime-save-parts
|
|
1715 @item K a
|
|
1716 Save attachments (@code{mh-mime-save-parts}).
|
|
1717 @c -------------------------
|
|
1718 @kindex K e
|
|
1719 @findex mh-display-with-external-viewer
|
|
1720 @item K e
|
|
1721 View 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
|
|
1726 Show 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
|
|
1731 Save (output) attachment (@code{mh-folder-save-mime-part}).
|
|
1732 @c -------------------------
|
|
1733 @kindex K t
|
|
1734 @findex mh-toggle-mime-buttons
|
|
1735 @item K t
|
|
1736 Toggle 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
|
|
1742 View 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
|
|
1749 Edit 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-<
|
|
1756 Display 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->
|
|
1763 Display last message (@code{mh-last-msg}).
|
|
1764 @c -------------------------
|
|
1765 @kindex M-n
|
|
1766 @findex mh-next-unread-msg
|
|
1767 @item M-n
|
|
1768 Display next unread message (@code{mh-next-unread-msg}).
|
|
1769 @c -------------------------
|
|
1770 @kindex M-p
|
|
1771 @findex mh-previous-unread-msg
|
|
1772 @item M-p
|
|
1773 Display 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
|
|
1780 Display 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
|
|
1787 Display previous message (@code{mh-previous-undeleted-msg}).
|
|
1788 @c -------------------------
|
|
1789 @kindex P ?
|
|
1790 @findex mh-prefix-help
|
|
1791 @item P ?
|
|
1792 Display cheat sheet for the commands of the current prefix in
|
|
1793 minibuffer (@code{mh-prefix-help}).
|
|
1794 @c -------------------------
|
|
1795 @kindex P C
|
|
1796 @findex mh-ps-print-toggle-color
|
|
1797 @item P C
|
|
1798 Toggle 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
|
|
1804 Toggle 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
|
|
1810 Print 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
|
|
1817 Print 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
|
|
1823 Print range (@code{mh-ps-print-msg}).
|
|
1824 @c -------------------------
|
|
1825 @kindex X ?
|
|
1826 @findex mh-prefix-help
|
|
1827 @item X ?
|
|
1828 Display cheat sheet for the commands of the current prefix in
|
|
1829 minibuffer (@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
|
|
1838 Unpack 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
|
|
1844 Move point to mouse event and show message (@code{mh-show-mouse}).
|
|
1845 @end table
|
|
1846
|
|
1847 Within 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
|
|
1857 View 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
|
|
1863 The following table lists options in the @samp{mh-show} customization
|
|
1864 group that are used while reading mail.
|
|
1865
|
|
1866 @vtable @code
|
|
1867 @item mh-bury-show-buffer-flag
|
|
1868 On means show buffer is buried (default: @samp{on}).
|
|
1869 @c -------------------------
|
|
1870 @item mh-clean-message-header-flag
|
|
1871 On means remove extraneous header fields (default: @samp{on}).
|
|
1872 @c -------------------------
|
|
1873 @item mh-decode-mime-flag
|
|
1874 On 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
|
|
1878 On means display buttons for all alternative attachments (default:
|
|
1879 @samp{off}).
|
|
1880 @c -------------------------
|
|
1881 @item mh-display-buttons-for-inline-parts-flag
|
|
1882 On means display buttons for all inline attachments (default:
|
|
1883 @samp{off}).
|
|
1884 @c -------------------------
|
|
1885 @item mh-do-not-confirm-flag
|
|
1886 On means non-reversible commands do not prompt for confirmation
|
|
1887 (default: @samp{off}).
|
|
1888 @c -------------------------
|
|
1889 @item mh-fetch-x-image-url
|
|
1890 Control fetching of @samp{X-Image-URL:} header field image (default:
|
|
1891 @samp{Never Fetch}).
|
|
1892 @c -------------------------
|
|
1893 @item mh-graphical-smileys-flag
|
|
1894 On means graphical smileys are displayed (default: @samp{on}).
|
|
1895 @c -------------------------
|
|
1896 @item mh-graphical-emphasis-flag
|
|
1897 On means graphical emphasis is displayed (default: @samp{on}).
|
|
1898 @c -------------------------
|
|
1899 @item mh-highlight-citation-style
|
|
1900 Style for highlighting citations (default: @samp{Multicolor}).
|
|
1901 @c -------------------------
|
|
1902 @item mh-invisible-header-fields-default
|
|
1903 List of hidden header fields (default: a checklist too long to list
|
|
1904 here).
|
|
1905 @c -------------------------
|
|
1906 @item mh-invisible-header-fields
|
|
1907 Additional header fields to hide (default: @code{nil}).
|
|
1908 @c -------------------------
|
|
1909 @item mh-lpr-command-format
|
|
1910 Command used to print (default: @code{"lpr -J '%s'"}).
|
|
1911 @c -------------------------
|
|
1912 @item mh-max-inline-image-height
|
|
1913 Maximum inline image height if @samp{Content-Disposition:} is not
|
|
1914 present (default: 0).
|
|
1915 @c -------------------------
|
|
1916 @item mh-max-inline-image-width
|
|
1917 Maximum inline image width if @samp{Content-Disposition:} is not
|
|
1918 present(default: 0).
|
|
1919 @c -------------------------
|
|
1920 @item mh-mhl-format-file
|
|
1921 Specifies 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
|
|
1925 Default directory to use for @kbd{K a}.
|
|
1926 @c -------------------------
|
|
1927 @item mh-print-background-flag
|
|
1928 On means messages should be printed in the background (default:
|
|
1929 @samp{off}).
|
|
1930 @c -------------------------
|
|
1931 @item mh-show-buffer-mode-line-buffer-id
|
|
1932 Format string to produce @code{mode-line-buffer-identification} for
|
|
1933 show buffers (default: @code{" @{show-%s@} %d"}).
|
|
1934 @c -------------------------
|
|
1935 @item mh-show-maximum-size
|
|
1936 Maximum size of message (in bytes) to display automatically (default:
|
|
1937 0).
|
|
1938 @c -------------------------
|
|
1939 @item mh-show-use-xface-flag
|
|
1940 On means display face images in MH-Show buffers (default: @samp{on}).
|
|
1941 @c -------------------------
|
|
1942 @item mh-store-default-directory
|
|
1943 Default directory for @kbd{X s} (default: @samp{Current}).
|
|
1944 @c -------------------------
|
|
1945 @item mh-summary-height
|
|
1946 Number of lines in MH-Folder buffer (including the mode line)
|
|
1947 (default: depends on size of frame).
|
|
1948 @end vtable
|
|
1949
|
|
1950 The following hooks are available.
|
|
1951
|
|
1952 @vtable @code
|
|
1953 @item mh-delete-msg-hook
|
|
1954 Hook run after marking each message for deletion (default: @code{nil}).
|
|
1955 @c -------------------------
|
|
1956 @item mh-show-hook
|
|
1957 Hook run after @key{RET} shows a message (default: @code{nil}).
|
|
1958 @c -------------------------
|
|
1959 @item mh-show-mode-hook
|
|
1960 Hook run upon entry to @code{mh-show-mode} (default: @code{nil}).
|
|
1961 @end vtable
|
|
1962
|
|
1963 The following faces are available.
|
|
1964
|
|
1965 @vtable @code
|
|
1966 @item mh-show-cc
|
|
1967 Face used to highlight @samp{cc:} header fields.
|
|
1968 @c -------------------------
|
|
1969 @item mh-show-date
|
|
1970 Face used to highlight @samp{Date:} header fields.
|
|
1971 @c -------------------------
|
|
1972 @item mh-show-from
|
|
1973 Face used to highlight @samp{From:} header fields.
|
|
1974 @c -------------------------
|
|
1975 @item mh-show-header
|
|
1976 Face used to deemphasize less interesting header fields.
|
|
1977 @c -------------------------
|
|
1978 @item mh-show-pgg-bad
|
|
1979 Bad PGG signature face.
|
|
1980 @c -------------------------
|
|
1981 @item mh-show-pgg-good
|
|
1982 Good PGG signature face.
|
|
1983 @c -------------------------
|
|
1984 @item mh-show-pgg-unknown
|
|
1985 Unknown or untrusted PGG signature face.
|
|
1986 @c -------------------------
|
|
1987 @item mh-show-signature
|
|
1988 Signature face.
|
|
1989 @c -------------------------
|
|
1990 @item mh-show-subject
|
|
1991 Face used to highlight @samp{Subject:} header fields.
|
|
1992 @c -------------------------
|
|
1993 @item mh-show-to
|
|
1994 Face used to highlight @samp{To:} header fields.
|
|
1995 @c -------------------------
|
|
1996 @item mh-show-xface
|
|
1997 X-Face image face.
|
|
1998 @end vtable
|
|
1999
|
|
2000 The functions and variables introduced here are explained in more
|
|
2001 detail 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
|
|
2030 The command @key{RET} (@code{mh-show}) displays the message that the
|
|
2031 cursor is on while @kbd{Mouse-2} (@code{mh-show-mouse}) displays the
|
|
2032 message that the mouse cursor is on. If the message is already
|
|
2033 displayed, 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
|
|
2035 forwards and backwards one page at a time through the message. You can
|
|
2036 give either of these commands a prefix argument that specifies the
|
|
2037 number of lines to scroll (such as @kbd{10 @key{SPC}}). The @key{SPC}
|
|
2038 command will also show the next undeleted message if it is used at the
|
|
2039 bottom of a message. MH-E normally hides a lot of the superfluous
|
|
2040 header fields that mailers add to a message, but if you wish to see
|
|
2041 all of them, use the command @kbd{,} (comma;
|
|
2042 @code{mh-header-display}).
|
|
2043
|
|
2044 @vindex mh-show-maximum-size
|
|
2045
|
|
2046 The option @code{mh-show-maximum-size} provides an opportunity to skip
|
|
2047 over large messages which may be slow to load. The default value of 0
|
|
2048 means that all message are shown regardless of size.
|
|
2049
|
|
2050 A 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
|
|
2059 First, the appearance of the header fields can be modified by
|
|
2060 customizing 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}.
|
|
2062 The face @code{mh-show-header} is used to deemphasize the other, less
|
|
2063 interesting, 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
|
|
2070 Normally messages are delivered with a handful of uninteresting header
|
|
2071 fields. These are hidden by turning on the option
|
|
2072 @code{mh-clean-message-header-flag} (which it is by default). The
|
|
2073 header fields listed in the option
|
|
2074 @code{mh-invisible-header-fields-default} are hidden, although you can
|
|
2075 check off any field that you would like to see. Header fields that you
|
|
2076 would 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
|
|
2078 expressions are not allowed. Unique fields should have a @samp{:}
|
|
2079 suffix; otherwise, the element can be used to render invisible an
|
|
2080 entire class of fields that start with the same prefix. If you think a
|
|
2081 header field should be generally ignored, report a bug (@pxref{Bug
|
|
2082 Reports}).
|
|
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
|
|
2092 MH-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
|
|
2094 header of your message, the sender's face will appear in the
|
|
2095 @samp{From:} header field. If more than one of these fields appear,
|
|
2096 then the first field found in the order @samp{Face:}, @samp{X-Face:},
|
|
2097 and @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.
|
|
2099 This feature will be turned on by default if your system supports it.
|
|
2100
|
|
2101 The first header field used, if present, is the Gnus-specific
|
|
2102 @samp{Face:} field@footnote{The @samp{Face:} field appeared in GNU
|
|
2103 Emacs 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
|
|
2112 Next is the traditional @samp{X-Face:} header field@footnote{The
|
|
2113 display 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
|
|
2116 support for @samp{X-Face:} images. If your version of XEmacs does not,
|
|
2117 then you'll need both @command{uncompface} and the
|
|
2118 @uref{ftp://ftp.jpl.org/pub/elisp/, @samp{x-face} package}.}. MH-E
|
|
2119 renders the foreground and background of the image using the
|
|
2120 associated 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
|
|
2129 Finally, 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
|
|
2132 requires the @uref{http://www.gnu.org/software/wget/wget.html,
|
|
2133 @command{wget} program} to fetch the image and the @command{convert}
|
|
2134 program from the @uref{http://www.imagemagick.org/, ImageMagick
|
|
2135 suite}.}. Of the three header fields this is the most efficient in
|
|
2136 terms of network usage since the image doesn't need to be transmitted
|
|
2137 with every single mail. The option @code{mh-fetch-x-image-url}
|
|
2138 controls the fetching of the @samp{X-Image-URL:} header field image
|
|
2139 with the following values:
|
|
2140
|
|
2141 @table @samp
|
|
2142 @item Ask Before Fetching
|
|
2143 You are prompted before the image is fetched. MH-E will remember your
|
|
2144 reply and will either use the already fetched image the next time the
|
|
2145 same URL is encountered or silently skip it if you didn't fetch it the
|
|
2146 first time. This is a good setting.
|
|
2147 @c -------------------------
|
|
2148 @item Never Fetch
|
|
2149 Images are never fetched and only displayed if they are already
|
|
2150 present in the cache. This is the default.
|
|
2151 @end table
|
|
2152
|
|
2153 There isn't a value of @samp{Always Fetch} for privacy and DOS (denial
|
|
2154 of service) reasons. For example, fetching a URL can tip off a spammer
|
|
2155 that you've read his email (which is why you shouldn't blindly answer
|
|
2156 yes if you've set this option to @samp{Ask Before Fetching}). Someone
|
|
2157 may also flood your network and fill your disk drive by sending a
|
|
2158 torrent of messages, each specifying a unique URL to a very large
|
|
2159 file.
|
|
2160
|
|
2161 @cindex @file{.mhe-x-image-cache}
|
|
2162 @cindex files, @file{.mhe-x-image-cache}
|
|
2163
|
|
2164 The cache of images is found in the directory
|
|
2165 @file{.mhe-x-image-cache} within your MH directory. You can add your
|
|
2166 own 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
|
|
2172 Normally MH-E takes care of displaying messages itself (rather than
|
|
2173 calling 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
|
|
2176 mhl Format (Printing Only)}. You can set this option to @samp{Use
|
|
2177 Default 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
|
|
2179 MH-E to use, you can set this option to @samp{Specify an mhl Format
|
|
2180 File} and enter the name of your format file (@command{mhl}(1) or
|
|
2181 section @uref{@value{MH-BOOK-HOME}/shomes.html#Usisho, Using mhl} in
|
|
2182 the MH book tells you how to write one). Your format file should
|
|
2183 specify a non-zero value for @samp{overflowoffset} to allow MH-E to
|
|
2184 parse the header. Note that @command{mhl} is always used for printing
|
|
2185 and forwarding; in this case, the value of @code{mh-mhl-format-file}
|
|
2186 is consulted if you have specified a format file.
|
|
2187
|
|
2188 @cindex citations, highlighting
|
|
2189 @cindex highlighting citations
|
|
2190 @vindex mh-highlight-citation-style
|
|
2191
|
|
2192 If the sender of the message has cited other messages in his message,
|
|
2193 then MH-E will highlight these citations to emphasize the sender's
|
|
2194 actual response. The option @code{mh-highlight-citation-style} can be
|
|
2195 customized to change the highlighting style. The @samp{Multicolor}
|
|
2196 method uses a different color for each indentation while the
|
|
2197 @samp{Monotone} method highlights all citations in red. To disable
|
|
2198 highlighting 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
|
|
2210 Email 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
|
|
2212 the web page for a highlighted URL or to send a message using a
|
|
2213 highlighted 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
|
|
2215 configure 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
|
|
2228 It is a long standing custom to inject body language using a
|
|
2229 cornucopia of punctuation, also known as the @dfn{smileys}. MH-E can
|
|
2230 render these as graphical widgets if the option
|
|
2231 @code{mh-graphical-smileys-flag} is turned on, which it is by default.
|
|
2232 Smileys include patterns such as :-) and ;-). Similarly, a few
|
|
2233 typesetting features are indicated in ASCII text with certain
|
|
2234 characters. If your terminal supports it, MH-E can render these
|
|
2235 typesetting directives naturally if the option
|
|
2236 @code{mh-graphical-emphasis-flag} is turned on, which it is by
|
|
2237 default. For example, _underline_ will be
|
|
2238 @ifhtml
|
|
2239 @html
|
|
2240 <u>underlined</u>,
|
|
2241 @end html
|
|
2242 @end ifhtml
|
|
2243 @ifnothtml
|
|
2244 underlined,
|
|
2245 @end ifnothtml
|
|
2246 *bold* will appear in @b{bold}, /italics/ will appear in @i{italics},
|
|
2247 and so on. See the option @code{gnus-emphasis-alist} for the whole
|
|
2248 list. 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
|
|
2255 MH-E normally renders signatures and vCards in italics so that the
|
|
2256 body of the message stands out more. MH-E depends on the presence of
|
|
2257 the @dfn{signature separator} (@code{"-- "}) to do this. You can also
|
|
2258 customize the face @code{mh-show-signature} so the appearance of the
|
|
2259 signature block is more to your liking.
|
|
2260
|
|
2261 @vindex mh-show-hook
|
|
2262 @vindex mh-show-mode-hook
|
|
2263
|
|
2264 Two hooks can be used to control how messages are displayed. The first
|
|
2265 hook, @code{mh-show-mode-hook}, is called early on in the process of
|
|
2266 the message display. It is usually used to perform some action on the
|
|
2267 message's content. The second hook, @code{mh-show-hook}, is the last
|
|
2268 thing called after messages are displayed. It's used to affect the
|
|
2269 behavior of MH-E in general or when @code{mh-show-mode-hook} is too
|
|
2270 early.
|
|
2271
|
|
2272 @cindex MH-Show mode
|
|
2273 @cindex modes, MH-Show
|
|
2274 @vindex mh-show-buffer-mode-line-buffer-id
|
|
2275
|
|
2276 For those who like to modify their mode lines, use
|
|
2277 @code{mh-show-buffer-mode-line-buffer-id} to modify the mode line in
|
|
2278 the MH-Show buffers. Place the two escape strings @samp{%s} and
|
|
2279 @samp{%d}, which will display the folder name and the message number,
|
|
2280 respectively, somewhere in the string in that order. The default value
|
|
2281 of @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
|
|
2299 MH has the ability to display @dfn{@sc{mime}} (Multipurpose Internet
|
|
2300 Mail 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
|
|
2304 prev} in the MH book.} or @command{mhshow}@footnote{See the section
|
|
2305 @uref{@value{MH-BOOK-HOME}/usimim.html#ReMIMa, Reading MIME Mail} in
|
|
2306 the MH book.} from the shell to read @sc{mime} messages@footnote{You
|
|
2307 can call them directly from Emacs if you're running the X Window
|
|
2308 System: type @kbd{M-! xterm -e mhshow @var{message-number}}. You can
|
|
2309 leave 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
|
|
2318 MH-E can handle attachments as well if the Gnus @samp{mm-decode}
|
|
2319 package is present. If so, the option @code{mh-decode-mime-flag} will
|
|
2320 be on. Otherwise, you'll see the @sc{mime} body parts rather than text
|
|
2321 or 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
|
|
2323 that the body parts are not being interpreted correctly or toggle it
|
|
2324 with the command @kbd{;} (semicolon;
|
|
2325 @code{mh-toggle-mh-decode-mime-flag}) to view the raw message. This
|
|
2326 option also controls the display of quoted-printable messages and
|
|
2327 other graphical widgets. @xref{Viewing}.
|
|
2328
|
|
2329 @cindex buttons
|
|
2330
|
|
2331 Attachments 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
|
|
2346 To 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
|
|
2348 the cursor is over the button. This command is a toggle so if you use
|
|
2349 it again on the same attachment, it is hidden. If Emacs does not know
|
|
2350 how to display the attachment, then Emacs offers to save the
|
|
2351 attachment in a file. To move the cursor to the next button, use the
|
|
2352 command @kbd{K @key{TAB}} (@code{mh-next-button}). If the end of the
|
|
2353 buffer is reached then the search wraps over to the start of the
|
|
2354 buffer. 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
|
|
2356 buffer 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
|
|
2363 Another 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.
|
|
2366 If the cursor is not located over a button, then the cursor first
|
|
2367 moves to the next button, wrapping to the beginning of the message if
|
|
2368 necessary. This command has the advantage over the previous commands
|
|
2369 of working from the MH-Folder buffer. You can also provide a numeric
|
|
2370 prefix argument (as in @kbd{4 K v}) to view the attachment labeled
|
|
2371 with that number. If Emacs does not know how to display the
|
|
2372 attachment, 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
|
|
2380 If Emacs does not know how to view an attachment, you could save it
|
|
2381 into a file and then run some program to open it. It is easier,
|
|
2382 however, 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
|
|
2384 likely use this to view spreadsheets and documents, it is also useful
|
|
2385 to use your browser to view HTML attachments with higher fidelity than
|
|
2386 what Emacs can provide. This command displays the attachment
|
|
2387 associated with the button under the cursor. If the cursor is not
|
|
2388 located over a button, then the cursor first moves to the next button,
|
|
2389 wrapping to the beginning of the message if necessary. You can provide
|
|
2390 a numeric prefix argument (as in @kbd{4 K e}) to view the attachment
|
|
2391 labeled with that number. This command tries to provide a reasonable
|
|
2392 default 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
|
|
2401 Use the command @kbd{K o} (@code{mh-folder-save-mime-part}) to save
|
|
2402 attachments (the mnemonic is ``output''). This command saves the
|
|
2403 attachment associated with the button under the cursor. If the cursor
|
|
2404 is not located over a button, then the cursor first moves to the next
|
|
2405 button, wrapping to the beginning of the message if necessary. You can
|
|
2406 also provide a numeric prefix argument (as in @kbd{3 K o}) to save the
|
|
2407 attachment labeled with that number. This command prompts you for a
|
|
2408 filename 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
|
|
2418 You 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
|
|
2420 directory specified by the option
|
|
2421 @code{mh-mime-save-parts-default-directory} unless you use a prefix
|
|
2422 argument (as in @kbd{C-u K a}) in which case you are prompted for the
|
|
2423 directory. These directories may be superseded by MH profile
|
|
2424 components, since this function calls on @command{mhstore}
|
|
2425 (@command{mhn}) to do the work.
|
|
2426
|
|
2427 @vindex mh-mime-save-parts-default-directory
|
|
2428
|
|
2429 The default value for the option
|
|
2430 @code{mh-mime-save-parts-default-directory} is @samp{Prompt Always} so
|
|
2431 that you are always prompted for the directory in which to save the
|
|
2432 attachments. However, if you usually use the same directory within a
|
|
2433 session, then you can set this option to @samp{Prompt the First Time}
|
|
2434 to avoid the prompt each time. you can make this directory permanent
|
|
2435 by 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
|
|
2443 The sender can request that attachments should be viewed inline so
|
|
2444 that they do not really appear like an attachment at all to the
|
|
2445 reader. Most of the time, this is desirable, so by default MH-E
|
|
2446 suppresses the buttons for inline attachments. On the other hand, you
|
|
2447 may receive code or HTML which the sender has added to his message as
|
|
2448 inline attachments so that you can read them in MH-E. In this case, it
|
|
2449 is useful to see the buttons so that you know you don't have to cut
|
|
2450 and paste the code into a file; you can simply save the attachment. If
|
|
2451 you want to make the buttons visible for inline attachments, you can
|
|
2452 use the command @kbd{K t} (@code{mh-toggle-mime-buttons}) to toggle
|
|
2453 the visibility of these buttons. You can turn on these buttons
|
|
2454 permanently by turning on the option
|
|
2455 @code{mh-display-buttons-for-inline-parts-flag}.
|
|
2456
|
|
2457 MH-E cannot display all attachments inline however. It can display
|
|
2458 text (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
|
|
2466 Some older mail programs do not insert the needed
|
|
2467 plumbing@footnote{This plumbing is the @samp{Content-Disposition:}
|
|
2468 header field.} to tell MH-E whether to display the attachments inline
|
|
2469 or not. If this is the case, MH-E will display these images inline if
|
|
2470 they are smaller than the window. However, you might want to allow
|
|
2471 larger images to be displayed inline. To do this, you can change the
|
|
2472 options @code{mh-max-inline-image-width} and
|
|
2473 @code{mh-max-inline-image-height} from their default value of zero to
|
|
2474 a large number. The size of your screen is a good choice for these
|
|
2475 numbers.
|
|
2476
|
|
2477 @cindex alternatives
|
|
2478 @cindex attachments, alternatives
|
|
2479 @vindex mh-display-buttons-for-alternatives-flag
|
|
2480
|
|
2481 Sometimes, a mail program will produce multiple alternatives of an
|
|
2482 attachment in increasing degree of faithfulness to the original
|
|
2483 content. By default, only the preferred alternative is displayed. If
|
|
2484 the option @code{mh-display-buttons-for-alternatives-flag} is on, then
|
|
2485 the preferred part is shown inline and buttons are shown for each of
|
|
2486 the other alternatives.
|
|
2487
|
|
2488 @vindex mm-discouraged-alternatives
|
|
2489
|
|
2490 Many people prefer to see the @samp{text/plain} alternative rather
|
|
2491 than the @samp{text/html} alternative. To do this in MH-E, customize
|
|
2492 the 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
|
|
2498 You can view the raw contents of an attachment with the command @kbd{K
|
|
2499 i} (@code{mh-folder-inline-mime-part}). This command displays (or
|
|
2500 hides) the contents of the attachment associated with the button under
|
|
2501 the cursor verbatim. If the cursor is not located over a button, then
|
|
2502 the cursor first moves to the next button, wrapping to the beginning
|
|
2503 of the message if necessary. You can also provide a numeric prefix
|
|
2504 argument (as in @kbd{4 K i}) to view the attachment labeled with that
|
|
2505 number.
|
|
2506
|
|
2507 For additional information on buttons, see
|
|
2508 @ifinfo
|
|
2509 @ref{Article Buttons,,,gnus}, and @ref{MIME Commands,,,gnus}.
|
|
2510 @end ifinfo
|
|
2511 @ifnotinfo
|
|
2512 the chapters @uref{http://www.gnus.org/manual/gnus_101.html#SEC101,
|
|
2513 Article Buttons} and
|
|
2514 @uref{http://www.gnus.org/manual/gnus_108.html#SEC108, MIME Commands}
|
|
2515 in 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
|
|
2524 MH-E can display messages that have been sent in HTML@footnote{This
|
|
2525 feature depends on a version of Gnus that is at least 5.10.}. The
|
|
2526 content of the message will appear in the MH-Show buffer as you would
|
|
2527 expect if the entire message is HTML, or there is an inline HTML body
|
|
2528 part. However, if there is an HTML body part that is an attachment,
|
|
2529 then you'll see a button like this:
|
|
2530
|
|
2531 @smallexample
|
|
2532 [1. text/html; foo.html]...
|
|
2533 @end smallexample
|
|
2534
|
|
2535 To see how to read the contents of this body part, see @ref{Viewing
|
|
2536 Attachments}.
|
|
2537
|
|
2538 @vindex mm-text-html-renderer
|
|
2539
|
|
2540 The browser that MH-E uses is determined by the option
|
|
2541 @code{mm-text-html-renderer}. The default setting is set automatically
|
|
2542 based upon the presence of a known browser on your system. If you wish
|
|
2543 to use a different browser, then set this option accordingly. See the
|
|
2544 documentation for the browser you use for additional information on
|
|
2545 how to use it. In particular, find and disable the option to render
|
|
2546 images as this can tip off spammers that the email address they have
|
|
2547 used is valid.
|
|
2548
|
|
2549 @vindex mm-text-html-renderer
|
|
2550
|
|
2551 If you're confused about which @code{mm-text-html-renderer} to use,
|
|
2552 here's a brief description of each, sorted by popularity, that
|
|
2553 includes 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
|
|
2561 The @samp{w3m} browser requires an external program. It's quick,
|
|
2562 produces pretty nice output, and best of all, it's the only browser
|
|
2563 that highlights links. These can be clicked with @kbd{Mouse-2} to view
|
|
2564 the content of the link in @samp{w3m} or with @kbd{S-Mouse-2} to view
|
|
2565 the content of the link in an external browser. The @samp{w3m} browser
|
|
2566 handles 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
|
|
2568 page would be viewed in Emacs).
|
|
2569 @c -------------------------
|
|
2570 @cindex browser, @samp{w3m-standalone}
|
|
2571 @cindex @samp{w3m-standalone}
|
|
2572 @item @samp{w3m-standalone} 3
|
|
2573 This browser, along with @samp{nil} for the external browser, are the
|
|
2574 only choices that work without having to download a separate lisp
|
|
2575 package or external program. This browser is quick, but does not show
|
|
2576 links. It handles simple tables but some tables get rendered much
|
|
2577 wider than the Emacs frame. This browser was the only one not to
|
|
2578 handle the escape @samp{–} (it printed a @samp{?}), but it did
|
|
2579 render @samp{®}.
|
|
2580 @c -------------------------
|
|
2581 @cindex browser, @samp{links}
|
|
2582 @cindex @samp{links}
|
|
2583 @item @samp{links} 1
|
|
2584 The @samp{links} browser requires an external program. It's quick, and
|
|
2585 produces nicer output than @samp{lynx} on single column mails in
|
|
2586 tables. However, it doesn't show links and it doesn't do as nice a job
|
|
2587 on multi-column tables as some lines wrap. At least it fits in 80
|
|
2588 columns and thus seems better than @samp{w3} and
|
|
2589 @samp{w3m-standalone}. Converts escapes such as @samp{®} to (R).
|
|
2590 @c -------------------------
|
|
2591 @cindex browser, @samp{lynx}
|
|
2592 @cindex @samp{lynx}
|
|
2593 @item @samp{lynx} 1
|
|
2594 The @samp{lynx} browser requires an external program. It's quick and
|
|
2595 produces pretty decent output but it doesn't show links. It doesn't
|
|
2596 seem to do multi-column tables which makes output much cleaner. It
|
|
2597 centers the output and wraps long lines more than most. Handles
|
|
2598 @samp{®}.
|
|
2599 @c -------------------------
|
|
2600 @item @samp{nil} 1
|
|
2601 This choice obviously requires an external browser. Like
|
|
2602 @samp{w3m-standalone}, it works out of the box. With this setting,
|
|
2603 HTML 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
|
|
2609 This choice does not require an external program as all of the
|
|
2610 rendering is done in lisp. You do need to get the package separately.
|
|
2611 This browser is @strong{slow}, and doesn't appear to have been updated
|
|
2612 since 2001 and the author hasn't responded to my emails. It displays
|
|
2613 unknown tags instead of hiding them, so you get to see all the
|
|
2614 Microsoft crap in certain messages. Tends to make multi-column tables
|
|
2615 wider than even a full-screen Emacs can handle. Like @samp{w3m}, you
|
|
2616 can follow links, but you have to find them first as they are not
|
|
2617 highlighted. Performs well on single-column tables and handles escapes
|
|
2618 such as @samp{®}.
|
|
2619 @c -------------------------
|
|
2620 @cindex browser, @samp{html2text}
|
|
2621 @cindex @samp{html2text}
|
|
2622 @item @samp{html2text} 0
|
|
2623 The @samp{html2text} browser requires an external program. I noticed
|
|
2624 that it can do some nasty things with simple HTML mails (like filling
|
|
2625 the entire message as if it were one paragraph, including signature).
|
|
2626 On another message, it displayed half of the HTML tags for some
|
|
2627 reason.
|
|
2628 @end table
|
|
2629
|
|
2630 @vindex mm-text-html-renderer
|
|
2631
|
|
2632 For 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
|
|
2636 the Gnus command @kbd{W h} (@pxref{Article Washing,,,gnus},).
|
|
2637 @end ifinfo
|
|
2638 @ifnotinfo
|
|
2639 see section @uref{http://www.gnus.org/manual/emacs-mime_6.html,
|
|
2640 Display Customization} in the @cite{The Emacs MIME Manual} and the
|
|
2641 documentation 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
|
|
2657 A digest is a message that contains other messages. Special MH-E
|
|
2658 commands 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,
|
|
2660 but 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,
|
|
2662 use @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
|
|
2673 Another handy command is @kbd{D b} (@code{mh-burst-digest}). This
|
|
2674 command uses the MH command @command{burst}@footnote{See the section
|
|
2675 @uref{@value{MH-BOOK-HOME}/burdig.html, Bursting Messages} in the MH
|
|
2676 book.} to break out each message in the digest into its own message.
|
|
2677 Using this command, you can quickly delete unwanted messages, like
|
|
2678 this: Once the digest is split up, toggle out of MH-Folder Show mode
|
|
2679 with @kbd{t} (@pxref{Folders}) so that the scan lines fill the screen
|
|
2680 and messages aren't displayed. Then use @kbd{d} (@pxref{Reading Mail})
|
|
2681 to 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
|
|
2683 directly to the people who posted the messages in the digest. One
|
|
2684 problem you may encounter is that the @samp{From:} header fields are
|
|
2685 preceded 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
|
|
2688 Drafts}).
|
|
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
|
|
2703 You can read encrypted or signed PGP or GPG messages with
|
|
2704 MH-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,
|
|
2707 MH-E can also decrypt old-style PGP messages that are not in MIME
|
|
2708 format.}. This section assumes that you already have a good
|
|
2709 understanding of GPG and have set up your keys appropriately.
|
|
2710
|
|
2711 If 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>]]
|
|
2716 This 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
|
|
2726 If the key for the given signature is not in your keychain, you'll be
|
|
2727 given the opportunity to fetch the key from a key server and verify
|
|
2728 the key. If the message is really large, the verification process can
|
|
2729 take a long time. You can press @kbd{C-g} at any time to
|
|
2730 cancel@footnote{Unfortunately in the current version, the validation
|
|
2731 process doesn't display a message so it appears that MH-E has hung. We
|
|
2732 hope that this will be fixed in the future.}.
|
|
2733
|
|
2734 If the signature doesn't check out, you might see something like this:
|
|
2735
|
|
2736 @smallexample
|
|
2737 @group
|
|
2738 [[PGP Signed Part:Failed]]
|
|
2739 This is a signed message.
|
|
2740 This 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
|
|
2748 If someone sends you an encrypted message, MH-E will ask for your
|
|
2749 passphrase 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>]]
|
|
2756 This 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
|
|
2764 If there is a problem decrypting the message, the button will say:
|
|
2765
|
|
2766 @smallexample
|
|
2767 [[PGP Encrypted Part:Failed]]
|
|
2768 @end smallexample
|
|
2769
|
|
2770 You can read the contents of this button using the methods described in
|
|
2771 @ref{Viewing Attachments}. If the message were corrupted, you'd see
|
|
2772 this:
|
|
2773
|
|
2774 @smallexample
|
|
2775 [[PGP Encrypted Part:Failed]
|
|
2776 Invalid base64 data]
|
|
2777 @end smallexample
|
|
2778
|
|
2779 If 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
|
|
2786 gpg: encrypted with 1024-bit RSA key, ID 610BD9AD, created 1997-09-09
|
|
2787 "Bill Wohler <wohler@@stop.mail-abuse.org>"
|
|
2788 gpg: public key decryption failed: bad passphrase
|
|
2789 [GNUPG:] BEGIN_DECRYPTION
|
|
2790 [GNUPG:] DECRYPTION_FAILED
|
|
2791 gpg: decryption failed: secret key not available
|
|
2792 [GNUPG:] END_DECRYPTION
|
|
2793
|
|
2794 gpg 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
|
|
2801 The 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.
|
|
2804 The 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
|
|
2810 The @samp{pgg} customization group may have some settings which may
|
|
2811 interest you.
|
|
2812 @iftex
|
|
2813 See @cite{The PGG Manual}.
|
|
2814 @end iftex
|
|
2815 @ifinfo
|
|
2816 @xref{Top, , The PGG Manual, pgg, The PGG Manual}.
|
|
2817 @end ifinfo
|
|
2818 @ifhtml
|
|
2819 See
|
|
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
|
|
2835 To 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
|
|
2840 attachments but will not decrypt messages. However, when a message is
|
|
2841 displayed in an MH-Show buffer, then that buffer is used verbatim for
|
|
2842 printing with the caveat that only text attachments, if opened inline,
|
|
2843 are printed. Therefore, encrypted messages can be printed by showing
|
|
2844 and decrypting them first. The commands @kbd{P p} and @kbd{P f} do not
|
|
2845 use 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
|
|
2852 Colors are emulated on black-and-white printers with shades of gray.
|
|
2853 This might produce illegible output, even if your screen colors only
|
|
2854 use shades of gray. If this is the case, try using the command @kbd{P
|
|
2855 C} (@code{mh-ps-print-toggle-color}) to toggle between color, no
|
|
2856 color, and a black and white representation of the colors and see
|
|
2857 which works best. You change this setting permanently by customizing
|
|
2858 the option @code{ps-print-color-p}.
|
|
2859
|
|
2860 @findex mh-ps-print-toggle-faces
|
|
2861 @kindex P F
|
|
2862
|
|
2863 Another related function is the command @kbd{P F}
|
|
2864 (@code{mh-ps-print-toggle-faces}). This command toggles between using
|
|
2865 faces and not. When faces are enabled, the printed message will look
|
|
2866 very similar to the message in the MH-Show buffer.
|
|
2867
|
|
2868 @cindex ps-print package
|
|
2869 @cindex Emacs, packages, ps-print
|
|
2870
|
|
2871 MH-E uses the @samp{ps-print} package to do the printing, so you can
|
|
2872 customize the printing further by going to the @samp{ps-print}
|
|
2873 customization 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
|
|
2882 An 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
|
|
2885 formatted with @command{mhl}@footnote{See the section
|
|
2886 @uref{@value{MH-BOOK-HOME}/shomes.html#Usisho, Using mhl} in the MH
|
|
2887 book.} 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
|
|
2895 The command @kbd{P l} uses two options. The option
|
|
2896 @code{mh-lpr-command-format} contains the Unix command line which
|
|
2897 performs the actual printing. The string can contain one escape,
|
|
2898 @samp{%s}, which is replaced by the name of the folder and the message
|
|
2899 number 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
|
|
2902 fits within my printer's margins. Normally messages are printed in the
|
|
2903 foreground. If this is slow on your system, you may elect to turn on
|
|
2904 the option @code{mh-print-background-flag} to print in the background.
|
|
2905 If you do this, do not delete the message until it is printed or else
|
|
2906 the output may be truncated. These options are not used by the
|
|
2907 commands @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
|
|
2919 MH-E does offer a couple of commands that are not a part of MH@. The
|
|
2920 first one, @kbd{>} (@code{mh-write-msg-to-file}), writes a message to
|
|
2921 a file. You are prompted for the filename. If the file already exists,
|
|
2922 the message is appended to it. You can also write the message to the
|
|
2923 file without the header by specifying a prefix argument (such as
|
|
2924 @kbd{C-u > /tmp/foobar @key{RET}}). Subsequent writes to the same file
|
|
2925 can 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
|
|
2932 You can also pipe the message through a Unix shell command with the
|
|
2933 command @kbd{|} (@code{mh-pipe-msg}). You are prompted for the Unix
|
|
2934 command through which you wish to run your message. If you give a
|
|
2935 prefix argument to this command, the message header is included in the
|
|
2936 text passed to the command (the contrived example @kbd{C-u | lpr}
|
|
2937 would 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
|
|
2947 If the message is a shell archive @command{shar} or has been run
|
|
2948 through @command{uuencode} use @kbd{X s} (@code{mh-store-msg}) to
|
|
2949 extract the body of the message. The default directory for extraction
|
|
2950 is the current directory; however, you have a chance to specify a
|
|
2951 different extraction directory. The next time you use this command,
|
|
2952 the default directory is the last directory you used. If you would
|
|
2953 like 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
|
|
2956 directory for storing the content of these messages.
|
|
2957
|
|
2958 @findex mh-store-buffer
|
|
2959 @kindex @key{RET}
|
|
2960 @kindex X s
|
|
2961
|
|
2962 By the way, @kbd{X s} calls the Emacs Lisp function
|
|
2963 @code{mh-store-buffer}. I mention this because you can use it directly
|
|
2964 if you're editing a buffer that contains a file that has been run
|
|
2965 through @command{uuencode} or @command{shar}. For example, you can
|
|
2966 extract the contents of the current buffer in your home directory by
|
|
2967 typing @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
|
|
2989 To 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
|
|
2992 move 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
|
|
2995 message. These commands can be given a prefix argument to specify how
|
|
2996 many messages to skip (for example, @kbd{5 n}). You can also move to a
|
|
2997 specific message with @kbd{g} (@code{mh-goto-msg}). You can enter the
|
|
2998 message number either before or after typing @kbd{g}. In the latter
|
|
2999 case, Emacs prompts you. Finally, you can go to the first or last
|
|
3000 message 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
|
|
3011 You can also use the Emacs commands @kbd{C-p} (@code{previous-line})
|
|
3012 and @kbd{C-n} (@code{next-line}) to move up and down the scan lines in
|
|
3013 the 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
|
|
3022 To 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
|
|
3024 scan window, and the next undeleted message is displayed. If the
|
|
3025 previous command had been @kbd{p}, then the next message displayed is
|
|
3026 the first undeleted message previous to the message just deleted. Use
|
|
3027 @kbd{n} to force subsequent @kbd{d} commands to move forward to the
|
|
3028 next undeleted message after deleting the message under the cursor.
|
|
3029 You may also specify a range (for example, @kbd{C-u d 1 3 5-7 last:5
|
|
3030 frombob @key{RET}}, @pxref{Ranges}).
|
|
3031
|
|
3032 @findex mh-delete-msg-no-motion
|
|
3033 @kindex C-d
|
|
3034
|
|
3035 The command @kbd{C-d} (@code{mh-delete-msg-no-motion}) marks the
|
|
3036 message (or messages in range) for deletion but leaves the cursor at
|
|
3037 the current message in case you wish to perform other operations on
|
|
3038 the 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
|
|
3048 And to delete more messages faster, you can use @kbd{k}
|
|
3049 (@code{mh-delete-subject-or-thread}) to delete all the messages with
|
|
3050 the same subject as the current message. This command puts these
|
|
3051 messages in a sequence named @samp{subject}. You can undo this action
|
|
3052 by using @kbd{u} (@code{mh-undo}) with a prefix argument and then
|
|
3053 specifying the @samp{subject} sequence. However, if the buffer is
|
|
3054 displaying 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
|
|
3060 However 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
|
|
3066 The hook @code{mh-delete-msg-hook} is called after you mark a message
|
|
3067 for deletion. For example, a past maintainer of MH-E used this once
|
|
3068 when he kept statistics on his mail usage.
|
|
3069
|
|
3070 @node Miscellaneous Commands and Options, , Navigating, Reading Mail
|
|
3071 @section Miscellaneous Commands and Options
|
|
3072
|
|
3073 This section contains a few more miscellaneous commands and options.
|
|
3074
|
|
3075 @cindex editing message
|
|
3076 @findex mh-modify
|
|
3077 @kindex M
|
|
3078
|
|
3079 There are times when you need to edit a message. For example, you may
|
|
3080 need to fix a broken Content-Type header field. You can do this with
|
|
3081 the command @kbd{M} (@code{mh-modify}). It displays the raw message in
|
|
3082 an editable buffer. When you are done editing, save and kill the
|
|
3083 buffer as you would any other.
|
|
3084
|
|
3085 @findex mh-kill-folder
|
|
3086 @findex mh-pack-folder
|
|
3087 @vindex mh-do-not-confirm-flag
|
|
3088
|
|
3089 Commands such as @code{mh-pack-folder} prompt to confirm whether to
|
|
3090 process outstanding moves and deletes or not before continuing.
|
|
3091 Turning on the option @code{mh-do-not-confirm-flag} means that these
|
|
3092 actions will be performed---which is usually desired but cannot be
|
|
3093 retracted---without question@footnote{In previous versions of MH-E,
|
|
3094 this option suppressed the confirmation in @code{mh-kill-folder}.
|
|
3095 Since this kept most users from setting this option,
|
|
3096 @code{mh-kill-folder} was modified in version 6.0 to always ask for
|
|
3097 confirmation 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
|
|
3104 The option @code{mh-summary-height} controls the number of scan lines
|
|
3105 displayed in the MH-Folder window, including the mode line. The
|
|
3106 default value of this option is @samp{Automatic} which means that the
|
|
3107 MH-Folder buffer will maintain the same proportional size if the frame
|
|
3108 is 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
|
|
3110 see.
|
|
3111
|
|
3112 @vindex mh-bury-show-buffer-flag
|
|
3113
|
|
3114 Normally the buffer for displaying messages is buried at the bottom at
|
|
3115 the buffer stack. You may wish to disable this feature by turning off
|
|
3116 the option @code{mh-bury-show-buffer-flag}. One advantage of not
|
|
3117 burying the show buffer is that one can delete the show buffer more
|
|
3118 easily in an electric buffer list because of its proximity to its
|
|
3119 associated MH-Folder buffer. Try running @kbd{M-x
|
|
3120 electric-buffer-list} to see what I mean.
|
|
3121
|
|
3122 @cindex @file{.emacs}
|
|
3123 @cindex files, @file{.emacs}
|
|
3124 @cindex reading mail
|
|
3125
|
|
3126 Before we leave this section, I'll include a function that I use as a
|
|
3127 front end to MH-E@footnote{Stephen Gildea's favorite binding is
|
|
3128 @kbd{(global-set-key "\C-cr" 'mh-rmail)}.}. It toggles between your
|
|
3129 working window configuration, which may be quite involved---windows
|
|
3130 filled with source, compilation output, man pages, and other
|
|
3131 documentation---and your MH-E window configuration. Like the rest of
|
|
3132 the customization described in this section, simply add the following
|
|
3133 code 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.
|
|
3150 With non-@code{nil} or prefix argument, @i{inc} mailbox as well
|
|
3151 when 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
|
|
3176 If 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
|
|
3178 window configuration is saved, either the @samp{+inbox} buffer is
|
|
3179 displayed or @code{mh-rmail} is run, and the MH-E window configuration
|
|
3180 is shown. Otherwise, the MH-E window configuration is saved and the
|
|
3181 original 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
|
|
3193 This chapter discusses the things you can do with folders within MH-E.
|
|
3194 The 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 ?
|
|
3201 Display cheat sheet for the MH-E commands (@code{mh-help}).
|
|
3202 @c -------------------------
|
|
3203 @kindex !
|
|
3204 @findex mh-refile-or-write-again
|
|
3205 @item !
|
|
3206 Repeat 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
|
|
3213 Copy range to folder (@code{mh-copy-msg}).
|
|
3214 @c -------------------------
|
|
3215 @kindex F ?
|
|
3216 @findex mh-prefix-help
|
|
3217 @item F ?
|
|
3218 Display cheat sheet for the commands of the current prefix in
|
|
3219 minibuffer (@code{mh-prefix-help}).
|
|
3220 @c -------------------------
|
|
3221 @kindex F '
|
|
3222 @findex mh-index-ticked-messages
|
|
3223 @item F '
|
|
3224 Display ticked messages (@code{mh-index-ticked-messages}).
|
|
3225 @c -------------------------
|
|
3226 @kindex F c
|
|
3227 @findex mh-catchup
|
|
3228 @item F c
|
|
3229 Delete range from the @samp{unseen} sequence (@code{mh-catchup}).
|
|
3230 @c -------------------------
|
|
3231 @kindex F k
|
|
3232 @findex mh-kill-folder
|
|
3233 @item F k
|
|
3234 Remove 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
|
|
3241 List 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
|
|
3248 Display 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
|
|
3255 Pack folder (@code{mh-pack-folder}).
|
|
3256 @c -------------------------
|
|
3257 @kindex F q
|
|
3258 @findex mh-index-sequenced-messages
|
|
3259 @item F q
|
|
3260 Display 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
|
|
3267 Rescan 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
|
|
3274 Search 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
|
|
3281 Sort folder (@code{mh-sort-folder}).
|
|
3282 @c -------------------------
|
|
3283 @kindex F u
|
|
3284 @findex mh-undo-folder
|
|
3285 @item F u
|
|
3286 Undo 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
|
|
3293 Visit 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
|
|
3300 Refile (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
|
|
3307 Quit 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
|
|
3314 Toggle 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
|
|
3322 Undo 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
|
|
3329 Process 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
|
|
3336 The @samp{mh-folder} customization group is used to tune these
|
|
3337 commands.
|
|
3338
|
|
3339 @vtable @code
|
|
3340 @item mh-new-messages-folders
|
|
3341 Folders searched for the @samp{unseen} sequence (default:
|
|
3342 @code{Inbox}).
|
|
3343 @c -------------------------
|
|
3344 @item mh-ticked-messages-folders
|
|
3345 Folders searched for @code{mh-tick-seq} (default: @code{t}).
|
|
3346 @c -------------------------
|
|
3347 @item mh-large-folder
|
|
3348 The number of messages that indicates a large folder (default: 200).
|
|
3349 @c -------------------------
|
|
3350 @item mh-recenter-summary-flag
|
|
3351 On means to recenter the summary window (default: @samp{off}).
|
|
3352 @c -------------------------
|
|
3353 @item mh-recursive-folders-flag
|
|
3354 On means that commands which operate on folders do so recursively
|
|
3355 (default: @samp{off}).
|
|
3356 @c -------------------------
|
|
3357 @item mh-sortm-args
|
|
3358 Additional arguments for @command{sortm} (default: @code{nil}).
|
|
3359 @end vtable
|
|
3360
|
|
3361 The following hooks are available.
|
|
3362
|
|
3363 @vtable @code
|
|
3364 @item mh-after-commands-processed-hook
|
|
3365 Hook run by @kbd{x} after performing outstanding refile and delete
|
|
3366 requests (default: @code{nil}).
|
|
3367 @c -------------------------
|
|
3368 @item mh-before-commands-processed-hook
|
|
3369 Hook run by @kbd{x} before performing outstanding refile and delete
|
|
3370 requests (default: @code{nil}).
|
|
3371 @c -------------------------
|
|
3372 @item mh-before-quit-hook
|
|
3373 Hook run by q before quitting MH-E (default: @code{nil}).
|
|
3374 @c -------------------------
|
|
3375 @item mh-folder-mode-hook
|
|
3376 Hook 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
|
|
3380 Abnormal hook run at the beginning of @code{mh-kill-folder} (default:
|
|
3381 @code{'mh-search-p}).
|
|
3382 @c -------------------------
|
|
3383 @item mh-quit-hook
|
|
3384 Hook run by q after quitting MH-E (default: @code{nil}).
|
|
3385 @c -------------------------
|
|
3386 @item mh-refile-msg-hook
|
|
3387 Hook run by o after marking each message for refiling (default:
|
|
3388 @code{nil}).
|
|
3389 @end vtable
|
|
3390
|
|
3391 The following faces are available for customizing the appearance of
|
|
3392 the MH-Folder buffer. @xref{Scan Line Formats}.
|
|
3393
|
|
3394 @vtable @code
|
|
3395 @item mh-folder-address
|
|
3396 Recipient face.
|
|
3397 @c -------------------------
|
|
3398 @item mh-folder-body
|
|
3399 Body text face.
|
|
3400 @c -------------------------
|
|
3401 @item mh-folder-cur-msg-number
|
|
3402 Current message number face.
|
|
3403 @c -------------------------
|
|
3404 @item mh-folder-date
|
|
3405 Date face.
|
|
3406 @c -------------------------
|
|
3407 @item mh-folder-deleted
|
|
3408 Deleted message face.
|
|
3409 @c -------------------------
|
|
3410 @item mh-folder-followup
|
|
3411 @samp{Re:} face.
|
|
3412 @c -------------------------
|
|
3413 @item mh-folder-msg-number
|
|
3414 Message number face.
|
|
3415 @c -------------------------
|
|
3416 @item mh-folder-refiled
|
|
3417 Refiled 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
|
|
3422 Fontification hint face in messages sent directly to us. The detection
|
|
3423 of 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
|
|
3430 Sender face in messages sent directly to us. The detection of messages
|
|
3431 sent to us is governed by the scan format @code{mh-scan-format-nmh}
|
|
3432 and regular expression @code{mh-scan-sent-to-me-sender-regexp}.
|
|
3433 @c -------------------------
|
|
3434 @item mh-folder-subject
|
|
3435 Subject face.
|
|
3436 @c -------------------------
|
|
3437 @item mh-folder-tick
|
|
3438 Ticked message face.
|
|
3439 @c -------------------------
|
|
3440 @item mh-folder-to
|
|
3441 @samp{To:} face.
|
|
3442 @end vtable
|
|
3443
|
|
3444 @vindex mh-folder-mode-hook
|
|
3445
|
|
3446 The hook @code{mh-folder-mode-hook} is called when visiting a new
|
|
3447 folder in MH-Folder mode. This could be used to set your own key
|
|
3448 bindings, 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
|
|
3488 MH-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:
|
|
3491 folder} and @uref{@value{MH-BOOK-HOME}/fol.html#Movref, Moving and
|
|
3492 Linking Messages: refile} in the MH book.}. To refile a message in
|
|
3493 another 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
|
|
3496 create folders. If you specify a folder that does not exist, you will
|
|
3497 be prompted to create it. The hook @code{mh-refile-msg-hook} is called
|
|
3498 after a message is marked to be refiled.
|
|
3499
|
|
3500 @findex mh-write-msg-to-file
|
|
3501 @kindex !
|
|
3502
|
|
3503 If you are refiling several messages into the same folder, you can use
|
|
3504 the command @kbd{!} (@code{mh-refile-or-write-again}) to repeat the
|
|
3505 last refile or write (for the description of @kbd{>}
|
|
3506 (@code{mh-write-msg-to-file}), @pxref{Files and Pipes}). You can use a
|
|
3507 range 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
|
|
3515 If you've deleted a message or refiled it, but changed your mind, you
|
|
3516 can 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.
|
|
3518 You can also undo refiles and deletes for messages that are found in a
|
|
3519 given range (@pxref{Ranges}).
|
|
3520
|
|
3521 @findex mh-undo-folder
|
|
3522 @kindex F u
|
|
3523
|
|
3524 Alternatively, you can use @kbd{F u} (@code{mh-undo-folder}) to undo
|
|
3525 all refiles and deletes in the current folder.
|
|
3526
|
|
3527 @findex mh-execute-commands
|
|
3528 @kindex x
|
|
3529
|
|
3530 If you've marked messages to be deleted or refiled and you want to go
|
|
3531 ahead and delete or refile the messages, use @kbd{x}
|
|
3532 (@code{mh-execute-commands}). Many MH-E commands that may affect the
|
|
3533 numbering of the messages (such as @kbd{F r} or @kbd{F p}) will ask if
|
|
3534 you 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
|
|
3541 The command @kbd{x} runs @code{mh-before-commands-processed-hook}
|
|
3542 before the commands are processed and
|
|
3543 @code{mh-after-commands-processed-hook} after the commands are
|
|
3544 processed. Variables that are useful with the former hook include
|
|
3545 @code{mh-delete-list} and @code{mh-refile-list} which can be used to
|
|
3546 see which changes will be made to the current folder,
|
|
3547 @code{mh-current-folder}. Variables that are useful with the latter
|
|
3548 hook include @code{mh-folders-changed}, which lists which folders were
|
|
3549 affected by deletes and refiles. This list will always include the
|
|
3550 current folder @code{mh-current-folder}.
|
|
3551
|
|
3552 @findex mh-copy-msg
|
|
3553 @kindex c
|
|
3554 @kindex o
|
|
3555
|
|
3556 If you wish to copy a message to another folder, you can use the
|
|
3557 command @kbd{c} (@code{mh-copy-msg}) (see the @option{-link} argument
|
|
3558 to @command{refile}(1)). Like the command @kbd{o}, this command
|
|
3559 prompts you for the name of the target folder and you can specify a
|
|
3560 range (@pxref{Ranges}). Note that unlike the command @kbd{o}, the copy
|
|
3561 takes place immediately. The original copy remains in the current
|
|
3562 folder.
|
|
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
|
|
3573 The command @kbd{t} (@code{mh-toggle-showing}) switches between
|
|
3574 MH-Folder mode and MH-Folder Show mode@footnote{For you Emacs wizards,
|
|
3575 this is implemented as an Emacs minor mode.}. MH-Folder mode turns off
|
|
3576 the associated show buffer so that you can perform operations on the
|
|
3577 messages quickly without reading them. This is an excellent way to
|
|
3578 prune out your junk mail or to refile a group of messages to another
|
|
3579 folder 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
|
|
3589 When you use @kbd{t} to toggle from MH-Folder Show mode to MH-Folder
|
|
3590 mode, the MH-Show buffer is hidden and the MH-Folder buffer is left
|
|
3591 alone. Setting @code{mh-recenter-summary-flag} to a non-@code{nil}
|
|
3592 value causes the toggle to display as many scan lines as possible,
|
|
3593 with the cursor at the middle. The effect of
|
|
3594 @code{mh-recenter-summary-flag} is rather useful, but it can be
|
|
3595 annoying on a slow network connection.
|
|
3596
|
|
3597 @findex mh-visit-folder
|
|
3598 @kindex F v
|
|
3599 @vindex mh-large-folder
|
|
3600
|
|
3601 When you want to read the messages that you have refiled into folders,
|
|
3602 use the command @kbd{F v} (@code{mh-visit-folder}) to visit the
|
|
3603 folder. You are prompted for the folder name. The folder buffer will
|
|
3604 show just unseen messages if there are any; otherwise, it will show
|
|
3605 all the messages in the buffer as long there are fewer than
|
|
3606 @code{mh-large-folder} messages. If there are more, then you are
|
|
3607 prompted for a range of messages to scan. You can provide a prefix
|
|
3608 argument in order to specify a range of messages to show when you
|
|
3609 visit the folder (@pxref{Ranges}). In this case, regions are not used
|
|
3610 to specify the range and @code{mh-large-folder} is ignored. Note that
|
|
3611 this command can also be used to create folders. If you specify a
|
|
3612 folder that does not exist, you will be prompted to create it.
|
|
3613
|
|
3614 @findex mh-search
|
|
3615 @kindex F s
|
|
3616
|
|
3617 If you forget where you've refiled your messages, you can find them
|
|
3618 using @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
|
|
3629 If you use a program such as @command{procmail} to file your incoming
|
|
3630 mail automatically, you can display new, unseen, messages using the
|
|
3631 command @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
|
|
3634 folders can be overridden with a prefix argument: with a prefix
|
|
3635 argument, enter a space-separated list of folders, or nothing to
|
|
3636 search 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
|
|
3645 If you have ticked messages (@pxref{Sequences}), you can display them
|
|
3646 using the command @kbd{F '} (@code{mh-index-ticked-messages}). All
|
|
3647 messages in the @samp{tick} sequence from the folders in
|
|
3648 @code{mh-ticked-messages-folders} are listed. With a prefix argument,
|
|
3649 enter a space-separated list of folders, or nothing to search all
|
|
3650 folders.
|
|
3651
|
|
3652 @findex mh-index-sequenced-messages
|
|
3653 @kindex F q
|
|
3654 @vindex mh-new-messages-folders
|
|
3655
|
|
3656 You 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.
|
|
3659 With a prefix argument, enter a space-separated list of folders at the
|
|
3660 prompt, 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
|
|
3666 Set 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
|
|
3669 folders. 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
|
|
3685 Other commands you can perform on folders include: @kbd{F l}
|
|
3686 (@code{mh-list-folders}), to place a listing of all the folders in
|
|
3687 your mail directory in a buffer called @samp{*MH-E Folders*}
|
|
3688 (@pxref{Miscellaneous}); @kbd{F k} (@code{mh-kill-folder}), to remove
|
|
3689 a folder; @kbd{F S} (@code{mh-sort-folder}), to sort the messages by
|
|
3690 date (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
|
|
3692 from the numbering sequence; and @kbd{F r} (@code{mh-rescan-folder}),
|
|
3693 to 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
|
|
3695 you 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
|
|
3701 By 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
|
|
3703 folders. This mostly means that you'll be able to see all your folders
|
|
3704 when 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
|
|
3710 The hook @code{mh-kill-folder-suppress-prompt-hooks} is an abnormal
|
|
3711 hook run at the beginning of the command @kbd{k}. The hook functions
|
|
3712 are called with no arguments and should return a non-nil value to
|
|
3713 suppress the normal prompt when you remove a folder. This is useful
|
|
3714 for folders that are easily regenerated. The default value of
|
|
3715 @code{mh-search-p} suppresses the prompt on folders generated by
|
|
3716 searching.
|
|
3717
|
|
3718 @sp 1
|
|
3719 @center @strong{NOTE}
|
|
3720
|
|
3721 @quotation
|
|
3722 Use 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
|
|
3737 The option @code{mh-sortm-args} holds extra arguments to pass on to
|
|
3738 the command @command{sortm}@footnote{See the section
|
|
3739 @uref{@value{MH-BOOK-HOME}/sorsor.html, Sorting Messages: sortm} in the
|
|
3740 MH book.} when a prefix argument is used with @kbd{F S}. Normally
|
|
3741 default arguments to @command{sortm} are specified in the MH profile.
|
|
3742 This 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
|
|
3750 When you want to quit using MH-E and go back to editing, you can use
|
|
3751 the @kbd{q} (@code{mh-quit}) command. This buries the buffers of the
|
|
3752 current MH-E folder and restores the buffers that were present when
|
|
3753 you first ran @kbd{M-x mh-rmail}. It also removes any MH-E working
|
|
3754 buffers whose name begins with @samp{ *mh-} or @samp{*MH-E }
|
|
3755 (@pxref{Miscellaneous}). You can later restore your MH-E session by
|
|
3756 selecting the @samp{+inbox} buffer or by running @kbd{M-x mh-rmail}
|
|
3757 again.
|
|
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
|
|
3766 The two hooks @code{mh-before-quit-hook} and @code{mh-quit-hook} are
|
|
3767 called by @kbd{q}. The former one is called before the quit occurs, so
|
|
3768 you might use it to perform any MH-E operations; you could perform
|
|
3769 some query and abort the quit or call @code{mh-execute-commands}, for
|
|
3770 example. The latter is not run in an MH-E context, so you might use it
|
|
3771 to modify the window setup. If you find that @kbd{q} buries a lot of
|
|
3772 buffers 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
|
|
3800 You can use dired to manipulate the folders themselves. For example, I
|
|
3801 renamed my @samp{+out} folder to the more common @samp{+outbox} by
|
|
3802 running dired on my mail directory (@kbd{M-x dired RET ~/Mail RET}),
|
|
3803 moving 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
|
|
3813 You can send a mail message in several ways. You can call @kbd{M-x
|
|
3814 mh-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
|
|
3825 There 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
|
|
3827 commands 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
|
|
3833 From within MH-E's MH-Folder mode, other methods of sending mail are
|
|
3834 available 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
|
|
3842 Edit 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
|
|
3849 Edit 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
|
|
3857 Forward 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
|
|
3864 Reply 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
|
|
3871 Compose 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
|
|
3878 Redistribute a message (@code{mh-redistribute}).
|
|
3879 @c -------------------------
|
|
3880 @findex mh-smail
|
|
3881 @item M-x mh-smail
|
|
3882 Compose a message with the MH mail system.
|
|
3883 @c -------------------------
|
|
3884 @findex mh-smail-other-window
|
|
3885 @item M-x mh-smail-other-window
|
|
3886 Compose 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
|
|
3892 In addition, several options from the @samp{mh-sending-mail}
|
|
3893 customization group are useful when sending mail or replying to mail.
|
|
3894 They are summarized in the following table.
|
|
3895
|
|
3896 @vtable @code
|
|
3897 @item mh-compose-forward-as-mime-flag
|
|
3898 On means that messages are forwarded as attachments (default:
|
|
3899 @samp{on}).
|
|
3900 @c -------------------------
|
|
3901 @item mh-compose-letter-function
|
|
3902 Hook run when starting a new draft (default: @code{nil}).
|
|
3903 @c -------------------------
|
|
3904 @item mh-compose-prompt-flag
|
|
3905 On means prompt for header fields when composing a new draft (default:
|
|
3906 @samp{off}).
|
|
3907 @c -------------------------
|
|
3908 @item mh-forward-subject-format
|
|
3909 Format string for forwarded message subject (default: @code{"%s:
|
|
3910 %s"}).
|
|
3911 @c -------------------------
|
|
3912 @item mh-insert-x-mailer-flag
|
|
3913 On means append an @samp{X-Mailer:} header field to the header
|
|
3914 (default: @samp{on}).
|
|
3915 @c -------------------------
|
|
3916 @item mh-redist-full-contents-flag
|
|
3917 On means the @command{dist} command needs entire letter for
|
|
3918 redistribution (default: @samp{off}).
|
|
3919 @c -------------------------
|
|
3920 @item mh-reply-default-reply-to
|
|
3921 Sets the person or persons to whom a reply will be sent (default:
|
|
3922 @samp{Prompt}).
|
|
3923 @c -------------------------
|
|
3924 @item mh-reply-show-message-flag
|
|
3925 On means the MH-Show buffer is displayed using @kbd{r}
|
|
3926 (@code{mh-reply}) (default: @samp{on}).
|
|
3927 @end vtable
|
|
3928
|
|
3929 The following hooks are available.
|
|
3930
|
|
3931 @vtable @code
|
|
3932 @item mh-forward-hook
|
|
3933 Hook run by @code{mh-forward} on a forwarded letter (default:
|
|
3934 @code{nil}).
|
|
3935 @c -------------------------
|
|
3936 @item mh-letter-mode-hook
|
|
3937 Hook run by @code{mh-letter-mode} on a new letter (default:
|
|
3938 @code{nil}).
|
|
3939 @end vtable
|
|
3940
|
|
3941 The functions and options introduced here are explained in more detail
|
|
3942 in 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
|
|
3967 Outside of an MH-Folder buffer, you must call either @kbd{M-x
|
|
3968 mh-smail} or @kbd{M-x mh-smail-other-window} to compose a new message.
|
|
3969 The former command always creates a two-window layout with the current
|
|
3970 buffer on top and the draft on the bottom. Use the latter command if
|
|
3971 you would rather preserve the window layout. You may find adding the
|
|
3972 following 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
|
|
3985 From 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
|
|
3987 appears in an Emacs buffer whose mode is MH-Letter (to see what the
|
|
3988 buffer looks like, @pxref{Sending Mail Tour}). MH-Letter mode allows
|
|
3989 you to edit your message, to check the validity of the recipients, to
|
|
3990 insert attachments and other messages into your message, and to send
|
|
3991 the message. We'll go more into depth about editing a
|
|
3992 @dfn{draft}@footnote{I highly recommend that you use a @dfn{draft
|
|
3993 folder} so that you can edit several drafts in parallel. To do so,
|
|
3994 create a folder named @samp{+drafts} for example, and add the profile
|
|
3995 component @samp{Draft-Folder: drafts} (see @code{mh-profile}(5)).} (a
|
|
3996 message you're composing) in just a moment (@pxref{Editing Drafts}).
|
|
3997
|
|
3998 @vindex mh-compose-prompt-flag
|
|
3999
|
|
4000 If you prefer to be prompted for the recipient and subject fields
|
|
4001 before 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
|
|
4008 MH-E adds an @samp{X-Mailer:} header field to the header that includes
|
|
4009 the version of MH-E and Emacs that you are using. If you don't want to
|
|
4010 participate 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
|
|
4025 Two hooks are provided to run commands on your freshly created draft.
|
|
4026 The first hook, @code{mh-letter-mode-hook}, allows you to do some
|
|
4027 processing before editing a letter@footnote{Actually, because
|
|
4028 MH-Letter mode inherits from Mail mode, the hooks
|
|
4029 @code{text-mode-hook} and @code{mail-mode-hook} are run (in that
|
|
4030 order) before @code{mh-letter-mode-hook}.}. For example, you may wish
|
|
4031 to modify the header after @command{repl} has done its work, or you
|
|
4032 may have a complicated @file{components} file and need to tell MH-E
|
|
4033 where the cursor should go. Here's an example of how you would use
|
|
4034 this 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
|
|
4063 The 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
|
|
4069 The second hook, a function really, is
|
|
4070 @code{mh-compose-letter-function}. Like @code{mh-letter-mode-hook}, it
|
|
4071 is called just before editing a new message; however, it is the last
|
|
4072 function called before you edit your message. The consequence of this
|
|
4073 is that you can write a function to write and send the message for
|
|
4074 you. 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
|
|
4088 To compose a reply to a message, use the @kbd{r} (@code{mh-reply})
|
|
4089 command.
|
|
4090
|
|
4091 When you reply to a message, you are first prompted with @samp{Reply
|
|
4092 to 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
|
|
4102 The person who sent the message. This is the default, so @key{RET} is
|
|
4103 sufficient.
|
|
4104 @c -------------------------
|
|
4105 @item @kbd{to}
|
|
4106 @tab
|
|
4107 Replies to the sender, plus all recipients in the @samp{To:} header field.
|
|
4108 @c -------------------------
|
|
4109 @item @kbd{cc}@*@kbd{all}
|
|
4110 @tab
|
|
4111 Forms a reply to the addresses in the @samp{Mail-Followup-To:} header
|
|
4112 field if one exists; otherwise forms a reply to the sender, plus all
|
|
4113 recipients.
|
|
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
|
|
4121 Depending on your answer, @command{repl}@footnote{See the section
|
|
4122 @uref{@value{MH-BOOK-HOME}/reprep.html, Replying to Messages: repl} in
|
|
4123 the MH book.} is given a different argument to form your reply.
|
|
4124 Specifically, 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,
|
|
4126 either @kbd{cc} or @kbd{all} runs @samp{repl -cc all -nocc me}. If you
|
|
4127 find that most of the time you specify one of these choices when you
|
|
4128 reply 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
|
|
4131 the 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
|
|
4141 Two windows are then created. One window contains the message to which
|
|
4142 you 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
|
|
4144 was not one that you expected, check the things that affect the
|
|
4145 behavior of @command{repl} which include the @samp{repl:} profile
|
|
4146 component and the @file{replcomps} and @file{replgroupcomps} files.
|
|
4147
|
|
4148 If you supply a prefix argument (as in @kbd{C-u r}), the message you
|
|
4149 are replying to is inserted in your reply after having first been run
|
|
4150 through @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
|
|
4153 book to see how you can modify the default @file{mhl.reply} file.
|
|
4154
|
|
4155 @vindex mh-yank-behavior
|
|
4156
|
|
4157 Alternatively, you can customize the option @code{mh-yank-behavior}
|
|
4158 and choose one of its @samp{Automatically} variants to do the same
|
|
4159 thing. @xref{Inserting Letter}. If you do so, the prefix argument has
|
|
4160 no effect.
|
|
4161
|
|
4162 Another way to include the message automatically in your draft is to
|
|
4163 use @samp{repl: -filter repl.filter} in your MH profile.
|
|
4164
|
|
4165 @vindex mh-reply-show-message-flag
|
|
4166
|
|
4167 If you include the message automatically, you can hide the MH-Show
|
|
4168 buffer by turning off the option @code{mh-reply-show-message-flag}.
|
|
4169
|
|
4170 If you wish to customize the header or other parts of the reply draft,
|
|
4171 please 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
|
|
4184 To forward a message, use the @kbd{f} (@code{mh-forward}) command. You
|
|
4185 are prompted for the @samp{To:} and @samp{cc:} recipients. You are
|
|
4186 given a draft to edit that looks like it would if you had run the MH
|
|
4187 command @command{forw}@footnote{See the section
|
|
4188 @uref{@value{MH-BOOK-HOME}/forfor.html, Forwarding Messages: forw} in
|
|
4189 the MH book.}. You can then add some text (@pxref{Editing Drafts}).
|
|
4190 You can forward several messages by using a range (@pxref{Ranges}).
|
|
4191 All of the messages in the range are inserted into your draft. The
|
|
4192 hook @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
|
|
4200 By default, the option @code{mh-compose-forward-as-mime-flag} is on
|
|
4201 which means that the forwarded messages are included as attachments.
|
|
4202 If you would prefer to forward your messages verbatim (as text,
|
|
4203 inline), then turn off this option. Forwarding messages verbatim works
|
|
4204 well for short, textual messages, but your recipient won't be able to
|
|
4205 view any non-textual attachments that were in the forwarded message.
|
|
4206 Be aware that if you have @samp{forw: -mime} in your MH profile, then
|
|
4207 forwarded messages will always be included as attachments regardless
|
|
4208 of the settings of @code{mh-compose-forward-as-mime-flag}.
|
|
4209
|
|
4210 @vindex mh-forward-subject-format
|
|
4211
|
|
4212 The format of the @samp{Subject:} header field for forwarded messages
|
|
4213 is controlled by the option @code{mh-forward-subject-format}. This
|
|
4214 option 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
|
|
4216 second one is replaced with the original @samp{Subject:}. The default
|
|
4217 value of @code{"%s: %s"} takes a message with the header:
|
|
4218
|
|
4219 @smallexample
|
|
4220 @group
|
|
4221 To: Bill Wohler <wohler@@stop.mail-abuse.org>
|
|
4222 Subject: Re: 49er football
|
|
4223 From: Greg DesBrisay <gd@@stop.mail-abuse.org>
|
|
4224 @end group
|
|
4225 @end smallexample
|
|
4226
|
|
4227 and creates a subject header field of:
|
|
4228
|
|
4229 @smallexample
|
|
4230 Subject: 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
|
|
4242 The command @kbd{M-d} (@code{mh-redistribute}) is similar in function
|
|
4243 to forwarding mail, but it does not allow you to edit the message, nor
|
|
4244 does it add your name to the @samp{From:} header field. It appears to
|
|
4245 the recipient as if the message had come from the original sender.
|
|
4246 When you run this command, you are prompted for the recipients.
|
|
4247
|
|
4248 @findex mh-edit-again
|
|
4249 @kindex e
|
|
4250
|
|
4251 For 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
|
|
4260 The 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
|
|
4263 dist} in the MH book.} requires the whole letter for redistribution,
|
|
4264 which is the case if @command{send}@footnote{See the section
|
|
4265 @uref{@value{MH-BOOK-HOME}/sensen.html, Sending Some Mail: comp send}
|
|
4266 in the MH book.} is compiled with the @sc{berk} option (which many
|
|
4267 people abhor). If you find that MH will not allow you to redistribute
|
|
4268 a 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
|
|
4281 If you don't complete a draft for one reason or another, and if the
|
|
4282 draft buffer is no longer available, you can pick your draft up again
|
|
4283 with @kbd{e} (@code{mh-edit-again}). If you don't use a draft
|
|
4284 folder, your last @file{draft} file will be used. If you use draft
|
|
4285 folders, 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
|
|
4287 use @kbd{e} to prepare the message for editing.
|
|
4288
|
|
4289 @kindex e
|
|
4290
|
|
4291 The @kbd{e} command can also be used to take messages that were sent
|
|
4292 to 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
|
|
4299 Don't use @kbd{e} to re-edit a message from a @i{Mailer-Daemon} who
|
|
4300 complained that your mail wasn't posted for some reason or another. In
|
|
4301 this case, use @kbd{E} (@code{mh-extract-rejected-mail}) to prepare
|
|
4302 the message for editing by removing the @i{Mailer-Daemon} envelope and
|
|
4303 unneeded header fields. Fix whatever addressing problem you had, and
|
|
4304 send 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
|
|
4316 When you edit a message that you want to send (called a @dfn{draft} in
|
|
4317 this case), the mode used is MH-Letter. This mode provides several
|
|
4318 commands in addition to the normal Emacs editing commands to help you
|
|
4319 edit 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}
|
|
4325 Perform 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}
|
|
4330 Perform 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)
|
|
4336 Flash 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}
|
|
4341 Cycle 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}
|
|
4346 Cycle 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 ?
|
|
4352 Display 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
|
|
4359 Save 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
|
|
4364 Insert 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
|
|
4372 Compose @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
|
|
4380 Move 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
|
|
4386 Move 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
|
|
4392 Move 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
|
|
4398 Move 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
|
|
4405 Move 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
|
|
4411 Move 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
|
|
4417 Move 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
|
|
4423 Move 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
|
|
4429 Move 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
|
|
4435 Move 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
|
|
4442 Insert 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
|
|
4447 Add 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
|
|
4456 Add 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
|
|
4465 Add 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
|
|
4475 Add 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
|
|
4485 Compose @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
|
|
4492 Remove 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
|
|
4497 Add 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
|
|
4506 Add 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
|
|
4516 Undo 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
|
|
4523 Add 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
|
|
4529 Add 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
|
|
4534 Add 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
|
|
4540 Add 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
|
|
4546 Add 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
|
|
4553 Insert 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
|
|
4560 Quit 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
|
|
4567 Insert 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
|
|
4572 Toggle 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
|
|
4580 Verify 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
|
|
4588 Insert 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
|
|
4594 Insert 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
|
|
4602 Several options from the @samp{mh-letter} customization group are used
|
|
4603 while editing a draft.
|
|
4604
|
|
4605 @vtable @code
|
|
4606 @item mh-compose-insertion
|
|
4607 Type of @sc{mime} message tags in messages (default: @samp{MML} if
|
|
4608 available; otherwise @samp{MH}).
|
|
4609 @c -------------------------
|
|
4610 @item mh-compose-skipped-header-fields
|
|
4611 List 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
|
|
4617 On means @key{SPC} does completion in message header (default:
|
|
4618 @samp{off}).
|
|
4619 @c -------------------------
|
|
4620 @item mh-delete-yanked-msg-window-flag
|
|
4621 On means delete any window displaying the message (default: @samp{off}).
|
|
4622 @c -------------------------
|
|
4623 @item mh-extract-from-attribution-verb
|
|
4624 Verb 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
|
|
4628 String to put before each line of a yanked or inserted message
|
|
4629 (default: @code{"> "}).
|
|
4630 @c -------------------------
|
|
4631 @item mh-letter-complete-function
|
|
4632 Function to call when completing outside of address or folder fields
|
|
4633 (default: @code{ispell-complete-word}).
|
|
4634 @c -------------------------
|
|
4635 @item mh-letter-fill-column
|
|
4636 Fill column to use in MH-Letter mode (default: 72).
|
|
4637 @c -------------------------
|
|
4638 @item mh-mml-method-default
|
|
4639 Default method to use in security tags (default: @samp{PGP (MIME)} if
|
|
4640 support for it is available; otherwise @samp{None}).
|
|
4641 @c -------------------------
|
|
4642 @item mh-signature-file-name
|
|
4643 Source of user's signature (default: @code{"~/.signature"}).
|
|
4644 @c -------------------------
|
|
4645 @item mh-signature-separator-flag
|
|
4646 On means a signature separator should be inserted (default:
|
|
4647 @samp{on}).
|
|
4648 @c -------------------------
|
|
4649 @item mh-x-face-file
|
|
4650 File containing X-Face or Face header field to insert in outgoing mail.
|
|
4651 (default: @code{"~/.face"}).
|
|
4652 @c -------------------------
|
|
4653 @item mh-yank-behavior
|
|
4654 Controls which part of a message is yanked by @kbd{C-c C-y} (default:
|
|
4655 @samp{Body With Attribution}).
|
|
4656 @end vtable
|
|
4657
|
|
4658 The following hooks are available.
|
|
4659
|
|
4660 @vtable @code
|
|
4661 @item mail-citation-hook
|
|
4662 Hook for modifying a citation just inserted in the mail buffer
|
|
4663 (default: @code{nil}).
|
|
4664 @c -------------------------
|
|
4665 @item mh-before-send-letter-hook
|
|
4666 Hook 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
|
|
4670 Hook run on the formatted letter by @kbd{C-c C-e} (default:
|
|
4671 @samp{nil}).
|
|
4672 @c -------------------------
|
|
4673 @item mh-insert-signature-hook
|
|
4674 Hook run by @kbd{C-c C-s} after signature has been inserted (default:
|
|
4675 @code{nil}).
|
|
4676 @end vtable
|
|
4677
|
|
4678 The following face is available.
|
|
4679
|
|
4680 @vtable @code
|
|
4681 @item mh-letter-header-field
|
|
4682 Editable header field value face in draft buffers.
|
|
4683 @end vtable
|
|
4684
|
|
4685 The commands and options introduced here are explained in more
|
|
4686 detail 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
|
|
4727 Because the header is part of the message, you can edit the header
|
|
4728 fields as you wish. However, several convenience commands exist to
|
|
4729 help you create and edit them. For example, the command @kbd{C-c C-f
|
|
4730 C-t} (@code{mh-to-field}; alternatively, @kbd{C-c C-f t}) moves the
|
|
4731 cursor to the @samp{To:} header field, creating it if necessary. The
|
|
4732 commands 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
|
|
4740 One command behaves differently from the others, namely, @kbd{C-c C-f
|
|
4741 C-f} (@code{mh-to-fcc}; alternatively, @kbd{C-c C-f f}). This command
|
|
4742 will prompt you for the folder name in which to file a copy of the
|
|
4743 draft. @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
|
|
4753 Within the header of the message, the command@* @key{TAB}
|
|
4754 (@code{mh-letter-next-header-field-or-indent}) moves between fields
|
|
4755 that are highlighted with the face @code{mh-letter-header-field},
|
|
4756 skipping those fields listed in
|
|
4757 @code{mh-compose-skipped-header-fields}. After the last field, this
|
|
4758 command then moves point to the message body before cycling back to
|
|
4759 the first field. If point is already past the first line of the
|
|
4760 message 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
|
|
4763 backwards between the fields and cycles to the body of the message
|
|
4764 after the first field. Unlike the command @key{TAB}, it will always
|
|
4765 take 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
|
|
4781 If 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
|
|
4784 completion (@pxref{Aliases}). In the body of the message,
|
|
4785 @kbd{M-@key{TAB}} runs @code{mh-letter-complete-function} instead,
|
|
4786 which is set to @samp{'ispell-complete-word} by default. The command
|
|
4787 @kbd{M-@key{TAB}} (@code{mh-letter-complete}) takes a prefix argument
|
|
4788 that is passed to the @code{mh-letter-complete-function}. In addition,
|
|
4789 turn on the option @code{mh-compose-space-does-completion-flag} to use
|
|
4790 the command @key{SPC} (@code{mh-letter-complete-or-space}) to perform
|
|
4791 completion in the header as well; use a prefix argument to specify
|
|
4792 more than one space. Addresses are separated by a comma; when you
|
|
4793 press the comma, the command @code{mh-letter-confirm-address} flashes
|
|
4794 the 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
|
|
4802 Use the command @kbd{C-c C-t}
|
|
4803 @code{mh-letter-toggle-header-field-display} to display truncated
|
|
4804 header fields. This command is a toggle so entering it again will hide
|
|
4805 the field. This command takes a prefix argument: if negative then the
|
|
4806 field is hidden, if positive then the field is displayed (for example,
|
|
4807 @kbd{C-u C-c C-t}).
|
|
4808
|
|
4809 Be sure to leave a row of dashes or a blank line between the header
|
|
4810 and the body of the message.
|
|
4811
|
|
4812 @vindex mh-letter-fill-column
|
|
4813
|
|
4814 The body of the message is edited as you would edit any Emacs buffer
|
|
4815 although there are a few commands and options to assist you. You can
|
|
4816 change the fill column in MH-Letter mode with the option
|
|
4817 @code{mh-letter-fill-column}. By default, this option is 72 to allow
|
|
4818 others 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
|
|
4826 You'll often include messages that were sent from user agents that
|
|
4827 haven't yet realized that paragraphs consist of more than a single
|
|
4828 line. This makes for long lines that wrap in an ugly fashion. You'll
|
|
4829 find that @kbd{M-q} (@code{fill-paragraph}) works well even on these
|
|
4830 quoted messages, even if they are nested, just as long as all of the
|
|
4831 quotes match the value of @code{mh-ins-buf-prefix} (@pxref{Inserting
|
|
4832 Letter}). For example, let's assume you have the following in your
|
|
4833 draft:
|
|
4834
|
|
4835 @smallexample
|
|
4836 @group
|
|
4837 > Hopefully this gives you an idea of what I'm currently doing. I'm \
|
|
4838 not sure yet whether I'm completely satisfied with my setup, but \
|
|
4839 it's worked okay for me so far.
|
|
4840 @end group
|
|
4841 @end smallexample
|
|
4842
|
|
4843 Running @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
|
|
4858 The command @kbd{C-c C-o} (@code{mh-open-line}) is similar to the
|
|
4859 command @kbd{C-o} (@code{open-line}) in that it inserts a newline
|
|
4860 after point. It differs in that it also inserts the right number of
|
|
4861 quoting characters and spaces so that the next line begins in the same
|
|
4862 column as it was. This is useful when breaking up paragraphs in
|
|
4863 replies. For example, if this command was used when point was after
|
|
4864 the 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
|
|
4886 It is often useful to insert a snippet of text from a letter that
|
|
4887 someone 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
|
|
4889 attribution, yanking a portion of text from the message to which
|
|
4890 you're replying, and inserting @code{mh-ins-buf-prefix} (@samp{> })
|
|
4891 before each line.
|
|
4892
|
|
4893 @smallexample
|
|
4894 @group
|
|
4895 Michael 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
|
|
4905 The attribution consists of the sender's name and email address
|
|
4906 followed by the content of the option
|
|
4907 @code{mh-extract-from-attribution-verb}. This option can be set to
|
|
4908 @samp{wrote:}, @samp{a écrit:}, and @samp{schrieb:}. You can also use
|
|
4909 the @samp{Custom String} menu item to enter your own verb.
|
|
4910
|
|
4911 @vindex mail-citation-hook
|
|
4912 @vindex mh-ins-buf-prefix
|
|
4913 @vindex mh-yank-behavior
|
|
4914
|
|
4915 The prefix @code{"> "} is the default setting for the option
|
|
4916 @code{mh-ins-buf-prefix}. I suggest that you not modify this option
|
|
4917 since it is used by many mailers and news readers: messages are far
|
|
4918 easier to read if several included messages have all been indented by
|
|
4919 the same string. This prefix is not inserted if you use one of the
|
|
4920 supercite flavors of @code{mh-yank-behavior} or you have added a
|
|
4921 @code{mail-citation-hook} as described below.
|
|
4922
|
|
4923 @vindex mh-delete-yanked-msg-window-flag
|
|
4924
|
|
4925 You can also turn on the @code{mh-delete-yanked-msg-window-flag}
|
|
4926 option to delete the window containing the original message after
|
|
4927 yanking it to make more room on your screen for your reply.
|
|
4928
|
|
4929 @cindex Emacs, packages, supercite
|
|
4930 @cindex supercite package
|
|
4931 @kindex r
|
|
4932 @vindex mail-citation-hook
|
|
4933 @vindex mh-yank-behavior
|
|
4934
|
|
4935 You can control how the message to which you are replying is yanked
|
|
4936 into your reply using @code{mh-yank-behavior}. To include the entire
|
|
4937 message, including the entire header, use @samp{Body and
|
|
4938 Header}@footnote{If you'd rather have the header cleaned up, use
|
|
4939 @kbd{C-u r} instead of @kbd{r} when replying
|
|
4940 (@pxref{Replying}).}@footnote{In the past you would use this setting
|
|
4941 and set @code{mail-citation-hook} to @samp{supercite}, but this usage
|
|
4942 is now deprecated in favor of the @samp{Invoke supercite} setting.}.
|
|
4943 Use @samp{Body} to yank just the body without the header. To yank only
|
|
4944 the portion of the message following the point, set this option to
|
|
4945 @samp{Below Point}.
|
|
4946
|
|
4947 Choose @samp{Invoke supercite}@footnote{@emph{Supercite} is a
|
|
4948 full-bodied, full-featured, citation package that comes standard with
|
|
4949 Emacs.} to pass the entire message and header through supercite.
|
|
4950
|
|
4951 @vindex mh-extract-from-attribution-verb
|
|
4952
|
|
4953 If the @samp{Body With Attribution} setting is used, then the message
|
|
4954 minus the header is yanked and a simple attribution line is added at
|
|
4955 the top using the value of the option
|
|
4956 @code{mh-extract-from-attribution-verb}. This is the default.
|
|
4957
|
|
4958 @kindex C-c C-y
|
|
4959 @vindex mh-delete-yanked-msg-window-flag
|
|
4960
|
|
4961 If the @samp{Invoke supercite} or @samp{Body With Attribution}
|
|
4962 settings are used, the @samp{-noformat} argument is passed to the
|
|
4963 @command{repl} program to override a @samp{-filter} or @samp{-format}
|
|
4964 argument. These settings also have @samp{Automatically} variants that
|
|
4965 perform the action automatically when you reply so that you don't need
|
|
4966 to use @kbd{C-c C-y} at all. Note that this automatic action is only
|
|
4967 performed if the show buffer matches the message being replied to.
|
|
4968 People who use the automatic variants tend to turn on the option
|
|
4969 @code{mh-delete-yanked-msg-window-flag} as well so that the show
|
|
4970 window is never displayed.
|
|
4971
|
|
4972 @vindex mh-yank-behavior
|
|
4973
|
|
4974 If the show buffer has a region, the option @code{mh-yank-behavior} is
|
|
4975 ignored unless its value is one of @samp{Attribution} variants in
|
|
4976 which case the attribution is added to the yanked region.
|
|
4977
|
|
4978 @findex trivial-cite
|
|
4979 @vindex mail-citation-hook
|
|
4980 @vindex mh-ins-buf-prefix
|
|
4981 @vindex mh-yank-behavior
|
|
4982
|
|
4983 If this isn't enough, you can gain full control over the appearance of
|
|
4984 the included text by setting @code{mail-citation-hook} to a function
|
|
4985 that modifies it. This hook is ignored if the option
|
|
4986 @code{mh-yank-behavior} is set to one of the supercite flavors.
|
|
4987 Otherwise, this option controls how much of the message is passed to
|
|
4988 the hook. The function can find the citation between point and mark
|
|
4989 and it should leave point and mark around the modified citation text
|
|
4990 for the next hook function. The standard prefix
|
|
4991 @code{mh-ins-buf-prefix} is not added if this hook is set.
|
|
4992
|
|
4993 @cindex Emacs, packages, trivial-cite
|
|
4994 @cindex trivial-cite package
|
|
4995 @vindex mh-yank-behavior
|
|
4996
|
|
4997 For example, if you use the hook function
|
|
4998 @uref{http://shasta.cs.uiuc.edu/~lrclause/tc.html,
|
|
4999 @code{trivial-cite}} (which is NOT part of Emacs), set
|
|
5000 @code{mh-yank-behavior} to @samp{Body and Header}.
|
|
5001
|
|
5002 @node Inserting Messages, Signature, Inserting Letter, Editing Drafts
|
|
5003 @section Inserting Messages
|
|
5004
|
|
5005 @cindex inserting messages
|
|
5006 @findex mh-insert-letter
|
|
5007 @findex mh-yank-behavior
|
|
5008 @kindex C-c C-i
|
|
5009 @vindex mh-ins-buf-prefix
|
|
5010 @vindex mh-invisible-header-fields-compiled
|
|
5011 @vindex mh-yank-behavior
|
|
5012
|
|
5013 Messages can be inserted with @kbd{C-c C-i} (@code{mh-insert-letter}).
|
|
5014 This command prompts you for the folder and message number, which
|
|
5015 defaults to the current message in that folder. It then inserts the
|
|
5016 messages, indented by @code{mh-ins-buf-prefix} (@samp{> }) unless
|
|
5017 @code{mh-yank-behavior} is set to one of the supercite flavors in
|
|
5018 which case supercite is used to format the message. Certain
|
|
5019 undesirable header fields (see
|
|
5020 @code{mh-invisible-header-fields-compiled}) are removed before
|
|
5021 insertion.
|
|
5022
|
|
5023 If given a prefix argument (like @kbd{C-u C-c C-i}), the header is
|
|
5024 left intact, the message is not indented, and @samp{> } is not
|
|
5025 inserted before each line. This command leaves the mark before the
|
|
5026 letter and point after it.
|
|
5027
|
|
5028 @node Signature, Picture, Inserting Messages, Editing Drafts
|
|
5029 @section Inserting Your Signature
|
|
5030
|
|
5031 @cindex signature
|
|
5032 @findex mh-insert-signature
|
|
5033 @kindex C-c C-s
|
|
5034
|
|
5035 You can insert your signature at the current cursor location with the
|
|
5036 command @kbd{C-c C-s} (@code{mh-insert-signature}).
|
|
5037
|
|
5038 @cindex files, @file{.signature}
|
|
5039 @cindex @file{.signature}
|
|
5040 @cindex vCard
|
|
5041 @vindex mh-signature-file-name
|
|
5042
|
|
5043 By default, the text of your signature is taken from the file
|
|
5044 @file{~/.signature}. You can read from other sources by changing the
|
|
5045 option @code{mh-signature-file-name}. This file may contain a
|
|
5046 @dfn{vCard} in which case an attachment is added with the vCard.
|
|
5047
|
|
5048 @findex mh-signature-separator-p
|
|
5049 @vindex mh-signature-file-name
|
|
5050 @vindex mh-signature-separator
|
|
5051 @vindex mh-signature-separator-regexp
|
|
5052
|
|
5053 The option @code{mh-signature-file-name} may also be a symbol, in
|
|
5054 which case that function is called. You may not want a signature
|
|
5055 separator to be added for you; instead you may want to insert one
|
|
5056 yourself. Options that you may find useful to do this include
|
|
5057 @code{mh-signature-separator} (when inserting a signature separator)
|
|
5058 and @code{mh-signature-separator-regexp} (for finding said separator).
|
|
5059 The function @code{mh-signature-separator-p}, which reports @code{t}
|
|
5060 if the buffer contains a separator, may be useful as well.
|
|
5061
|
|
5062 @cindex signature separator
|
|
5063 @vindex mh-signature-separator-flag
|
|
5064
|
|
5065 A signature separator (@code{"-- "}) will be added if the signature
|
|
5066 block does not contain one and @code{mh-signature-separator-flag} is
|
|
5067 on. It is not recommended that you change this option since various
|
|
5068 mail user agents, including MH-E, use the separator to present the
|
|
5069 signature differently, and to suppress the signature when replying or
|
|
5070 yanking a letter into a draft.
|
|
5071
|
|
5072 @vindex mh-insert-signature-hook
|
|
5073 @vindex mh-signature-file-name
|
|
5074
|
|
5075 The hook @code{mh-insert-signature-hook} is run after the signature is
|
|
5076 inserted. Hook functions may access the actual name of the file or the
|
|
5077 function used to insert the signature with
|
|
5078 @code{mh-signature-file-name}.
|
|
5079
|
|
5080 The signature can also be inserted using Identities.
|
|
5081 @xref{Identities}.
|
|
5082
|
|
5083 @node Picture, Adding Attachments, Signature, Editing Drafts
|
|
5084 @section Inserting Your Picture
|
|
5085
|
|
5086 @cindex @file{.face}
|
|
5087 @cindex files, @file{.face}
|
|
5088 @vindex mh-x-face-file
|
|
5089
|
|
5090 You can insert your picture in the header of your mail message so that
|
|
5091 recipients see your face in the @samp{From:} header field if their
|
|
5092 mail user agent is sophisticated enough. In MH-E, this is done by
|
|
5093 placing your image in the file named by the option
|
|
5094 @code{mh-x-face-file} which is @file{~/.face} by default.
|
|
5095
|
|
5096 @cindex @samp{Face:} header field
|
|
5097 @cindex @samp{X-Face:} header field
|
|
5098 @cindex @samp{X-Image-URL:} header field
|
|
5099 @cindex header field, @samp{Face:}
|
|
5100 @cindex header field, @samp{X-Face:}
|
|
5101 @cindex header field, @samp{X-Image-URL:}
|
|
5102
|
|
5103 If the file starts with either of the strings @samp{X-Face:},
|
|
5104 @samp{Face:} or @samp{X-Image-URL:} then the contents are added to the
|
|
5105 message header verbatim. Otherwise it is assumed that the file
|
|
5106 contains the value of the @samp{X-Face:} header field.
|
|
5107
|
|
5108 @cindex @command{compface}
|
|
5109 @cindex Unix commands, @command{compface}
|
|
5110
|
|
5111 The @samp{X-Face:} header field, which is a low-resolution, black and
|
|
5112 white image, can be generated using the
|
|
5113 @uref{ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z,
|
|
5114 @command{compface}} command. The @uref{http://www.dairiki.org/xface/,
|
|
5115 @cite{Online X-Face Converter}} is a useful resource for quick
|
|
5116 conversion of images into @samp{X-Face:} header fields.
|
|
5117
|
|
5118 Use the @uref{http://quimby.gnus.org/circus/face/make-face,
|
|
5119 @command{make-face}} script to convert a JPEG image to the higher
|
|
5120 resolution, color, @samp{Face:} header field.
|
|
5121
|
|
5122 The URL of any image can be used for the @samp{X-Image-URL:} field and
|
|
5123 no processing of the image is required.
|
|
5124
|
|
5125 @vindex mh-x-face-file
|
|
5126
|
|
5127 To prevent the setting of any of these header fields, either set
|
|
5128 @code{mh-x-face-file} to @code{nil}, or simply ensure that the file
|
|
5129 defined by this option doesn't exist.
|
|
5130
|
|
5131 @xref{Viewing}, to see how these header fields are displayed in MH-E.
|
|
5132
|
|
5133 @node Adding Attachments, Sending PGP, Picture, Editing Drafts
|
|
5134 @section Adding Attachments
|
|
5135
|
|
5136 @cindex @command{mhbuild}
|
|
5137 @cindex @command{mhn}
|
|
5138 @cindex MH commands, @command{mhbuild}
|
|
5139 @cindex MH commands, @command{mhn}
|
|
5140 @cindex MIME
|
|
5141 @cindex multimedia mail
|
|
5142
|
|
5143 MH-E has the capability to create multimedia messages. It uses the
|
|
5144 @sc{mime} (Multipurpose Internet Mail Extensions)
|
|
5145 protocol@footnote{@sc{mime} is defined in
|
|
5146 @uref{http://www.rfc-editor.org/rfc/rfc2045.txt, RFC 2045}.} The
|
|
5147 @sc{mime} protocol allows you to incorporate images, sound, video,
|
|
5148 binary files, and even commands that fetch a file with @samp{ftp} when
|
|
5149 your recipient reads the message!
|
|
5150
|
|
5151 @kindex C-c C-m
|
|
5152
|
|
5153 If you were to create a multimedia message with plain MH commands, you
|
|
5154 would insert @command{mhbuild} or @command{mhn} directives (henceforth
|
|
5155 called @dfn{MH-style directives} into your draft and use the
|
|
5156 @command{mhbuild} command in nmh or @command{mhn} command in MH and
|
|
5157 GNU mailutils to expand them. MH-E works in much the same way,
|
|
5158 although it provides a handful of commands prefixed with @kbd{C-c C-m}
|
|
5159 to insert the directives so you don't need to remember the syntax of
|
|
5160 them. Remember: you can always add MH-style directives by
|
|
5161 hand@footnote{See the section
|
|
5162 @uref{@value{MH-BOOK-HOME}/usimim.html#SeMIMa, Sending MIME Mail} in
|
|
5163 the MH book.}.
|
|
5164
|
|
5165 @cindex MIME Meta Language (MML)
|
|
5166 @cindex MML
|
|
5167 @vindex mh-compose-insertion
|
|
5168
|
|
5169 In addition to MH-style directives, MH-E also supports MML (@sc{mime}
|
|
5170 Meta Language) tags@footnote{
|
|
5171 @ifinfo
|
|
5172 @c Although the third argument should default to the
|
|
5173 @c first, makeinfo goes to the wrong Info file without it being
|
|
5174 @c different--it seems to be getting our own Composing node.
|
|
5175 @xref{Composing,,Composing with MML,emacs-mime}.
|
|
5176 @end ifinfo
|
|
5177 @ifnotinfo
|
|
5178 See the section Composing in
|
|
5179 @uref{http://www.gnus.org/manual/emacs-mime.html, @cite{The Emacs MIME
|
|
5180 Manual}}.
|
|
5181 @end ifnotinfo
|
|
5182 }. The option @code{mh-compose-insertion} can be used to choose
|
|
5183 between them. By default, this option is set to @samp{MML} if it is
|
|
5184 supported since it provides a lot more functionality. This option can
|
|
5185 also be set to @samp{MH} if MH-style directives are preferred.
|
|
5186
|
|
5187 @cindex media types
|
|
5188 @cindex MIME, media types
|
|
5189
|
|
5190 The MH-E @sc{mime} commands require a @dfn{media type} for each body
|
|
5191 part or attachment. For example, a PDF document is of type
|
|
5192 @samp{application/pdf} and an HTML document is of type
|
|
5193 @samp{text/html}. Some commands fill in the media type for you,
|
|
5194 whereas others require you to enter one.
|
|
5195
|
|
5196 @cindex @command{file}
|
|
5197 @cindex @file{/etc/mime.types}
|
|
5198 @cindex files, @file{/etc/mime.types}
|
|
5199 @cindex Unix commands, @command{file}
|
|
5200 @findex mailcap-mime-types
|
|
5201
|
|
5202 In the cases where MH-E can do so, it will determine the media type
|
|
5203 automatically. It uses the @command{file} command to do this. Failing
|
|
5204 that, the Emacs function @code{mailcap-mime-types} is used to provide
|
|
5205 a list from which to choose. This function usually reads the file
|
|
5206 @file{/etc/mime.types}.
|
|
5207
|
|
5208 Whether the media type is chosen automatically, or you choose it from
|
|
5209 a list, use the type that seems to match best the file that you are
|
|
5210 including. In the case of binaries, the media type
|
|
5211 @samp{application/x-executable} can be useful. If you can't find an
|
|
5212 appropriate media type, use @samp{text/plain} for text messages and
|
|
5213 @samp{application/octet-stream} for everything else.
|
|
5214
|
|
5215 @cindex content description
|
|
5216 @cindex MIME, content description
|
|
5217
|
|
5218 You are also sometimes asked for a @dfn{content description}. This is
|
|
5219 simply an optional brief phrase, in your own words, that describes the
|
|
5220 object. If you don't care to enter a content description, just press
|
|
5221 return and none will be included; however, a reader may skip over
|
|
5222 multimedia fields unless the content description is compelling.
|
|
5223
|
|
5224 You can also create your own @sc{mime} body parts. In the following
|
|
5225 example, I describe how you can create and edit a @samp{text/enriched}
|
|
5226 body part to liven up your plain text messages with boldface,
|
|
5227 underlining, and italics. I include an Emacs function which inserts
|
|
5228 enriched text tags.
|
|
5229
|
|
5230 @smalllisp
|
|
5231 @group
|
|
5232 (defvar enriched-text-types '(("b" . "bold") ("i" . "italic")
|
|
5233 ("u" . "underline")
|
|
5234 ("s" . "smaller") ("B" . "bigger")
|
|
5235 ("f" . "fixed")
|
|
5236 ("c" . "center"))
|
|
5237 "Alist of (final-character . tag) choices for add-enriched-text.
|
|
5238 Additional types can be found in RFC 1563.")
|
|
5239
|
|
5240 (defun add-enriched-text (begin end)
|
|
5241 "Add enriched text tags around region.
|
|
5242 The tag used comes from the list enriched-text-types and is
|
|
5243 specified by the last keystroke of the command. When called from Lisp,
|
|
5244 arguments are BEGIN and END@."
|
|
5245 (interactive "r")
|
|
5246 ;; @r{Set type to the tag indicated by the last keystroke.}
|
|
5247 (let ((type (cdr (assoc (char-to-string (logior last-input-char ?@w{`}))
|
|
5248 enriched-text-types))))
|
|
5249 (save-restriction ; @r{restores state from narrow-to-region}
|
|
5250 (narrow-to-region begin end) ; @r{narrow view to region}
|
|
5251 (goto-char (point-min)) ; @r{move to beginning of text}
|
|
5252 (insert "<" type ">") ; @r{insert beginning tag}
|
|
5253 (goto-char (point-max)) ; @r{move to end of text}
|
|
5254 (insert "</" type ">")))) ; @r{insert terminating tag}
|
|
5255 @i{Emacs function for entering enriched text}
|
|
5256
|
|
5257 @end group
|
|
5258 @end smalllisp
|
|
5259
|
|
5260 To use the function @code{add-enriched-text}, first add it to
|
|
5261 @file{~/.emacs} and create key bindings for it (@pxref{Composing}).
|
|
5262
|
|
5263 Then, in your plain text message, set the mark with @kbd{C-@@} or
|
|
5264 @kbd{C-@key{SPC}}, type in the text to be highlighted, and type @kbd{C-c t
|
|
5265 b}. This adds @samp{<bold>} where you set the mark and adds
|
|
5266 @samp{</bold>} at the location of your cursor, giving you something
|
|
5267 like: @samp{You should be <bold>very</bold>}.
|
|
5268
|
|
5269 Before sending this message, use @kbd{C-c C-m C-m}
|
|
5270 (@code{mh-mml-to-mime})@footnote{Use @kbd{C-c C-e}
|
|
5271 (@code{mh-mh-to-mime}) if you're using MH-style directives.} to add
|
|
5272 MIME header fields. Then replace @samp{text/plain} with
|
|
5273 @samp{text/enriched} in the @samp{Content-Type:} header field.
|
|
5274
|
|
5275 You may also be interested in investigating @code{sgml-mode}.
|
|
5276
|
|
5277 @subheading Including Files
|
|
5278
|
|
5279 @cindex attachments, inserting
|
|
5280 @cindex images
|
|
5281 @cindex MIME, images
|
|
5282 @cindex MIME, sound
|
|
5283 @cindex MIME, video
|
|
5284 @cindex sound
|
|
5285 @cindex video
|
|
5286 @findex mh-compose-insertion
|
|
5287 @kindex C-c C-m C-i
|
|
5288 @kindex C-c C-m i
|
|
5289 @vindex mh-compose-insertion
|
|
5290
|
|
5291 Binaries, images, sound, and video can be inserted in your message
|
|
5292 with the command @kbd{C-c C-m C-i} (@code{mh-compose-insertion}). You
|
|
5293 are prompted for the filename containing the object, the media type if
|
|
5294 it cannot be determined automatically, and a content description. If
|
|
5295 you're using MH-style directives, you will also be prompted for
|
|
5296 additional attributes.
|
|
5297
|
|
5298 @subheading Forwarding Multimedia Messages
|
|
5299
|
|
5300 @findex mh-compose-forward
|
|
5301 @kindex C-c C-m C-f
|
|
5302 @kindex C-c C-m f
|
|
5303
|
|
5304 Mail may be forwarded with @sc{mime} using the command @kbd{C-c C-m
|
|
5305 C-f} (@code{mh-compose-forward}). You are prompted for a content
|
|
5306 description, the name of the folder in which the messages to forward
|
|
5307 are located, and a range of messages, which defaults to the current
|
|
5308 message in that folder. @xref{Ranges}.
|
|
5309
|
|
5310 @subheading Including an FTP Reference
|
|
5311
|
|
5312 @cindex @command{ftp}
|
|
5313 @cindex MIME, @command{ftp}
|
|
5314 @cindex Unix commands, @command{ftp}
|
|
5315 @findex mh-mh-compose-anon-ftp
|
|
5316 @kindex C-c C-m C-g
|
|
5317 @kindex C-c C-m g
|
|
5318
|
|
5319 You can have your message initiate an @command{ftp} transfer when the
|
|
5320 recipient reads the message. To do this, use the command @kbd{C-c C-m
|
|
5321 C-g} (@code{mh-mh-compose-anon-ftp}). You are prompted for the remote
|
|
5322 host and filename, the media type, and the content description.
|
|
5323
|
|
5324 @subheading Including tar Files
|
|
5325
|
|
5326 @cindex @command{ftp}
|
|
5327 @cindex @command{tar}
|
|
5328 @cindex MIME, @command{ftp}
|
|
5329 @cindex MIME, @command{tar}
|
|
5330 @cindex Unix commands, @command{ftp}
|
|
5331 @cindex Unix commands, @command{tar}
|
|
5332 @findex mh-mh-compose-anon-ftp
|
|
5333 @findex mh-mh-compose-external-compressed-tar
|
|
5334 @kindex C-c C-m C-g
|
|
5335 @kindex C-c C-m C-t
|
|
5336 @kindex C-c C-m t
|
|
5337
|
|
5338 If the remote file is a compressed tar file, you can use @kbd{C-c C-m
|
|
5339 C-t} (@code{mh-mh-compose-external-compressed-tar}). Then, in addition
|
|
5340 to retrieving the file via anonymous @emph{ftp} as per the command
|
|
5341 @kbd{C-c C-m C-g} (@code{mh-mh-compose-anon-ftp}), the file will also
|
|
5342 be uncompressed and untarred. You are prompted for the remote host and
|
|
5343 filename and the content description.
|
|
5344
|
|
5345 @subheading Including Other External Files
|
|
5346
|
|
5347 @findex mh-mh-compose-external-type
|
|
5348 @kindex C-c C-m C-x
|
|
5349 @kindex C-c C-m x
|
|
5350
|
|
5351 The command @kbd{C-c C-m C-x} (@code{mh-mh-compose-external-type}) is
|
|
5352 a general utility for referencing external files. In fact, all of the
|
|
5353 other commands that insert tags to access external files call this
|
|
5354 command. You are prompted for the access type, remote host and
|
|
5355 filename, and content type. If you provide a prefix argument, you are
|
|
5356 also prompted for a content description, attributes, parameters, and a
|
|
5357 comment.
|
|
5358
|
|
5359 @subheading Previewing Multimedia Messages
|
|
5360
|
|
5361 When you are finished editing a @sc{mime} message, it might look like this:
|
|
5362
|
|
5363 @cartouche
|
|
5364 @smallexample
|
|
5365 3 t08/24 root received fax files on Wed Aug 24 11:00:
|
|
5366 4+t08/24 To:wohler Test<<This is a test message to get the
|
|
5367
|
|
5368
|
|
5369
|
|
5370
|
|
5371
|
|
5372 --:%% @{+inbox@} 4 msgs (1-4) Bot L4 (MH-Folder Show)---------------
|
|
5373 To: wohler
|
|
5374 cc:
|
|
5375 Subject: Test of MIME
|
|
5376 --------
|
|
5377 Here is the SETI@@Home logo:
|
|
5378
|
|
5379 <#part type="image/x-xpm" filename="~/lib/images/setiathome.xpm"
|
|
5380 disposition=inline description="SETI@@home logo">
|
|
5381 <#/part>
|
|
5382 --:** @{draft@} All L8 (MH-Letter)----------------------------------
|
|
5383
|
|
5384 @end smallexample
|
|
5385 @end cartouche
|
|
5386 @i{MH-E @sc{mime} draft}
|
|
5387
|
|
5388 @findex mh-mml-to-mime
|
|
5389 @kindex C-c C-m C-m
|
|
5390 @kindex C-c C-m m
|
|
5391
|
|
5392 Typically, you send a message with attachments just like any other
|
|
5393 message (@pxref{Sending Message}).
|
|
5394
|
|
5395 @findex mh-mml-to-mime
|
|
5396 @kindex C-c C-m C-m
|
|
5397
|
|
5398 However, you may take a sneak preview of the @sc{mime} encoding if you
|
|
5399 wish by running the command @kbd{C-c C-m C-m} (@code{mh-mml-to-mime}).
|
|
5400 The following screen shows the @sc{mime} encoding specified by the
|
|
5401 tags. You can see why mail user agents are usually built to hide these
|
|
5402 details from the user.
|
|
5403
|
|
5404 @cartouche
|
|
5405 @smallexample
|
|
5406 To: wohler
|
|
5407 cc:
|
|
5408 Subject: Test of MIME
|
|
5409 X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1
|
|
5410 MIME-Version: 1.0
|
|
5411 Content-Type: multipart/mixed; boundary="=-=-="
|
|
5412 --------
|
|
5413 --=-=-=
|
|
5414
|
|
5415 Here is the SETI@@Home logo:
|
|
5416
|
|
5417
|
|
5418 --=-=-=
|
|
5419 Content-Type: image/x-xpm
|
|
5420 Content-Disposition: inline; filename=setiathome.xpm
|
|
5421 Content-Transfer-Encoding: base64
|
|
5422 Content-Description: SETI@@home logo
|
|
5423
|
|
5424 LyogWFBNICovCnN0YXRpYyBjaGFyICogc2V0aWF0aG9tZV94cG1bXSA9IHsKIjQ1IDQ1IDc2N
|
|
5425 --:-- @{draft@} Top L1 (MH-Letter)----------------------------------
|
|
5426
|
|
5427 @end smallexample
|
|
5428 @end cartouche
|
|
5429 @i{MH-E @sc{mime} draft ready to send}
|
|
5430
|
|
5431 @cindex undo effects of mh-mml-to-mime
|
|
5432
|
|
5433 This action can be undone by running @kbd{C-_} (@code{undo}).
|
|
5434
|
|
5435 @cindex @command{mhbuild}
|
|
5436 @cindex @command{mhn}
|
|
5437 @cindex MH commands, @command{mhbuild}
|
|
5438 @cindex MH commands, @command{mhn}
|
|
5439 @cindex undo effects of mh-mh-to-mime
|
|
5440 @findex mh-mh-to-mime
|
|
5441 @findex mh-mh-to-mime-undo
|
|
5442 @kindex C-c C-e
|
|
5443 @kindex C-c C-m C-m
|
|
5444 @kindex C-c C-m C-u
|
|
5445 @kindex C-c C-m u
|
|
5446
|
|
5447 If you're using MH-style directives, use @kbd{C-c C-e}
|
|
5448 (@code{mh-mh-to-mime}) instead of @kbd{C-c C-m C-m}. This runs the
|
|
5449 command @command{mhbuild} (@command{mhn}) on the message which expands
|
|
5450 the tags@footnote{See the section
|
|
5451 @uref{@value{MH-BOOK-HOME}/usimim.html#SeMIMa, Sending MIME Mail} in
|
|
5452 the MH book.}. This action can be undone by running @kbd{C-c C-m C-u}
|
|
5453 (@code{mh-mh-to-mime-undo}), which works by reverting to a backup
|
|
5454 file. You are prompted to confirm this action, but you can avoid the
|
|
5455 confirmation by adding an argument (for example, @kbd{C-u C-c C-m
|
|
5456 C-u}).
|
|
5457
|
|
5458 @kindex C-c C-e
|
|
5459 @vindex mh-mh-to-mime-args
|
|
5460
|
|
5461 If you wish to pass additional arguments to @command{mhbuild}
|
|
5462 (@command{mhn}) to affect how it builds your message, use the option
|
|
5463 @code{mh-mh-to-mime-args}. For example, you can build a consistency
|
|
5464 check into the message by setting @code{mh-mh-to-mime-args} to
|
|
5465 @samp{-check}. The recipient of your message can then run
|
|
5466 @samp{mhbuild -check} on the message---@command{mhbuild}
|
|
5467 (@command{mhn}) will complain if the message has been corrupted on the
|
|
5468 way. The command @kbd{C-c C-e} only consults this option when given a
|
|
5469 prefix argument (as in @kbd{C-u C-c C-e}).
|
|
5470
|
|
5471 @kindex C-c C-e
|
|
5472 @vindex mh-mh-to-mime-hook
|
|
5473
|
|
5474 The hook @code{mh-mh-to-mime-hook} is called after the message has
|
|
5475 been formatted by @kbd{C-c C-e}.
|
|
5476
|
|
5477 @node Sending PGP, Checking Recipients, Adding Attachments, Editing Drafts
|
|
5478 @section Signing and Encrypting Messages
|
|
5479
|
|
5480 @cindex signing messages
|
|
5481 @cindex encrypting messages
|
|
5482 @cindex RFC 3156
|
|
5483
|
|
5484 MH-E can sign and encrypt messages as defined in
|
|
5485 @uref{http://www.rfc-editor.org/rfc/rfc3156.txt, RFC 3156}. If you
|
|
5486 should choose to sign or encrypt your message, use one of the
|
|
5487 following commands to do so any time before sending your message.
|
|
5488
|
|
5489 @findex mh-mml-secure-message-encrypt
|
|
5490 @findex mh-mml-secure-message-sign
|
|
5491 @findex mh-mml-secure-message-signencrypt
|
|
5492 @kindex C-c C-m C-e
|
|
5493 @kindex C-c C-m C-s
|
|
5494 @kindex C-c C-m e e
|
|
5495 @kindex C-c C-m e s
|
|
5496 @kindex C-c C-m s e
|
|
5497 @kindex C-c C-m s s
|
|
5498
|
|
5499 The command @kbd{C-c C-m C-s} (@code{mh-mml-secure-message-sign})
|
|
5500 inserts the following tag:
|
|
5501
|
|
5502 @smallexample
|
|
5503 <#secure method=pgpmime mode=sign>
|
|
5504 @end smallexample
|
|
5505
|
|
5506 This is used to sign your message digitally. Likewise, the command
|
|
5507 @kbd{C-c C-m C-e} (@code{mh-mml-secure-message-encrypt}) inserts the
|
|
5508 following tag:
|
|
5509
|
|
5510 @smallexample
|
|
5511 <#secure method=pgpmime mode=encrypt>
|
|
5512 @end smallexample
|
|
5513
|
|
5514 This is used to encrypt your message. Finally, the command @kbd{C-c
|
|
5515 C-m s e} (@code{mh-mml-secure-message-signencrypt}) inserts the
|
|
5516 following tag:
|
|
5517
|
|
5518 @smallexample
|
|
5519 <#secure method=pgpmime mode=signencrypt>
|
|
5520 @end smallexample
|
|
5521
|
|
5522 @findex mh-mml-unsecure-message
|
|
5523 @kindex C-c C-m C-n
|
|
5524 @kindex C-c C-m n
|
|
5525 @vindex mh-mml-method-default
|
|
5526
|
|
5527 This is used to sign and encrypt your message. In each of these cases,
|
|
5528 a proper multipart message is created for you when you send the
|
|
5529 message. Use the command @kbd{C-c C-m C-n}
|
|
5530 (@code{mh-mml-unsecure-message}) to remove these tags. Use a prefix
|
|
5531 argument (as in @kbd{C-u C-c C-m s e}) to be prompted for one of the
|
|
5532 possible security methods (see @code{mh-mml-method-default}).
|
|
5533
|
|
5534 @vindex mh-mml-method-default
|
|
5535
|
|
5536 The option @code{mh-mml-method-default} is used to select between a
|
|
5537 variety of mail security mechanisms. The default is @samp{PGP (MIME)}
|
|
5538 if it is supported; otherwise, the default is @samp{None}. Other
|
|
5539 mechanisms include vanilla @samp{PGP} and @samp{S/MIME}.
|
|
5540
|
|
5541 @cindex @samp{pgg} customization group
|
|
5542 @cindex PGG
|
|
5543 @cindex customization group, @samp{pgg}
|
|
5544
|
|
5545 The @samp{pgg} customization group may have some settings which may
|
|
5546 interest you.
|
|
5547 @iftex
|
|
5548 See @cite{The PGG Manual}.
|
|
5549 @end iftex
|
|
5550 @ifinfo
|
|
5551 @xref{Top, , The PGG Manual, pgg, The PGG Manual}.
|
|
5552 @end ifinfo
|
|
5553 @ifhtml
|
|
5554 See
|
|
5555 @uref{http://www.dk.xemacs.org/Documentation/packages/html/pgg.html,
|
|
5556 @cite{The PGG Manual}}.
|
|
5557 @end ifhtml
|
|
5558
|
|
5559 @cindex header field, @samp{Fcc:}
|
|
5560 @cindex @samp{Fcc:} header field
|
|
5561 @vindex pgg-encrypt-for-me
|
|
5562
|
|
5563 In particular, I turn on the option @code{pgg-encrypt-for-me} so that
|
|
5564 all messages I encrypt are encrypted with my public key as well. If
|
|
5565 you keep a copy of all of your outgoing mail with a @samp{Fcc:} header
|
|
5566 field, this setting is vital so that you can read the mail you write!
|
|
5567
|
|
5568 @node Checking Recipients, Sending Message, Sending PGP, Editing Drafts
|
|
5569 @section Checking Recipients
|
|
5570
|
|
5571 @cindex @samp{*MH-E Recipients*}
|
|
5572 @cindex @command{whom}
|
|
5573 @cindex MH commands, @command{whom}
|
|
5574 @cindex buffers, @samp{*MH-E Recipients*}
|
|
5575 @cindex checking recipients
|
|
5576 @cindex recipients, checking
|
|
5577 @findex mh-check-whom
|
|
5578 @kindex C-c C-w
|
|
5579
|
|
5580 The command @kbd{C-c C-w} (@code{mh-check-whom}) expands aliases so
|
|
5581 you can check the actual address(es) in the alias. A new buffer named
|
|
5582 @samp{*MH-E Recipients*} is created with the output of @command{whom}
|
|
5583 (@pxref{Miscellaneous})@footnote{See the section
|
|
5584 @uref{@value{MH-BOOK-HOME}/senove.html#WhaPro, What now? -- and the
|
|
5585 whatnow Program} in the MH book.}.
|
|
5586
|
|
5587 @node Sending Message, Killing Draft, Checking Recipients, Editing Drafts
|
|
5588 @section Sending a Message
|
|
5589
|
|
5590 @cindex buffers, @samp{*MH-E Mail Delivery*}
|
|
5591 @cindex @samp{*MH-E Mail Delivery*}
|
|
5592 @cindex sending mail
|
|
5593 @findex mh-send-letter
|
|
5594 @kindex C-c C-c
|
|
5595
|
|
5596 When you are all through editing a message, you send it with the
|
|
5597 command @kbd{C-c C-c} (@code{mh-send-letter}). You can give a prefix
|
|
5598 argument (as in @kbd{C-u C-c C-c}) to monitor the first stage of the
|
|
5599 delivery; this output can be found in a buffer called @samp{*MH-E Mail
|
|
5600 Delivery*} (@pxref{Miscellaneous}).
|
|
5601
|
|
5602 @cindex sending mail
|
|
5603 @cindex spell check
|
|
5604 @findex ispell-message
|
|
5605 @kindex C-c C-c
|
|
5606 @vindex mh-before-send-letter-hook
|
|
5607
|
|
5608 The hook @code{mh-before-send-letter-hook} is run at the beginning of
|
|
5609 the command @kbd{C-c C-c}. For example, if you want to check your
|
|
5610 spelling in your message before sending, add the function
|
|
5611 @code{ispell-message}.
|
|
5612
|
|
5613 @cindex @command{send}
|
|
5614 @cindex MH commands, @command{send}
|
|
5615 @vindex mh-send-prog
|
|
5616
|
|
5617 In case the MH @command{send} program@footnote{See the section
|
|
5618 @uref{@value{MH-BOOK-HOME}/sensen.html, Sending Some Mail: comp send}
|
|
5619 in the MH book.} is installed under a different name, use
|
|
5620 @code{mh-send-prog} to tell MH-E the name.
|
|
5621
|
|
5622 @node Killing Draft, , Sending Message, Editing Drafts
|
|
5623 @section Killing the Draft
|
|
5624
|
|
5625 @cindex killing draft
|
|
5626 @findex kill-buffer
|
|
5627 @findex mh-fully-kill-draft
|
|
5628 @kindex C-c C-q
|
|
5629 @kindex C-x k
|
|
5630
|
|
5631 If for some reason you are not happy with the draft, you can use the
|
|
5632 command @kbd{C-c C-q} (@code{mh-fully-kill-draft}) to kill the draft
|
|
5633 buffer and delete the draft message. Use the command @kbd{C-x k}
|
|
5634 (@code{kill-buffer}) if you don't want to delete the draft message.
|
|
5635
|
|
5636 @node Aliases, Identities, Editing Drafts, Top
|
|
5637 @chapter Aliases
|
|
5638
|
|
5639 @cindex aliases
|
|
5640
|
|
5641 MH aliases are used in the same way in MH-E as they are in MH. Any
|
|
5642 alias listed as a recipient will be expanded when the message is sent.
|
|
5643 This chapter discusses other things you can do with aliases in MH-E.
|
|
5644
|
|
5645 @cindex MH-Letter mode
|
|
5646 @cindex modes, MH-Letter
|
|
5647
|
|
5648 The following commands are available in MH-Letter mode with the
|
|
5649 exception of @code{mh-alias-reload} which can be called from anywhere.
|
|
5650
|
|
5651 @table @kbd
|
|
5652 @kindex @key{SPC}
|
|
5653 @findex mh-letter-complete-or-space
|
|
5654 @item @key{SPC}
|
|
5655 Perform completion or insert space (@code{mh-letter-complete-or-space}).
|
|
5656 @c -------------------------
|
|
5657 @kindex M-@key{TAB}
|
|
5658 @findex mh-letter-complete
|
|
5659 @item M-@key{TAB}
|
|
5660 Perform completion on header field or word preceding point
|
|
5661 (@code{mh-letter-complete}).
|
|
5662 @c -------------------------
|
|
5663 @findex mh-alias-apropos
|
|
5664 @item mh-alias-apropos
|
|
5665 Show all aliases or addresses that match a regular expression.
|
|
5666 @c -------------------------
|
|
5667 @findex mh-alias-grab-from-field
|
|
5668 @item mh-alias-grab-from-field
|
|
5669 Add alias for the sender of the current message
|
|
5670 @c -------------------------
|
|
5671 @findex mh-alias-reload
|
|
5672 @item mh-alias-reload
|
|
5673 Reload MH aliases.
|
|
5674 @end table
|
|
5675
|
|
5676 @cindex @samp{mh-alias} customization group
|
|
5677 @cindex customization group, @samp{mh-alias}
|
|
5678
|
|
5679 The @samp{mh-alias} customization group contains options associated
|
|
5680 with aliases.
|
|
5681
|
|
5682 @vtable @code
|
|
5683 @item mh-alias-completion-ignore-case-flag
|
|
5684 On means don't consider case significant in MH alias completion
|
|
5685 (default: @samp{on}).
|
|
5686 @c -------------------------
|
|
5687 @item mh-alias-expand-aliases-flag
|
|
5688 On means to expand aliases entered in the minibuffer (default:
|
|
5689 @samp{off}).
|
|
5690 @c -------------------------
|
|
5691 @item mh-alias-flash-on-comma
|
|
5692 Specify whether to flash address or warn on translation (default: @samp{Flash
|
|
5693 but Don't Warn If No Alias}).
|
|
5694 @c -------------------------
|
|
5695 @item mh-alias-insert-file
|
|
5696 Filename used to store a new MH-E alias (default: @samp{Use Aliasfile
|
|
5697 Profile Component}).
|
|
5698 @c -------------------------
|
|
5699 @item mh-alias-insertion-location
|
|
5700 Specifies where new aliases are entered in alias files (default:
|
|
5701 @samp{Alphabetical}).
|
|
5702 @c -------------------------
|
|
5703 @item mh-alias-local-users
|
|
5704 If @samp{on}, local users are added to alias completion (default:
|
|
5705 @samp{on}).
|
|
5706 @c -------------------------
|
|
5707 @item mh-alias-local-users-prefix
|
|
5708 String prefixed to the real names of users from the password file
|
|
5709 (default: @code{"local."}.
|
|
5710 @c -------------------------
|
|
5711 @item mh-alias-passwd-gecos-comma-separator-flag
|
|
5712 On means the GECOS field in the password file uses a comma separator
|
|
5713 (default: @samp{on}).
|
|
5714 @end vtable
|
|
5715
|
|
5716 The following hook is available.
|
|
5717
|
|
5718 @vtable @code
|
|
5719 @item mh-alias-reloaded-hook
|
|
5720 Hook run by @code{mh-alias-reload} after loading aliases (default:
|
|
5721 @code{nil}).
|
|
5722 @end vtable
|
|
5723
|
|
5724 @subheading Adding Addresses to Draft
|
|
5725
|
|
5726 You can use aliases when you are adding recipients to a message.
|
|
5727
|
|
5728 @findex minibuffer-complete
|
|
5729 @kindex @key{TAB}
|
|
5730 @vindex mh-alias-expand-aliases-flag
|
|
5731 @vindex mh-compose-prompt-flag
|
|
5732
|
|
5733 In order to use minibuffer prompting for recipients and the subject
|
|
5734 line in the minibuffer, turn on the option
|
|
5735 @code{mh-compose-prompt-flag} (@pxref{Composing}), and use the
|
|
5736 @key{TAB} (@code{minibuffer-complete}) command to complete aliases
|
|
5737 (and optionally local logins) when prompted for the recipients. Turn
|
|
5738 on the option @code{mh-alias-expand-aliases-flag} if you want these
|
|
5739 aliases to be expanded to their respective addresses in the draft.
|
|
5740
|
|
5741 @findex mh-letter-complete
|
|
5742 @findex mh-letter-complete-or-space
|
|
5743 @kindex @key{SPC}
|
|
5744 @kindex M-@key{TAB}
|
|
5745
|
|
5746 Otherwise, you can complete aliases in the header of the draft with
|
|
5747 @kbd{M-@key{TAB}} (@code{mh-letter-complete}) or @key{SPC}
|
|
5748 (@code{mh-letter-complete-or-space}).
|
|
5749
|
|
5750 @vindex mh-alias-completion-ignore-case-flag
|
|
5751
|
|
5752 As MH ignores case in the aliases, so too does MH-E. However, you may
|
|
5753 turn off the option @code{mh-alias-completion-ignore-case-flag} to
|
|
5754 make case significant which can be used to segregate completion of
|
|
5755 your aliases. You might use uppercase for mailing lists and lowercase
|
|
5756 for people. For example, you might have:
|
|
5757
|
|
5758 @smallexample
|
|
5759 mark.baushke: Mark Baushke <mdb@@stop.mail-abuse.org>
|
|
5760 MH-E: MH-E Mailing List <mh-e-devel@@stop.mail-abuse.org>
|
|
5761 @end smallexample
|
|
5762
|
|
5763 When this option is turned off, if you were to type @kbd{M} in the
|
|
5764 @samp{To:} field and then @kbd{M-@key{TAB}}, then you'd get the list;
|
|
5765 if you started with @kbd{m} and then entered @kbd{M-@key{TAB}}, then
|
|
5766 you'd get Mark's address. Note that this option affects completion
|
|
5767 only. If you were to enter @kbd{Mark.Baushke}, it would still be
|
|
5768 identified with your @samp{mark.baushke} alias.
|
|
5769
|
|
5770 @findex mh-alias-minibuffer-confirm-address
|
|
5771 @findex mh-letter-confirm-address
|
|
5772 @vindex mh-alias-flash-on-comma
|
|
5773 @vindex mh-compose-prompt-flag
|
|
5774
|
|
5775 To verify that the alias you've entered is valid, the alias will be
|
|
5776 displayed in the minibuffer when you type a comma
|
|
5777 (@code{mh-letter-confirm-address} or
|
|
5778 @code{mh-alias-minibuffer-confirm-address} if the option
|
|
5779 @code{mh-compose-prompt-flag} is turned on). @xref{Composing}. This
|
|
5780 behavior can be controlled with the option
|
|
5781 @code{mh-alias-flash-on-comma} which provides three choices:
|
|
5782 @samp{Flash but Don't Warn If No Alias}, @samp{Flash and Warn If No
|
|
5783 Alias}, and @samp{Don't Flash Nor Warn If No Alias}.
|
|
5784
|
|
5785 For another way to verify the alias expansion, see @ref{Checking
|
|
5786 Recipients}.
|
|
5787
|
|
5788 @subheading Loading Aliases
|
|
5789
|
|
5790 @cindex @command{ali}
|
|
5791 @cindex @file{/etc/nmh/MailAliases}
|
|
5792 @cindex @samp{Aliasfile:} MH profile component
|
|
5793 @cindex MH commands, @command{ali}
|
|
5794 @cindex MH profile component, @samp{Aliasfile:}
|
|
5795 @cindex files, @file{/etc/nmh/MailAliases}
|
|
5796
|
|
5797 MH-E loads aliases for completion and folder name hints from various
|
|
5798 places. It uses the MH command @command{ali}@footnote{See the section
|
|
5799 @uref{@value{MH-BOOK-HOME}/mh.html, MH Aliases} in the MH book.} to
|
|
5800 read aliases from the files listed in the profile component
|
|
5801 @samp{Aliasfile:} as well as system-wide aliases (for example,
|
|
5802 @file{/etc/nmh/MailAliases}).
|
|
5803
|
|
5804 @cindex @file{/etc/passwd}
|
|
5805 @cindex files, @file{/etc/passwd}
|
|
5806
|
|
5807 In addition, aliases are created from @file{/etc/passwd} entries with
|
|
5808 a user ID larger than a magical number, typically 200. This can be a
|
|
5809 handy tool on a machine where you and co-workers exchange messages.
|
|
5810 These aliases have the form @samp{local.@var{first.last}} if a real
|
|
5811 name is present in the password file. Otherwise, the alias will have
|
|
5812 the form @samp{local.@var{login}}.
|
|
5813
|
|
5814 @vindex mh-alias-local-users-prefix
|
|
5815
|
|
5816 The prefix @samp{local.} can be modified via the option
|
|
5817 @code{mh-alias-local-users-prefix}. This option can also be set to
|
|
5818 @samp{Use Login}.
|
|
5819
|
|
5820 For example, consider the following password file entry:
|
|
5821
|
|
5822 @smallexample
|
|
5823 psg:x:1000:1000:Peter S Galbraith,,,:/home/psg:/bin/tcsh
|
|
5824 @end smallexample
|
|
5825
|
|
5826 @vindex mh-alias-local-users-prefix
|
|
5827
|
|
5828 The following settings of option @code{mh-alias-local-users-prefix}
|
|
5829 will produce the associated aliases:
|
|
5830
|
|
5831 @table @code
|
|
5832 @item "local."
|
|
5833 local.peter.galbraith
|
|
5834 @c -------------------------
|
|
5835 @item ""
|
|
5836 peter.galbraith
|
|
5837 @c -------------------------
|
|
5838 @item Use Login
|
|
5839 psg
|
|
5840 @end table
|
|
5841
|
|
5842 @vindex mh-alias-passwd-gecos-comma-separator-flag
|
|
5843
|
|
5844 In the example above, commas are used to separate different values
|
|
5845 within the so-called GECOS field. This is a fairly common usage.
|
|
5846 However, in the rare case that the GECOS field in your password file
|
|
5847 is not separated by commas and whose contents may contain commas, you
|
|
5848 can turn the option @code{mh-alias-passwd-gecos-comma-separator-flag}
|
|
5849 off.
|
|
5850
|
|
5851 @cindex NIS, obtaining local aliases from
|
|
5852 @cindex @samp{ypcat passwd}
|
|
5853 @vindex mh-alias-local-users
|
|
5854
|
|
5855 If you're on a system with thousands of users you don't know, and the
|
|
5856 loading of local aliases slows MH-E down noticeably, then the local
|
|
5857 alias feature can be disabled by turning off the option
|
|
5858 @code{mh-alias-local-users}. This option also takes a string which is
|
|
5859 executed to generate the password file. For example, use @samp{ypcat
|
|
5860 passwd} to obtain the NIS password file.
|
|
5861
|
|
5862 @findex mh-alias-reload
|
|
5863 @kindex M-x mh-alias-reload
|
|
5864 @vindex mh-alias-reloaded-hook
|
|
5865
|
|
5866 Since aliases are updated frequently, MH-E reloads aliases
|
|
5867 automatically whenever an alias lookup occurs if an alias source has
|
|
5868 changed. However, you can reload your aliases manually by calling the
|
|
5869 command @kbd{M-x mh-alias-reload} directly. This command runs
|
|
5870 @code{mh-alias-reloaded-hook} after the aliases have been loaded.
|
|
5871
|
|
5872 @subheading Adding Aliases
|
|
5873
|
|
5874 In the past, you have manually added aliases to your alias file(s)
|
|
5875 listed in your @samp{Aliasfile:} profile component. MH-E provides
|
|
5876 other methods for maintaining your alias file(s).
|
|
5877
|
|
5878 @findex mh-alias-add-alias
|
|
5879 @kindex M-x mh-alias-add-alias
|
|
5880
|
|
5881 You can use the @kbd{M-x mh-alias-add-alias} command which will prompt
|
|
5882 you for the alias and address that you would like to add. If the alias
|
|
5883 exists already, you will have the choice of inserting the new alias
|
|
5884 before or after the old alias. In the former case, this alias will be
|
|
5885 used when sending mail to this alias. In the latter case, the alias
|
|
5886 serves as an additional folder name hint when filing messages
|
|
5887 (@pxref{Folder Selection}).
|
|
5888
|
|
5889 Earlier, the alias prefix @samp{local} was presented. You can use
|
|
5890 other prefixes to organize your aliases or disambiguate entries. You
|
|
5891 might use prefixes for locales, jobs, or activities. For example, I
|
|
5892 have:
|
|
5893
|
|
5894 @smallexample
|
|
5895 @group
|
|
5896 ; Work
|
|
5897 attensity.don.mitchell: Don Mitchell <dmitchell@@stop.mail-abuse.com>
|
|
5898 isharp.don.mitchell: Don Mitchell <donaldsmitchell@@stop.mail-abuse.com>
|
|
5899 ...
|
|
5900 ; Sport
|
|
5901 diving.ken.mayer: Ken Mayer <kmayer@@stop.mail-abuse.com>
|
|
5902 sailing.mike.maloney: Mike Maloney <mmaloney@@stop.mail-abuse.com>
|
|
5903 ...
|
|
5904 ; Personal
|
|
5905 ariane.kolkmann: Ariane Kolkmann <ArianeKolkmann@@stop.mail-abuse.com>
|
|
5906 ...
|
|
5907 @end group
|
|
5908 @end smallexample
|
|
5909
|
|
5910 Using prefixes instead of postfixes helps you explore aliases during
|
|
5911 completion. If you forget the name of an old dive buddy, you can enter
|
|
5912 @samp{div} and then @key{SPC} to get a listing of all your dive buddies.
|
|
5913
|
|
5914 @kindex M-x mh-alias-add-address-under-point
|
|
5915 @kindex M-x mh-alias-grab-from-field
|
|
5916
|
|
5917 An alias for the sender of the current message is added automatically
|
|
5918 by clicking on the @samp{Grab From alias} tool bar button or by running
|
|
5919 the @kbd{M-x mh-alias-grab-from-field} command. Aliases for other
|
|
5920 recipients of the current message are added by placing your cursor
|
|
5921 over the desired recipient and giving the @kbd{M-x
|
|
5922 mh-alias-add-address-under-point} command.
|
|
5923
|
|
5924 @vindex mh-alias-insert-file
|
|
5925 @vindex mh-alias-insertion-location
|
|
5926
|
|
5927 The options @code{mh-alias-insert-file} and
|
|
5928 @code{mh-alias-insertion-location} controls how and where these aliases
|
|
5929 are inserted.
|
|
5930
|
|
5931 @vindex mh-alias-insert-file
|
|
5932
|
|
5933 The default setting of option @code{mh-alias-insert-file} is @samp{Use
|
|
5934 Aliasfile Profile Component}. This option can also hold the name of a
|
|
5935 file or a list a file names. If this option is set to a list of file
|
|
5936 names, or the @samp{Aliasfile:} profile component contains more than
|
|
5937 one file name, MH-E will prompt for one of them.
|
|
5938
|
|
5939 @vindex mh-alias-insertion-location
|
|
5940
|
|
5941 The option @code{mh-alias-insertion-location} is set to
|
|
5942 @samp{Alphabetical} by default. If you organize your alias file in
|
|
5943 other ways, then the settings @samp{Top} and @samp{Bottom} might be
|
|
5944 more appropriate.
|
|
5945
|
|
5946 @subheading Querying Aliases
|
|
5947
|
|
5948 @cindex regular expressions, @code{mh-alias-apropos}
|
|
5949 @findex mh-alias-apropos
|
|
5950 @kindex M-x mh-alias-apropos
|
|
5951
|
|
5952 If you can't quite remember an alias, you can use @kbd{M-x
|
|
5953 mh-alias-apropos} to show all aliases or addresses that match a
|
|
5954 regular expression
|
|
5955 @ifnothtml
|
|
5956 (@pxref{Regexps, , Syntax of Regular Expressions, emacs, The
|
|
5957 GNU Emacs Manual}).
|
|
5958 @end ifnothtml
|
|
5959 @ifhtml
|
|
5960 (see the section
|
|
5961 @uref{http://www.gnu.org/software/emacs/manual/html_node/Regexps.html,
|
|
5962 Syntax of Regular Expressions} in
|
|
5963 @cite{The GNU Emacs Manual}).
|
|
5964 @end ifhtml
|
|
5965
|
|
5966 @node Identities, Speedbar, Aliases, Top
|
|
5967 @chapter Identities
|
|
5968
|
|
5969 @cindex identities
|
|
5970 @cindex multiple personalities
|
|
5971
|
|
5972 MH-E supports the concept of multiple personalities or identities.
|
|
5973 This means that you can easily have a different header and signature
|
|
5974 at home and at work.
|
|
5975
|
|
5976 @cindex @samp{Identity} menu
|
|
5977 @cindex menu, @samp{Identity}
|
|
5978
|
|
5979 A couple of commands are used to insert identities in MH-Letter mode
|
|
5980 which are also found in the @samp{Identity} menu.
|
|
5981
|
|
5982 @table @kbd
|
|
5983 @kindex C-c C-d
|
|
5984 @findex mh-insert-identity
|
|
5985 @item C-c C-d
|
|
5986 Insert fields specified by given identity (@code{mh-insert-identity}).
|
|
5987 @c -------------------------
|
|
5988 @cindex @samp{Identity > Insert Auto Fields} menu item
|
|
5989 @cindex menu item, @samp{Identity > Insert Auto Fields}
|
|
5990 @kindex C-c M-d
|
|
5991 @findex mh-insert-auto-fields
|
|
5992 @item C-c M-d
|
|
5993 Insert custom fields if recipient found in @code{mh-auto-fields-list}
|
|
5994 (@code{mh-insert-auto-fields}).
|
|
5995 @end table
|
|
5996
|
|
5997 @cindex @samp{mh-identity} customization group
|
|
5998 @cindex customization group, @samp{mh-identity}
|
|
5999
|
|
6000 The @samp{mh-identity} customization group contains the following
|
|
6001 options.
|
|
6002
|
|
6003 @vtable @code
|
|
6004 @item mh-auto-fields-list
|
|
6005 List of recipients for which header lines are automatically inserted
|
|
6006 (default: @code{nil}).
|
|
6007 @c -------------------------
|
|
6008 @item mh-auto-fields-prompt-flag
|
|
6009 On means to prompt before sending if fields inserted (default:
|
|
6010 @samp{on})
|
|
6011 @c -------------------------
|
|
6012 @item mh-identity-default
|
|
6013 Default identity to use when @code{mh-letter-mode} is called (default:
|
|
6014 @samp{None}).
|
|
6015 @c -------------------------
|
|
6016 @item mh-identity-handlers
|
|
6017 Handler functions for fields in @code{mh-identity-list}.
|
|
6018 @c -------------------------
|
|
6019 @item mh-identity-list
|
|
6020 List of identities (default: @code{nil}).
|
|
6021 @end vtable
|
|
6022
|
|
6023 Some of the common header fields that people change depending on the
|
|
6024 context are the @samp{From:} and @samp{Organization:} fields, as well
|
|
6025 as the signature.
|
|
6026
|
|
6027 @vindex mh-identity-list
|
|
6028
|
|
6029 This is done by customizing the option @code{mh-identity-list}. In the
|
|
6030 customization buffer for this option, click on the @samp{INS} button
|
|
6031 and enter a label such as @samp{Home} or @samp{Work}. Then click on
|
|
6032 the @samp{INS} button with the label @samp{Add at least one item
|
|
6033 below}. The @samp{Value Menu} has the following menu items:
|
|
6034
|
|
6035 @table @samp
|
|
6036 @cindex header field, @samp{From:}
|
|
6037 @cindex @samp{From:} header field
|
|
6038 @item From Field
|
|
6039 Specify an alternate @samp{From:} header field. You must include a
|
|
6040 valid email address. A standard format is @samp{First Last
|
|
6041 <login@@host.domain>}. If you use an initial with a period, then you
|
|
6042 must quote your name as in @samp{"First I. Last"
|
|
6043 <login@@host.domain>}.
|
|
6044 @c -------------------------
|
|
6045 @cindex header field, @samp{Organization:}
|
|
6046 @cindex @samp{Organization:} header field
|
|
6047 @item Organization Field
|
|
6048 People usually list the name of the company where they work here.
|
|
6049 @c -------------------------
|
|
6050 @item Other Field
|
|
6051 Set any arbitrary header field and value here. Unless the header field
|
|
6052 is a standard one, precede the name of your field's label with
|
|
6053 @samp{X-}, as in @samp{X-Fruit-of-the-Day:}.
|
|
6054 @c -------------------------
|
|
6055 @item Attribution Verb
|
|
6056 This value overrides the setting of
|
|
6057 @code{mh-extract-from-attribution-verb}. @xref{Inserting Letter}.
|
|
6058 @c -------------------------
|
|
6059 @cindex signature
|
|
6060 @vindex mh-signature-file-name
|
|
6061 @item Signature
|
|
6062 Set your signature with this item. You can specify the contents of
|
|
6063 @code{mh-signature-file-name}, a file, or a function.
|
|
6064 @xref{Signature}.
|
|
6065 @c -------------------------
|
|
6066 @item GPG Key ID
|
|
6067 Specify a different key to sign or encrypt messages.
|
|
6068 @end table
|
|
6069
|
|
6070 @cindex Identity menu
|
|
6071 @cindex menu, Identity
|
|
6072 @findex mh-insert-identity
|
|
6073 @kindex C-c C-d
|
|
6074
|
|
6075 You can select the identities you have added via the menu called
|
|
6076 @samp{Identity} in the MH-Letter buffer. You can also use @kbd{C-c
|
|
6077 C-d} (@code{mh-insert-identity}). To clear the fields and signature
|
|
6078 added by the identity, select the @samp{None} identity.
|
|
6079
|
|
6080 @cindex menu item, @samp{Identity > Customize Identities}
|
|
6081 @cindex menu item, @samp{Identity > Save as Default}
|
|
6082 @cindex menu item, @samp{Identity > Set Default for Session}
|
|
6083 @cindex @samp{Identity > Customize Identities} menu item
|
|
6084 @cindex @samp{Identity > Save as Default} menu item
|
|
6085 @cindex @samp{Identity > Set Default for Session} menu item
|
|
6086 @vindex mh-identity-default
|
|
6087
|
|
6088 The @samp{Identity} menu contains two other items to save you from
|
|
6089 having to set the identity on every message. The menu item @samp{Set
|
|
6090 Default for Session} can be used to set the default identity to the
|
|
6091 current identity until you exit Emacs. The menu item @samp{Save as
|
|
6092 Default} sets the option @code{mh-identity-default} to the current
|
|
6093 identity setting. You can also customize the option
|
|
6094 @code{mh-identity-default} in the usual fashion. If you find that you
|
|
6095 need to add another identity, the menu item @samp{Customize
|
|
6096 Identities} is available for your convenience.
|
|
6097
|
|
6098 @cindex regular expressions, @code{mh-auto-fields-list}
|
|
6099 @vindex mh-auto-fields-list
|
|
6100
|
|
6101 The option @code{mh-auto-fields-list} can also be used to set the
|
|
6102 identity depending on the recipient to provide even more control. To
|
|
6103 customize @code{mh-auto-fields-list}, click on the @samp{INS} button
|
|
6104 and enter a regular expression for the recipient's address
|
|
6105 @ifnothtml
|
|
6106 (@pxref{Regexps, , Syntax of Regular Expressions, emacs, The
|
|
6107 GNU Emacs Manual}).
|
|
6108 @end ifnothtml
|
|
6109 @ifhtml
|
|
6110 (see the section
|
|
6111 @uref{http://www.gnu.org/software/emacs/manual/html_node/Regexps.html,
|
|
6112 Syntax of Regular Expressions} in
|
|
6113 @cite{The GNU Emacs Manual}).
|
|
6114 @end ifhtml
|
|
6115 Click on the @samp{INS} button with the @samp{Add at least one item
|
|
6116 below} label. The @samp{Value Menu} contains the following menu items:
|
|
6117
|
|
6118 @table @samp
|
|
6119 @item Identity
|
|
6120 Select an identity from those configured in @code{mh-identity-list}.
|
|
6121 All of the information for that identity will be added if the
|
|
6122 recipient matches.
|
|
6123 @c -------------------------
|
|
6124 @cindex @samp{Fcc:} header field
|
|
6125 @cindex header field, @samp{Fcc:}
|
|
6126 @item Fcc Field
|
|
6127 Insert an @samp{Fcc:} header field with the folder you provide. When
|
|
6128 you send the message, MH will put a copy of your message in this
|
|
6129 folder.
|
|
6130 @c -------------------------
|
|
6131 @cindex @samp{Mail-Followup-To:} header field
|
|
6132 @cindex header field, @samp{Mail-Followup-To:}
|
|
6133 @item Mail-Followup-To Field
|
|
6134 Insert an @samp{Mail-Followup-To:} header field with the recipients
|
|
6135 you provide. If the recipient's mail user agent supports this header
|
|
6136 field@footnote{@samp{Mail-Followup-To:} is supported by nmh.}, then
|
|
6137 their replies will go to the addresses listed. This is useful if their
|
|
6138 replies go both to the list and to you and you don't have a mechanism
|
|
6139 to suppress duplicates. If you reply to someone not on the list, you
|
|
6140 must either remove the @samp{Mail-Followup-To:} field, or ensure the
|
|
6141 recipient is also listed there so that he receives replies to your
|
|
6142 reply.
|
|
6143 @c -------------------------
|
|
6144 @item Other Field
|
|
6145 Other header fields may be added using this menu item.
|
|
6146 @end table
|
|
6147
|
|
6148 @findex mh-insert-auto-fields
|
|
6149 @kindex C-c M-d
|
|
6150 @vindex mh-auto-fields-prompt-flag
|
|
6151
|
|
6152 These fields can only be added after the recipient is known. Because
|
|
6153 you can continue to add recipients as you edit the draft, MH-E waits
|
|
6154 until the message is sent to perform the auto-insertions. This seems
|
|
6155 strange at first, but you'll get used to it. There are two ways to
|
|
6156 help you feel that the desired fields are added. The first is the
|
|
6157 action when the message is sent: if any fields are added
|
|
6158 automatically, you are given a chance to see and to confirm these
|
|
6159 fields before the message is actually sent. You can do away with this
|
|
6160 confirmation by turning off the option
|
|
6161 @code{mh-auto-fields-prompt-flag}. The second method is manual: once
|
|
6162 the header contains one or more recipients, you may run the command
|
|
6163 @kbd{C-c M-d} (@code{mh-insert-auto-fields}) or choose the
|
|
6164 @samp{Identity -> Insert Auto Fields} menu item to insert these fields
|
|
6165 manually. However, if you use this command, the automatic insertion
|
|
6166 when the message is sent is disabled.
|
|
6167
|
|
6168 @vindex mh-auto-fields-list
|
|
6169 @vindex mh-identity-list
|
|
6170
|
|
6171 You should avoid using the same header field in
|
|
6172 @code{mh-auto-fields-list} and @code{mh-identity-list} definitions
|
|
6173 that may apply to the same message as the result is undefined.
|
|
6174
|
|
6175 @vindex mh-identity-handlers
|
|
6176 @vindex mh-identity-list
|
|
6177
|
|
6178 The option @code{mh-identity-handlers} is used to change the way that
|
|
6179 fields, signatures, and attributions in @code{mh-identity-list} are
|
|
6180 added. To customize @code{mh-identity-handlers}, replace the name of
|
|
6181 an existing handler function associated with the field you want to
|
|
6182 change with the name of a function you have written. You can also
|
|
6183 click on an @samp{INS} button and insert a field of your choice and
|
|
6184 the name of the function you have written to handle it.
|
|
6185
|
|
6186 @vindex mh-identity-list
|
|
6187
|
|
6188 The @samp{Field} field can be any field that you've used in your
|
|
6189 @code{mh-identity-list}. The special fields @samp{:attribution-verb},
|
|
6190 @samp{:signature}, or @samp{:pgg-default-user-id} are used for the
|
|
6191 @code{mh-identity-list} choices @samp{Attribution Verb},
|
|
6192 @samp{Signature}, and @samp{GPG Key ID} respectively.
|
|
6193
|
|
6194 The handler associated with the @samp{:default} field is used when no
|
|
6195 other field matches.
|
|
6196
|
|
6197 The handler functions are passed two or three arguments: the field
|
|
6198 itself (for example, @samp{From}), or one of the special fields (for
|
|
6199 example, @samp{:signature}), and the action @samp{'remove} or
|
|
6200 @samp{'add}. If the action is @samp{'add}, an additional argument
|
|
6201 containing the value for the field is given.
|
|
6202
|
|
6203 @node Speedbar, Menu Bar, Identities, Top
|
|
6204 @chapter The Speedbar
|
|
6205
|
|
6206 @cindex folder navigation
|
|
6207 @cindex speedbar
|
|
6208 @findex mh-visit-folder
|
|
6209 @kindex F v
|
|
6210 @kindex M-x speedbar
|
|
6211 @kindex Mouse-2
|
|
6212
|
|
6213 You can also use the speedbar
|
|
6214 @ifnothtml
|
|
6215 (@pxref{Speedbar, , Speedbar Frames, emacs, The GNU Emacs Manual},)
|
|
6216 @end ifnothtml
|
|
6217 @ifhtml
|
|
6218 (see the section
|
|
6219 @uref{http://www.gnu.org/software/emacs/manual/html_node/Speedbar.html,
|
|
6220 Speedbar Frames} in @cite{The GNU Emacs Manual})
|
|
6221 @end ifhtml
|
|
6222 to view your folders. To bring up the speedbar, run @kbd{M-x speedbar
|
|
6223 @key{RET}}. You will see a new frame appear with all of your MH
|
|
6224 folders. Folders with unseen messages appear in boldface. Click on a
|
|
6225 folder name with @kbd{Mouse-2} to visit that folder in a similar
|
|
6226 fashion to the command @kbd{F v} (@code{mh-visit-folder})
|
|
6227 (@pxref{Folders}). Click on the @samp{+} icon to expand and view the
|
|
6228 sub-folders of that folder.
|
|
6229
|
|
6230 The speedbar can be manipulated with the keyboard as well. Use the
|
|
6231 Emacs navigational keys (like the arrow keys, or @kbd{C-n}) to move
|
|
6232 the cursor over the desired folder and then use the shortcuts for the
|
|
6233 menu items listed in the table below.
|
|
6234
|
|
6235 @table @samp
|
|
6236 @findex mh-speed-view
|
|
6237 @item Visit Folder (@key{RET})
|
|
6238 Visits the selected folder just as if you had used @kbd{F v}
|
|
6239 (@code{mh-speed-view}).
|
|
6240 @c -------------------------
|
|
6241 @findex mh-speed-expand-folder
|
|
6242 @item Expand Nested Folders (@kbd{+})
|
|
6243 Expands the selected folder in the speedbar, exposing the children
|
|
6244 folders inside it (@code{mh-speed-expand-folder}).
|
|
6245 @c -------------------------
|
|
6246 @findex mh-speed-contract-folder
|
|
6247 @item Contract Nested Folders (@kbd{-})
|
|
6248 Contracts or collapses the selected folder in the speedbar, hiding the
|
|
6249 children folders inside it (@code{mh-speed-contract-folder}).
|
|
6250 @c -------------------------
|
|
6251 @findex mh-speed-refresh
|
|
6252 @item Refresh Speedbar (@kbd{r})
|
|
6253 Regenerates the list of folders in the speedbar. Run this command if
|
|
6254 you've added or deleted a folder, or want to update the unseen message
|
|
6255 count before the next automatic update (@code{mh-speed-refresh}).
|
|
6256 @end table
|
|
6257
|
|
6258 @findex delete-frame
|
|
6259 @kindex C-x 5 0
|
|
6260 @kindex Mouse-3
|
|
6261
|
|
6262 You can click on @kbd{Mouse-3} to bring up a context menu that
|
|
6263 contains these items. Dismiss the speedbar with @kbd{C-x 5 0}
|
|
6264 (@code{delete-frame}).
|
|
6265
|
|
6266 @cindex @command{flists}
|
|
6267 @cindex MH commands, @command{flists}
|
|
6268 @cindex @samp{mh-speedbar} customization group
|
|
6269 @cindex customization group, @samp{mh-speedbar}
|
|
6270
|
|
6271 The MH-E speedbar uses the MH command @command{flists}@footnote{See
|
|
6272 the section @uref{@value{MH-BOOK-HOME}/morseq.html#flist, Searching for
|
|
6273 Sequences with flist} in the MH book.} to generate the list of
|
|
6274 folders. The @samp{mh-speedbar} customization group contains the
|
|
6275 following option which controls how often the speedbar calls
|
|
6276 @command{flists}.
|
|
6277
|
|
6278 @vtable @code
|
|
6279 @item mh-speed-update-interval
|
|
6280 Time between speedbar updates in seconds (default: 60). Set to 0 to
|
|
6281 disable automatic update.
|
|
6282 @end vtable
|
|
6283
|
|
6284 You can modify the appearance of the folders in the speedbar by
|
|
6285 customizing the following faces.
|
|
6286
|
|
6287 @vtable @code
|
|
6288 @item mh-speedbar-folder
|
|
6289 Basic folder face.
|
|
6290 @c -------------------------
|
|
6291 @item mh-speedbar-folder-with-unseen-messages
|
|
6292 Folder face when folder contains unread messages.
|
|
6293 @c -------------------------
|
|
6294 @item mh-speedbar-selected-folder
|
|
6295 Selected folder face.
|
|
6296 @c -------------------------
|
|
6297 @item mh-speedbar-selected-folder-with-unseen-messages
|
|
6298 Selected folder face when folder contains unread messages.
|
|
6299 @end vtable
|
|
6300
|
|
6301 @node Menu Bar, Tool Bar, Speedbar, Top
|
|
6302 @chapter The Menu Bar
|
|
6303
|
|
6304 @cindex @samp{Folder} menu
|
|
6305 @cindex @samp{Identity} menu
|
|
6306 @cindex @samp{Letter} menu
|
|
6307 @cindex @samp{Message} menu
|
|
6308 @cindex @samp{Search} menu
|
|
6309 @cindex @samp{Sequence} menu
|
|
6310 @cindex Folder menu
|
|
6311 @cindex Identity menu
|
|
6312 @cindex Letter menu
|
|
6313 @cindex MH-Folder mode
|
|
6314 @cindex MH-Letter mode
|
|
6315 @cindex MH-Search mode
|
|
6316 @cindex Message menu
|
|
6317 @cindex Search menu
|
|
6318 @cindex Sequence menu
|
|
6319 @cindex menu bar
|
|
6320 @cindex menu, Folder
|
|
6321 @cindex menu, Identity
|
|
6322 @cindex menu, Letter
|
|
6323 @cindex menu, Message
|
|
6324 @cindex menu, Search
|
|
6325 @cindex menu, Sequence
|
|
6326 @cindex menu, @samp{Folder}
|
|
6327 @cindex menu, @samp{Identity}
|
|
6328 @cindex menu, @samp{Letter}
|
|
6329 @cindex menu, @samp{Message}
|
|
6330 @cindex menu, @samp{Search}
|
|
6331 @cindex menu, @samp{Sequence}
|
|
6332 @cindex modes, MH-Folder
|
|
6333 @cindex modes, MH-Letter
|
|
6334 @cindex modes, MH-Search
|
|
6335
|
|
6336 For those of you who prefer to mouse and menu instead of using the
|
|
6337 meta-coke-bottle-bucky keys, MH-E provides menu items for most of its
|
|
6338 functions. The MH-Folder buffer adds the @samp{Folder},
|
|
6339 @samp{Message}, and @samp{Sequence} menus. The MH-Letter buffer adds
|
|
6340 the @samp{Identity} and @samp{Letter} menus. The MH-Search buffer adds
|
|
6341 the @samp{Search} menu. There's no need to list the actual items here,
|
|
6342 as you can more easily see them for yourself, and the functions are
|
|
6343 already described elsewhere in this manual.
|
|
6344
|
|
6345 For a description of the menu bar, please
|
|
6346 @ifnothtml
|
|
6347 @xref{Menu Bar, , The Menu Bar, emacs, The GNU Emacs Manual}.
|
|
6348 @end ifnothtml
|
|
6349 @ifhtml
|
|
6350 see the section
|
|
6351 @uref{http://www.gnu.org/software/emacs/manual/html_node/Menu-Bar.html,
|
|
6352 The Menu Bar} in @cite{The GNU Emacs Manual}.
|
|
6353 @end ifhtml
|
|
6354
|
|
6355 The Emacs manual describes how to get online help for a particular
|
|
6356 menu item. You can also look up a menu item in the index of this
|
|
6357 manual in two ways: all of the menu items are listed alphabetically,
|
|
6358 and you can also browse all of the items under the index entry
|
|
6359 @samp{menu item}.
|
|
6360
|
|
6361 @node Tool Bar, Searching, Menu Bar, Top
|
|
6362 @chapter The Tool Bar
|
|
6363
|
|
6364 @cindex tool bar
|
|
6365
|
|
6366 Emacs also provides a graphical tool bar. For a description of the
|
|
6367 tool bar, please
|
|
6368 @ifnothtml
|
|
6369 @xref{Tool Bars, , Tool Bars, emacs, The GNU Emacs Manual}.
|
|
6370 @end ifnothtml
|
|
6371 @ifhtml
|
|
6372 see the section
|
|
6373 @uref{http://www.gnu.org/software/emacs/manual/html_node/Tool-Bars.html,
|
|
6374 Tool Bars} in @cite{The GNU Emacs Manual}.
|
|
6375 @end ifhtml
|
|
6376
|
|
6377 @cindex @samp{mh-tool-bar} customization group
|
|
6378 @cindex customization group, @samp{mh-tool-bar}
|
|
6379
|
|
6380 MH-E adds several icons to this tool bar; you can modify the MH-E
|
|
6381 aspects of the tool bar via the @samp{mh-tool-bar} customization group.
|
|
6382
|
|
6383 @vtable @code
|
|
6384 @item mh-tool-bar-folder-buttons
|
|
6385 List of buttons to include in MH-Folder tool bar (default: a checklist
|
|
6386 too long to list here).
|
|
6387 @c -------------------------
|
|
6388 @item mh-tool-bar-letter-buttons
|
|
6389 List of buttons to include in MH-Letter tool bar (default: a checklist
|
|
6390 too long to list here).
|
|
6391 @c -------------------------
|
|
6392 @item mh-tool-bar-search-function
|
|
6393 Function called by the tool bar search button (default:
|
|
6394 @code{mh-search}).
|
|
6395 @c -------------------------
|
|
6396 @item mh-xemacs-tool-bar-position
|
|
6397 Tool bar location (default: @samp{Same As Default Tool Bar}).
|
|
6398 @c -------------------------
|
|
6399 @item mh-xemacs-use-tool-bar-flag
|
|
6400 If @samp{on}, use tool bar (default: @samp{on}, if supported).
|
|
6401 @end vtable
|
|
6402
|
|
6403 In GNU Emacs, icons for some of MH-E's functions are added to the tool
|
|
6404 bar. In XEmacs, you have the opportunity to create a separate tool bar for
|
|
6405 the MH-E icons.
|
|
6406
|
|
6407 @vindex mh-tool-bar-folder-buttons
|
|
6408 @vindex mh-tool-bar-letter-buttons
|
|
6409
|
|
6410 In either case, you can select which of these functions you'd like to
|
|
6411 see by customizing the options @code{mh-tool-bar-folder-buttons} and
|
|
6412 @code{mh-tool-bar-letter-buttons}. As you probably guessed, the former
|
|
6413 customizes the tool bar in MH-Folder mode and the latter in MH-Letter
|
|
6414 mode. Both of these options present you with a list of functions;
|
|
6415 check the functions whose icons you want to see and clear the check
|
|
6416 boxes for those you don't.
|
|
6417
|
|
6418 @findex mh-search
|
|
6419 @vindex mh-tool-bar-search-function
|
|
6420
|
|
6421 The function associated with the searching icon can be set via the
|
|
6422 option @code{mh-tool-bar-search-function}. By default, this is set to
|
|
6423 @code{mh-search}. @xref{Searching}. You can also choose @samp{Other
|
|
6424 Function} from the @samp{Value Menu} and enter a function of your own
|
|
6425 choosing.
|
|
6426
|
|
6427 @vindex mh-xemacs-use-tool-bar-flag
|
|
6428
|
|
6429 XEmacs provides a couple of extra options. The first,
|
|
6430 @code{mh-xemacs-use-tool-bar-flag}, controls whether to show the MH-E
|
|
6431 icons at all. By default, this option is turned on if the window
|
|
6432 system supports tool bars. If your system doesn't support tool bars,
|
|
6433 then you won't be able to turn on this option.
|
|
6434
|
|
6435 @vindex mh-xemacs-tool-bar-position
|
|
6436
|
|
6437 The second extra option is @code{mh-xemacs-tool-bar-position} which
|
|
6438 controls the placement of the tool bar along the four edges of the
|
|
6439 frame. You can choose from one of @samp{Same As Default Tool Bar},
|
|
6440 @samp{Top}, @samp{Bottom}, @samp{Left}, or @samp{Right}. If this
|
|
6441 variable is set to anything other than @samp{Same As Default Tool Bar}
|
|
6442 and the default tool bar is in a different location, then two tool
|
|
6443 bars will be displayed: the MH-E tool bar and the default tool bar.
|
|
6444
|
|
6445 @node Searching, Threading, Tool Bar, Top
|
|
6446 @chapter Searching Through Messages
|
|
6447
|
|
6448 @cindex @samp{Search} menu
|
|
6449 @cindex menu, @samp{Search}
|
|
6450 @cindex searching
|
|
6451 @findex mh-search
|
|
6452 @kindex F s
|
|
6453
|
|
6454 Earlier, the command @kbd{F s} (@code{mh-search}) was introduced which
|
|
6455 helps you find messages that lie buried in your folders
|
|
6456 (@pxref{Folders}). This chapter covers this command in more detail.
|
|
6457 Several commands are used to compose the search criteria and to start
|
|
6458 searching. A couple of them can be found in the @samp{Search} menu.
|
|
6459
|
|
6460 @table @kbd
|
|
6461 @kindex C-c ?
|
|
6462 @findex mh-help
|
|
6463 @item C-c ?
|
|
6464 Display cheat sheet for the MH-E commands (@code{mh-help}).
|
|
6465 @c -------------------------
|
|
6466 @cindex @samp{Search > Perform Search} menu item
|
|
6467 @cindex menu item, @samp{Search > Perform Search}
|
|
6468 @kindex C-c C-c
|
|
6469 @findex mh-index-do-search
|
|
6470 @item C-c C-c
|
|
6471 Find messages using @code{mh-search-program}
|
|
6472 (@code{mh-index-do-search}).
|
|
6473 @c -------------------------
|
|
6474 @cindex @samp{Search > Search with pick} menu item
|
|
6475 @cindex menu item, @samp{Search > Search with pick}
|
|
6476 @kindex C-c C-p
|
|
6477 @findex mh-pick-do-search
|
|
6478 @item C-c C-p
|
|
6479 Find messages using @command{pick} (@code{mh-pick-do-search}).
|
|
6480 @c -------------------------
|
|
6481 @kindex C-c ?
|
|
6482 @findex mh-help
|
|
6483 @item C-c ?
|
|
6484 Display cheat sheet for the MH-E commands (@code{mh-help}).
|
|
6485 @c -------------------------
|
|
6486 @kindex C-c C-f C-a
|
|
6487 @kindex C-c C-f a
|
|
6488 @findex mh-to-field
|
|
6489 @item C-c C-f a
|
|
6490 @itemx C-c C-f C-a
|
|
6491 Move to @samp{Mail-Reply-To:} header field (@code{mh-to-field}).
|
|
6492 @c -------------------------
|
|
6493 @kindex C-c C-f C-b
|
|
6494 @kindex C-c C-f b
|
|
6495 @item C-c C-f b
|
|
6496 @itemx C-c C-f C-b
|
|
6497 Move to @samp{Bcc:} header field (@code{mh-to-field}).
|
|
6498 @c -------------------------
|
|
6499 @kindex C-c C-f C-c
|
|
6500 @kindex C-c C-f c
|
|
6501 @item C-c C-f c
|
|
6502 @itemx C-c C-f C-c
|
|
6503 Move to @samp{Cc:} header field (@code{mh-to-field}).
|
|
6504 @c -------------------------
|
|
6505 @kindex C-c C-f C-d
|
|
6506 @kindex C-c C-f d
|
|
6507 @item C-c C-f d
|
|
6508 @itemx C-c C-f C-d
|
|
6509 Move to @samp{Dcc:} header field (@code{mh-to-field}).
|
|
6510 @c -------------------------
|
|
6511 @kindex C-c C-f C-f
|
|
6512 @kindex C-c C-f f
|
|
6513 @item C-c C-f f
|
|
6514 @itemx C-c C-f C-f
|
|
6515 Move to @samp{Fcc:} header field (@code{mh-to-field}).
|
|
6516 @c -------------------------
|
|
6517 @kindex C-c C-f C-l
|
|
6518 @kindex C-c C-f l
|
|
6519 @item C-c C-f l
|
|
6520 @itemx C-c C-f C-l
|
|
6521 Move to @samp{Mail-Followup-To:} header field (@code{mh-to-field}).
|
|
6522 @c -------------------------
|
|
6523 @kindex C-c C-f C-m
|
|
6524 @kindex C-c C-f m
|
|
6525 @item C-c C-f m
|
|
6526 @itemx C-c C-f C-m
|
|
6527 Move to @samp{From:} header field (@code{mh-to-field}).
|
|
6528 @c -------------------------
|
|
6529 @kindex C-c C-f C-r
|
|
6530 @kindex C-c C-f r
|
|
6531 @item C-c C-f r
|
|
6532 @itemx C-c C-f C-r
|
|
6533 Move to @samp{Reply-To:} header field (@code{mh-to-field}).
|
|
6534 @c -------------------------
|
|
6535 @kindex C-c C-f C-s
|
|
6536 @kindex C-c C-f s
|
|
6537 @item C-c C-f s
|
|
6538 @itemx C-c C-f C-s
|
|
6539 Move to @samp{Subject:} header field (@code{mh-to-field}).
|
|
6540 @c -------------------------
|
|
6541 @kindex C-c C-f C-t
|
|
6542 @kindex C-c C-f t
|
|
6543 @item C-c C-f t
|
|
6544 @itemx C-c C-f C-t
|
|
6545 Move to @samp{To:} header field (@code{mh-to-field}).
|
|
6546 @end table
|
|
6547
|
|
6548 Another few commands are available in the MH-Folder buffer resulting
|
|
6549 from a search.
|
|
6550
|
|
6551 @table @kbd
|
|
6552 @kindex @key{TAB}
|
|
6553 @findex mh-index-next-folder
|
|
6554 @item @key{TAB}
|
|
6555 Jump to the next folder marker (@code{mh-index-next-folder}).
|
|
6556 @c -------------------------
|
|
6557 @kindex S-@key{TAB}
|
|
6558 @findex mh-index-previous-folder
|
|
6559 @item S-@key{TAB}
|
|
6560 Jump to the previous folder marker (@code{mh-index-previous-folder}).
|
|
6561 @c -------------------------
|
|
6562 @kindex v
|
|
6563 @findex mh-index-visit-folder
|
|
6564 @item v
|
|
6565 Visit original folder from where the message at point was found
|
|
6566 (@code{mh-index-visit-folder}).
|
|
6567 @end table
|
|
6568
|
|
6569 @cindex @samp{mh-search} customization group
|
|
6570 @cindex customization group, @samp{mh-search}
|
|
6571
|
|
6572 There is one option from the @samp{mh-search} customization group used
|
|
6573 in searching.
|
|
6574
|
|
6575 @vtable @code
|
|
6576 @item mh-search-program
|
|
6577 Search program that MH-E shall use (default: @samp{Auto-detect}).
|
|
6578 @end vtable
|
|
6579
|
|
6580 The following hook is available.
|
|
6581
|
|
6582 @vtable @code
|
|
6583 @item mh-search-mode-hook
|
|
6584 Hook run upon entry to @code{mh-search-mode} (default: @code{nil}).
|
|
6585 @end vtable
|
|
6586
|
|
6587 The following face is available.
|
|
6588
|
|
6589 @vtable @code
|
|
6590 @item mh-search-folder
|
|
6591 Folder heading face in MH-Folder buffers created by searches.
|
|
6592 @end vtable
|
|
6593
|
|
6594 @findex mh-search-folder
|
|
6595 @kindex F s
|
|
6596
|
|
6597 The command @kbd{F s} (@code{mh-search-folder}) helps you find
|
|
6598 messages in your entire corpus of mail. You can search for messages to
|
|
6599 or from a particular person or about a particular subject. In fact,
|
|
6600 you can also search for messages containing selected strings in any
|
|
6601 arbitrary header field or any string found within the messages.
|
|
6602
|
|
6603 @cindex @command{pick}
|
|
6604 @cindex MH commands, @command{pick}
|
|
6605
|
|
6606 Out of the box, MH-E uses @command{pick} to find messages. With a
|
|
6607 little extra effort, you can set an indexing program which rewards you
|
|
6608 with extremely quick results. The drawback is that sometimes the index
|
|
6609 does not contain the words you're looking for. You can still use
|
|
6610 @command{pick} in these situations.
|
|
6611
|
|
6612 You are prompted for the folder to search. This can be @samp{all} to
|
|
6613 search all folders. Note that the search works recursively on the
|
|
6614 listed folder.
|
|
6615
|
|
6616 @cindex MH-Search mode
|
|
6617 @cindex modes, MH-Search
|
|
6618
|
|
6619 Next, an MH-Search buffer appears where you can enter search criteria.
|
|
6620
|
|
6621 @cartouche
|
|
6622 @smallexample
|
|
6623 From:
|
|
6624 To:
|
|
6625 Cc:
|
|
6626 Date:
|
|
6627 Subject:
|
|
6628 --------
|
|
6629 #
|
|
6630
|
|
6631
|
|
6632
|
|
6633
|
|
6634
|
|
6635
|
|
6636
|
|
6637
|
|
6638 --:** search-pattern All L7 (MH-Search)---------------------------
|
|
6639 Type C-c C-c to search messages, C-c C-p to use pick, C-c ? for help
|
|
6640 @end smallexample
|
|
6641 @end cartouche
|
|
6642 @i{Search window}
|
|
6643
|
|
6644 @cindex @command{pick}
|
|
6645 @cindex MH commands, @command{pick}
|
|
6646
|
|
6647 Edit this template by entering your search criteria in an appropriate
|
|
6648 header field that is already there, or create a new field yourself. If
|
|
6649 the string you're looking for could be anywhere in a message, then
|
|
6650 place the string underneath the row of dashes.
|
|
6651
|
|
6652 As an example, let's say that we want to find messages from Ginnean
|
|
6653 about horseback riding in the Kosciusko National Park (Australia)
|
|
6654 during January, 1994. Normally we would start with a broad search and
|
|
6655 narrow it down if necessary to produce a manageable amount of data,
|
|
6656 but we'll cut to the chase and create a fairly restrictive set of
|
|
6657 criteria as follows:
|
|
6658
|
|
6659 @smallexample
|
|
6660 @group
|
|
6661 From: ginnean
|
|
6662 To:
|
|
6663 Cc:
|
|
6664 Date: Jan 1994
|
|
6665 Subject:
|
|
6666 --------
|
|
6667 horse
|
|
6668 kosciusko
|
|
6669 @end group
|
|
6670 @end smallexample
|
|
6671
|
|
6672 @findex mh-to-field
|
|
6673 @kindex C-c C-f C-t
|
|
6674
|
|
6675 As with MH-Letter mode, MH-Search provides commands like @kbd{C-c C-f
|
|
6676 C-t} (@code{mh-to-field}) to help you fill in the blanks.
|
|
6677 @xref{Editing Message}.
|
|
6678
|
|
6679 @kindex F s
|
|
6680 @vindex mh-search-mode-hook
|
|
6681
|
|
6682 If you find that you do the same thing over and over when editing the
|
|
6683 search template, you may wish to bind some shortcuts to keys. This can
|
|
6684 be done with the variable @code{mh-search-mode-hook}, which is called
|
|
6685 when @kbd{F s} is run on a new pattern.
|
|
6686
|
|
6687 @findex mh-index-do-search
|
|
6688 @findex mh-pick-do-search
|
|
6689 @kindex C-c C-c
|
|
6690 @kindex C-c C-p
|
|
6691
|
|
6692 To perform the search, type @kbd{C-c C-c} (@code{mh-index-do-search}).
|
|
6693 Sometimes you're searching for text that is either not indexed, or
|
|
6694 hasn't been indexed yet. In this case you can override the default
|
|
6695 method with the pick method by running the command @kbd{C-c C-p}
|
|
6696 (@code{mh-pick-do-search}).
|
|
6697
|
|
6698 @cindex folders, @samp{+mhe-index}
|
|
6699 @cindex @samp{+mhe-index}
|
|
6700 @findex mh-index-next-folder
|
|
6701 @findex mh-index-previous-folder
|
|
6702 @kindex @key{TAB}
|
|
6703 @kindex S-@key{TAB}
|
|
6704 @vindex mh-search-folder
|
|
6705
|
|
6706 The messages that are found are put in a temporary sub-folder of
|
|
6707 @samp{+mhe-index} and are displayed in an MH-Folder buffer. This
|
|
6708 buffer is special because it displays messages from multiple folders;
|
|
6709 each set of messages from a given folder has a heading with the folder
|
|
6710 name. The appearance of the heading can be modified by customizing the
|
|
6711 face @code{mh-search-folder}. You can jump back and forth between the
|
|
6712 headings using the commands @kbd{@key{TAB}}
|
|
6713 (@code{mh-index-next-folder}) and @kbd{S-@key{TAB}}
|
|
6714 (@code{mh-index-previous-folder}).
|
|
6715
|
|
6716 @findex mh-index-visit-folder
|
|
6717 @findex mh-rescan-folder
|
|
6718 @kindex F r
|
|
6719 @kindex v
|
|
6720
|
|
6721 In addition, the command @kbd{v} (@code{mh-index-visit-folder}) can be
|
|
6722 used to visit the folder of the message at point. Initially, only the
|
|
6723 messages that matched the search criteria are displayed in the folder.
|
|
6724 While the temporary buffer has its own set of message numbers, the
|
|
6725 actual messages numbers are shown in the visited folder. Thus, the
|
|
6726 command @kbd{v} is useful to find the actual message number of an
|
|
6727 interesting message, or to view surrounding messages with the command
|
|
6728 @kbd{F r} @code{mh-rescan-folder}. @xref{Folders}.
|
|
6729
|
|
6730 @findex mh-kill-folder
|
|
6731 @kindex F k
|
|
6732
|
|
6733 Because this folder is temporary, you'll probably get in the habit of
|
|
6734 killing it when you're done with @kbd{F k} (@code{mh-kill-folder}).
|
|
6735 @xref{Folders}.
|
|
6736
|
|
6737 @kindex F s
|
|
6738
|
|
6739 You can regenerate the results by running @kbd{F s} with a prefix
|
|
6740 argument.
|
|
6741
|
|
6742 @cindex @command{procmail}
|
|
6743 @cindex Unix commands, @command{procmail}
|
|
6744 @cindex @samp{X-MHE-Checksum:} header field
|
|
6745 @cindex header field, @samp{X-MHE-Checksum:}
|
|
6746
|
|
6747 Note: This command uses an @samp{X-MHE-Checksum:} header field to
|
|
6748 cache the MD5 checksum of a message. This means that if an incoming
|
|
6749 message already contains an @samp{X-MHE-Checksum:} field, that message
|
|
6750 might not be found by this command. The following @command{procmail}
|
|
6751 recipe avoids this problem by renaming the existing header field:
|
|
6752
|
|
6753 @smallexample
|
|
6754 @group
|
|
6755 :0 wf
|
|
6756 | formail -R "X-MHE-Checksum" "X-Old-MHE-Checksum"
|
|
6757 @end group
|
|
6758 @end smallexample
|
|
6759
|
|
6760 @xref{Limits}, for an alternative interface to searching.
|
|
6761
|
|
6762 @section Configuring Indexed Searches
|
|
6763
|
|
6764 @cindex @command{grep}
|
|
6765 @cindex @command{mairix}
|
|
6766 @cindex @command{namazu}
|
|
6767 @cindex @command{pick}
|
|
6768 @cindex @command{swish++}
|
|
6769 @cindex @command{swish-e}
|
|
6770 @cindex Unix commands, @command{grep}
|
|
6771 @cindex Unix commands, @command{mairix}
|
|
6772 @cindex Unix commands, @command{namazu}
|
|
6773 @cindex Unix commands, @command{pick}
|
|
6774 @cindex Unix commands, @command{swish++}
|
|
6775 @cindex Unix commands, @command{swish-e}
|
|
6776 @findex mh-search
|
|
6777 @kindex F s
|
|
6778 @vindex mh-search-program
|
|
6779
|
|
6780 The command @kbd{F s} (@code{mh-search}) runs the command defined by
|
|
6781 the option @code{mh-search-program}. The default value is
|
|
6782 @samp{Auto-detect} which means that MH-E will automatically choose one
|
|
6783 of @command{swish++}, @command{swish-e}, @command{mairix},
|
|
6784 @command{namazu}, @command{pick} and @command{grep} in that order. If,
|
|
6785 for example, you have both @command{swish++} and @command{mairix}
|
|
6786 installed and you want to use @command{mairix}, then you can set this
|
|
6787 option to @samp{mairix}.
|
|
6788
|
|
6789 The following sub-sections describe how to set up the various indexing
|
|
6790 programs to use with MH-E.
|
|
6791
|
|
6792 @subsection swish++
|
|
6793
|
|
6794 @cindex @command{swish++}
|
|
6795 @cindex Unix commands, @command{swish++}
|
|
6796
|
|
6797 In the examples below, replace @file{/home/user/Mail} with the path to
|
|
6798 your MH directory.
|
|
6799
|
|
6800 First create the directory @file{/home/user/Mail/.swish++}. Then
|
|
6801 create the file @file{/home/user/Mail/.swish++/swish++.conf} with the
|
|
6802 following contents:
|
|
6803
|
|
6804 @smallexample
|
|
6805 @group
|
|
6806 IncludeMeta Bcc Cc Comments Content-Description From Keywords
|
|
6807 IncludeMeta Newsgroups Resent-To Subject To
|
|
6808 IncludeMeta Message-Id References In-Reply-To
|
|
6809 IncludeFile Mail *
|
|
6810 IndexFile /home/user/Mail/.swish++/swish++.index
|
|
6811 @end group
|
|
6812 @end smallexample
|
|
6813
|
|
6814 Use the following command line to generate the swish index. Run this
|
|
6815 daily from cron:
|
|
6816
|
|
6817 @smallexample
|
|
6818 @group
|
|
6819 find /home/user/Mail -path /home/user/Mail/mhe-index -prune \
|
|
6820 -o -path /home/user/Mail/.swish++ -prune \
|
|
6821 -o -name "[0-9]*" -print \
|
|
6822 | index -c /home/user/Mail/.swish++/swish++.conf -
|
|
6823 @end group
|
|
6824 @end smallexample
|
|
6825
|
|
6826 This command does not index the folders that hold the results of your
|
|
6827 searches in @samp{+mhe-index} since they tend to be ephemeral and the
|
|
6828 original messages are indexed anyway.
|
|
6829
|
|
6830 @cindex @command{index}
|
|
6831 @cindex Unix commands, @command{index}
|
|
6832 @cindex @command{index++}
|
|
6833 @cindex Unix commands, @command{index++}
|
|
6834
|
|
6835 On some systems (Debian GNU/Linux, for example), use @command{index++}
|
|
6836 instead of @command{index}.
|
|
6837
|
|
6838 @subsection swish
|
|
6839
|
|
6840 @cindex @command{swish-e}
|
|
6841 @cindex Unix commands, @command{swish-e}
|
|
6842
|
|
6843 In the examples below, replace @file{/home/user/Mail} with the path to
|
|
6844 your MH directory.
|
|
6845
|
|
6846 First create the directory @file{/home/user/Mail/.swish}. Then create
|
|
6847 the file @file{/home/user/Mail/.swish/config} with the following
|
|
6848 contents:
|
|
6849
|
|
6850 @smallexample
|
|
6851 @group
|
|
6852 DefaultContents TXT*
|
|
6853 IndexDir /home/user/Mail
|
|
6854 IndexFile /home/user/Mail/.swish/index
|
|
6855 IndexName "Mail Index"
|
|
6856 IndexDescription "Mail Index"
|
|
6857 IndexPointer "http://nowhere"
|
|
6858 IndexAdmin "nobody"
|
|
6859 #MetaNames automatic
|
|
6860 IndexReport 3
|
|
6861 FollowSymLinks no
|
|
6862 UseStemming no
|
|
6863 IgnoreTotalWordCountWhenRanking yes
|
|
6864 WordCharacters abcdefghijklmnopqrstuvwxyz0123456789-
|
|
6865 BeginCharacters abcdefghijklmnopqrstuvwxyz
|
|
6866 EndCharacters abcdefghijklmnopqrstuvwxyz0123456789
|
|
6867 IgnoreLimit 50 1000
|
|
6868 IndexComments 0
|
|
6869 FileRules filename contains \D
|
|
6870 FileRules pathname contains /home/user/Mail/.swish
|
|
6871 FileRules pathname contains /home/user/Mail/mhe-index
|
|
6872 FileRules filename is index
|
|
6873 @end group
|
|
6874 @end smallexample
|
|
6875
|
|
6876 This configuration does not index the folders that hold the results of
|
|
6877 your searches in @samp{+mhe-index} since they tend to be ephemeral and
|
|
6878 the original messages are indexed anyway.
|
|
6879
|
|
6880 If there are any directories you would like to ignore, append lines
|
|
6881 like the following to @file{config}:
|
|
6882
|
|
6883 @smallexample
|
|
6884 FileRules pathname contains /home/user/Mail/scripts
|
|
6885 @end smallexample
|
|
6886
|
|
6887 @cindex @command{swish-e}
|
|
6888 @cindex Unix commands, @command{swish-e}
|
|
6889
|
|
6890 Use the following command line to generate the swish index. Run this
|
|
6891 daily from cron:
|
|
6892
|
|
6893 @smallexample
|
|
6894 swish-e -c /home/user/Mail/.swish/config
|
|
6895 @end smallexample
|
|
6896
|
|
6897 @subsection mairix
|
|
6898
|
|
6899 @cindex @command{mairix}
|
|
6900 @cindex Unix commands, @command{mairix}
|
|
6901
|
|
6902 In the examples below, replace @file{/home/user/Mail} with the path to
|
|
6903 your MH directory.
|
|
6904
|
|
6905 First create the directory @file{/home/user/Mail/.mairix}. Then create
|
|
6906 the file @file{/home/user/Mail/.mairix/config} with the following
|
|
6907 contents:
|
|
6908
|
|
6909 @smallexample
|
|
6910 @group
|
|
6911 base=/home/user/Mail
|
|
6912
|
|
6913 # List of folders that should be indexed. 3 dots at the end means there
|
|
6914 # are subfolders within the folder
|
|
6915 mh=archive...:inbox:drafts:news:sent:trash
|
|
6916
|
|
6917 vfolder_format=raw
|
|
6918 database=/home/user/Mail/mairix/database
|
|
6919 @end group
|
|
6920 @end smallexample
|
|
6921
|
|
6922 Use the following command line to generate the mairix index. Run this daily
|
|
6923 from cron:
|
|
6924
|
|
6925 @smallexample
|
|
6926 mairix -f /home/user/Mail/.mairix/config
|
|
6927 @end smallexample
|
|
6928
|
|
6929 @subsection namazu
|
|
6930
|
|
6931 @cindex @command{namazu}
|
|
6932 @cindex Unix commands, @command{namazu}
|
|
6933
|
|
6934 In the examples below, replace @file{/home/user/Mail} with the path to
|
|
6935 your MH directory.
|
|
6936
|
|
6937 First create the directory @file{/home/user/Mail/.namazu}. Then create
|
|
6938 the file @file{/home/user/Mail/.namazu/mknmzrc} with the following
|
|
6939 contents:
|
|
6940
|
|
6941 @smallexample
|
|
6942 @group
|
|
6943 package conf; # Don't remove this line!
|
|
6944 $ADDRESS = 'user@@localhost';
|
|
6945 $ALLOW_FILE = "[0-9]*";
|
|
6946 $EXCLUDE_PATH = "^/home/user/Mail/(mhe-index|spam)";
|
|
6947 @end group
|
|
6948 @end smallexample
|
|
6949
|
|
6950 This configuration does not index the folders that hold the results of
|
|
6951 your searches in @samp{+mhe-index} since they tend to be ephemeral and
|
|
6952 the original messages are indexed anyway.
|
|
6953
|
|
6954 Use the following command line to generate the namazu index. Run this
|
|
6955 daily from cron:
|
|
6956
|
|
6957 @smallexample
|
|
6958 mknmz -f /home/user/Mail/.namazu/mknmzrc -O /home/user/Mail/.namazu \
|
|
6959 /home/user/Mail
|
|
6960 @end smallexample
|
|
6961
|
|
6962 @subsection pick
|
|
6963
|
|
6964 @cindex @command{pick}
|
|
6965 @cindex MH commands, @command{pick}
|
|
6966
|
|
6967 This search method does not require any setup.
|
|
6968
|
|
6969 Read @command{pick}(1) or the section
|
|
6970 @uref{@value{MH-BOOK-HOME}/finpic.html, Finding Messages with pick} in
|
|
6971 the MH book to find out more about how to enter the criteria.
|
|
6972
|
|
6973 @subsection grep
|
|
6974
|
|
6975 @cindex @command{grep}
|
|
6976 @cindex Unix commands, @command{grep}
|
|
6977
|
|
6978 This search method does not require any setup.
|
|
6979
|
|
6980 Unlike the other search methods, this method does not use the
|
|
6981 MH-Search buffer. Instead, you simply enter a regular expression in
|
|
6982 the minibuffer. For help in constructing regular expressions, see your
|
|
6983 man page for @command{grep}.
|
|
6984
|
|
6985 @node Threading, Limits, Searching, Top
|
|
6986 @chapter Viewing Message Threads
|
|
6987
|
|
6988 @cindex threading
|
|
6989
|
|
6990 MH-E groups messages by @dfn{threads} which are messages that are part
|
|
6991 of the same discussion and usually all have the same @samp{Subject:}
|
|
6992 header field. Other ways to organize messages in a folder include
|
|
6993 limiting (@pxref{Limits}) or using full-text indexed searches
|
|
6994 (@pxref{Searching}).
|
|
6995
|
|
6996 @cindex root, in threads
|
|
6997 @cindex siblings, in threads
|
|
6998 @cindex ancestor, in threads
|
|
6999
|
|
7000 A thread begins with a single message called a @dfn{root}. All replies
|
|
7001 to the same message are @dfn{siblings} of each other. Any message that
|
|
7002 has replies to it is an @dfn{ancestor} of those replies.
|
|
7003
|
|
7004 There are several commands that you can use to navigate and operate on
|
|
7005 threads.
|
|
7006
|
|
7007 @table @kbd
|
|
7008 @kindex T ?
|
|
7009 @findex mh-prefix-help
|
|
7010 @item T ?
|
|
7011 Display cheat sheet for the commands of the current prefix in
|
|
7012 minibuffer (@code{mh-prefix-help}).
|
|
7013 @c -------------------------
|
|
7014 @kindex T o
|
|
7015 @findex mh-thread-refile
|
|
7016 @item T o
|
|
7017 Refile (output) thread into folder (@code{mh-thread-refile}).
|
|
7018 @c -------------------------
|
|
7019 @kindex T d
|
|
7020 @findex mh-thread-delete
|
|
7021 @item T d
|
|
7022 Delete thread (@code{mh-thread-delete}).
|
|
7023 @c -------------------------
|
|
7024 @kindex T t
|
|
7025 @findex mh-toggle-threads
|
|
7026 @item T t
|
|
7027 Toggle threaded view of folder (@code{mh-toggle-threads}).
|
|
7028 @c -------------------------
|
|
7029 @kindex T n
|
|
7030 @findex mh-thread-next-sibling
|
|
7031 @item T n
|
|
7032 Display next sibling (@code{mh-thread-next-sibling}).
|
|
7033 @c -------------------------
|
|
7034 @kindex T p
|
|
7035 @findex mh-thread-previous-sibling
|
|
7036 @item T p
|
|
7037 Display previous sibling (@code{mh-thread-previous-sibling}).
|
|
7038 @c -------------------------
|
|
7039 @kindex T u
|
|
7040 @findex mh-thread-ancestor
|
|
7041 @item T u
|
|
7042 Display ancestor of current message (@code{mh-thread-ancestor}).
|
|
7043 @end table
|
|
7044
|
|
7045 @cindex @samp{mh-thread} customization group
|
|
7046 @cindex customization group, @samp{mh-thread}
|
|
7047
|
|
7048 The @samp{mh-thread} customization group contains one option.
|
|
7049
|
|
7050 @vtable @code
|
|
7051 @item mh-show-threads-flag
|
|
7052 On means new folders start in threaded mode (default: @samp{off}).
|
|
7053 @end vtable
|
|
7054
|
|
7055 @findex mh-toggle-threads
|
|
7056 @kindex T t
|
|
7057 @vindex mh-large-folder
|
|
7058 @vindex mh-show-threads-flag
|
|
7059
|
|
7060 Threading large number of messages can be time consuming so the option
|
|
7061 @code{mh-show-threads-flag} is turned off by default. If you turn on
|
|
7062 this option, then threading will be done only if the number of
|
|
7063 messages being threaded is less than @code{mh-large-folder}. In any
|
|
7064 event, threading can be turned on (and off) with the command @kbd{T t}
|
|
7065 (@code{mh-toggle-threads}).
|
|
7066
|
|
7067 @findex mh-thread-ancestor
|
|
7068 @findex mh-thread-next-sibling
|
|
7069 @findex mh-thread-previous-sibling
|
|
7070 @kindex T n
|
|
7071 @kindex T p
|
|
7072 @kindex T u
|
|
7073
|
|
7074 There are a few commands to help you navigate threads. If you do not
|
|
7075 care for the way a particular thread has turned, you can move up the
|
|
7076 chain of messages with the command @kbd{T u}
|
|
7077 (@code{mh-thread-ancestor}. At any point you can use @kbd{T n}
|
|
7078 (@code{mh-thread-next-sibling} or @kbd{T p}
|
|
7079 (@code{mh-thread-previous-sibling}) to jump to the next or previous
|
|
7080 sibling, skipping the sub-threads. The command @kbd{T u} can also take
|
|
7081 a prefix argument to jump to the message that started everything.
|
|
7082
|
|
7083 @findex mh-delete-subject-or-thread
|
|
7084 @findex mh-thread-delete
|
|
7085 @findex mh-thread-refile
|
|
7086 @kindex k
|
|
7087 @kindex T d
|
|
7088 @kindex T o
|
|
7089
|
|
7090 There are threaded equivalents for the commands that delete and refile
|
|
7091 messages. For example, @kbd{T o} (@code{mh-thread-refile}) refiles the
|
|
7092 current message and all its children. Similarly, the command @kbd{T d}
|
|
7093 (@code{mh-thread-delete}) deletes the current message and all its
|
|
7094 children. These commands do not refile or delete sibling messages.
|
|
7095 @xref{Navigating}, for a description of the similar command @kbd{k}
|
|
7096 (@code{mh-delete-subject-or-thread}).
|
|
7097
|
|
7098 @vindex mh-large-folder
|
|
7099
|
|
7100 If you find that threading is too slow, it may be that you have
|
|
7101 @code{mh-large-folder} set too high. Also, threading is one of the few
|
|
7102 features of MH-E that really benefits from compiling. If you haven't
|
|
7103 compiled MH-E, I encourage you to do so@footnote{If you're not sure if
|
|
7104 MH-E has been byte-compiled, you could try running @samp{locate
|
|
7105 mh-thread.elc} or otherwise find MH-E on your system and ensure that
|
|
7106 @file{mh-thread.elc} exists. If you have multiple versions and you
|
|
7107 find that one is compiled but the other is not, then go into your
|
|
7108 @samp{*scratch*} buffer in Emacs, enter @kbd{load-path C-j}, and
|
|
7109 ensure that the byte-compiled version appears first in the
|
|
7110 @code{load-path}. If you find that MH-E is not compiled and you
|
|
7111 installed MH-E yourself, please refer to the installation directions
|
|
7112 in the file @file{README} in the distribution.}.
|
|
7113
|
|
7114 @node Limits, Sequences, Threading, Top
|
|
7115 @chapter Limiting Display
|
|
7116
|
|
7117 @cindex limits
|
|
7118 @cindex filters
|
|
7119
|
|
7120 Another way to organize messages in a folder besides threading
|
|
7121 (@pxref{Threading}) or using full-text indexed searches
|
|
7122 (@pxref{Searching}) is by limiting the folder display to messages that
|
|
7123 are similar to the current message.
|
|
7124
|
|
7125 @table @kbd
|
|
7126 @kindex / ?
|
|
7127 @findex mh-prefix-help
|
|
7128 @item / ?
|
|
7129 Display cheat sheet for the commands of the current prefix in
|
|
7130 minibuffer (@code{mh-prefix-help}).
|
|
7131 @c -------------------------
|
|
7132 @cindex @samp{Sequence > Narrow to Tick Sequence} menu item
|
|
7133 @cindex menu item, @samp{Sequence > Narrow to Tick Sequence}
|
|
7134 @kindex / '
|
|
7135 @findex mh-narrow-to-tick
|
|
7136 @item / '
|
|
7137 Limit to messages in the @samp{tick} sequence
|
|
7138 (@code{mh-narrow-to-tick}).
|
|
7139 @c -------------------------
|
|
7140 @kindex / c
|
|
7141 @findex mh-narrow-to-cc
|
|
7142 @item / c
|
|
7143 Limit to messages with the same @samp{Cc:} field
|
|
7144 (@code{mh-narrow-to-cc}).
|
|
7145 @c -------------------------
|
|
7146 @kindex / m
|
|
7147 @findex mh-narrow-to-from
|
|
7148 @item / m
|
|
7149 Limit to messages with the same @samp{From:} field
|
|
7150 (@code{mh-narrow-to-from}).
|
|
7151 @c -------------------------
|
|
7152 @kindex / g
|
|
7153 @findex mh-narrow-to-range
|
|
7154 @item / g
|
|
7155 Limit to range (@code{mh-narrow-to-range}).
|
|
7156 @c -------------------------
|
|
7157 @cindex @samp{Sequence > Narrow to Subject Sequence} menu item
|
|
7158 @cindex menu item, @samp{Sequence > Narrow to Subject Sequence}
|
|
7159 @kindex / s
|
|
7160 @findex mh-narrow-to-subject
|
|
7161 @item / s
|
|
7162 Limit to messages with the same @samp{Subject:} field
|
|
7163 (@code{mh-narrow-to-subject}).
|
|
7164 @c -------------------------
|
|
7165 @kindex / t
|
|
7166 @findex mh-narrow-to-to
|
|
7167 @item / t
|
|
7168 Limit to messages with the same @samp{To:} field
|
|
7169 (@code{mh-narrow-to-to}).
|
|
7170 @c -------------------------
|
|
7171 @cindex @samp{Sequence > Widen from Sequence} menu item
|
|
7172 @cindex menu item, @samp{Sequence > Widen from Sequence}
|
|
7173 @kindex / w
|
|
7174 @findex mh-widen
|
|
7175 @item / w
|
|
7176 Remove last restriction (@code{mh-widen}).
|
|
7177 @end table
|
|
7178
|
|
7179 All of the limiting commands above refine the display in some way.
|
|
7180
|
|
7181 @cindex @command{pick}
|
|
7182 @cindex MH commands, @command{pick}
|
|
7183 @findex mh-narrow-to-cc
|
|
7184 @findex mh-narrow-to-from
|
|
7185 @findex mh-narrow-to-subject
|
|
7186 @findex mh-narrow-to-to
|
|
7187 @kindex / c
|
|
7188 @kindex / m
|
|
7189 @kindex / s
|
|
7190 @kindex / t
|
|
7191
|
|
7192 The commands @kbd{/ c} (@code{mh-narrow-to-cc}), @kbd{/ m}
|
|
7193 (@code{mh-narrow-to-from}), @kbd{/ s} (@code{mh-narrow-to-subject}),
|
|
7194 and @kbd{/ t} (@code{mh-narrow-to-to}) restrict the display to
|
|
7195 messages matching the content of the respective field in the current
|
|
7196 message. However, you can give any of these a prefix argument to edit
|
|
7197 the @command{pick} expression used to narrow the view@footnote{See
|
|
7198 @command{pick}(1) or the section
|
|
7199 @uref{@value{MH-BOOK-HOME}/finpic.html, Finding Messages with pick} in
|
|
7200 the MH book.}.
|
|
7201
|
|
7202 @cindex @samp{tick} sequence
|
|
7203 @cindex sequence, @samp{tick}
|
|
7204 @cindex ticked messages, viewing
|
|
7205 @findex mh-narrow-to-range
|
|
7206 @findex mh-narrow-to-tick
|
|
7207 @kindex / '
|
|
7208 @kindex / g
|
|
7209
|
|
7210 You can also limit the display to messages in the @samp{tick} sequence
|
|
7211 with the command @kbd{/ '} (@code{mh-narrow-to-tick}).
|
|
7212 @xref{Sequences}, for information on putting message into the
|
|
7213 @samp{tick} sequence. Use the @kbd{/ g} (@code{mh-narrow-to-range})
|
|
7214 command to limit the display to messages in a range (@pxref{Ranges}).
|
|
7215
|
|
7216 @findex mh-widen
|
|
7217 @kindex / w
|
|
7218
|
|
7219 Each limit can be undone in turn with the @kbd{/ w} (@code{mh-widen})
|
|
7220 command. Give this command a prefix argument to remove all limits.
|
|
7221
|
|
7222 @node Sequences, Junk, Limits, Top
|
|
7223 @chapter Using Sequences
|
|
7224
|
|
7225 @cindex @samp{Sequence} menu
|
|
7226 @cindex menu, @samp{Sequence}
|
|
7227 @cindex sequences
|
|
7228
|
|
7229 For the whole scoop on MH sequences, refer to
|
|
7230 @samp{mh-sequence}(5)@footnote{See the section
|
|
7231 @uref{@value{MH-BOOK-HOME}/morseq.html, More About Sequences} in the MH
|
|
7232 book.}. As you've read, several of the MH-E commands can operate on a
|
|
7233 sequence, which is a shorthand for a range or group of messages. For
|
|
7234 example, you might want to forward several messages to a friend or
|
|
7235 colleague. Here's how to manipulate sequences. These commands are also
|
|
7236 available in the @samp{Sequence} menu.
|
|
7237
|
|
7238 @table @kbd
|
|
7239 @cindex @samp{Sequence > Toggle Tick Mark} menu item
|
|
7240 @cindex menu item, @samp{Sequence > Toggle Tick Mark}
|
|
7241 @kindex '
|
|
7242 @findex mh-toggle-tick
|
|
7243 @item '
|
|
7244 Toggle tick mark of range (@code{mh-toggle-tick}).
|
|
7245 @c -------------------------
|
|
7246 @kindex S ?
|
|
7247 @findex mh-prefix-help
|
|
7248 @item S ?
|
|
7249 Display cheat sheet for the commands of the current prefix in
|
|
7250 minibuffer (@code{mh-prefix-help}).
|
|
7251 @c -------------------------
|
|
7252 @cindex @samp{Sequence > Narrow to Tick Sequence} menu item
|
|
7253 @cindex menu item, @samp{Sequence > Narrow to Tick Sequence}
|
|
7254 @kindex S '
|
|
7255 @findex mh-narrow-to-tick
|
|
7256 @item S '
|
|
7257 Limit to ticked messages (@code{mh-narrow-to-tick}).
|
|
7258 @c -------------------------
|
|
7259 @cindex @samp{Sequence > Delete Message from Sequence...} menu item
|
|
7260 @cindex menu item, @samp{Sequence > Delete Message from Sequence...}
|
|
7261 @kindex S d
|
|
7262 @findex mh-delete-msg-from-seq
|
|
7263 @item S d
|
|
7264 Delete range from sequence (@code{mh-delete-msg-from-seq}).
|
|
7265 @c -------------------------
|
|
7266 @cindex @samp{Sequence > Delete Sequence...} menu item
|
|
7267 @cindex menu item, @samp{Sequence > Delete Sequence...}
|
|
7268 @kindex S k
|
|
7269 @findex mh-delete-seq
|
|
7270 @item S k
|
|
7271 Delete sequence (@code{mh-delete-seq}).
|
|
7272 @c -------------------------
|
|
7273 @cindex @samp{Sequence > List Sequences in Folder...} menu item
|
|
7274 @cindex menu item, @samp{Sequence > List Sequences in Folder...}
|
|
7275 @kindex S l
|
|
7276 @findex mh-list-sequences
|
|
7277 @item S l
|
|
7278 List all sequences in folder (@code{mh-list-sequences}).
|
|
7279 @c -------------------------
|
|
7280 @cindex @samp{Sequence > Narrow to Sequence...} menu item
|
|
7281 @cindex menu item, @samp{Sequence > Narrow to Sequence...}
|
|
7282 @kindex S n
|
|
7283 @findex mh-narrow-to-seq
|
|
7284 @item S n
|
|
7285 Restrict display to messages in sequence (@code{mh-narrow-to-seq}).
|
|
7286 @c -------------------------
|
|
7287 @cindex @samp{Sequence > Add Message to Sequence...} menu item
|
|
7288 @cindex menu item, @samp{Sequence > Add Message to Sequence...}
|
|
7289 @kindex S p
|
|
7290 @findex mh-put-msg-in-seq
|
|
7291 @item S p
|
|
7292 Add range to sequence (@code{mh-put-msg-in-seq}).
|
|
7293 @c -------------------------
|
|
7294 @cindex @samp{Sequence > List Sequences for Message} menu item
|
|
7295 @cindex menu item, @samp{Sequence > List Sequences for Message}
|
|
7296 @kindex S s
|
|
7297 @findex mh-msg-is-in-seq
|
|
7298 @item S s
|
|
7299 Display the sequences in which the current message appears
|
|
7300 (@code{mh-msg-is-in-seq}).
|
|
7301 @c -------------------------
|
|
7302 @cindex @samp{Sequence > Widen from Sequence} menu item
|
|
7303 @cindex menu item, @samp{Sequence > Widen from Sequence}
|
|
7304 @kindex S w
|
|
7305 @findex mh-widen
|
|
7306 @item S w
|
|
7307 Remove last restriction (@code{mh-widen}).
|
|
7308 @c -------------------------
|
|
7309 @findex mh-update-sequences
|
|
7310 @item M-x mh-update-sequences
|
|
7311 Flush MH-E's state out to MH@.
|
|
7312 @end table
|
|
7313
|
|
7314 @cindex @samp{mh-sequences} customization group
|
|
7315 @cindex customization group, @samp{mh-sequences}
|
|
7316
|
|
7317 The @samp{mh-sequences} customization group contains the options
|
|
7318 associated with sequences.
|
|
7319
|
|
7320 @vtable @code
|
|
7321 @item mh-refile-preserves-sequences-flag
|
|
7322 On means that sequences are preserved when messages are refiled
|
|
7323 (default: @samp{on}).
|
|
7324 @c -------------------------
|
|
7325 @item mh-tick-seq
|
|
7326 The name of the MH sequence for ticked messages (default: @samp{'tick}).
|
|
7327 @c -------------------------
|
|
7328 @item mh-update-sequences-after-mh-show-flag
|
|
7329 On means flush MH sequences to disk after message is shown (default:
|
|
7330 @samp{on}).
|
|
7331 @end vtable
|
|
7332
|
|
7333 The following hook is available.
|
|
7334
|
|
7335 @vtable @code
|
|
7336 @item mh-unseen-updated-hook
|
|
7337 Hook run after the unseen sequence has been updated (default: @code{nil}).
|
|
7338 @end vtable
|
|
7339
|
|
7340 @cindex @command{pick}
|
|
7341 @cindex MH commands, @command{pick}
|
|
7342 @findex mh-put-msg-in-seq
|
|
7343 @kindex S p
|
|
7344
|
|
7345 To place a message in a sequence, use @kbd{S p}
|
|
7346 (@code{mh-put-msg-in-seq}). Give @kbd{S p} a range and you can add all
|
|
7347 the messages in a sequence to another sequence (for example, @kbd{C-u
|
|
7348 S p SourceSequence @key{RET} DestSequence @key{RET}}, @pxref{Ranges}).
|
|
7349
|
|
7350 @cindex @samp{tick} sequence
|
|
7351 @cindex sequence, @samp{tick}
|
|
7352 @cindex ticking messages
|
|
7353 @findex mh-index-ticked-messages
|
|
7354 @findex mh-toggle-tick
|
|
7355 @kindex '
|
|
7356 @kindex F '
|
|
7357 @kindex S p
|
|
7358
|
|
7359 One specific use of the @kbd{S p} command is @kbd{'}
|
|
7360 (@code{mh-toggle-tick}) which adds messages to the @samp{tick}
|
|
7361 sequence. This sequence can be viewed later with the @kbd{F '}
|
|
7362 (@code{mh-index-ticked-messages}) command (@pxref{Folders}).
|
|
7363
|
|
7364 @vindex mh-tick-seq
|
|
7365
|
|
7366 You can customize the option @code{mh-tick-seq} if you already use the
|
|
7367 @samp{tick} sequence for your own use. You can also disable all of the
|
|
7368 ticking functions by choosing the @samp{Disable Ticking} item but
|
|
7369 there isn't much advantage to that.
|
|
7370
|
|
7371 @cindex MH-Folder mode
|
|
7372 @cindex modes, MH-Folder
|
|
7373 @findex mh-narrow-to-seq
|
|
7374 @findex mh-narrow-to-tick
|
|
7375 @findex mh-widen
|
|
7376 @kindex S '
|
|
7377 @kindex S n
|
|
7378 @kindex S w
|
|
7379
|
|
7380 Once you've placed some messages in a sequence, you may wish to narrow
|
|
7381 the field of view to just those messages in the sequence you've
|
|
7382 created. To do this, use @kbd{S n} (@code{mh-narrow-to-seq}). You are
|
|
7383 prompted for the name of the sequence. What this does is show only
|
|
7384 those messages that are in the selected sequence in the MH-Folder
|
|
7385 buffer. In addition, it limits further MH-E searches to just those
|
|
7386 messages. To narrow the view to the messages in the @samp{tick}
|
|
7387 sequence, use @kbd{S '} (@code{mh-narrow-to-tick}). When you want to
|
|
7388 widen the view to all your messages again, use @kbd{S w}
|
|
7389 (@code{mh-widen}).
|
|
7390
|
|
7391 @cindex buffers, @samp{*MH-E Sequences*}
|
|
7392 @cindex @samp{*MH-E Sequences*}
|
|
7393 @findex mh-list-sequences
|
|
7394 @findex mh-msg-is-in-seq
|
|
7395 @kindex S l
|
|
7396 @kindex S s
|
|
7397
|
|
7398 You can see which sequences in which a message appears with the
|
|
7399 command @kbd{S s} (@code{mh-msg-is-in-seq}). Use a prefix argument to
|
|
7400 display the sequences in which another message appears (as in @kbd{C-u
|
|
7401 42 S s @key{RET}}). Or, you can list all sequences in a selected
|
|
7402 folder (default is current folder) with @kbd{S l}
|
|
7403 (@code{mh-list-sequences}). The list appears in a buffer named
|
|
7404 @samp{*MH-E Sequences*} (@pxref{Miscellaneous}).
|
|
7405
|
|
7406 @cindex MH profile component, @samp{Previous-Sequence:}
|
|
7407 @cindex @samp{cur} sequence
|
|
7408 @cindex @samp{Previous-Sequence:} MH profile component
|
|
7409 @cindex sequence, @samp{cur}
|
|
7410 @cindex sequence, @samp{Previous-Sequence}
|
|
7411 @vindex mh-refile-preserves-sequences-flag
|
|
7412
|
|
7413 If a message is in any sequence (except
|
|
7414 @samp{Previous-Sequence:}@footnote{See @samp{mh-profile}(5)).} and
|
|
7415 @samp{cur}) when it is refiled, then it will still be in those
|
|
7416 sequences in the destination folder. If this behavior is not desired,
|
|
7417 then turn off the option @code{mh-refile-preserves-sequences-flag}.
|
|
7418
|
|
7419 @findex mh-delete-msg-from-seq
|
|
7420 @findex mh-delete-seq
|
|
7421 @kindex d
|
|
7422 @kindex S d
|
|
7423 @kindex S k
|
|
7424
|
|
7425 If you want to remove a message (or range, @pxref{Ranges}) from a
|
|
7426 sequence, use @kbd{S d} (@code{mh-delete-msg-from-seq}). If you want
|
|
7427 to delete an entire sequence, use @kbd{S k} (@code{mh-delete-seq}). In
|
|
7428 the latter case you are prompted for the sequence to delete. Note that
|
|
7429 this deletes only the sequence, not the messages in the sequence. If
|
|
7430 you want to delete the messages, use @kbd{C-u d} (@pxref{Reading
|
|
7431 Mail}).
|
|
7432
|
|
7433 @cindex @samp{Unseen-Sequence:} MH profile component
|
|
7434 @cindex @samp{cur} sequence
|
|
7435 @cindex @samp{tick} sequence
|
|
7436 @cindex MH profile component, @samp{Unseen-Sequence:}
|
|
7437 @cindex sequence, @samp{Unseen-Sequence}
|
|
7438 @cindex sequence, @samp{cur}
|
|
7439 @cindex sequence, @samp{tick}
|
|
7440 @findex mh-update-sequences
|
|
7441 @kindex M-x mh-update-sequences
|
|
7442 @kindex q
|
|
7443 @kindex x
|
|
7444 @vindex mh-tick-seq
|
|
7445 @vindex mh-update-sequences-after-mh-show-flag
|
|
7446
|
|
7447 Three sequences are maintained internally by MH-E and pushed out to MH
|
|
7448 when a message is shown. They include the sequence specified by your
|
|
7449 @samp{Unseen-Sequence:} profile component, @samp{cur}, and the
|
|
7450 sequence listed by the option @code{mh-tick-seq} which is @samp{tick}
|
|
7451 by default. If you do not like this behavior, turn off the option
|
|
7452 @code{mh-update-sequences-after-mh-show-flag}. You can then update the
|
|
7453 state manually with the @kbd{x}, @kbd{q}, or @kbd{M-x
|
|
7454 mh-update-sequences} commands.
|
|
7455
|
|
7456 @vindex mh-seen-list
|
|
7457 @vindex mh-unseen-updated-hook
|
|
7458
|
|
7459 The hook @code{mh-unseen-updated-hook} is run after the unseen
|
|
7460 sequence has been updated. The variable @code{mh-seen-list} can be
|
|
7461 used by this hook to obtain the list of messages which were removed
|
|
7462 from the unseen sequence.
|
|
7463
|
|
7464 @cindex @command{mark}
|
|
7465 @cindex MH commands, @command{mark}
|
|
7466 @kindex S n
|
|
7467 @kindex S w
|
|
7468
|
|
7469 With the exceptions of @kbd{S n} and @kbd{S w}, the underlying MH
|
|
7470 command dealing with sequences is @command{mark}@footnote{See the
|
|
7471 section @uref{@value{MH-BOOK-HOME}/mmbwm.html, Make Message Bookmarks
|
|
7472 with mark} in the MH book.}.
|
|
7473
|
|
7474 @node Junk, Miscellaneous, Sequences, Top
|
|
7475 @chapter Dealing With Junk Mail
|
|
7476
|
|
7477 @cindex Marshall Rose
|
|
7478 @cindex junk mail
|
|
7479 @cindex spam
|
|
7480
|
|
7481 Marshall Rose once wrote a paper on MH entitled, @cite{How to process
|
|
7482 200 messages a day and still get some real work done}. This chapter
|
|
7483 could be entitled, @cite{How to process 1000 spams a day and still get
|
|
7484 some real work done}.
|
|
7485
|
|
7486 @cindex blacklisting
|
|
7487 @cindex ham
|
|
7488 @cindex viruses
|
|
7489 @cindex whitelisting
|
|
7490 @cindex worms
|
|
7491
|
|
7492 We use the terms @dfn{junk mail} and @dfn{spam} interchangeably for
|
|
7493 any unwanted message which includes spam, @dfn{viruses}, and
|
|
7494 @dfn{worms}. The opposite of spam is @dfn{ham}. The act of classifying
|
|
7495 a sender as one who sends junk mail is called @dfn{blacklisting}; the
|
|
7496 opposite is called @dfn{whitelisting}.
|
|
7497
|
|
7498 @table @kbd
|
|
7499 @kindex J ?
|
|
7500 @findex mh-prefix-help
|
|
7501 @item J ?
|
|
7502 Display cheat sheet for the commands of the current prefix in
|
|
7503 minibuffer (@code{mh-prefix-help}).
|
|
7504 @c -------------------------
|
|
7505 @kindex J b
|
|
7506 @findex mh-junk-blacklist
|
|
7507 @item J b
|
|
7508 Blacklist range as spam (@code{mh-junk-blacklist}).
|
|
7509 @c -------------------------
|
|
7510 @kindex J w
|
|
7511 @findex mh-junk-whitelist
|
|
7512 @item J w
|
|
7513 Whitelist range as ham (@code{mh-junk-whitelist}).
|
|
7514 @c -------------------------
|
|
7515 @item @code{mh-spamassassin-identify-spammers}
|
|
7516 Identify spammers who are repeat offenders.
|
|
7517 @end table
|
|
7518
|
|
7519 @cindex @samp{mh-junk} customization group
|
|
7520 @cindex customization group, @samp{mh-junk}
|
|
7521
|
|
7522 The following table lists the options from the @samp{mh-junk}
|
|
7523 customization group.
|
|
7524
|
|
7525 @vtable @code
|
|
7526 @item mh-junk-background
|
|
7527 If on, spam programs are run in background (default: @samp{off}).
|
|
7528 @c -------------------------
|
|
7529 @item mh-junk-disposition
|
|
7530 Disposition of junk mail (default: @samp{Delete Spam}).
|
|
7531 @c -------------------------
|
|
7532 @item mh-junk-program
|
|
7533 Spam program that MH-E should use (default: @samp{Auto-detect}).
|
|
7534 @end vtable
|
|
7535
|
|
7536 @cindex SpamProbe
|
|
7537 @cindex Spamassassin
|
|
7538 @cindex bogofilter
|
|
7539 @cindex spam filters, SpamProbe
|
|
7540 @cindex spam filters, Spamassassin
|
|
7541 @cindex spam filters, bogofilter
|
|
7542
|
|
7543 MH-E depends on @uref{http://spamassassin.apache.org/, SpamAssassin},
|
|
7544 @uref{http://bogofilter.sourceforge.net/, bogofilter}, or
|
|
7545 @uref{http://spamprobe.sourceforge.net/, SpamProbe} to throw the dreck
|
|
7546 away. This chapter describes briefly how to configure these programs
|
|
7547 to work well with MH-E and how to use MH-E's interface that provides
|
|
7548 continuing education for these programs.
|
|
7549
|
|
7550 @vindex mh-junk-program
|
|
7551
|
|
7552 The default setting of the option @code{mh-junk-program} is
|
|
7553 @samp{Auto-detect} which means that MH-E will automatically choose one
|
|
7554 of SpamAssassin, bogofilter, or SpamProbe in that order. If, for
|
|
7555 example, you have both SpamAssassin and bogofilter installed and you
|
|
7556 want to use bogofilter, then you can set this option to
|
|
7557 @samp{Bogofilter}.
|
|
7558
|
|
7559 @findex mh-junk-blacklist
|
|
7560 @kindex J b
|
|
7561 @vindex mh-junk-disposition
|
|
7562
|
|
7563 The command @kbd{J b} (@code{mh-junk-blacklist}) trains the spam
|
|
7564 program in use with the content of the range (@pxref{Ranges}) and then
|
|
7565 handles the message(s) as specified by the option
|
|
7566 @code{mh-junk-disposition}. By default, this option is set to
|
|
7567 @samp{Delete Spam} but you can also specify the name of the folder
|
|
7568 which is useful for building a corpus of spam for training purposes.
|
|
7569
|
|
7570 @findex mh-junk-whitelist
|
|
7571 @kindex J w
|
|
7572
|
|
7573 In contrast, the command @kbd{J w} (@code{mh-junk-whitelist})
|
|
7574 reclassifies a range of messages (@pxref{Ranges}) as ham if it were
|
|
7575 incorrectly classified as spam. It then refiles the message into the
|
|
7576 @file{+inbox} folder.
|
|
7577
|
|
7578 @cindex @samp{*MH-E Log*}
|
|
7579 @cindex buffers, @samp{*MH-E Log*}
|
|
7580 @findex call-process
|
|
7581 @vindex mh-junk-background
|
|
7582
|
|
7583 By default, the programs are run in the foreground, but this can be
|
|
7584 slow when junking large numbers of messages. If you have enough memory
|
|
7585 or don't junk that many messages at the same time, you might try
|
|
7586 turning on the option @code{mh-junk-background}. @footnote{Note that
|
|
7587 the option @code{mh-junk-background} is used as the @code{display}
|
|
7588 argument in the call to @code{call-process}. Therefore, turning on
|
|
7589 this option means setting its value to @samp{0}. You can also set its
|
|
7590 value to @samp{t} to direct the programs' output to the @samp{*MH-E
|
|
7591 Log*} buffer; this may be useful for debugging.}
|
|
7592
|
|
7593 The following sections discuss the various counter-spam measures that
|
|
7594 MH-E can work with.
|
|
7595
|
|
7596 @cindex @file{.procmailrc}
|
|
7597 @cindex files, @file{.procmailrc}
|
|
7598
|
|
7599 @subheading SpamAssassin
|
|
7600
|
|
7601 @cindex Spamassassin
|
|
7602 @cindex spam filters, Spamassassin
|
|
7603
|
|
7604 SpamAssassin is one of the more popular spam filtering programs. Get
|
|
7605 it from your local distribution or from the
|
|
7606 @uref{http://spamassassin.apache.org/, SpamAssassin web site}.
|
|
7607
|
|
7608 To use SpamAssassin, add the following recipes to @file{~/.procmailrc}:
|
|
7609
|
|
7610 @cindex @command{spamc}
|
|
7611 @cindex @samp{X-Spam-Level:} header field
|
|
7612 @cindex @samp{X-Spam-Status:} header field
|
|
7613 @cindex header field, @samp{X-Spam-Level:}
|
|
7614 @cindex header field, @samp{X-Spam-Status:}
|
|
7615
|
|
7616 @smallexample
|
|
7617 PATH=$PATH:/usr/bin/mh
|
|
7618 MAILDIR=$HOME/`mhparam Path`
|
|
7619
|
|
7620 # Fight spam with SpamAssassin.
|
|
7621 :0fw
|
|
7622 | spamc
|
|
7623
|
|
7624 # Anything with a spam level of 10 or more is junked immediately.
|
|
7625 :0:
|
|
7626 * ^X-Spam-Level: ..........
|
|
7627 /dev/null
|
|
7628
|
|
7629 :0:
|
|
7630 * ^X-Spam-Status: Yes
|
|
7631 spam/.
|
|
7632 @end smallexample
|
|
7633
|
|
7634 If you don't use @command{spamc}, use @samp{spamassassin -P -a}.
|
|
7635
|
|
7636 Note that one of the recipes above throws away messages with a score
|
|
7637 greater than or equal to 10. Here's how you can determine a value that
|
|
7638 works best for you.
|
|
7639
|
|
7640 First, run @samp{spamassassin -t} on every mail message in your
|
|
7641 archive and use @command{gnumeric} to verify that the average plus the
|
|
7642 standard deviation of good mail is under 5, the SpamAssassin default
|
|
7643 for ``spam''.
|
|
7644
|
|
7645 Using @command{gnumeric}, sort the messages by score and view the
|
|
7646 messages with the highest score. Determine the score which encompasses
|
|
7647 all of your interesting messages and add a couple of points to be
|
|
7648 conservative. Add that many dots to the @samp{X-Spam-Level:} header
|
|
7649 field above to send messages with that score down the drain.
|
|
7650
|
|
7651 In the example above, messages with a score of 5-9 are set aside in
|
|
7652 the @samp{+spam} folder for later review. The major weakness of
|
|
7653 rules-based filters is a plethora of false positives so it is
|
|
7654 worthwhile to check.
|
|
7655
|
|
7656 @findex mh-junk-blacklist
|
|
7657 @findex mh-junk-whitelist
|
|
7658 @kindex J b
|
|
7659 @kindex J w
|
|
7660
|
|
7661 If SpamAssassin classifies a message incorrectly, or is unsure, you can
|
|
7662 use the MH-E commands @kbd{J b} (@code{mh-junk-blacklist}) and
|
|
7663 @kbd{J w} (@code{mh-junk-whitelist}).
|
|
7664
|
|
7665 @cindex @command{sa-learn}
|
|
7666 @cindex @file{.spamassassin/user_prefs}
|
|
7667 @cindex files, @file{.spamassassin/user_prefs}
|
|
7668
|
|
7669 The command @kbd{J b} (@code{mh-junk-blacklist}) adds a
|
|
7670 @samp{blacklist_from} entry to @file{~/spamassassin/user_prefs},
|
|
7671 deletes the message, and sends the message to the Razor, so that
|
|
7672 others might not see this spam. If the @command{sa-learn} command is
|
|
7673 available, the message is also recategorized as spam.
|
|
7674
|
|
7675 The command@kbd{J w} (@code{mh-junk-whitelist}) adds a
|
|
7676 @samp{whitelist_from} rule to @samp{~/.spamassassin/user_prefs}. If
|
|
7677 the @command{sa-learn} command is available, the message is also
|
|
7678 recategorized as ham.
|
|
7679
|
|
7680 Over time, you'll observe that the same host or domain occurs
|
|
7681 repeatedly in the @samp{blacklist_from} entries, so you might think
|
|
7682 that you could avoid future spam by blacklisting all mail from a
|
|
7683 particular domain. The utility function
|
|
7684 @code{mh-spamassassin-identify-spammers} helps you do precisely that.
|
|
7685 This function displays a frequency count of the hosts and domains in
|
|
7686 the @samp{blacklist_from} entries from the last blank line in
|
|
7687 @file{~/.spamassassin/user_prefs} to the end of the file. This
|
|
7688 information can be used so that you can replace multiple
|
|
7689 @samp{blacklist_from} entries with a single wildcard entry such as:
|
|
7690
|
|
7691 @smallexample
|
|
7692 blacklist_from *@@*amazingoffersdirect2u.com
|
|
7693 @end smallexample
|
|
7694
|
|
7695 In versions of SpamAssassin (2.50 and on) that support a Bayesian
|
|
7696 classifier, @kbd{J b} @code{(mh-junk-blacklist}) uses the program
|
|
7697 @command{sa-learn} to recategorize the message as spam. Neither MH-E,
|
|
7698 nor SpamAssassin, rebuilds the database after adding words, so you
|
|
7699 will need to run @samp{sa-learn --rebuild} periodically. This can be
|
|
7700 done by adding the following to your @file{crontab}:
|
|
7701
|
|
7702 @smallexample
|
|
7703 0 * * * * sa-learn --rebuild > /dev/null 2>&1
|
|
7704 @end smallexample
|
|
7705
|
|
7706 @subheading Bogofilter
|
|
7707
|
|
7708 @cindex bogofilter
|
|
7709 @cindex spam filters, bogofilter
|
|
7710
|
|
7711 Bogofilter is a Bayesian spam filtering program. Get it from your
|
|
7712 local distribution or from the
|
|
7713 @uref{http://bogofilter.sourceforge.net/, bogofilter web site}.
|
|
7714
|
|
7715 Bogofilter is taught by running:
|
|
7716
|
|
7717 @smallexample
|
|
7718 bogofilter -n < good-message
|
|
7719 @end smallexample
|
|
7720
|
|
7721 on every good message, and
|
|
7722
|
|
7723 @smallexample
|
|
7724 bogofilter -s < spam-message
|
|
7725 @end smallexample
|
|
7726
|
|
7727 @cindex full training
|
|
7728
|
|
7729 on every spam message. This is called a @dfn{full training}; three
|
|
7730 other training methods are described in the FAQ that is distributed
|
|
7731 with bogofilter. Note that most Bayesian filters need 1000 to 5000 of
|
|
7732 each type of message to start doing a good job.
|
|
7733
|
|
7734 To use bogofilter, add the following recipes to @file{~/.procmailrc}:
|
|
7735
|
|
7736 @cindex @samp{X-Bogosity:} header field
|
|
7737 @cindex header field, @samp{X-Bogosity:}
|
|
7738
|
|
7739 @smallexample
|
|
7740 PATH=$PATH:/usr/bin/mh
|
|
7741 MAILDIR=$HOME/`mhparam Path`
|
|
7742
|
|
7743 # Fight spam with Bogofilter.
|
|
7744 :0fw
|
|
7745 | bogofilter -3 -e -p
|
|
7746
|
|
7747 :0:
|
|
7748 * ^X-Bogosity: Yes, tests=bogofilter
|
|
7749 spam/.
|
|
7750
|
|
7751 :0:
|
|
7752 * ^X-Bogosity: Unsure, tests=bogofilter
|
|
7753 spam/unsure/.
|
|
7754 @end smallexample
|
|
7755
|
|
7756 @findex mh-junk-blacklist
|
|
7757 @findex mh-junk-whitelist
|
|
7758 @kindex J b
|
|
7759 @kindex J w
|
|
7760
|
|
7761 If bogofilter classifies a message incorrectly, or is unsure, you can
|
|
7762 use the MH-E commands @kbd{J b} (@code{mh-junk-blacklist}) and @kbd{J
|
|
7763 w} (@code{mh-junk-whitelist}) to update bogofilter's training.
|
|
7764
|
|
7765 The @cite{Bogofilter FAQ} suggests that you run the following
|
|
7766 occasionally to shrink the database:
|
|
7767
|
|
7768 @smallexample
|
|
7769 bogoutil -d wordlist.db | bogoutil -l wordlist.db.new
|
|
7770 mv wordlist.db wordlist.db.prv
|
|
7771 mv wordlist.db.new wordlist.db
|
|
7772 @end smallexample
|
|
7773
|
|
7774 The @cite{Bogofilter tuning HOWTO} describes how you can fine-tune
|
|
7775 bogofilter.
|
|
7776
|
|
7777 @subheading SpamProbe
|
|
7778
|
|
7779 @cindex SpamProbe
|
|
7780 @cindex spam filters, SpamProbe
|
|
7781
|
|
7782 SpamProbe is a Bayesian spam filtering program. Get it from your local
|
|
7783 distribution or from the @uref{http://spamprobe.sourceforge.net,
|
|
7784 SpamProbe web site}.
|
|
7785
|
|
7786 To use SpamProbe, add the following recipes to @file{~/.procmailrc}:
|
|
7787
|
|
7788 @cindex @command{formail}
|
|
7789 @cindex @samp{X-SpamProbe:} header field
|
|
7790 @cindex header field, @samp{X-SpamProbe:}
|
|
7791
|
|
7792 @smallexample
|
|
7793 PATH=$PATH:/usr/bin/mh
|
|
7794 MAILDIR=$HOME/`mhparam Path`
|
|
7795
|
|
7796 # Fight spam with SpamProbe.
|
|
7797 :0
|
|
7798 SCORE=| spamprobe receive
|
|
7799
|
|
7800 :0 wf
|
|
7801 | formail -I "X-SpamProbe: $SCORE"
|
|
7802
|
|
7803 :0:
|
|
7804 *^X-SpamProbe: SPAM
|
|
7805 spam/.
|
|
7806 @end smallexample
|
|
7807
|
|
7808 @findex mh-junk-blacklist
|
|
7809 @findex mh-junk-whitelist
|
|
7810 @kindex J b
|
|
7811 @kindex J w
|
|
7812
|
|
7813 If SpamProbe classifies a message incorrectly, you can use the MH-E
|
|
7814 commands @kbd{J b} (@code{mh-junk-blacklist}) and @kbd{J w}
|
|
7815 (@code{mh-junk-whitelist}) to update SpamProbe's training.
|
|
7816
|
|
7817 @subheading Other Things You Can Do
|
|
7818
|
|
7819 There are a couple of things that you can add to @file{~/.procmailrc}
|
|
7820 in order to filter out a lot of spam and viruses. The first is to
|
|
7821 eliminate any message with a Windows executable (which is most likely
|
|
7822 a virus). The second is to eliminate mail in character sets that you
|
|
7823 can't read.
|
|
7824
|
|
7825 @cindex @samp{Content-Transfer-Encoding:} header field
|
|
7826 @cindex @samp{Content-Type:} header field
|
|
7827 @cindex @samp{Subject:} header field
|
|
7828 @cindex header field, @samp{Content-Transfer-Encoding:}
|
|
7829 @cindex header field, @samp{Content-Type:}
|
|
7830 @cindex header field, @samp{Subject:}
|
|
7831
|
|
7832 @smallexample
|
|
7833 PATH=$PATH:/usr/bin/mh
|
|
7834 MAILDIR=$HOME/`mhparam Path`
|
|
7835
|
|
7836 #
|
|
7837 # Filter messages with win32 executables/virii.
|
|
7838 #
|
|
7839 # These attachments are base64 and have a TVqQAAMAAAAEAAAA//8AALg
|
|
7840 # pattern. The string "this program cannot be run in MS-DOS mode"
|
|
7841 # encoded in base64 is 4fug4AtAnNIbg and helps to avoid false
|
|
7842 # positives (Roland Smith via Pete from the bogofilter mailing list).
|
|
7843 #
|
|
7844 :0 B:
|
|
7845 * ^Content-Transfer-Encoding:.*base64
|
|
7846 * ^TVqQAAMAAAAEAAAA//8AALg
|
|
7847 * 4fug4AtAnNIbg
|
|
7848 spam/exe/.
|
|
7849
|
|
7850 #
|
|
7851 # Filter mail in unreadable character sets (from the Bogofilter FAQ).
|
|
7852 #
|
|
7853 UNREADABLE='[^?"]*big5|iso-2022-jp|ISO-2022-KR|euc-kr|gb2312|ks_c_5601-1987'
|
|
7854
|
|
7855 :0:
|
|
7856 * 1^0 $ ^Subject:.*=\?($UNREADABLE)
|
|
7857 * 1^0 $ ^Content-Type:.*charset="?($UNREADABLE)
|
|
7858 spam/unreadable/.
|
|
7859
|
|
7860 :0:
|
|
7861 * ^Content-Type:.*multipart
|
|
7862 * B ?? $ ^Content-Type:.*^?.*charset="?($UNREADABLE)
|
|
7863 spam/unreadable/.
|
|
7864 @end smallexample
|
|
7865
|
|
7866 @node Miscellaneous, Scan Line Formats, Junk, Top
|
|
7867 @chapter Miscellaneous Commands, Variables, and Buffers
|
|
7868
|
|
7869 This chapter covers the following command and the various MH-E
|
|
7870 buffers,
|
|
7871
|
|
7872 @ftable @code
|
|
7873 @item mh-version
|
|
7874 Display version information about MH-E and the MH mail handling
|
|
7875 system.
|
|
7876 @end ftable
|
|
7877
|
|
7878 @cindex buffers, @samp{*MH-E Info*}
|
|
7879 @cindex MH-E version
|
|
7880 @cindex @samp{*MH-E Info*}
|
|
7881 @cindex version
|
|
7882 @kindex M-x mh-version
|
|
7883
|
|
7884 One command worth noting is @kbd{M-x mh-version}. You can compare the
|
|
7885 version this command prints to the latest release (@pxref{Getting
|
|
7886 MH-E}). The output of @kbd{M-x mh-version}, found in a buffer named
|
|
7887 @samp{*MH-E Info*}, should usually be included with any bug report you
|
|
7888 submit (@pxref{Bug Reports}).
|
|
7889
|
|
7890 @subheading MH-E Buffers
|
|
7891
|
|
7892 Besides the MH-Folder, MH-Show, and MH-Letter buffers, MH-E creates
|
|
7893 several other buffers. They are:
|
|
7894
|
|
7895 @table @samp
|
|
7896 @cindex @samp{*MH-E Folders*}
|
|
7897 @cindex buffers, @samp{*MH-E Folders*}
|
|
7898 @findex mh-list-folders
|
|
7899 @item *MH-E Folders*
|
|
7900 @kindex F l
|
|
7901 This buffer contains the output of @kbd{F l} (@code{mh-list-folders}).
|
|
7902 @xref{Folders}.
|
|
7903 @c -------------------------
|
|
7904 @cindex @samp{*MH-E Help*}
|
|
7905 @cindex buffers, @samp{*MH-E Help*}
|
|
7906 @findex mh-help
|
|
7907 @item *MH-E Help*
|
|
7908 @kindex ?
|
|
7909 @kindex C-c ?
|
|
7910 This buffer contains the output of @kbd{?} (@code{mh-help}) and
|
|
7911 @kbd{C-c ?} in MH-Letter mode. @xref{Using This Manual}.
|
|
7912 @c -------------------------
|
|
7913 @cindex @samp{*MH-E Info*}
|
|
7914 @cindex buffers, @samp{*MH-E Info*}
|
|
7915 @item *MH-E Info*
|
|
7916 This buffer contains the output of @kbd{M-x mh-version @key{RET}}.
|
|
7917 @c -------------------------
|
|
7918 @cindex @samp{*MH-E Log*}
|
|
7919 @cindex buffers, @samp{*MH-E Log*}
|
|
7920 @item *MH-E Log*
|
|
7921 This buffer contains the last 100 lines of the output of the various
|
|
7922 MH commands.
|
|
7923 @c -------------------------
|
|
7924 @cindex @samp{*MH-E Mail Delivery*}
|
|
7925 @cindex buffers, @samp{*MH-E Mail Delivery*}
|
|
7926 @item *MH-E Mail Delivery*
|
|
7927 This buffer contains the transcript of a mail delivery. @xref{Sending
|
|
7928 Message}.
|
|
7929 @c -------------------------
|
|
7930 @cindex @samp{*MH-E Recipients*}
|
|
7931 @cindex buffers, @samp{*MH-E Recipients*}
|
|
7932 @findex mh-check-whom
|
|
7933 @item *MH-E Recipients*
|
|
7934 @kindex C-c C-w
|
|
7935 This buffer contains the output of @kbd{C-c C-w}
|
|
7936 (@code{mh-check-whom}) and is killed when draft is sent.
|
|
7937 @xref{Checking Recipients}.
|
|
7938 @c -------------------------
|
|
7939 @cindex @samp{*MH-E Sequences*}
|
|
7940 @cindex buffers, @samp{*MH-E Sequences*}
|
|
7941 @item *MH-E Sequences*
|
|
7942 This buffer contains the output of @kbd{S l}
|
|
7943 (@code{mh-list-sequences}). @xref{Sequences}.
|
|
7944 @c -------------------------
|
|
7945 @cindex @samp{*mh-temp*}
|
|
7946 @cindex buffers, @samp{*mh-temp*}
|
|
7947 @item *mh-temp*
|
|
7948 This is a scratch, ephemeral, buffer used by MH-E functions. Note that
|
|
7949 it is hidden because the first character in the name is a space.
|
|
7950 You'll generally not have any need for this buffer.
|
|
7951 @end table
|
|
7952
|
|
7953 @node Scan Line Formats, Procmail, Miscellaneous, Top
|
|
7954 @appendix Scan Line Formats
|
|
7955
|
|
7956 @cindex scan line formats
|
|
7957
|
|
7958 This appendix discusses how MH-E creates, parses, and manipulates scan
|
|
7959 lines. If you have your own MH scan or inc format files, you
|
|
7960 @strong{can} teach MH-E how to handle them, but it isn't easy as
|
|
7961 you'll see.
|
|
7962
|
|
7963 @cindex @samp{mh-scan-line-formats} customization group
|
|
7964 @cindex customization group, @samp{mh-scan-line-formats}
|
|
7965
|
|
7966 This table lists the options in the @samp{mh-scan-line-formats}
|
|
7967 customization group.
|
|
7968
|
|
7969 @vtable @code
|
|
7970 @item mh-adaptive-cmd-note-flag
|
|
7971 On means that the message number width is determined dynamically
|
|
7972 (default: @samp{on}).
|
|
7973 @c -------------------------
|
|
7974 @item mh-scan-format-file
|
|
7975 Specifies the format file to pass to the scan program (default:
|
|
7976 @samp{Use MH-E scan Format}).
|
|
7977 @c -------------------------
|
|
7978 @item mh-scan-prog
|
|
7979 Program used to scan messages (default: @code{"scan"}).
|
|
7980 @end vtable
|
|
7981
|
|
7982 @vindex mh-adaptive-cmd-note-flag
|
|
7983
|
|
7984 There are a couple of caveats when creating your own scan format file.
|
|
7985 First, MH-E will not work if your scan lines do not include message
|
|
7986 numbers. It will work poorly if you don't dedicate a column for
|
|
7987 showing the current message and notations. You won't be able to use
|
|
7988 the option @code{mh-adaptive-cmd-note-flag} or the threading features
|
|
7989 (@pxref{Threading}).
|
|
7990
|
|
7991 @cindex message numbers
|
|
7992 @findex mh-set-cmd-note
|
|
7993 @vindex mh-adaptive-cmd-note-flag
|
|
7994 @vindex mh-scan-format-file
|
|
7995
|
|
7996 If you've created your own format to handle long message numbers,
|
|
7997 you'll be pleased to know you no longer need it since MH-E adapts its
|
|
7998 internal format based upon the largest message number if
|
|
7999 @code{mh-adaptive-cmd-note-flag} is on (the default). If you prefer
|
|
8000 fixed-width message numbers, turn off @code{mh-adaptive-cmd-note-flag}
|
|
8001 and call @code{mh-set-cmd-note} with the width specified by your
|
|
8002 format file (see @code{mh-scan-format-file}). For example, the default
|
|
8003 width is 4, so you would use @samp{(mh-set-cmd-note 4)}.
|
|
8004
|
|
8005 @vindex mh-adaptive-cmd-note-flag
|
|
8006 @vindex mh-scan-format-file
|
|
8007 @vindex mh-scan-format-mh
|
|
8008 @vindex mh-scan-format-nmh
|
|
8009
|
|
8010 The default setting for @code{mh-scan-format-file} is @samp{Use MH-E
|
|
8011 scan Format}. This means that the format string will be taken from the
|
|
8012 either @code{mh-scan-format-mh} or @code{mh-scan-format-nmh} depending
|
|
8013 on whether MH or nmh (or GNU mailutils) is in use. This setting also
|
|
8014 enables you to turn on the option @code{mh-adaptive-cmd-note-flag}.
|
|
8015 You can also set this option to @samp{Use Default scan Format} to get
|
|
8016 the same output as you would get if you ran @command{scan} from the
|
|
8017 shell. If you have a format file that you want MH-E to use but not MH,
|
|
8018 you can set this option to @samp{Specify a scan Format File} and enter
|
|
8019 the name of your format file.
|
|
8020
|
|
8021 @vindex mh-scan-format-file
|
|
8022 @vindex mh-scan-format-mh
|
|
8023 @vindex mh-scan-format-nmh
|
|
8024
|
|
8025 The scan format that MH-E uses when @code{mh-scan-format-file} is set
|
|
8026 to its default of @samp{Use MH-E scan Format} is held in the variables
|
|
8027 @code{mh-scan-format-nmh} and @code{mh-scan-format-mh} depending on
|
|
8028 whether you are using nmh (or GNU mailutils) or not. Typically, you
|
|
8029 create your own format files rather than modifying these variables.
|
|
8030 The value of @code{mh-scan-format-nmh} is:
|
|
8031
|
|
8032 @smallexample
|
|
8033 (concat
|
|
8034 "%4(msg)"
|
|
8035 "%<(cur)+%| %>"
|
|
8036 "%<@{replied@}-"
|
|
8037 "%?(nonnull(comp@{to@}))%<(mymbox@{to@})t%>"
|
|
8038 "%?(nonnull(comp@{cc@}))%<(mymbox@{cc@})c%>"
|
|
8039 "%?(nonnull(comp@{bcc@}))%<(mymbox@{bcc@})b%>"
|
|
8040 "%?(nonnull(comp@{newsgroups@}))n%>"
|
|
8041 "%<(zero) %>"
|
|
8042 "%02(mon@{date@})/%02(mday@{date@})%<@{date@} %|*%>"
|
|
8043 "%<(mymbox@{from@})%<@{to@}To:%14(decode(friendly@{to@}))%>%>"
|
|
8044 "%<(zero)%17(decode(friendly@{from@}))%> "
|
|
8045 "%(decode@{subject@})%<@{body@}<<%@{body@}%>")
|
|
8046 @end smallexample
|
|
8047
|
|
8048 @cindex decoding RFC 2047
|
|
8049 @cindex RFC 2047, decoding
|
|
8050 @vindex mh-scan-format-mh
|
|
8051
|
|
8052 The setting for @code{mh-scan-format-mh} is similar, except that MH
|
|
8053 doesn't have the function @code{decode} (which is used to decode RFC
|
|
8054 2047 encodings).
|
|
8055
|
|
8056 @cindex notations, scan line
|
|
8057 @cindex scan line notations
|
|
8058
|
|
8059 These strings are passed to the @command{scan} program via the
|
|
8060 @option{-format} argument. The formats are identical to the defaults
|
|
8061 except that additional hints for fontification have been added to the
|
|
8062 existing notations in the fifth column (remember that in Emacs, the
|
|
8063 columns start at 0). The values of the fifth column, in priority
|
|
8064 order, are: @samp{-} if the message has been replied to, @samp{t} if
|
|
8065 an address in the @samp{To:} field matches one of the mailboxes of the
|
|
8066 current user, @samp{c} if the @samp{Cc:} field matches, @samp{b} if
|
|
8067 the @samp{Bcc:} field matches, and @samp{n} if a non-empty
|
|
8068 @samp{Newsgroups:} field is present.
|
|
8069
|
|
8070 @cindex @command{scan}
|
|
8071 @cindex MH commands, @command{scan}
|
|
8072 @vindex mh-progs
|
|
8073 @vindex mh-scan-prog
|
|
8074
|
|
8075 The name of the program that generates a listing of one line per
|
|
8076 message is held in @code{mh-scan-prog} (default: @code{"scan"}).
|
|
8077 Unless this variable contains an absolute pathname, it is assumed to
|
|
8078 be in the @code{mh-progs} directory (@pxref{Getting Started}). You may
|
|
8079 link another program to @command{scan} (see @samp{mh-profile}(5)) to
|
|
8080 produce a different type of listing@footnote{See the section
|
|
8081 @uref{@value{MH-BOOK-HOME}/faswsprs.html, Find and Specify with scan
|
|
8082 pick Ranges Sequences} in the MH book.}.
|
|
8083
|
|
8084 @cindex regular expressions, scan line formats
|
|
8085 @findex mh-set-cmd-note
|
|
8086 @findex setq
|
|
8087
|
|
8088 If you change the format of the scan lines you'll need to tell MH-E
|
|
8089 how to parse the new format. As you will see, quite a lot of variables
|
|
8090 are involved to do that. Use @kbd{M-x apropos @key{RET}
|
|
8091 mh-scan.*regexp @key{RET}} to obtain a list of these variables. You
|
|
8092 will also have to call @code{mh-set-cmd-note} if your notations are
|
|
8093 not in column 4 (columns in Emacs start with 0). Note that unlike most
|
|
8094 of the user options described in this manual, these are variables and
|
|
8095 must be set with @code{setq} instead of in a customization buffer. For
|
|
8096 help with regular expressions, see
|
|
8097 @ifnothtml
|
|
8098 @ref{Regexps, , Syntax of Regular Expressions, emacs, The
|
|
8099 GNU Emacs Manual}.
|
|
8100 @end ifnothtml
|
|
8101 @ifhtml
|
|
8102 section
|
|
8103 @uref{http://www.gnu.org/software/emacs/manual/html_node/Regexps.html,
|
|
8104 Syntax of Regular Expressions} in @cite{The GNU Emacs Manual}.
|
|
8105 @end ifhtml
|
|
8106
|
|
8107 The first variable has to do with pruning out garbage.
|
|
8108
|
|
8109 @vtable @code
|
|
8110 @cindex @command{inc}
|
|
8111 @cindex MH commands, @command{inc}
|
|
8112 @cindex @command{scan}
|
|
8113 @cindex MH commands, @command{scan}
|
|
8114 @item mh-scan-valid-regexp
|
|
8115 This regular expression describes a valid scan line. This is used to
|
|
8116 eliminate error messages that are occasionally produced by
|
|
8117 @command{inc}@footnote{See the section
|
|
8118 @uref{@value{MH-BOOK-HOME}/reapre.html, Reading Mail: inc show next
|
|
8119 prev} in the MH book.} or @command{scan} (default: @code{"^ *[0-9]"}).
|
|
8120 @end vtable
|
|
8121
|
|
8122 Next, many variables control how the scan lines are parsed.
|
|
8123
|
|
8124 @vtable @code
|
|
8125 @vindex mh-folder-body
|
|
8126 @vindex mh-folder-font-lock-keywords
|
|
8127 @item mh-scan-body-regexp
|
|
8128 This regular expression matches the message body fragment. Note that
|
|
8129 the default setting of @code{mh-folder-font-lock-keywords} expects
|
|
8130 this expression to contain at least one parenthesized expression which
|
|
8131 matches the body text as in the default of
|
|
8132 @code{"\\(<<\\([^\n]+\\)?\\)"}. If this regular expression is not
|
|
8133 correct, the body fragment will not be highlighted with the face
|
|
8134 @code{mh-folder-body}.
|
|
8135 @c -------------------------
|
|
8136 @vindex mh-folder-cur-msg-number
|
|
8137 @vindex mh-folder-font-lock-keywords
|
|
8138 @vindex mh-note-cur
|
|
8139 @item mh-scan-cur-msg-number-regexp
|
|
8140 This regular expression matches the current message. It must match
|
|
8141 from the beginning of the line. Note that the default setting of
|
|
8142 @code{mh-folder-font-lock-keywords} expects this expression to contain
|
|
8143 at least one parenthesized expression which matches the message number
|
|
8144 as in the default of @w{@code{"^\\( *[0-9]+\\+\\).*"}}. This
|
|
8145 expression includes the leading space and current message marker
|
|
8146 @samp{+} within the parenthesis since it looks better to highlight
|
|
8147 these items as well. The highlighting is done with the face
|
|
8148 @code{mh-folder-cur-msg-number}. This regular expression should be
|
|
8149 correct as it is needed by non-fontification functions. See also
|
|
8150 @code{mh-note-cur}.
|
|
8151 @c -------------------------
|
|
8152 @vindex mh-folder-date
|
|
8153 @vindex mh-folder-font-lock-keywords
|
|
8154 @vindex mh-scan-sent-to-me-sender-regexp
|
|
8155 @item mh-scan-date-regexp
|
|
8156 This regular expression matches a valid date. It must @strong{not} be
|
|
8157 anchored to the beginning or the end of the line. Note that the
|
|
8158 default setting of @code{mh-folder-font-lock-keywords} expects this
|
|
8159 expression to contain only one parenthesized expression which matches
|
|
8160 the date field as in the default of
|
|
8161 @code{"\\([0-9][0-9]/[0-9][0-9]\\)"}. If this regular expression is
|
|
8162 not correct, the date will not be highlighted with the face
|
|
8163 @code{mh-folder-date}.
|
|
8164 @c -------------------------
|
|
8165 @vindex mh-folder-deleted
|
|
8166 @vindex mh-folder-font-lock-keywords
|
|
8167 @vindex mh-note-deleted
|
|
8168 @item mh-scan-deleted-msg-regexp
|
|
8169 This regular expression matches deleted messages. It must match from
|
|
8170 the beginning of the line. Note that the default setting of
|
|
8171 @code{mh-folder-font-lock-keywords} expects this expression to contain
|
|
8172 at least one parenthesized expression which matches the message number
|
|
8173 as in the default of @code{"^\\( *[0-9]+\\)D"}. This expression
|
|
8174 includes the leading space within the parenthesis since it looks
|
|
8175 better to highlight it as well. The highlighting is done with the face
|
|
8176 @code{mh-folder-deleted}. This regular expression should be correct as
|
|
8177 it is needed by non-fontification functions. See also
|
|
8178 @code{mh-note-deleted}.
|
|
8179 @c -------------------------
|
|
8180 @vindex mh-folder-font-lock-keywords
|
|
8181 @vindex mh-folder-msg-number
|
|
8182 @item mh-scan-good-msg-regexp
|
|
8183 This regular expression matches ``good'' messages. It must match from
|
|
8184 the beginning of the line. Note that the default setting of
|
|
8185 @code{mh-folder-font-lock-keywords} expects this expression to contain
|
|
8186 at least one parenthesized expression which matches the message number
|
|
8187 as in the default of @w{@code{"^\\( *[0-9]+\\)[^D^0-9]"}}. This
|
|
8188 expression includes the leading space within the parenthesis since it
|
|
8189 looks better to highlight it as well. The highlighting is done with
|
|
8190 the face @code{mh-folder-msg-number}. This regular expression should
|
|
8191 be correct as it is needed by non-fontification functions.
|
|
8192 @c -------------------------
|
|
8193 @vindex mh-scan-format-file
|
|
8194 @item mh-scan-msg-format-regexp
|
|
8195 This regular expression finds the message number width in a scan
|
|
8196 format. Note that the message number must be placed in a parenthesized
|
|
8197 expression as in the default of @code{"%\\([0-9]*\\)(msg)"}. This
|
|
8198 variable is only consulted if @code{mh-scan-format-file} is set to
|
|
8199 @samp{Use MH-E scan Format}.
|
|
8200 @c -------------------------
|
|
8201 @vindex mh-scan-format-file
|
|
8202 @item mh-scan-msg-format-string
|
|
8203 This is a format string for the width of the message number in a scan
|
|
8204 format. Use @samp{0%d} for zero-filled message numbers. This variable
|
|
8205 is only consulted if @code{mh-scan-format-file} is set to @samp{Use
|
|
8206 MH-E scan Format} (default: @code{"%d"}).
|
|
8207 @c -------------------------
|
|
8208 @item mh-scan-msg-number-regexp
|
|
8209 This regular expression extracts the message number. It must match
|
|
8210 from the beginning of the line. Note that the message number must be
|
|
8211 placed in a parenthesized expression as in the default of @w{@code{"^
|
|
8212 *\\([0-9]+\\)"}}.
|
|
8213 @c -------------------------
|
|
8214 @item mh-scan-msg-overflow-regexp
|
|
8215 This regular expression matches overflowed message numbers (default:
|
|
8216 @code{"^[?0-9][0-9]"}).
|
|
8217 @c -------------------------
|
|
8218 @item mh-scan-msg-search-regexp
|
|
8219 This regular expression matches a particular message. It is a format
|
|
8220 string; use @samp{%d} to represent the location of the message number
|
|
8221 within the expression as in the default of @code{"^[^0-9]*%d[^0-9]"}.
|
|
8222 @c -------------------------
|
|
8223 @vindex mh-folder-address
|
|
8224 @vindex mh-folder-font-lock-keywords
|
|
8225 @vindex mh-folder-to
|
|
8226 @item mh-scan-rcpt-regexp
|
|
8227 This regular expression specifies the recipient in messages you sent.
|
|
8228 Note that the default setting of @code{mh-folder-font-lock-keywords}
|
|
8229 expects this expression to contain two parenthesized expressions. The
|
|
8230 first is expected to match the @samp{To:} that the default scan format
|
|
8231 file generates. The second is expected to match the recipient's name
|
|
8232 as in the default of @code{"\\(To:\\)\\(..............\\)"}. If this
|
|
8233 regular expression is not correct, the @samp{To:} string will not be
|
|
8234 highlighted with the face @code{mh-folder-to} and the recipient will not be
|
|
8235 highlighted with the face @code{mh-folder-address}.
|
|
8236 @c -------------------------
|
|
8237 @vindex mh-folder-font-lock-keywords
|
|
8238 @vindex mh-folder-refiled
|
|
8239 @vindex mh-note-refiled
|
|
8240 @item mh-scan-refiled-msg-regexp
|
|
8241 This regular expression matches refiled messages. It must match from
|
|
8242 the beginning of the line. Note that the default setting of
|
|
8243 @code{mh-folder-font-lock-keywords} expects this expression to contain
|
|
8244 at least one parenthesized expression which matches the message number
|
|
8245 as in the default of @w{@code{"^\\( *[0-9]+\\)\\^"}}. This expression
|
|
8246 includes the leading space within the parenthesis since it looks
|
|
8247 better to highlight it as well. The highlighting is done with the face
|
|
8248 @code{mh-folder-refiled}. This regular expression should be correct as
|
|
8249 it is needed by non-fontification functions. See also
|
|
8250 @code{mh-note-refiled}.
|
|
8251 @c -------------------------
|
|
8252 @vindex mh-folder-font-lock-keywords
|
|
8253 @vindex mh-folder-sent-to-me-sender
|
|
8254 @vindex mh-mh-folder-sent-to-me-hint
|
|
8255 @vindex mh-scan-format-nmh
|
|
8256 @item mh-scan-sent-to-me-sender-regexp
|
|
8257 This regular expression matches messages sent to us. Note that the
|
|
8258 default setting of @code{mh-folder-font-lock-keywords} expects this
|
|
8259 expression to contain at least two parenthesized expressions. The
|
|
8260 first should match the fontification hint (see
|
|
8261 @code{mh-scan-format-nmh}) and the second should match the user name
|
|
8262 as in the default of
|
|
8263 @w{@code{"^ *[0-9]+.\\([bct]\\).....[ ]*\\(..................\\)"}}.
|
|
8264 If this regular expression is not correct, the notation hints will not
|
|
8265 be highlighted with the face @code{mh-mh-folder-sent-to-me-hint} and
|
|
8266 the sender will not be highlighted with the face
|
|
8267 @code{mh-folder-sent-to-me-sender}.
|
|
8268 @c -------------------------
|
|
8269 @vindex mh-folder-followup
|
|
8270 @vindex mh-folder-font-lock-keywords
|
|
8271 @vindex mh-folder-subject
|
|
8272 @item mh-scan-subject-regexp
|
|
8273 This regular expression matches the subject. It must match from the
|
|
8274 beginning of the line. Note that the default setting of
|
|
8275 @samp{mh-folder-font-lock-keywords} expects this expression to contain
|
|
8276 at least three parenthesized expressions. The first is expected to
|
|
8277 match the @samp{Re:} string, if any, and is highlighted with the face
|
|
8278 @code{mh-folder-followup}. The second matches an optional bracketed
|
|
8279 number after @samp{Re:}, such as in @samp{Re[2]:} (and is thus a
|
|
8280 sub-expression of the first expression). The third is expected to
|
|
8281 match the subject line itself which is highlighted with the face
|
|
8282 @code{mh-folder-subject}. For example, the default is
|
|
8283 @w{@code{"^ *[0-9]+........[ ]*...................}}@*
|
|
8284 @w{@code{\\([Rr][Ee]\\(\\[[0-9]+\\]\\)?:\\s-*\\)*\\([^<\n]*\\)"}}.
|
|
8285 This regular expression should be correct as it is needed by
|
|
8286 non-fontification functions. Note that this example is broken up on
|
|
8287 two lines for readability, but is actually a single string.
|
|
8288 @end vtable
|
|
8289
|
|
8290 Finally, there are a slew of variables that control how MH-E annotates
|
|
8291 the scan lines.
|
|
8292
|
|
8293 @vtable @code
|
|
8294 @findex mh-set-cmd-note
|
|
8295 @vindex mh-adaptive-cmd-note-flag
|
|
8296 @item mh-cmd-note
|
|
8297 Column for notations (default: 4). This variable should be set with
|
|
8298 the function @code{mh-set-cmd-note}. This variable may be updated
|
|
8299 dynamically if @code{mh-adaptive-cmd-note-flag} is on. The following
|
|
8300 variables contain the notational characters. Note that columns in
|
|
8301 Emacs start with 0.
|
|
8302 @c -------------------------
|
|
8303 @item mh-note-copied
|
|
8304 Messages that have been copied are marked by this character (default:
|
|
8305 @code{?C}).
|
|
8306 @c -------------------------
|
|
8307 @vindex mh-scan-cur-msg-number-regexp
|
|
8308 @item mh-note-cur
|
|
8309 The current message (in MH, not in MH-E) is marked by this character
|
|
8310 (default: @code{?+}). See also @code{mh-scan-cur-msg-number-regexp}.
|
|
8311 @c -------------------------
|
|
8312 @vindex mh-scan-deleted-msg-regexp
|
|
8313 @item mh-note-deleted
|
|
8314 Messages that have been deleted are marked by this character (default:
|
|
8315 @code{?D}). See also @code{mh-scan-deleted-msg-regexp}.
|
|
8316 @c -------------------------
|
|
8317 @item mh-note-dist
|
|
8318 Messages that have been redistributed are marked by this character
|
|
8319 (default: @code{?R}).
|
|
8320 @c -------------------------
|
|
8321 @item mh-note-forw
|
|
8322 Messages that have been forwarded are marked by this character
|
|
8323 (default: @code{?F}).
|
|
8324 @c -------------------------
|
|
8325 @item mh-note-printed
|
|
8326 Messages that have been printed are marked by this character (default:
|
|
8327 @code{?P}).
|
|
8328 @c -------------------------
|
|
8329 @vindex mh-scan-refiled-msg-regexp
|
|
8330 @item mh-note-refiled
|
|
8331 Messages that have been refiled are marked by this character (default:
|
|
8332 @code{?^}). See also @code{mh-scan-refiled-msg-regexp}.
|
|
8333 @c -------------------------
|
|
8334 @item mh-note-repl
|
|
8335 Messages that have been replied to are marked by this character
|
|
8336 (default: @code{?-}).
|
|
8337 @c -------------------------
|
|
8338 @item mh-note-seq
|
|
8339 Messages in a user-defined sequence are marked by this character
|
|
8340 (default: @code{?%}). Messages in the @samp{search} sequence are
|
|
8341 marked by this character as well.
|
|
8342 @end vtable
|
|
8343
|
|
8344 For example, let's say I have the following in @file{scan.format}
|
|
8345 which displays the sender, the subject, and the message number. This
|
|
8346 format places a @samp{+} after the message number for the current
|
|
8347 message according to MH; it also uses that column for notations.
|
|
8348
|
|
8349 @smallexample
|
|
8350 %20(decode(friendly@{from@})) %50(decode@{subject@}) %4(msg)%<(cur)+%| %>
|
|
8351 @end smallexample
|
|
8352
|
|
8353 @vindex mh-adaptive-cmd-note-flag
|
|
8354 @vindex mh-scan-format-file
|
|
8355 @vindex mh-scan-format-file, example
|
|
8356
|
|
8357 The first thing you have to do is tell MH-E to use this file.
|
|
8358 Customize @code{mh-scan-format-file} and set its value to @samp{Use
|
|
8359 Default scan Format}. If you didn't get already turn off
|
|
8360 @code{mh-adaptive-cmd-note-flag}, you'll need to do that first.
|
|
8361
|
|
8362 Next, tell MH-E what a valid scan line looks like so that you can at
|
|
8363 least display the output of scan in your MH-Folder buffer.
|
|
8364
|
|
8365 @vindex mh-scan-valid-regexp, example
|
|
8366
|
|
8367 @smalllisp
|
|
8368 (setq mh-scan-valid-regexp "[0-9]+[+D^ ]$")
|
|
8369 @end smalllisp
|
|
8370
|
|
8371 Now, in order to get rid of the @samp{Cursor not pointing to message}
|
|
8372 message, you need to tell MH-E how to access the message number. You
|
|
8373 should also see why MH-E requires that you include a message number in
|
|
8374 the first place.
|
|
8375
|
|
8376 @vindex mh-scan-msg-number-regexp, example
|
|
8377 @vindex mh-scan-msg-search-regexp, example
|
|
8378
|
|
8379 @smalllisp
|
|
8380 (setq mh-scan-msg-number-regexp "^.* \\([0-9]+\\)[+D^ ]$")
|
|
8381 (setq mh-scan-msg-search-regexp " %d[+D^ ]$")
|
|
8382 @end smalllisp
|
|
8383
|
|
8384 In order to get the next and previous commands working, add this.
|
|
8385
|
|
8386 @vindex mh-scan-good-msg-regexp, example
|
|
8387
|
|
8388 @smalllisp
|
|
8389 (setq mh-scan-good-msg-regexp "^.* \\([0-9]+\\)[+D^ ]$")
|
|
8390 @end smalllisp
|
|
8391
|
|
8392 Note that the current message isn't marked with a @samp{+} when moving
|
|
8393 between the next and previous messages. Here is the code required to
|
|
8394 get this working.
|
|
8395
|
|
8396 @vindex set-mh-cmd-note, example
|
|
8397 @vindex mh-scan-cur-msg-number-regexp, example
|
|
8398
|
|
8399 @smalllisp
|
|
8400 (set-mh-cmd-note 76)
|
|
8401 (setq mh-scan-cur-msg-number-regexp "^.* \\([0-9]+\\)\\+$")
|
|
8402 @end smalllisp
|
|
8403
|
|
8404 Finally, add the following to delete and refile messages.
|
|
8405
|
|
8406 @vindex mh-scan-deleted-msg-regexp, example
|
|
8407 @vindex mh-scan-refiled-msg-regexp, example
|
|
8408
|
|
8409 @smalllisp
|
|
8410 (setq mh-scan-deleted-msg-regexp "^.* \\([0-9]+\\)D$")
|
|
8411 (setq mh-scan-refiled-msg-regexp "^.* \\([0-9]+\\)\\^$")
|
|
8412 @end smalllisp
|
|
8413
|
|
8414 This is just a bare minimum; it's best to adjust all of the regular
|
|
8415 expressions to ensure that MH-E and highlighting perform well.
|
|
8416
|
|
8417 @node Procmail, Odds and Ends, Scan Line Formats, Top
|
|
8418 @appendix Reading Mailing Lists Effectively
|
|
8419
|
|
8420 @cindex @command{procmail}
|
|
8421 @cindex @command{slocal}
|
|
8422 @cindex Gnus
|
|
8423 @cindex MH commands, @command{slocal}
|
|
8424 @cindex Unix commands, @command{procmail}
|
|
8425 @cindex mailing lists, reading
|
|
8426
|
|
8427 This appendix explains how to use @uref{http://www.procmail.org/,
|
|
8428 procmail} to file mail from mailing lists into folders which can then
|
|
8429 be read easily with MH-E@footnote{The MH equivalent, @command{slocal},
|
|
8430 can be used as well, but procmail is more flexible and more packages
|
|
8431 exist for procmail than for slocal.}. Some mailing lists have such
|
|
8432 high traffic that Gnus must be used and I discuss how to use Gnus
|
|
8433 side-by-side with MH-E.
|
|
8434
|
|
8435 @cindex @file{.procmailrc}
|
|
8436 @cindex files, @file{.procmailrc}
|
|
8437
|
|
8438 First, I'll describe how to put mail from your mailing lists directly
|
|
8439 into an MH folder using @command{procmail}. First, add the following
|
|
8440 to @file{~/.procmailrc}. While the logging variables aren't strictly
|
|
8441 necessary, they are extremely useful.
|
|
8442
|
|
8443 @smallexample
|
|
8444 [1] # Update PATH so procmail can find myrcvstore, rcvstore and mhparam.
|
|
8445 [2] PATH=$PATH:/usr/lib/mh:/usr/bin/mh:$HOME/bin
|
|
8446 [3]
|
|
8447 [4] # Point LOGFILE at the actual log file.
|
|
8448 [5] LOGFILE=$HOME/.procmail.log
|
|
8449 [6]
|
|
8450 [7] # This setting provides just the right amount of information.
|
|
8451 [8] LOGABSTRACT=all
|
|
8452 [9]
|
|
8453 [10] # Uncomment the following line to see how your patterns match.
|
|
8454 [11] #VERBOSE=yes
|
|
8455 [12]
|
|
8456 [13] # Place mail sent to any MH-E mailing list in +mh-e.
|
|
8457 [14] :0 w: mh-e$LOCKEXT
|
|
8458 [15] * ^TO.*mh-e-.*@.*sourceforge.net
|
|
8459 [16] | myrcvstore -create +mh-e
|
|
8460 @end smallexample
|
|
8461
|
|
8462 @cindex @command{rcvstore}
|
|
8463 @cindex MH commands, @command{rcvstore}
|
|
8464
|
|
8465 Line 14 creates a lock file in your mail directory based upon the name
|
|
8466 of the folder. This is done because @command{rcvstore} does not
|
|
8467 perform locking. While this lock file will prevent @command{procmail}
|
|
8468 from writing to a folder concurrently, there is a slight chance that
|
|
8469 you might lose a message if you're performing operations on a folder
|
|
8470 at the same time @command{rcvstore} is placing a message there. You
|
|
8471 have been warned. Now that that disclaimer is out of the way, note
|
|
8472 that I've been using this set-up for over a decade and haven't lost
|
|
8473 anything to my knowledge@footnote{See
|
|
8474 @uref{https://savannah.nongnu.org/bugs/?func=detailbug&bug_id=4361&group_id=2166,
|
|
8475 Savannah issue #4361} to see if @command{rcvstore} locking is still an
|
|
8476 issue.}.
|
|
8477
|
|
8478 @cindex @samp{Unseen-Sequence:} MH profile component
|
|
8479 @cindex MH profile component, @samp{Unseen-Sequence:}
|
|
8480
|
|
8481 Line 16 uses the following script, @code{myrcvstore}, to massage the
|
|
8482 message as described in the comment and file the message in the given
|
|
8483 folder@footnote{The @samp{-create} argument wasn't always the default
|
|
8484 to @command{rcvstore}.}.
|
|
8485
|
|
8486 @smallexample
|
|
8487 #! /bin/sh
|
|
8488
|
|
8489 # Accepts a message on standard input and passes it through rcvstore
|
|
8490 # after first passing it through any filters. All arguments are passed
|
|
8491 # on to rcvstore.
|
|
8492
|
|
8493 # Force the "From user date" to become part of header. One reason this
|
|
8494 # is done is because the presence of the From field confuses dist so
|
|
8495 # that dist adds a new header, rather than using the existing header.
|
|
8496 # Note that this should not be done for any message that goes into a
|
|
8497 # Gnus incoming file (Gnus will thrown an error) nor should it be
|
|
8498 # applied to any message that goes to the system mailbox because the
|
|
8499 # entire mailbox will be incorporated as a single message.
|
|
8500 formail -c -z -R 'From ' X-Envelope-From: |
|
|
8501 rcvstore $@@
|
|
8502 @end smallexample
|
|
8503
|
|
8504 If your version of @command{rcvstore} doesn't add messages to the
|
|
8505 @samp{unseen} sequence by default, add the following line to your MH
|
|
8506 profile:
|
|
8507
|
|
8508 @smallexample
|
|
8509 Unseen-Sequence: unseen
|
|
8510 @end smallexample
|
|
8511
|
|
8512 Now view your new messages with the speedbar (@pxref{Speedbar}) or with
|
|
8513 @kbd{F n} (@code{mh-index-new-messages}). @xref{Folders}.
|
|
8514
|
|
8515 If you're on a mailing list that is so voluminous that it is
|
|
8516 impossible to read every message, it usually better to read the
|
|
8517 mailing list like a newsgroup in a news reader. Emacs has a built-in
|
|
8518 newsreader called Gnus. The remainder of this appendix talks about how
|
|
8519 to use Gnus with an MH message store. The version of Gnus that was
|
|
8520 used to prepare this manual was 5.10. Versions 5.8 through 5.10 should
|
|
8521 work but versions prior to 5.8 use different options.
|
|
8522
|
|
8523 This table contains a list of Gnus options that you will have to
|
|
8524 modify. Note that for them to become accessible, you'll have to load
|
|
8525 @file{nnml.el} first. This can be done with @kbd{M-x load-library
|
|
8526 @key{RET} nnml @key{RET}}.
|
|
8527
|
|
8528 @vtable @code
|
|
8529 @item gnus-secondary-select-methods
|
|
8530 Select the @samp{nnml} value. This select method uses directories for
|
|
8531 folders and individual files for messages, just like MH. You do not
|
|
8532 have to set an address.
|
|
8533 @c -------------------------
|
|
8534 @item mail-sources
|
|
8535 Select the @samp{Several files in a directory} value, check the
|
|
8536 @samp{Path} box and enter @file{~/Mail} to tell Gnus where to find
|
|
8537 your mail.
|
|
8538 @c -------------------------
|
|
8539 @vindex mail-user-agent
|
|
8540 @item message-mail-user-agent
|
|
8541 In order to send mail within Gnus using MH-E, set this option to
|
|
8542 @samp{mail-user-agent} and set the @code{mail-user-agent} option to
|
|
8543 @samp{Emacs interface to MH}.
|
|
8544 @c -------------------------
|
|
8545 @item nnmail-keep-last-article
|
|
8546 Since Gnus keeps track of which messages you have read, it would be
|
|
8547 bad if Gnus expired the last message, for example, message 100, and
|
|
8548 @command{rcvstore} gave the next new message number 1. Gnus would then
|
|
8549 ignore it since it thinks that you've read messages 1-100. Turning on
|
|
8550 this option ensures that the last message is never removed thereby
|
|
8551 eliminating this problem.
|
|
8552 @end vtable
|
|
8553
|
|
8554 Next add the following to @file{~/.procmailrc}. If you don't subscribe
|
|
8555 to the GnuCash mailing list, substitute one to which you are
|
|
8556 subscribed.
|
|
8557
|
|
8558 @smallexample
|
|
8559 PATH=$PATH:/usr/bin/mh
|
|
8560 MAILDIR=$HOME/`mhparam Path`
|
|
8561 # Place mail sent to the GnuCash mailing list in gnucash.spool, where
|
|
8562 # Gnus will pick it up.
|
|
8563 :0:
|
|
8564 * ^TO.*gnucash.*@.*gnucash.org
|
|
8565 gnucash.spool
|
|
8566 @end smallexample
|
|
8567
|
|
8568 Wait for some messages to appear in @file{gnucash.spool} and run Gnus
|
|
8569 with @kbd{M-x gnus @key{RET}}. To view the folder created in the
|
|
8570 example above, you would tell Gnus about it the first time only with
|
|
8571 @kbd{G m gnucash @key{RET} nnml @key{RET}}. In MH-E, this folder is
|
|
8572 known as @samp{+gnucash}.
|
|
8573
|
|
8574 @node Odds and Ends, History, Procmail, Top
|
|
8575 @appendix Odds and Ends
|
|
8576
|
|
8577 This appendix covers a few topics that don't fit elsewhere. Here I
|
|
8578 tell you how to report bugs and how to get on the MH-E mailing lists.
|
|
8579 I also point out some additional sources of information.
|
|
8580
|
|
8581 @menu
|
|
8582 * Bug Reports::
|
|
8583 * Mailing Lists::
|
|
8584 * MH FAQ and Support::
|
|
8585 * Getting MH-E::
|
|
8586 @end menu
|
|
8587
|
|
8588 @node Bug Reports, Mailing Lists, Odds and Ends, Odds and Ends
|
|
8589 @appendixsec Bug Reports
|
|
8590
|
|
8591 @cindex bugs
|
|
8592 @cindex SourceForge
|
|
8593 @kindex M-x mh-version
|
|
8594
|
|
8595 Bug reports should be filed at
|
|
8596 @uref{https://sourceforge.net/tracker/?group_id=13357&atid=113357,
|
|
8597 SourceForge}. You need to be a SourceForge user to submit bug reports,
|
|
8598 but this is easy enough to do that it shouldn't be a restriction for
|
|
8599 you. Please include the output of @kbd{M-x mh-version}
|
|
8600 (@pxref{Miscellaneous}) in any bug report you send unless you're 110%
|
|
8601 positive we won't ask for it.
|
|
8602
|
|
8603 @node Mailing Lists, MH FAQ and Support, Bug Reports, Odds and Ends
|
|
8604 @appendixsec MH-E Mailing Lists
|
|
8605
|
|
8606 @cindex SourceForge
|
|
8607 @cindex mailing lists
|
|
8608
|
|
8609 There are several mailing lists for MH-E. They are @i{mh-e-users at
|
|
8610 lists.sourceforge.net}, @i{mh-e-announce at lists.sourceforge.net},
|
|
8611 and @i{mh-e-devel at lists.sourceforge.net}. You can subscribe or view
|
|
8612 the archives at @uref{https://sourceforge.net/mail/?group_id=13357,
|
|
8613 SourceForge}. Do not report bugs on these lists; please submit them
|
|
8614 via SourceForge (@pxref{Bug Reports}).
|
|
8615
|
|
8616 @node MH FAQ and Support, Getting MH-E, Mailing Lists, Odds and Ends
|
|
8617 @appendixsec MH FAQ and Support
|
|
8618
|
|
8619 @cindex FAQ
|
|
8620 @cindex MH FAQ
|
|
8621
|
|
8622 The article @uref{http://www.newt.com/faq/mh.html, @cite{MH Frequently
|
|
8623 Asked Questions (FAQ) with Answers}} appears monthly in the newsgroup
|
|
8624 @samp{comp.mail.mh}. While very little is there that deals with MH-E
|
|
8625 specifically, there is an incredible wealth of material about MH
|
|
8626 itself which you will find useful.
|
|
8627
|
|
8628 @cindex support
|
|
8629
|
|
8630 You can find FAQs on MH-E at the
|
|
8631 @uref{https://sourceforge.net/tracker/?group_id=13357&atid=213357,
|
|
8632 Support Requests} page on SourceForge. If you don't find the answer to
|
|
8633 your question, file a support request and your question will become a
|
|
8634 new FAQ!
|
|
8635
|
|
8636 @node Getting MH-E, , MH FAQ and Support, Odds and Ends
|
|
8637 @appendixsec Getting MH-E
|
|
8638
|
|
8639 @cindex MH-E, obtaining
|
|
8640 @cindex getting MH-E
|
|
8641 @cindex obtaining MH-E
|
|
8642
|
|
8643 Because MH-E is undergoing a phase of sustained growth, the version of
|
|
8644 MH-E in your Emacs is likely to be out of date although it is most
|
|
8645 likely to be more up to date than the copy that comes with the MH
|
|
8646 distribution in @file{miscellany/mh-e}.
|
|
8647
|
|
8648 @cindex change log
|
|
8649 @cindex release notes
|
|
8650
|
|
8651 New MH-E releases are always available for downloading at
|
|
8652 @uref{https://sourceforge.net/project/showfiles.php?group_id=13357,
|
|
8653 SourceForge} before they appear in an Emacs release. You can read the
|
|
8654 release notes on that page to determine if the given release of MH-E
|
|
8655 is already installed in your version of Emacs. You can also read the
|
|
8656 change log to see if you are interested in what the given release of
|
|
8657 MH-E has to offer (although we have no doubt that you will be
|
|
8658 extremely interested in all new releases).
|
|
8659
|
|
8660 @cindex Debian
|
|
8661
|
|
8662 If you use Debian, you can install the Debian
|
|
8663 @uref{http://packages.debian.org/unstable/mail/mh-e, mh-e package}
|
|
8664 instead.
|
|
8665
|
|
8666 @cindex files, @samp{MH-E-NEWS}
|
|
8667 @cindex files, @samp{README}
|
|
8668 @cindex news
|
|
8669 @cindex @samp{MH-E-NEWS}
|
|
8670 @cindex @samp{README}
|
|
8671 @kindex M-x mh-version
|
|
8672
|
|
8673 After you download and extract the MH-E tarball, read the
|
|
8674 @file{README} file and @file{MH-E-NEWS}. These correspond to the
|
|
8675 release notes and change log mentioned above. The file @file{README}
|
|
8676 contains instructions on installing MH-E. If you're already running
|
|
8677 Emacs, please quit that session and start again to load in the new
|
|
8678 MH-E. Check that you're running the new version with the command
|
|
8679 @kbd{M-x mh-version}.
|
|
8680
|
|
8681 @cindex contributed software
|
|
8682 @cindex manual
|
|
8683 @cindex documentation
|
|
8684
|
|
8685 In addition to the mh-e package, the
|
|
8686 @uref{https://sourceforge.net/project/showfiles.php?group_id=13357,
|
|
8687 SourceForge} site also contains doc and contrib packages. The former
|
|
8688 is the latest release of this manual, and the latter contains a few
|
|
8689 contributed packages you might find useful.
|
|
8690
|
|
8691 @node History, GFDL, Odds and Ends, Top
|
|
8692 @appendix History of MH-E
|
|
8693
|
|
8694 @cindex Bill Wohler
|
|
8695 @cindex Brian Reid
|
|
8696 @cindex Gildea, Stephen
|
|
8697 @cindex Jim Larus
|
|
8698 @cindex Larus, Jim
|
|
8699 @cindex MH-E, versions
|
|
8700 @cindex Reid, Brian
|
|
8701 @cindex SourceForge
|
|
8702 @cindex Stephen Gildea
|
|
8703 @cindex Wohler, Bill
|
|
8704 @cindex history of MH-E
|
|
8705 @cindex versions of MH-E
|
|
8706
|
|
8707 MH-E was originally written by Brian Reid in 1983 and has changed
|
|
8708 hands several times since then. Jim Larus wanted to do something
|
|
8709 similar for GNU Emacs, and ended up completely rewriting it that same
|
|
8710 year. In 1989, Stephen Gildea picked it up and added many
|
|
8711 improvements. Bill Wohler then took over in 2000 and moved its
|
|
8712 development to @uref{http://sourceforge.net/, SourceForge} where it
|
|
8713 lives today.
|
|
8714
|
|
8715 @menu
|
|
8716 * From Brian Reid::
|
|
8717 * From Jim Larus::
|
|
8718 * From Stephen Gildea::
|
|
8719 * From Bill Wohler::
|
|
8720 @end menu
|
|
8721
|
|
8722 @node From Brian Reid, From Jim Larus, History, History
|
|
8723 @appendixsec From Brian Reid
|
|
8724
|
|
8725 @cindex Brian Reid
|
|
8726 @cindex Reid, Brian
|
|
8727
|
|
8728 One day in 1983 I got the flu and had to stay home from work for three
|
|
8729 days with nothing to do. I used that time to write MHE@. The
|
|
8730 fundamental idea behind MHE was that it was a ``puppeteer'' driving
|
|
8731 the MH programs underneath it. MH had a model that the editor was
|
|
8732 supposed to run as a sub-process of the mailer, which seemed to me at
|
|
8733 the time to be the tail wagging the dog. So I turned it around and
|
|
8734 made the editor drive the MH programs. I made sure that the UCI people
|
|
8735 (who were maintaining MH at the time) took in my changes and made them
|
|
8736 stick.
|
|
8737
|
|
8738 Today, I still use my own version of MHE because I don't at all like
|
|
8739 the way that GNU MH-E works and I've never gotten to be good enough at
|
|
8740 hacking Emacs Lisp to make GNU MH-E do what I want. The Gosling-emacs
|
|
8741 version of MHE and the GNU Emacs version of MH-E have almost nothing
|
|
8742 in common except similar names. They work differently, have different
|
|
8743 conceptual models, and have different key bindings@footnote{After
|
|
8744 reading this article, I questioned Brian about his version of MHE, and
|
|
8745 received some great ideas for improving MH-E such as a dired-like
|
|
8746 method of selecting folders; and removing the prompting when sending
|
|
8747 mail, filling in the blanks in the draft buffer instead. I passed them
|
|
8748 on to Stephen Gildea, the current maintainer, and he was excited about
|
|
8749 the ideas as well. Perhaps one day, MH-E will again resemble MHE
|
|
8750 (draft form editing was introduced in version 7.4).}.
|
|
8751
|
|
8752 Brian Reid, June 1994
|
|
8753
|
|
8754 @node From Jim Larus, From Stephen Gildea, From Brian Reid, History
|
|
8755 @appendixsec From Jim Larus
|
|
8756
|
|
8757 @cindex Jim Larus
|
|
8758 @cindex Larus, Jim
|
|
8759
|
|
8760 Brian Reid, while at CMU or shortly after going to Stanford wrote a
|
|
8761 mail reading program called MHE for Gosling Emacs. It had much the
|
|
8762 same structure as MH-E (i.e., invoked MH programs), though it was
|
|
8763 simpler and the commands were slightly different. Unfortunately, I no
|
|
8764 longer have a copy so the differences are lost in the mists of time.
|
|
8765
|
|
8766 In '82-83, I was working at BBN and wrote a lot of mlisp code in
|
|
8767 Gosling Emacs to make it look more like Tennex Emacs. One of the
|
|
8768 packages that I picked up and improved was Reid's mail system. In '83,
|
|
8769 I went back to Berkeley. About that time, Stallman's first version of
|
|
8770 GNU Emacs came out and people started to move to it from Gosling Emacs
|
|
8771 (as I recall, the transition took a year or two). I decided to port
|
|
8772 Reid's MHE and used the mlisp to Emacs Lisp translator that came with
|
|
8773 GNU Emacs. It did a lousy job and the resulting code didn't work, so I
|
|
8774 bit the bullet and rewrote the code by hand (it was a lot smaller and
|
|
8775 simpler then, so it took only a day or two).
|
|
8776
|
|
8777 Soon after that, MH-E became part of the standard Emacs distribution
|
|
8778 and suggestions kept dribbling in for improvements. MH-E soon reached
|
|
8779 sufficient functionality to keep me happy, but I kept on improving it
|
|
8780 because I was a graduate student with plenty of time on my hands and
|
|
8781 it was more fun than my dissertation. In retrospect, the one thing
|
|
8782 that I regret is not writing any documentation, which seriously
|
|
8783 limited the use and appeal of the package.
|
|
8784
|
|
8785 @cindex @command{xmh}, in MH-E history
|
|
8786
|
|
8787 In '89, I came to Wisconsin as a professor and decided not to work on
|
|
8788 MH-E. It was stable, except for minor bugs, and had enough
|
|
8789 functionality, so I let it be for a few years. Stephen Gildea of BBN
|
|
8790 began to pester me about the bugs, but I ignored them. In 1990, he
|
|
8791 went off to the X Consortium, said good bye, and said that he would
|
|
8792 now be using @command{xmh}. A few months later, he came back and said
|
|
8793 that he couldn't stand @command{xmh} and could I put a few more bug fixes
|
|
8794 into MH-E. At that point, I had no interest in fixing MH-E, so I gave
|
|
8795 the responsibility of maintenance to him and he has done a fine job
|
|
8796 since then.
|
|
8797
|
|
8798 Jim Larus, June 1994
|
|
8799
|
|
8800 @node From Stephen Gildea, From Bill Wohler, From Jim Larus, History
|
|
8801 @appendixsec From Stephen Gildea
|
|
8802
|
|
8803 @cindex Gildea, Stephen
|
|
8804 @cindex Stephen Gildea
|
|
8805
|
|
8806 In 1987 I went to work for Bolt Beranek and Newman, as Jim had before
|
|
8807 me. In my previous job, I had been using RMAIL, but as my folders tend
|
|
8808 to run large, I was frustrated with the speed of RMAIL@. However, I
|
|
8809 stuck with it because I wanted the GNU Emacs interface. I am very
|
|
8810 familiar and comfortable with the Emacs interface (with just a few
|
|
8811 modifications of my own) and dislike having to use applications with
|
|
8812 embedded editors; they never live up to Emacs.
|
|
8813
|
|
8814 MH is the mail reader of choice at BBN, so I converted to it. Since I
|
|
8815 didn't want to give up using an Emacs interface, I started using MH-E.
|
|
8816 As is my wont, I started hacking on it almost immediately. I first
|
|
8817 used version 3.4m. One of the first features I added was to treat the
|
|
8818 folder buffer as a file-visiting buffer: you could lock it, save it,
|
|
8819 and be warned of unsaved changes when killing it. I also worked to
|
|
8820 bring its functionality a little closer to RMAIL@. Jim Larus was very
|
|
8821 cooperative about merging in my changes, and my efforts first appeared
|
|
8822 in version 3.6, distributed with Emacs 18.52 in 1988. Next I decided
|
|
8823 MH-E was too slow and optimized it a lot. Version, 3.7, distributed
|
|
8824 with Emacs 18.56 in 1990, was noticeably faster.
|
|
8825
|
|
8826 When I moved to the X Consortium I became the first person there to
|
|
8827 not use xmh. (There is now one other engineer there using MH-E.) About
|
|
8828 this point I took over maintenance of MH-E from Jim and was finally
|
|
8829 able to add some features Jim hadn't accepted, such as the backward
|
|
8830 searching undo. My first release was 3.8 (Emacs 18.58) in 1992.
|
|
8831
|
|
8832 Now, in 1994, we see a flurry of releases, with both 4.0 and 5.0.
|
|
8833 Version 4.0 added many new features, including background folder
|
|
8834 collection and support for composing @sc{mime} messages. (Reading
|
|
8835 @sc{mime} messages remains to be done, alas.) While writing this book,
|
|
8836 Bill Wohler gave MH-E its closest examination ever, uncovering bugs
|
|
8837 and inconsistencies that required a new major version to fix, and so
|
|
8838 version 5 was released.
|
|
8839
|
|
8840 Stephen Gildea, June 1994
|
|
8841
|
|
8842 @node From Bill Wohler, , From Stephen Gildea, History
|
|
8843 @appendixsec From Bill Wohler
|
|
8844
|
|
8845 @cindex Wohler, Bill
|
|
8846 @cindex Bill Wohler
|
|
8847
|
|
8848 The preface originally included the following text which I use to
|
|
8849 begin my story:
|
|
8850
|
|
8851 @quotation
|
|
8852 But it's important to note a brief history of MH-E.
|
|
8853
|
|
8854 @w{Version 3} was prevalent through the @w{Emacs 18} and early
|
|
8855 @w{Emacs 19} years. Then @w{Version 4} came out (@w{Emacs 19.23}),
|
|
8856 which introduced several new and changed commands. Next, @w{Version
|
|
8857 5.0} was released, which fixed some bugs and incompatibilities, and
|
|
8858 was incorporated into @w{Emacs 19.29}.
|
|
8859 @end quotation
|
|
8860
|
|
8861 After a long break, Stephen handed the reins over to me in 2000. I
|
|
8862 moved the project to a new site called SourceForge and organized a
|
|
8863 great team of developers. Our first release in late 2001 was version
|
|
8864 6. It appeared around the time of Emacs 21.2 and had menus and tool
|
|
8865 bar buttons.
|
|
8866
|
|
8867 Then, indexed searches, improved MIME handling, a speedbar, multiple
|
|
8868 identities, alias completion, an index view of unseen messages, spam
|
|
8869 software support, Face and X-Image-URL header field support, Fcc
|
|
8870 completion, arbitrary range handling, and draft form editing were
|
|
8871 introduced in the version 7 series around the time of Emacs 21.4
|
|
8872 (2004). Still, Emacs itself contained version 5 of MH-E released back
|
|
8873 in 1994.
|
|
8874
|
|
8875 Version 8 development was mostly driven by the rewrite of the manual.
|
|
8876 It also brought mailutils support, S/MIME support, picon support, and
|
|
8877 an improved interface for hiding header fields. The CVS repository was
|
|
8878 migrated from SourceForge to Savannah (only for those files that were
|
|
8879 already part of Emacs) and the software was completely reorganized to
|
|
8880 push back two decades of entropy. Version 8 will appear in Emacs 22.1,
|
|
8881 expected to be released in 2006.
|
|
8882
|
|
8883 Bill Wohler, February 2006
|
|
8884
|
|
8885 @node GFDL, GPL, History, Top
|
|
8886 @appendix GNU FREE DOCUMENTATION LICENSE
|
|
8887 @center Version 1.2, November 2002
|
|
8888
|
|
8889 @display
|
|
8890 Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
|
|
8891 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
8892
|
|
8893 Everyone is permitted to copy and distribute verbatim copies
|
|
8894 of this license document, but changing it is not allowed.
|
|
8895 @end display
|
|
8896 @sp 1
|
|
8897 @enumerate 0
|
|
8898 @item
|
|
8899 PREAMBLE
|
|
8900
|
|
8901 The purpose of this License is to make a manual, textbook, or other
|
|
8902 functional and useful document ``free'' in the sense of freedom: to
|
|
8903 assure everyone the effective freedom to copy and redistribute it,
|
|
8904 with or without modifying it, either commercially or noncommercially.
|
|
8905 Secondarily, this License preserves for the author and publisher a way
|
|
8906 to get credit for their work, while not being considered responsible
|
|
8907 for modifications made by others.
|
|
8908
|
|
8909 This License is a kind of ``copyleft'', which means that derivative
|
|
8910 works of the document must themselves be free in the same sense. It
|
|
8911 complements the GNU General Public License, which is a copyleft
|
|
8912 license designed for free software.
|
|
8913
|
|
8914 We have designed this License in order to use it for manuals for free
|
|
8915 software, because free software needs free documentation: a free
|
|
8916 program should come with manuals providing the same freedoms that the
|
|
8917 software does. But this License is not limited to software manuals;
|
|
8918 it can be used for any textual work, regardless of subject matter or
|
|
8919 whether it is published as a printed book. We recommend this License
|
|
8920 principally for works whose purpose is instruction or reference.
|
|
8921
|
|
8922 @sp 1
|
|
8923 @item
|
|
8924 APPLICABILITY AND DEFINITIONS
|
|
8925
|
|
8926 This License applies to any manual or other work, in any medium, that
|
|
8927 contains a notice placed by the copyright holder saying it can be
|
|
8928 distributed under the terms of this License. Such a notice grants a
|
|
8929 world-wide, royalty-free license, unlimited in duration, to use that
|
|
8930 work under the conditions stated herein. The ``Document'', below,
|
|
8931 refers to any such manual or work. Any member of the public is a
|
|
8932 licensee, and is addressed as ``you''. You accept the license if you
|
|
8933 copy, modify or distribute the work in a way requiring permission
|
|
8934 under copyright law.
|
|
8935
|
|
8936 A ``Modified Version'' of the Document means any work containing the
|
|
8937 Document or a portion of it, either copied verbatim, or with
|
|
8938 modifications and/or translated into another language.
|
|
8939
|
|
8940 A ``Secondary Section'' is a named appendix or a front-matter section of
|
|
8941 the Document that deals exclusively with the relationship of the
|
|
8942 publishers or authors of the Document to the Document's overall subject
|
|
8943 (or to related matters) and contains nothing that could fall directly
|
|
8944 within that overall subject. (Thus, if the Document is in part a
|
|
8945 textbook of mathematics, a Secondary Section may not explain any
|
|
8946 mathematics.) The relationship could be a matter of historical
|
|
8947 connection with the subject or with related matters, or of legal,
|
|
8948 commercial, philosophical, ethical or political position regarding
|
|
8949 them.
|
|
8950
|
|
8951 The ``Invariant Sections'' are certain Secondary Sections whose titles
|
|
8952 are designated, as being those of Invariant Sections, in the notice
|
|
8953 that says that the Document is released under this License. If a
|
|
8954 section does not fit the above definition of Secondary then it is not
|
|
8955 allowed to be designated as Invariant. The Document may contain zero
|
|
8956 Invariant Sections. If the Document does not identify any Invariant
|
|
8957 Sections then there are none.
|
|
8958
|
|
8959 The ``Cover Texts'' are certain short passages of text that are listed,
|
|
8960 as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
|
8961 the Document is released under this License. A Front-Cover Text may
|
|
8962 be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
|
8963
|
|
8964 A ``Transparent'' copy of the Document means a machine-readable copy,
|
|
8965 represented in a format whose specification is available to the
|
|
8966 general public, that is suitable for revising the document
|
|
8967 straightforwardly with generic text editors or (for images composed of
|
|
8968 pixels) generic paint programs or (for drawings) some widely available
|
|
8969 drawing editor, and that is suitable for input to text formatters or
|
|
8970 for automatic translation to a variety of formats suitable for input
|
|
8971 to text formatters. A copy made in an otherwise Transparent file
|
|
8972 format whose markup, or absence of markup, has been arranged to thwart
|
|
8973 or discourage subsequent modification by readers is not Transparent.
|
|
8974 An image format is not Transparent if used for any substantial amount
|
|
8975 of text. A copy that is not ``Transparent'' is called ``Opaque.''
|
|
8976
|
|
8977
|
|
8978 Examples of suitable formats for Transparent copies include plain
|
|
8979 ASCII without markup, Texinfo input format, LaTeX input format, SGML
|
|
8980 or XML using a publicly available DTD, and standard-conforming simple
|
|
8981 HTML, PostScript or PDF designed for human modification. Examples of
|
|
8982 transparent image formats include PNG, XCF and JPG. Opaque formats
|
|
8983 include proprietary formats that can be read and edited only by
|
|
8984 proprietary word processors, SGML or XML for which the DTD and/or
|
|
8985 processing tools are not generally available, and the
|
|
8986 machine-generated HTML, PostScript or PDF produced by some word
|
|
8987 processors for output purposes only.
|
|
8988
|
|
8989 The ``Title Page'' means, for a printed book, the title page itself,
|
|
8990 plus such following pages as are needed to hold, legibly, the material
|
|
8991 this License requires to appear in the title page. For works in
|
|
8992 formats which do not have any title page as such, ``Title Page'' means
|
|
8993 the text near the most prominent appearance of the work's title,
|
|
8994 preceding the beginning of the body of the text.
|
|
8995
|
|
8996 A section ``Entitled XYZ'' means a named subunit of the Document whose
|
|
8997 title either is precisely XYZ or contains XYZ in parentheses following
|
|
8998 text that translates XYZ in another language. (Here XYZ stands for a
|
|
8999 specific section name mentioned below, such as ``Acknowledgements'',
|
|
9000 ``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
|
|
9001 of such a section when you modify the Document means that it remains a
|
|
9002 section ``Entitled XYZ'' according to this definition.
|
|
9003
|
|
9004 The Document may include Warranty Disclaimers next to the notice which
|
|
9005 states that this License applies to the Document. These Warranty
|
|
9006 Disclaimers are considered to be included by reference in this
|
|
9007 License, but only as regards disclaiming warranties: any other
|
|
9008 implication that these Warranty Disclaimers may have is void and has
|
|
9009 no effect on the meaning of this License.
|
|
9010 @sp 1
|
|
9011 @item
|
|
9012 VERBATIM COPYING
|
|
9013
|
|
9014 You may copy and distribute the Document in any medium, either
|
|
9015 commercially or noncommercially, provided that this License, the
|
|
9016 copyright notices, and the license notice saying this License applies
|
|
9017 to the Document are reproduced in all copies, and that you add no other
|
|
9018 conditions whatsoever to those of this License. You may not use
|
|
9019 technical measures to obstruct or control the reading or further
|
|
9020 copying of the copies you make or distribute. However, you may accept
|
|
9021 compensation in exchange for copies. If you distribute a large enough
|
|
9022 number of copies you must also follow the conditions in section 3.
|
|
9023
|
|
9024 You may also lend copies, under the same conditions stated above, and
|
|
9025 you may publicly display copies.
|
|
9026 @sp 1
|
|
9027 @item
|
|
9028 COPYING IN QUANTITY
|
|
9029
|
|
9030 If you publish printed copies (or copies in media that commonly have
|
|
9031 printed covers) of the Document, numbering more than 100, and the
|
|
9032 Document's license notice requires Cover Texts, you must enclose the
|
|
9033 copies in covers that carry, clearly and legibly, all these Cover
|
|
9034 Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
|
9035 the back cover. Both covers must also clearly and legibly identify
|
|
9036 you as the publisher of these copies. The front cover must present
|
|
9037 the full title with all words of the title equally prominent and
|
|
9038 visible. You may add other material on the covers in addition.
|
|
9039 Copying with changes limited to the covers, as long as they preserve
|
|
9040 the title of the Document and satisfy these conditions, can be treated
|
|
9041 as verbatim copying in other respects.
|
|
9042
|
|
9043 If the required texts for either cover are too voluminous to fit
|
|
9044 legibly, you should put the first ones listed (as many as fit
|
|
9045 reasonably) on the actual cover, and continue the rest onto adjacent
|
|
9046 pages.
|
|
9047
|
|
9048 If you publish or distribute Opaque copies of the Document numbering
|
|
9049 more than 100, you must either include a machine-readable Transparent
|
|
9050 copy along with each Opaque copy, or state in or with each Opaque copy
|
|
9051 a computer-network location from which the general network-using
|
|
9052 public has access to download using public-standard network protocols
|
|
9053 a complete Transparent copy of the Document, free of added material.
|
|
9054 If you use the latter option, you must take reasonably prudent steps,
|
|
9055 when you begin distribution of Opaque copies in quantity, to ensure
|
|
9056 that this Transparent copy will remain thus accessible at the stated
|
|
9057 location until at least one year after the last time you distribute an
|
|
9058 Opaque copy (directly or through your agents or retailers) of that
|
|
9059 edition to the public.
|
|
9060
|
|
9061 It is requested, but not required, that you contact the authors of the
|
|
9062 Document well before redistributing any large number of copies, to give
|
|
9063 them a chance to provide you with an updated version of the Document.
|
|
9064 @sp 1
|
|
9065 @item
|
|
9066 MODIFICATIONS
|
|
9067
|
|
9068 You may copy and distribute a Modified Version of the Document under
|
|
9069 the conditions of sections 2 and 3 above, provided that you release
|
|
9070 the Modified Version under precisely this License, with the Modified
|
|
9071 Version filling the role of the Document, thus licensing distribution
|
|
9072 and modification of the Modified Version to whoever possesses a copy
|
|
9073 of it. In addition, you must do these things in the Modified Version:
|
|
9074
|
|
9075 A. Use in the Title Page (and on the covers, if any) a title distinct
|
|
9076 from that of the Document, and from those of previous versions
|
|
9077 (which should, if there were any, be listed in the History section
|
|
9078 of the Document). You may use the same title as a previous version
|
|
9079 if the original publisher of that version gives permission.@*
|
|
9080 B. List on the Title Page, as authors, one or more persons or entities
|
|
9081 responsible for authorship of the modifications in the Modified
|
|
9082 Version, together with at least five of the principal authors of the
|
|
9083 Document (all of its principal authors, if it has fewer than five),
|
|
9084 unless they release you from this requirement.@*
|
|
9085 C. State on the Title page the name of the publisher of the
|
|
9086 Modified Version, as the publisher.@*
|
|
9087 D. Preserve all the copyright notices of the Document.@*
|
|
9088 E. Add an appropriate copyright notice for your modifications
|
|
9089 adjacent to the other copyright notices.@*
|
|
9090 F. Include, immediately after the copyright notices, a license notice
|
|
9091 giving the public permission to use the Modified Version under the
|
|
9092 terms of this License, in the form shown in the Addendum below.@*
|
|
9093 G. Preserve in that license notice the full lists of Invariant Sections
|
|
9094 and required Cover Texts given in the Document's license notice.@*
|
|
9095 H. Include an unaltered copy of this License.@*
|
|
9096 I. Preserve the section Entitled ``History'', Preserve its Title, and add
|
|
9097 to it an item stating at least the title, year, new authors, and
|
|
9098 publisher of the Modified Version as given on the Title Page. If
|
|
9099 there is no section Entitled ``History'' in the Document, create one
|
|
9100 stating the title, year, authors, and publisher of the Document as
|
|
9101 given on its Title Page, then add an item describing the Modified
|
|
9102 Version as stated in the previous sentence.@*
|
|
9103 J. Preserve the network location, if any, given in the Document for
|
|
9104 public access to a Transparent copy of the Document, and likewise
|
|
9105 the network locations given in the Document for previous versions
|
|
9106 it was based on. These may be placed in the ``History'' section.
|
|
9107 You may omit a network location for a work that was published at
|
|
9108 least four years before the Document itself, or if the original
|
|
9109 publisher of the version it refers to gives permission.@*
|
|
9110 K. For any section Entitled ``Acknowledgements'' or ``Dedications'',
|
|
9111 Preserve the Title of the section, and preserve in the section all
|
|
9112 the substance and tone of each of the contributor acknowledgements
|
|
9113 and/or dedications given therein.@*
|
|
9114 L. Preserve all the Invariant Sections of the Document,
|
|
9115 unaltered in their text and in their titles. Section numbers
|
|
9116 or the equivalent are not considered part of the section titles.@*
|
|
9117 M. Delete any section Entitled ``Endorsements.'' Such a section
|
|
9118 may not be included in the Modified Version.@*
|
|
9119 N. Do not retitle any existing section to be Entitled ``Endorsements''
|
|
9120 or to conflict in title with any Invariant Section.@*
|
|
9121 O. Preserve any Warranty Disclaimers.@*
|
|
9122 @sp 1
|
|
9123 If the Modified Version includes new front-matter sections or
|
|
9124 appendices that qualify as Secondary Sections and contain no material
|
|
9125 copied from the Document, you may at your option designate some or all
|
|
9126 of these sections as invariant. To do this, add their titles to the
|
|
9127 list of Invariant Sections in the Modified Version's license notice.
|
|
9128 These titles must be distinct from any other section titles.
|
|
9129
|
|
9130 You may add a section Entitled ``Endorsements'', provided it contains
|
|
9131 nothing but endorsements of your Modified Version by various
|
|
9132 parties--for example, statements of peer review or that the text has
|
|
9133 been approved by an organization as the authoritative definition of a
|
|
9134 standard.
|
|
9135
|
|
9136 You may add a passage of up to five words as a Front-Cover Text, and a
|
|
9137 passage of up to 25 words as a Back-Cover Text, to the end of the list
|
|
9138 of Cover Texts in the Modified Version. Only one passage of
|
|
9139 Front-Cover Text and one of Back-Cover Text may be added by (or
|
|
9140 through arrangements made by) any one entity. If the Document already
|
|
9141 includes a cover text for the same cover, previously added by you or
|
|
9142 by arrangement made by the same entity you are acting on behalf of,
|
|
9143 you may not add another; but you may replace the old one, on explicit
|
|
9144 permission from the previous publisher that added the old one.
|
|
9145
|
|
9146 The author(s) and publisher(s) of the Document do not by this License
|
|
9147 give permission to use their names for publicity for or to assert or
|
|
9148 imply endorsement of any Modified Version.
|
|
9149 @sp 1
|
|
9150 @item
|
|
9151 COMBINING DOCUMENTS
|
|
9152
|
|
9153 You may combine the Document with other documents released under this
|
|
9154 License, under the terms defined in section 4 above for modified
|
|
9155 versions, provided that you include in the combination all of the
|
|
9156 Invariant Sections of all of the original documents, unmodified, and
|
|
9157 list them all as Invariant Sections of your combined work in its
|
|
9158 license notice, and that you preserve all their Warranty Disclaimers.
|
|
9159
|
|
9160 The combined work need only contain one copy of this License, and
|
|
9161 multiple identical Invariant Sections may be replaced with a single
|
|
9162 copy. If there are multiple Invariant Sections with the same name but
|
|
9163 different contents, make the title of each such section unique by
|
|
9164 adding at the end of it, in parentheses, the name of the original
|
|
9165 author or publisher of that section if known, or else a unique number.
|
|
9166 Make the same adjustment to the section titles in the list of
|
|
9167 Invariant Sections in the license notice of the combined work.
|
|
9168
|
|
9169 In the combination, you must combine any sections Entitled ``History''
|
|
9170 in the various original documents, forming one section Entitled
|
|
9171 ``History''; likewise combine any sections Entitled ``Acknowledgements'',
|
|
9172 and any sections Entitled ``Dedications.'' You must delete all sections
|
|
9173 Entitled ``Endorsements.''
|
|
9174 @sp 1
|
|
9175 @item
|
|
9176 COLLECTIONS OF DOCUMENTS
|
|
9177
|
|
9178 You may make a collection consisting of the Document and other documents
|
|
9179 released under this License, and replace the individual copies of this
|
|
9180 License in the various documents with a single copy that is included in
|
|
9181 the collection, provided that you follow the rules of this License for
|
|
9182 verbatim copying of each of the documents in all other respects.
|
|
9183
|
|
9184 You may extract a single document from such a collection, and distribute
|
|
9185 it individually under this License, provided you insert a copy of this
|
|
9186 License into the extracted document, and follow this License in all
|
|
9187 other respects regarding verbatim copying of that document.
|
|
9188 @sp 1
|
|
9189 @item
|
|
9190 AGGREGATION WITH INDEPENDENT WORKS
|
|
9191
|
|
9192 A compilation of the Document or its derivatives with other separate
|
|
9193 and independent documents or works, in or on a volume of a storage or
|
|
9194 distribution medium, is called an ``aggregate'' if the copyright
|
|
9195 resulting from the compilation is not used to limit the legal rights
|
|
9196 of the compilation's users beyond what the individual works permit.
|
|
9197 When the Document is included in an aggregate, this License does not
|
|
9198 apply to the other works in the aggregate which are not themselves
|
|
9199 derivative works of the Document.
|
|
9200
|
|
9201 If the Cover Text requirement of section 3 is applicable to these
|
|
9202 copies of the Document, then if the Document is less than one half of
|
|
9203 the entire aggregate, the Document's Cover Texts may be placed on
|
|
9204 covers that bracket the Document within the aggregate, or the
|
|
9205 electronic equivalent of covers if the Document is in electronic form.
|
|
9206 Otherwise they must appear on printed covers that bracket the whole
|
|
9207 aggregate.
|
|
9208 @sp 1
|
|
9209 @item
|
|
9210 TRANSLATION
|
|
9211
|
|
9212 Translation is considered a kind of modification, so you may
|
|
9213 distribute translations of the Document under the terms of section 4.
|
|
9214 Replacing Invariant Sections with translations requires special
|
|
9215 permission from their copyright holders, but you may include
|
|
9216 translations of some or all Invariant Sections in addition to the
|
|
9217 original versions of these Invariant Sections. You may include a
|
|
9218 translation of this License, and all the license notices in the
|
|
9219 Document, and any Warranty Disclaimers, provided that you also include
|
|
9220 the original English version of this License and the original versions
|
|
9221 of those notices and disclaimers. In case of a disagreement between
|
|
9222 the translation and the original version of this License or a notice
|
|
9223 or disclaimer, the original version will prevail.
|
|
9224
|
|
9225 If a section in the Document is Entitled ``Acknowledgements'',
|
|
9226 ``Dedications'', or ``History'', the requirement (section 4) to Preserve
|
|
9227 its Title (section 1) will typically require changing the actual
|
|
9228 title.
|
|
9229 @sp 1
|
|
9230 @item
|
|
9231 TERMINATION
|
|
9232
|
|
9233 You may not copy, modify, sublicense, or distribute the Document except
|
|
9234 as expressly provided for under this License. Any other attempt to
|
|
9235 copy, modify, sublicense or distribute the Document is void, and will
|
|
9236 automatically terminate your rights under this License. However,
|
|
9237 parties who have received copies, or rights, from you under this
|
|
9238 License will not have their licenses terminated so long as such
|
|
9239 parties remain in full compliance.
|
|
9240 @sp 1
|
|
9241 @item
|
|
9242 FUTURE REVISIONS OF THIS LICENSE
|
|
9243
|
|
9244 The Free Software Foundation may publish new, revised versions
|
|
9245 of the GNU Free Documentation License from time to time. Such new
|
|
9246 versions will be similar in spirit to the present version, but may
|
|
9247 differ in detail to address new problems or concerns. See
|
|
9248 http://www.gnu.org/copyleft/.
|
|
9249
|
|
9250 Each version of the License is given a distinguishing version number.
|
|
9251 If the Document specifies that a particular numbered version of this
|
|
9252 License ``or any later version'' applies to it, you have the option of
|
|
9253 following the terms and conditions either of that specified version or
|
|
9254 of any later version that has been published (not as a draft) by the
|
|
9255 Free Software Foundation. If the Document does not specify a version
|
|
9256 number of this License, you may choose any version ever published (not
|
|
9257 as a draft) by the Free Software Foundation.
|
|
9258
|
|
9259 @end enumerate
|
|
9260
|
|
9261 @unnumberedsec ADDENDUM: How to use this License for your documents
|
|
9262
|
|
9263 To use this License in a document you have written, include a copy of
|
|
9264 the License in the document and put the following copyright and
|
|
9265 license notices just after the title page:
|
|
9266
|
|
9267 @smallexample
|
|
9268 @group
|
|
9269 Copyright (C) @var{year} @var{your name}.
|
|
9270 Permission is granted to copy, distribute and/or modify this document
|
|
9271 under the terms of the GNU Free Documentation License, Version 1.2
|
|
9272 or any later version published by the Free Software Foundation;
|
|
9273 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
|
9274 A copy of the license is included in the section entitled ``GNU
|
|
9275 Free Documentation License''.
|
|
9276 @end group
|
|
9277 @end smallexample
|
|
9278
|
|
9279 If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
|
9280 replace the ``with...Texts.'' line with this:
|
|
9281
|
|
9282 @smallexample
|
|
9283 @group
|
|
9284 with the Invariant Sections being @var{list their titles}, with the
|
|
9285 Front-Cover Texts being @var{list}, and with the Back-Cover Texts being
|
|
9286 @var{list}.
|
|
9287 @end group
|
|
9288 @end smallexample
|
|
9289
|
|
9290 If you have Invariant Sections without Cover Texts, or some other
|
|
9291 combination of the three, merge those two alternatives to suit the
|
|
9292 situation.
|
|
9293
|
|
9294 If your document contains nontrivial examples of program code, we
|
|
9295 recommend releasing these examples in parallel under your choice of
|
|
9296 free software license, such as the GNU General Public License,
|
|
9297 to permit their use in free software.
|
|
9298
|
|
9299 @node GPL, Key Index, GFDL, Top
|
|
9300 @appendix GNU GENERAL PUBLIC LICENSE
|
|
9301 @center Version 2, June 1991
|
|
9302
|
|
9303 @display
|
|
9304 Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
|
|
9305 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
9306
|
|
9307 Everyone is permitted to copy and distribute verbatim copies
|
|
9308 of this license document, but changing it is not allowed.
|
|
9309 @end display
|
|
9310
|
|
9311 @unnumberedsec Preamble
|
|
9312
|
|
9313 The licenses for most software are designed to take away your
|
|
9314 freedom to share and change it. By contrast, the GNU General Public
|
|
9315 License is intended to guarantee your freedom to share and change free
|
|
9316 software---to make sure the software is free for all its users. This
|
|
9317 General Public License applies to most of the Free Software
|
|
9318 Foundation's software and to any other program whose authors commit to
|
|
9319 using it. (Some other Free Software Foundation software is covered by
|
|
9320 the GNU Lesser General Public License instead.) You can apply it to
|
|
9321 your programs, too.
|
|
9322
|
|
9323 When we speak of free software, we are referring to freedom, not
|
|
9324 price. Our General Public Licenses are designed to make sure that you
|
|
9325 have the freedom to distribute copies of free software (and charge for
|
|
9326 this service if you wish), that you receive source code or can get it
|
|
9327 if you want it, that you can change the software or use pieces of it
|
|
9328 in new free programs; and that you know you can do these things.
|
|
9329
|
|
9330 To protect your rights, we need to make restrictions that forbid
|
|
9331 anyone to deny you these rights or to ask you to surrender the rights.
|
|
9332 These restrictions translate to certain responsibilities for you if you
|
|
9333 distribute copies of the software, or if you modify it.
|
|
9334
|
|
9335 For example, if you distribute copies of such a program, whether
|
|
9336 gratis or for a fee, you must give the recipients all the rights that
|
|
9337 you have. You must make sure that they, too, receive or can get the
|
|
9338 source code. And you must show them these terms so they know their
|
|
9339 rights.
|
|
9340
|
|
9341 We protect your rights with two steps: (1) copyright the software, and
|
|
9342 (2) offer you this license which gives you legal permission to copy,
|
|
9343 distribute and/or modify the software.
|
|
9344
|
|
9345 Also, for each author's protection and ours, we want to make certain
|
|
9346 that everyone understands that there is no warranty for this free
|
|
9347 software. If the software is modified by someone else and passed on, we
|
|
9348 want its recipients to know that what they have is not the original, so
|
|
9349 that any problems introduced by others will not reflect on the original
|
|
9350 authors' reputations.
|
|
9351
|
|
9352 Finally, any free program is threatened constantly by software
|
|
9353 patents. We wish to avoid the danger that redistributors of a free
|
|
9354 program will individually obtain patent licenses, in effect making the
|
|
9355 program proprietary. To prevent this, we have made it clear that any
|
|
9356 patent must be licensed for everyone's free use or not licensed at all.
|
|
9357
|
|
9358 The precise terms and conditions for copying, distribution and
|
|
9359 modification follow.
|
|
9360
|
|
9361 @iftex
|
|
9362 @unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
9363 @end iftex
|
|
9364 @ifinfo
|
|
9365 @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
9366 @end ifinfo
|
|
9367
|
|
9368 @enumerate 0
|
|
9369 @item
|
|
9370 This License applies to any program or other work which contains
|
|
9371 a notice placed by the copyright holder saying it may be distributed
|
|
9372 under the terms of this General Public License. The ``Program,'' below,
|
|
9373 refers to any such program or work, and a ``work based on the Program''
|
|
9374 means either the Program or any derivative work under copyright law:
|
|
9375 that is to say, a work containing the Program or a portion of it,
|
|
9376 either verbatim or with modifications and/or translated into another
|
|
9377 language. (Hereinafter, translation is included without limitation in
|
|
9378 the term ``modification.'') Each licensee is addressed as ``you.''
|
|
9379
|
|
9380 Activities other than copying, distribution and modification are not
|
|
9381 covered by this License; they are outside its scope. The act of
|
|
9382 running the Program is not restricted, and the output from the Program
|
|
9383 is covered only if its contents constitute a work based on the
|
|
9384 Program (independent of having been made by running the Program).
|
|
9385 Whether that is true depends on what the Program does.
|
|
9386
|
|
9387 @item
|
|
9388 You may copy and distribute verbatim copies of the Program's
|
|
9389 source code as you receive it, in any medium, provided that you
|
|
9390 conspicuously and appropriately publish on each copy an appropriate
|
|
9391 copyright notice and disclaimer of warranty; keep intact all the
|
|
9392 notices that refer to this License and to the absence of any warranty;
|
|
9393 and give any other recipients of the Program a copy of this License
|
|
9394 along with the Program.
|
|
9395
|
|
9396 You may charge a fee for the physical act of transferring a copy, and
|
|
9397 you may at your option offer warranty protection in exchange for a fee.
|
|
9398
|
|
9399 @item
|
|
9400 You may modify your copy or copies of the Program or any portion
|
|
9401 of it, thus forming a work based on the Program, and copy and
|
|
9402 distribute such modifications or work under the terms of Section 1
|
|
9403 above, provided that you also meet all of these conditions:
|
|
9404
|
|
9405 @enumerate a
|
|
9406 @item
|
|
9407 You must cause the modified files to carry prominent notices
|
|
9408 stating that you changed the files and the date of any change.
|
|
9409
|
|
9410 @item
|
|
9411 You must cause any work that you distribute or publish, that in
|
|
9412 whole or in part contains or is derived from the Program or any
|
|
9413 part thereof, to be licensed as a whole at no charge to all third
|
|
9414 parties under the terms of this License.
|
|
9415
|
|
9416 @item
|
|
9417 If the modified program normally reads commands interactively
|
|
9418 when run, you must cause it, when started running for such
|
|
9419 interactive use in the most ordinary way, to print or display an
|
|
9420 announcement including an appropriate copyright notice and a
|
|
9421 notice that there is no warranty (or else, saying that you provide
|
|
9422 a warranty) and that users may redistribute the program under
|
|
9423 these conditions, and telling the user how to view a copy of this
|
|
9424 License. (Exception: if the Program itself is interactive but
|
|
9425 does not normally print such an announcement, your work based on
|
|
9426 the Program is not required to print an announcement.)
|
|
9427 @end enumerate
|
|
9428
|
|
9429 These requirements apply to the modified work as a whole. If
|
|
9430 identifiable sections of that work are not derived from the Program,
|
|
9431 and can be reasonably considered independent and separate works in
|
|
9432 themselves, then this License, and its terms, do not apply to those
|
|
9433 sections when you distribute them as separate works. But when you
|
|
9434 distribute the same sections as part of a whole which is a work based
|
|
9435 on the Program, the distribution of the whole must be on the terms of
|
|
9436 this License, whose permissions for other licensees extend to the
|
|
9437 entire whole, and thus to each and every part regardless of who wrote it.
|
|
9438
|
|
9439 Thus, it is not the intent of this section to claim rights or contest
|
|
9440 your rights to work written entirely by you; rather, the intent is to
|
|
9441 exercise the right to control the distribution of derivative or
|
|
9442 collective works based on the Program.
|
|
9443
|
|
9444 In addition, mere aggregation of another work not based on the Program
|
|
9445 with the Program (or with a work based on the Program) on a volume of
|
|
9446 a storage or distribution medium does not bring the other work under
|
|
9447 the scope of this License.
|
|
9448
|
|
9449 @item
|
|
9450 You may copy and distribute the Program (or a work based on it,
|
|
9451 under Section 2) in object code or executable form under the terms of
|
|
9452 Sections 1 and 2 above provided that you also do one of the following:
|
|
9453
|
|
9454 @enumerate a
|
|
9455 @item
|
|
9456 Accompany it with the complete corresponding machine-readable
|
|
9457 source code, which must be distributed under the terms of Sections
|
|
9458 1 and 2 above on a medium customarily used for software interchange; or,
|
|
9459
|
|
9460 @item
|
|
9461 Accompany it with a written offer, valid for at least three
|
|
9462 years, to give any third party, for a charge no more than your
|
|
9463 cost of physically performing source distribution, a complete
|
|
9464 machine-readable copy of the corresponding source code, to be
|
|
9465 distributed under the terms of Sections 1 and 2 above on a medium
|
|
9466 customarily used for software interchange; or,
|
|
9467
|
|
9468 @item
|
|
9469 Accompany it with the information you received as to the offer
|
|
9470 to distribute corresponding source code. (This alternative is
|
|
9471 allowed only for noncommercial distribution and only if you
|
|
9472 received the program in object code or executable form with such
|
|
9473 an offer, in accord with Subsection b above.)
|
|
9474 @end enumerate
|
|
9475
|
|
9476 The source code for a work means the preferred form of the work for
|
|
9477 making modifications to it. For an executable work, complete source
|
|
9478 code means all the source code for all modules it contains, plus any
|
|
9479 associated interface definition files, plus the scripts used to
|
|
9480 control compilation and installation of the executable. However, as a
|
|
9481 special exception, the source code distributed need not include
|
|
9482 anything that is normally distributed (in either source or binary
|
|
9483 form) with the major components (compiler, kernel, and so on) of the
|
|
9484 operating system on which the executable runs, unless that component
|
|
9485 itself accompanies the executable.
|
|
9486
|
|
9487 If distribution of executable or object code is made by offering
|
|
9488 access to copy from a designated place, then offering equivalent
|
|
9489 access to copy the source code from the same place counts as
|
|
9490 distribution of the source code, even though third parties are not
|
|
9491 compelled to copy the source along with the object code.
|
|
9492
|
|
9493 @item
|
|
9494 You may not copy, modify, sublicense, or distribute the Program
|
|
9495 except as expressly provided under this License. Any attempt
|
|
9496 otherwise to copy, modify, sublicense or distribute the Program is
|
|
9497 void, and will automatically terminate your rights under this License.
|
|
9498 However, parties who have received copies, or rights, from you under
|
|
9499 this License will not have their licenses terminated so long as such
|
|
9500 parties remain in full compliance.
|
|
9501
|
|
9502 @item
|
|
9503 You are not required to accept this License, since you have not
|
|
9504 signed it. However, nothing else grants you permission to modify or
|
|
9505 distribute the Program or its derivative works. These actions are
|
|
9506 prohibited by law if you do not accept this License. Therefore, by
|
|
9507 modifying or distributing the Program (or any work based on the
|
|
9508 Program), you indicate your acceptance of this License to do so, and
|
|
9509 all its terms and conditions for copying, distributing or modifying
|
|
9510 the Program or works based on it.
|
|
9511
|
|
9512 @item
|
|
9513 Each time you redistribute the Program (or any work based on the
|
|
9514 Program), the recipient automatically receives a license from the
|
|
9515 original licensor to copy, distribute or modify the Program subject to
|
|
9516 these terms and conditions. You may not impose any further
|
|
9517 restrictions on the recipients' exercise of the rights granted herein.
|
|
9518 You are not responsible for enforcing compliance by third parties to
|
|
9519 this License.
|
|
9520
|
|
9521 @item
|
|
9522 If, as a consequence of a court judgment or allegation of patent
|
|
9523 infringement or for any other reason (not limited to patent issues),
|
|
9524 conditions are imposed on you (whether by court order, agreement or
|
|
9525 otherwise) that contradict the conditions of this License, they do not
|
|
9526 excuse you from the conditions of this License. If you cannot
|
|
9527 distribute so as to satisfy simultaneously your obligations under this
|
|
9528 License and any other pertinent obligations, then as a consequence you
|
|
9529 may not distribute the Program at all. For example, if a patent
|
|
9530 license would not permit royalty-free redistribution of the Program by
|
|
9531 all those who receive copies directly or indirectly through you, then
|
|
9532 the only way you could satisfy both it and this License would be to
|
|
9533 refrain entirely from distribution of the Program.
|
|
9534
|
|
9535 If any portion of this section is held invalid or unenforceable under
|
|
9536 any particular circumstance, the balance of the section is intended to
|
|
9537 apply and the section as a whole is intended to apply in other
|
|
9538 circumstances.
|
|
9539
|
|
9540 It is not the purpose of this section to induce you to infringe any
|
|
9541 patents or other property right claims or to contest validity of any
|
|
9542 such claims; this section has the sole purpose of protecting the
|
|
9543 integrity of the free software distribution system, which is
|
|
9544 implemented by public license practices. Many people have made
|
|
9545 generous contributions to the wide range of software distributed
|
|
9546 through that system in reliance on consistent application of that
|
|
9547 system; it is up to the author/donor to decide if he or she is willing
|
|
9548 to distribute software through any other system and a licensee cannot
|
|
9549 impose that choice.
|
|
9550
|
|
9551 This section is intended to make thoroughly clear what is believed to
|
|
9552 be a consequence of the rest of this License.
|
|
9553
|
|
9554 @item
|
|
9555 If the distribution and/or use of the Program is restricted in
|
|
9556 certain countries either by patents or by copyrighted interfaces, the
|
|
9557 original copyright holder who places the Program under this License
|
|
9558 may add an explicit geographical distribution limitation excluding
|
|
9559 those countries, so that distribution is permitted only in or among
|
|
9560 countries not thus excluded. In such case, this License incorporates
|
|
9561 the limitation as if written in the body of this License.
|
|
9562
|
|
9563 @item
|
|
9564 The Free Software Foundation may publish revised and/or new versions
|
|
9565 of the General Public License from time to time. Such new versions will
|
|
9566 be similar in spirit to the present version, but may differ in detail to
|
|
9567 address new problems or concerns.
|
|
9568
|
|
9569 Each version is given a distinguishing version number. If the Program
|
|
9570 specifies a version number of this License which applies to it and ``any
|
|
9571 later version,'' you have the option of following the terms and conditions
|
|
9572 either of that version or of any later version published by the Free
|
|
9573 Software Foundation. If the Program does not specify a version number of
|
|
9574 this License, you may choose any version ever published by the Free Software
|
|
9575 Foundation.
|
|
9576
|
|
9577 @item
|
|
9578 If you wish to incorporate parts of the Program into other free
|
|
9579 programs whose distribution conditions are different, write to the author
|
|
9580 to ask for permission. For software which is copyrighted by the Free
|
|
9581 Software Foundation, write to the Free Software Foundation; we sometimes
|
|
9582 make exceptions for this. Our decision will be guided by the two goals
|
|
9583 of preserving the free status of all derivatives of our free software and
|
|
9584 of promoting the sharing and reuse of software generally.
|
|
9585
|
|
9586 @iftex
|
|
9587 @heading NO WARRANTY
|
|
9588 @end iftex
|
|
9589 @ifinfo
|
|
9590 @center NO WARRANTY
|
|
9591 @end ifinfo
|
|
9592
|
|
9593 @item
|
|
9594 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
|
9595 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW@. EXCEPT WHEN
|
|
9596 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
|
9597 PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
|
9598 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
9599 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE@. THE ENTIRE RISK AS
|
|
9600 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU@. SHOULD THE
|
|
9601 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
|
9602 REPAIR OR CORRECTION.
|
|
9603
|
|
9604 @item
|
|
9605 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
9606 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
|
9607 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
|
9608 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
|
9609 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
|
9610 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
|
9611 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
|
9612 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|
9613 POSSIBILITY OF SUCH DAMAGES.
|
|
9614 @end enumerate
|
|
9615
|
|
9616 @iftex
|
|
9617 @heading END OF TERMS AND CONDITIONS
|
|
9618 @end iftex
|
|
9619 @ifinfo
|
|
9620 @center END OF TERMS AND CONDITIONS
|
|
9621 @end ifinfo
|
|
9622
|
|
9623 @page
|
|
9624 @unnumberedsec How to Apply These Terms to Your New Programs
|
|
9625
|
|
9626 If you develop a new program, and you want it to be of the greatest
|
|
9627 possible use to the public, the best way to achieve this is to make it
|
|
9628 free software which everyone can redistribute and change under these terms.
|
|
9629
|
|
9630 To do so, attach the following notices to the program. It is safest
|
|
9631 to attach them to the start of each source file to most effectively
|
|
9632 convey the exclusion of warranty; and each file should have at least
|
|
9633 the ``copyright'' line and a pointer to where the full notice is found.
|
|
9634
|
|
9635 @smallexample
|
|
9636 @var{one line to give the program's name and an idea of what it does.}
|
|
9637 Copyright (C) @var{yyyy} @var{name of author}
|
|
9638
|
|
9639 This program is free software; you can redistribute it and/or
|
|
9640 modify it under the terms of the GNU General Public License
|
|
9641 as published by the Free Software Foundation; either version 3
|
|
9642 of the License, or (at your option) any later version.
|
|
9643
|
|
9644 This program is distributed in the hope that it will be useful,
|
|
9645 but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
9646 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE@. See the
|
|
9647 GNU General Public License for more details.
|
|
9648
|
|
9649 You should have received a copy of the GNU General Public License along
|
|
9650 with this program; if not, write to the Free Software Foundation, Inc.,
|
|
9651 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
9652 @end smallexample
|
|
9653
|
|
9654 Also add information on how to contact you by electronic and paper mail.
|
|
9655
|
|
9656 If the program is interactive, make it output a short notice like this
|
|
9657 when it starts in an interactive mode:
|
|
9658
|
|
9659 @smallexample
|
|
9660 Gnomovision version 69, Copyright (C) @var{yyyy} @var{name of author}
|
|
9661 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
|
|
9662 type `show w'. This is free software, and you are welcome
|
|
9663 to redistribute it under certain conditions; type `show c'
|
|
9664 for details.
|
|
9665 @end smallexample
|
|
9666
|
|
9667 The hypothetical commands @samp{show w} and @samp{show c} should show
|
|
9668 the appropriate parts of the General Public License. Of course, the
|
|
9669 commands you use may be called something other than @samp{show w} and
|
|
9670 @samp{show c}; they could even be mouse-clicks or menu items---whatever
|
|
9671 suits your program.
|
|
9672
|
|
9673 You should also get your employer (if you work as a programmer) or your
|
|
9674 school, if any, to sign a ``copyright disclaimer'' for the program, if
|
|
9675 necessary. Here is a sample; alter the names:
|
|
9676
|
|
9677 @smallexample
|
|
9678 @group
|
|
9679 Yoyodyne, Inc., hereby disclaims all copyright
|
|
9680 interest in the program `Gnomovision'
|
|
9681 (which makes passes at compilers) written
|
|
9682 by James Hacker.
|
|
9683
|
|
9684 @var{signature of Ty Coon}, 1 April 1989
|
|
9685 Ty Coon, President of Vice
|
|
9686 @end group
|
|
9687 @end smallexample
|
|
9688
|
|
9689 This General Public License does not permit incorporating your program into
|
|
9690 proprietary programs. If your program is a subroutine library, you may
|
|
9691 consider it more useful to permit linking proprietary applications with the
|
|
9692 library. If this is what you want to do, use the GNU Lesser General
|
|
9693 Public License instead of this License.
|
|
9694
|
|
9695 @node Key Index, Command Index, GPL, Top
|
|
9696 @unnumbered Key (Character) Index
|
|
9697 @printindex ky
|
|
9698
|
|
9699 @node Command Index, Option Index, Key Index, Top
|
|
9700 @unnumbered Command Index
|
|
9701 @printindex fn
|
|
9702
|
|
9703 @node Option Index, Concept Index, Command Index, Top
|
|
9704 @unnumbered Option (Variable) Index
|
|
9705 @printindex vr
|
|
9706
|
|
9707 @node Concept Index, , Option Index, Top
|
|
9708 @unnumbered Concept Index
|
|
9709 @printindex cp
|
|
9710
|
|
9711 @bye
|
|
9712
|
|
9713 @c Ispell Helpers
|
|
9714 @c
|
|
9715 @c The following are words that ispell should ignore that would not
|
|
9716 @c normally be in a dictionary (global or personal). Be careful not to
|
|
9717 @c include words here that could potentially be typos of other words
|
|
9718 @c (such as url, elisp, or MHE).
|
|
9719 @c
|
|
9720 @c LocalWords: CTRL ESC SPC f's
|
|
9721 @c LocalWords: addr Aliasfile alist
|
|
9722 @c LocalWords: Baushke Bcc BBN Beranek bogofilter bogofilter's
|
|
9723 @c LocalWords: cmd CMU contrib cron
|
|
9724 @c LocalWords: DesBrisay Dcc devel dir dired docstring filll forw
|
|
9725 @c LocalWords: GECOS Gildea Gildea's Ginnean GnuCash goto gnuserv htm
|
|
9726 @c LocalWords: ImageMagick inbox ispell keychain
|
|
9727 @c LocalWords: Larus licensor LocalWords lookup lpr
|
|
9728 @c LocalWords: makeinfo mairix mbox mh mhbuild mhl mhpath mlisp
|
|
9729 @c LocalWords: MML msg multipart
|
|
9730 @c LocalWords: Namazu NIS nenscript nnml num
|
|
9731 @c LocalWords: packmbox passphrase pathname prev procmail prog repl
|
|
9732 @c LocalWords: slocal sortm SpamAssassin spammers SpamProbe SpamProbe's
|
|
9733 @c LocalWords: sublicense supercite speedbar
|
|
9734 @c LocalWords: Tennex texi texinfo Thelen thelenm
|
|
9735 @c LocalWords: UCI undeleted whatnow wohler xmh ypcat
|
|
9736 @c
|
|
9737 @c See http://www.oreilly.com/oreilly/author/stylesheet.html.
|
|
9738 @c See http://en.wikipedia.org/.
|
|
9739 @c
|
|
9740 @c Note the lowercase mh which is needed to avoid hits in the
|
|
9741 @c functions and variables. Occasionally, check for accidental
|
|
9742 @c inclusion of mh in text by uncommenting the following and executing
|
|
9743 @c it with C-x C-e. You want to see "Search failed"
|
|
9744 @c (let ((case-fold-search nil))
|
|
9745 @c (goto-char (point-min))
|
|
9746 @c (search-forward-regexp "^mh\\( \\|$\\)"))
|
|
9747 @c
|
|
9748 @c An extremely useful setting for texinfo-mode-hook is:
|
|
9749 @c (add-to-list
|
|
9750 @c 'ispell-skip-region-alist
|
|
9751 @c (list
|
|
9752 @c (concat "\\(@\\(small\\)?\\(example\\|lisp\\)"
|
|
9753 @c "\\(@\\([irw]\\|code\\|var\\){[^}]+}\\|"
|
|
9754 @c "@[@{}.]\\|"
|
|
9755 @c "[^@]\\|"
|
|
9756 @c "@\\(end \\)?group\\|"
|
|
9757 @c "@\\(end \\)?cartouche\\)+"
|
|
9758 @c "@end \\(small\\)?\\(example\\|lisp\\)\\|"
|
|
9759 @c "@\\(code\\|command\\|file\\|kbd\\|sc\\){[^}]+}\\|"
|
|
9760 @c "^@end [a-z]+$\\|"
|
|
9761 @c "^@\\([fv]\\|print\\)index .*$\\|"
|
|
9762 @c "@uref{[^,]+,\\|"
|
|
9763 @c "@[a-z]+\\|"
|
|
9764 @c "/[a-z.]+[/}]\\)")))))
|
|
9765 @c
|
|
9766 @c Cross References
|
|
9767 @c
|
|
9768 @c See existing cross-references to the Emacs manual and the Emacs
|
|
9769 @c Lisp manual (search for ``GNU Emacs Manual'' and ``GNU
|
|
9770 @c Emacs Lisp Reference Manual'' respectively).
|
|
9771
|
|
9772 @c @ftable Sorting
|
|
9773 @c
|
|
9774 @c As per index (sort of): Punctuation, keyboard characters (such as
|
|
9775 @c RET and BS) upper and lowercase mixed (lower comes before
|
|
9776 @c uppercase), control characters go with uppercase C, meta characters
|
|
9777 @c go with uppercase M.
|
|
9778 @c In some cases, the sort isn't strictly ASCII.
|
|
9779 @c For example, SPC (mh-page-msg) reads better before BS
|
|
9780 @c (mh-previous-page) and . (mh-show) is better before ,
|
|
9781 @c (mh-header-display).
|
|
9782
|
|
9783 @c @vtable Sorting
|
|
9784 @c
|
|
9785 @c Alphabetical, pull hooks into their own table.
|
|
9786
|
|
9787 @c Local Variables:
|
|
9788 @c sentence-end-double-space: nil
|
|
9789 @c End:
|
|
9790
|
|
9791 @ignore
|
|
9792 arch-tag: b778477d-1a10-4a99-84de-f877a2ea6bef
|
|
9793 @end ignore
|