Mercurial > emacs
annotate doc/misc/mh-e.texi @ 94068:f2cff391663b
(minibuffer-try-completion, minibuffer-all-completions): Fix last change.
| author | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| date | Mon, 14 Apr 2008 03:30:47 +0000 |
| parents | 230091ad831d |
| children | fbe58782bc21 |
| rev | line source |
|---|---|
| 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 | |
|
84329
3d431f1997d8
(setfilename): Go up one more level to ../../info.
Glenn Morris <rgm@gnu.org>
parents:
84306
diff
changeset
|
6 @setfilename ../../info/mh-e |
| 84306 | 7 @settitle The MH-E Manual |
| 8 @c %**end of header | |
| 9 | |
| 10 @c Version of the software and manual. | |
|
84934
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
11 @set VERSION 8.0.3+CVS |
| 84306 | 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 | |
|
93018
230091ad831d
(Viewing): Update URL for adding header fields to
Bill Wohler <wohler@newt.com>
parents:
92984
diff
changeset
|
15 @set UPDATED 2008-03-16 |
|
230091ad831d
(Viewing): Update URL for adding header fields to
Bill Wohler <wohler@newt.com>
parents:
92984
diff
changeset
|
16 @set UPDATE-MONTH March, 2008 |
| 84306 | 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 | |
| 87903 | 27 Copyright @copyright{} 1995, 2001, 2002, 2003, 2005, 2006, 2007, 2008 Free |
| 84306 | 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 | |
|
92984
46a2b7ab3cd6
(Preface): Add Gnus to requirements.
Bill Wohler <wohler@newt.com>
parents:
87903
diff
changeset
|
221 shouldn't have to do anything special to use it. Gnus is also |
|
46a2b7ab3cd6
(Preface): Add Gnus to requirements.
Bill Wohler <wohler@newt.com>
parents:
87903
diff
changeset
|
222 required; version 5.10 or higher is recommended. This manual covers |
| 84306 | 223 MH-E version @value{VERSION}. To help you decide which version you |
| 224 have, see @ref{Getting Started}. | |
| 225 | |
| 226 @findex help-with-tutorial | |
| 227 @kindex C-h t | |
| 228 | |
| 229 If you don't already use GNU Emacs but want to learn more, you can | |
| 230 read an online tutorial by starting GNU Emacs and typing @kbd{C-h t} | |
| 231 (@code{help-with-tutorial}). (To learn about this notation, see | |
| 232 @ref{Conventions}.) If you want to take the plunge, consult the | |
| 233 @iftex | |
| 234 @cite{GNU Emacs Manual}, | |
| 235 @end iftex | |
| 236 @ifinfo | |
| 237 @ref{top, , GNU Emacs Manual, emacs, GNU Emacs Manual}, | |
| 238 @end ifinfo | |
| 239 @ifhtml | |
| 240 @uref{http://www.gnu.org/software/emacs/manual/html_node/, | |
| 241 @cite{GNU Emacs Manual}}, | |
| 242 @end ifhtml | |
| 243 from the Free Software Foundation. | |
| 244 | |
| 245 If more information is needed, you can go to the Unix manual pages of | |
| 246 the individual MH commands. When the name is not obvious, I'll guide | |
| 247 you to a relevant MH manual page that describes the action more fully. | |
| 248 | |
| 249 @cindex @cite{MH & nmh: Email for Users & Programmers} | |
| 250 @cindex MH book | |
| 251 @cindex info | |
| 252 @kindex C-h i | |
| 253 | |
| 254 This manual is available in both Info and online formats. The Info | |
| 255 version is distributed with Emacs and can be accessed with the | |
| 256 @command{info} command (@samp{info mh-e}) or within Emacs (@kbd{C-h i | |
| 257 m mh-e @key{RET}}). The online version is available at | |
| 258 @uref{http://mh-e.sourceforge.net/manual/, SourceForge}. Another great | |
| 259 online resource is the book @uref{http://www.ics.uci.edu/~mh/book/, | |
| 260 @cite{MH & nmh: Email for Users & Programmers}} (also known as | |
| 261 @dfn{the MH book}). | |
| 262 | |
| 263 I hope you enjoy this manual! If you have any comments, or suggestions | |
| 264 for this document, please let me know. | |
| 265 | |
| 266 @cindex Bill Wohler | |
| 267 @cindex Wohler, Bill | |
| 268 | |
| 269 @noindent | |
| 270 Bill Wohler <@i{wohler at newt.com}>@* | |
| 271 8 February 1995@* | |
| 272 24 February 2006 | |
| 273 | |
| 274 @node Conventions, Getting Started, Preface, Top | |
| 275 @chapter GNU Emacs Terms and Conventions | |
| 276 | |
| 277 @cindex Emacs | |
| 278 @cindex Emacs, conventions | |
| 279 @cindex Emacs, terms | |
| 280 @cindex Unix commands, Emacs | |
| 281 @cindex conventions, Emacs | |
| 282 @cindex terms, Emacs | |
| 283 | |
| 284 If you're an experienced Emacs user, you can skip the following | |
| 285 conventions and definition of terms and go directly to the next | |
| 286 section (@pxref{Getting Started}). | |
| 287 | |
| 288 @cindex Emacs commands | |
| 289 @cindex MH commands | |
| 290 @cindex Unix commands | |
| 291 @cindex commands | |
| 292 @cindex commands, MH | |
| 293 @cindex commands, Unix | |
| 294 @cindex commands, shell | |
| 295 @cindex functions | |
| 296 @cindex shell commands | |
| 297 | |
| 298 In general, @dfn{functions} in this text refer to Emacs Lisp functions | |
| 299 that one would call from within Emacs Lisp programs (for example, | |
| 300 @code{(mh-inc-folder)}). On the other hand, @dfn{commands} are those | |
| 301 things that are run by the user, such as @kbd{i} or @kbd{M-x | |
| 302 mh-inc-folder}. Programs outside of Emacs are specifically called MH | |
| 303 commands, shell commands, or Unix commands. | |
| 304 | |
| 305 @cindex conventions, key names | |
| 306 @cindex key names | |
| 307 | |
| 308 The conventions for key names are as follows: | |
| 309 | |
| 310 @table @kbd | |
| 311 @item C-x | |
| 312 Hold down the @key{CTRL} (Control) key and press the @kbd{x} key. | |
| 313 @c ------------------------- | |
| 314 @item M-x | |
| 315 Hold down the @key{META} or @key{ALT} key and press the @kbd{x} key. | |
| 316 | |
| 317 Since some keyboards don't have a @key{META} key, you can generate | |
| 318 @kbd{M-x}, for example, by pressing @key{ESC} (Escape), | |
| 319 @emph{releasing it}, and then pressing the @kbd{x} key. | |
| 320 @c ------------------------- | |
| 321 @item @key{RET} | |
| 322 Press the @key{RETURN} or @key{ENTER} key. This is normally used to | |
| 323 complete a command. | |
| 324 @c ------------------------- | |
| 325 @item @key{SPC} | |
| 326 Press the space bar. | |
| 327 @c ------------------------- | |
| 328 @item @key{TAB} | |
| 329 Press the @key{TAB} key. | |
| 330 @c ------------------------- | |
| 331 @item @key{DEL} | |
| 332 Press the @key{DELETE} key. | |
| 333 @c ------------------------- | |
| 334 @item @key{BS} | |
| 335 Press the @key{BACKSPACE} key@footnote{If you are using Version 20 or | |
| 336 earlier of Emacs, you will need to use the @key{DEL} key.}. | |
| 337 @end table | |
| 338 | |
| 339 @cindex Emacs, prefix argument | |
| 340 @cindex prefix argument | |
| 341 @kindex C-u | |
| 342 | |
| 343 A @dfn{prefix argument} allows you to pass an argument to any Emacs | |
| 344 function. To pass an argument, type @kbd{C-u} before the Emacs command | |
| 345 or keystroke. Numeric arguments can be passed as well. For example, to | |
| 346 insert five f's, use @kbd{C-u 5 f}. There is a default of four when | |
| 347 using @kbd{C-u}, and you can use multiple prefix arguments to provide | |
| 348 arguments of powers of four. To continue our example, you could insert | |
| 349 four f's with @kbd{C-u f}, 16 f's with @kbd{C-u C-u f}, 64 f's with | |
| 350 @kbd{C-u C-u C-u f}, and so on. Numeric and valueless negative | |
| 351 arguments can also be inserted with the @key{META} key. Examples | |
| 352 include @kbd{M-5} to specify an argument of 5, or @kbd{M--} which | |
| 353 specifies a negative argument with no particular value. | |
| 354 | |
| 355 @sp 1 | |
| 356 @center @strong{NOTE} | |
| 357 | |
| 358 @quotation | |
| 359 The prefix @kbd{C-u} or @kbd{M-} is not necessary in MH-E's MH-Folder | |
| 360 mode (@pxref{Reading Mail Tour}). In this mode, simply enter the | |
| 361 numerical argument before entering the command. | |
| 362 @end quotation | |
| 363 @sp 1 | |
| 364 | |
| 365 @cindex @file{.emacs} | |
| 366 @cindex Emacs, variables | |
| 367 @cindex files, @file{.emacs} | |
| 368 @cindex variables | |
| 369 @findex setq | |
| 370 | |
| 371 Emacs uses @dfn{variables} to hold values. These can be changed via | |
| 372 calls to the function @code{setq} in @file{~/.emacs}. | |
| 373 | |
| 374 @cindex Emacs, options | |
| 375 @cindex options | |
| 376 @findex customize-group | |
| 377 @findex customize-option | |
| 378 | |
| 379 Variables in MH-E that are normally modified by the user are called | |
| 380 @dfn{options} and are modified through the customize functions (such | |
| 381 as @kbd{M-x customize-option} or @kbd{M-x customize-group}). | |
| 382 @ifnothtml | |
| 383 @xref{Easy Customization,,,emacs,The GNU Emacs Manual}, in @cite{The | |
| 384 GNU Emacs Manual}. | |
| 385 @end ifnothtml | |
| 386 @ifhtml | |
| 387 See section | |
| 388 @uref{http://www.gnu.org/software/emacs/manual/html_node/Easy-Customization.html, | |
| 389 Easy Customization} in @cite{The GNU Emacs Manual}. | |
| 390 @end ifhtml | |
| 391 @xref{Options}. | |
| 392 | |
| 393 @cindex Emacs, faces | |
| 394 @cindex faces | |
| 395 @cindex highlighting | |
| 396 @findex customize-face | |
| 397 | |
| 398 You can specify various styles for displaying text using @dfn{faces}. | |
| 399 MH-E provides a set of faces that you can use to personalize the look | |
| 400 of your MH-E buffers. Use the command @kbd{M-x customize-face} to do | |
| 401 this. | |
| 402 @ifnothtml | |
| 403 @xref{Face Customization,,,emacs,The GNU Emacs Manual}, in @cite{The | |
| 404 GNU Emacs Manual}. | |
| 405 @end ifnothtml | |
| 406 @ifhtml | |
| 407 See section | |
| 408 @uref{http://www.gnu.org/software/emacs/manual/html_node/Face-Customization.html, | |
| 409 Face Customization} in @cite{The GNU Emacs Manual}. | |
| 410 @end ifhtml | |
| 411 | |
| 412 @cindex abnormal hooks | |
| 413 @cindex hooks | |
| 414 @cindex normal hooks | |
| 415 @findex add-hook | |
| 416 @findex customize-option | |
| 417 | |
| 418 Commands often offer @dfn{hooks} which enable you to extend or modify | |
| 419 the way a command works. | |
| 420 @ifnothtml | |
| 421 @ref{Hooks, , Hooks, emacs, The GNU Emacs Manual}, in @cite{The GNU | |
| 422 Emacs Manual} | |
| 423 @end ifnothtml | |
| 424 @ifhtml | |
| 425 See section | |
| 426 @uref{http://www.gnu.org/software/emacs/manual/html_node/Hooks.html, | |
| 427 Hooks} in @cite{The GNU Emacs Manual} | |
| 428 @end ifhtml | |
| 429 for a description about @dfn{normal hooks} and @dfn{abnormal hooks}. | |
| 430 MH-E uses normal hooks in nearly all cases, so you can assume that we | |
| 431 are talking about normal hooks unless we explicitly mention that a | |
| 432 hook is abnormal. We also follow the conventions described in that | |
| 433 section: the name of the abnormal hooks end in @code{-hooks} and all | |
| 434 the rest of the MH-E hooks end in @code{-hook}. You can add hooks with | |
| 435 either @code{customize-option} or @code{add-hook}. | |
| 436 | |
| 437 @cindex Emacs, mark | |
| 438 @cindex Emacs, point | |
| 439 @cindex Emacs, region | |
| 440 @cindex mark | |
| 441 @cindex point | |
| 442 @cindex region | |
| 443 @kindex C-@@ | |
| 444 @kindex C-@key{SPC} | |
| 445 | |
| 446 There are several other terms that are used in Emacs that you should | |
| 447 know. The @dfn{point} is where the cursor currently is. You can save | |
| 448 your current place in the file by setting a @dfn{mark}. This operation | |
| 449 is useful in several ways. The mark can be later used when defining a | |
| 450 @dfn{region}, which is the text between the point and mark. Many | |
| 451 commands operate on regions, such as those for deleting text or | |
| 452 filling paragraphs. A mark can be set with @kbd{C-@@} (or | |
| 453 @kbd{C-@key{SPC}}). | |
| 454 | |
| 455 @cindex completion | |
| 456 @cindex Emacs, completion | |
| 457 @cindex Emacs, file completion | |
| 458 @cindex Emacs, folder completion | |
| 459 @cindex Emacs, minibuffer | |
| 460 @cindex file completion | |
| 461 @cindex folder completion | |
| 462 @cindex minibuffer | |
| 463 @kindex SPC | |
| 464 @kindex TAB | |
| 465 | |
| 466 The @dfn{minibuffer} is the bottom line of the Emacs window, where all | |
| 467 prompting and multiple-character input is directed. You can use | |
| 468 @dfn{completion} to enter values such as folders. Completion means | |
| 469 that Emacs fills in text for you when you type @key{SPC} or @key{TAB}. | |
| 470 A second @key{SPC} or @key{TAB} will list all possibilities at that | |
| 471 point. | |
| 472 @ifnothtml | |
| 473 @xref{Completion, , Completion, emacs, The GNU Emacs Manual}. | |
| 474 @end ifnothtml | |
| 475 @ifhtml | |
| 476 See the section | |
| 477 @uref{http://www.gnu.org/software/emacs/manual/html_node/Completion.html, | |
| 478 Completion} in @cite{The GNU Emacs Manual}. | |
| 479 @end ifhtml | |
| 480 Note that @key{SPC} cannot be used for completing filenames and | |
| 481 folders. | |
| 482 | |
| 483 @findex help-with-tutorial | |
| 484 @kindex C-h t | |
| 485 @kindex M-x | |
| 486 | |
| 487 The minibuffer is also where you enter Emacs function names after | |
| 488 typing @kbd{M-x}. For example, in the preface, I mentioned that you | |
| 489 could obtain help with @kbd{C-h t} (@code{help-with-tutorial}). What | |
| 490 this means is that you can get a tutorial by typing either @kbd{C-h t} | |
| 491 or @kbd{M-x help-with-tutorial}. In the latter case, you are prompted | |
| 492 for @samp{help-with-tutorial} in the minibuffer after typing | |
| 493 @kbd{M-x}. | |
| 494 | |
| 495 @cindex ~ | |
| 496 | |
| 497 The @samp{~} notation in filenames represents your home directory. | |
| 498 This notation is used by many shells including @command{bash}, | |
| 499 @code{tcsh}, and @command{csh}. It is analogous to the environment | |
| 500 variable @samp{$HOME}. For example, @file{~/.emacs} can be written | |
| 501 @file{$HOME/.emacs} or using the absolute path as in | |
| 502 @file{/home/wohler/.emacs} instead. | |
| 503 | |
| 504 @cindex Emacs, interrupting | |
| 505 @cindex Emacs, quitting | |
| 506 @cindex interrupting | |
| 507 @cindex quitting | |
| 508 | |
| 509 @i{In case of trouble:} Emacs can be interrupted at any time with | |
| 510 @kbd{C-g}. For example, if you've started a command that requests that | |
| 511 you enter something in the minibuffer, but then you change your mind, | |
| 512 type @kbd{C-g} and you'll be back where you started. If you want to | |
| 513 exit Emacs entirely, use @kbd{C-x C-c}. | |
| 514 | |
| 515 @node Getting Started, Tour Through MH-E, Conventions, Top | |
| 516 @chapter Getting Started | |
| 517 | |
| 518 @cindex MH-E, versions | |
| 519 @cindex history | |
| 520 @cindex versions of MH-E | |
| 521 | |
| 522 Because there are many old versions of MH-E out there, it is important | |
| 523 to know which version you have. I'll be talking about @w{Version 8} | |
| 524 which is pretty close to @w{Version 6} and @w{Version 7}. It differs | |
| 525 from @w{Version 4} and @w{Version 5} and is vastly different from | |
| 526 @w{Version 3}. @xref{History}. | |
| 527 | |
| 528 @findex mh-version | |
| 529 | |
| 530 To determine which version of MH-E that you have, enter @kbd{M-x | |
| 531 mh-version @key{RET}}. Hopefully it says that you're running | |
| 532 @w{Version @value{VERSION}} which is the latest version as of this | |
| 533 printing. | |
| 534 | |
| 535 If your version is much older than this, please consider upgrading. | |
| 536 You can have your system administrator upgrade the system-wide | |
| 537 version, or you can install your own personal version. It's really | |
| 538 quite easy. @xref{Getting MH-E}, for instructions for getting and | |
| 539 installing MH-E. | |
| 540 | |
| 541 If the @code{mh-version} command displays @samp{No MH variant | |
| 542 detected}@footnote{In very old versions of MH-E, you may get the error | |
| 543 message, @samp{Cannot find the commands `inc' and `mhl' and the file | |
| 544 `components'} if MH-E can't find MH. In this case, you need to update | |
| 545 MH-E, and you may need to install MH too. However, newer versions of | |
| 546 MH-E are better at finding MH if it is on your system.}, then you need | |
| 547 to install MH or tell MH-E where to find MH. | |
| 548 | |
| 549 @cindex Debian | |
| 550 @cindex nmh | |
| 551 @cindex GNU mailutils | |
| 552 | |
| 553 If you don't have MH on your system already, you must install a | |
| 554 variant of MH. The Debian mh-e package does this for you automatically | |
| 555 (@pxref{Getting MH-E}). Most people use | |
| 556 @uref{http://www.nongnu.org/nmh/, nmh}, but you may be interested in | |
| 557 trying out @uref{http://www.gnu.org/software/mailutils/, GNU | |
| 558 mailutils}, which supports IMAP. Your GNU/Linux distribution probably | |
| 559 has packages for both of these. | |
| 560 | |
| 561 @cindex @command{install-mh} | |
| 562 @cindex MH commands, @command{install-mh} | |
| 563 @cindex MH book | |
| 564 | |
| 565 If you've never run MH before, you need to run @command{install-mh} | |
| 566 from the shell before you continue. This sets up your personal MH | |
| 567 environment@footnote{See the section | |
| 568 @uref{@value{MH-BOOK-HOME}/../overall/setup.html, Setting Up MH} in the | |
| 569 MH book.}. If you don't, you'll be greeted with the error message: | |
| 570 @samp{Install MH and run install-mh before running MH-E}. This is all | |
| 571 you need to know about MH to use MH-E, but the more you know about MH, | |
| 572 the more you can leverage its power. See the | |
| 573 @uref{@value{MH-BOOK-HOME}/../, MH book} to learn more about MH. | |
| 574 | |
| 575 @cindex @samp{Path:} MH profile component | |
| 576 @cindex MH profile | |
| 577 @cindex MH profile component | |
| 578 @cindex MH profile component, @samp{Path:} | |
| 579 | |
| 580 Your MH environment includes your @dfn{MH profile} which is found in | |
| 581 the file @file{~/.mh_profile}. This file contains a number of @dfn{MH | |
| 582 profile components}. For example, the @samp{Path:} MH profile | |
| 583 component contains the path to your mail directory, which is | |
| 584 @file{~/Mail} by default. | |
| 585 | |
| 586 @cindex @command{mhparam} | |
| 587 @cindex MH commands, @command{mhparam} | |
| 588 @vindex exec-path | |
| 589 @vindex mh-path | |
| 590 @vindex mh-sys-path | |
| 591 @vindex mh-variant | |
| 592 @vindex mh-variant-in-use | |
| 593 | |
| 594 There are several options MH-E uses to interact with your MH | |
| 595 installation. The option @code{mh-variant} specifies the variant used | |
| 596 by MH-E (@pxref{Options}). The default setting of this option is | |
| 597 @samp{Auto-detect} which means that MH-E will automatically choose the | |
| 598 first of nmh, MH, or GNU mailutils that it finds in the directories | |
| 599 listed in @code{mh-path} (which you can customize), | |
| 600 @code{mh-sys-path}, and @code{exec-path}. If MH-E can't find MH at | |
| 601 all, you may have to customize @code{mh-path} and add the directory in | |
| 602 which the command @command{mhparam} is located. If, on the other hand, | |
| 603 you have both nmh and mailutils installed (for example) and | |
| 604 @code{mh-variant-in-use} was initialized to nmh but you want to use | |
| 605 mailutils, then you can set @code{mh-variant} to @samp{mailutils}. | |
| 606 | |
| 607 @vindex mh-flists-present-flag | |
| 608 @vindex mh-lib | |
| 609 @vindex mh-lib-progs | |
| 610 @vindex mh-progs | |
| 611 | |
| 612 When @code{mh-variant} is changed, MH-E resets @code{mh-progs}, | |
| 613 @code{mh-lib}, @code{mh-lib-progs}, @code{mh-flists-present-flag}, and | |
| 614 @code{mh-variant-in-use} accordingly. | |
| 615 | |
| 616 @cindex @file{.emacs} | |
| 617 @cindex files, @file{.emacs} | |
| 618 | |
| 619 @sp 1 | |
| 620 @center @strong{NOTE} | |
| 621 | |
| 622 @quotation | |
| 623 Prior to version 8, it was often necessary to set some of these | |
| 624 variables in @file{~/.emacs}; now it is no longer necessary and can | |
| 625 actually cause problems. | |
| 626 @end quotation | |
| 627 @sp 1 | |
| 628 | |
| 629 @cindex MH profile component, @samp{Draft-Folder:} | |
| 630 @cindex MH profile component, @samp{Path:} | |
| 631 @cindex MH profile component, @samp{Previous-Sequence:} | |
| 632 @cindex MH profile component, @samp{Unseen-Sequence:} | |
| 633 @cindex @samp{Draft-Folder:} MH profile component | |
| 634 @cindex @samp{Path:} MH profile component | |
| 635 @cindex @samp{Previous-Sequence:} MH profile component | |
| 636 @cindex @samp{Unseen-Sequence:} MH profile component | |
| 637 @findex mh-find-path | |
| 638 @vindex mh-draft-folder | |
| 639 @vindex mh-find-path-hook | |
| 640 @vindex mh-inbox | |
| 641 @vindex mh-previous-seq | |
| 642 @vindex mh-unseen-seq | |
| 643 @vindex mh-user-path | |
| 644 | |
| 645 In addition to setting variables that point to MH itself, MH-E also | |
| 646 sets a handful of variables that point to where you keep your mail. | |
| 647 During initialization, the function @code{mh-find-path} sets | |
| 648 @code{mh-user-path} from your @samp{Path:} MH profile component (but | |
| 649 defaults to @samp{Mail} if one isn't present), @code{mh-draft-folder} | |
| 650 from @samp{Draft-Folder:}, @code{mh-unseen-seq} from | |
| 651 @samp{Unseen-Sequence:}, @code{mh-previous-seq} from | |
| 652 @samp{Previous-Sequence:}, and @code{mh-inbox} from @samp{Inbox:} | |
| 653 (defaults to @samp{+inbox}). The hook @code{mh-find-path-hook} is run | |
| 654 after these variables have been set. This hook can be used the change | |
| 655 the value of these variables if you need to run with different values | |
| 656 between MH and MH-E. | |
| 657 | |
| 658 @node Tour Through MH-E, Using This Manual, Getting Started, Top | |
| 659 @chapter Tour Through MH-E | |
| 660 | |
| 661 @cindex introduction | |
| 662 @cindex tour | |
| 663 @cindex tutorial | |
| 664 | |
| 665 This chapter introduces some of the terms you'll need to know and then | |
| 666 takes you on a tour of MH-E@footnote{The keys mentioned in these | |
| 667 chapters refer to the default key bindings. If you've changed the | |
| 668 bindings, refer to the command summaries at the beginning of each | |
| 669 chapter for a mapping between default key bindings and function | |
| 670 names.}. When you're done, you'll be able to send, read, and file | |
| 671 mail, which is all that a lot of people ever do. But if you're the | |
| 672 curious or adventurous type, read the rest of the manual to be able to | |
| 673 use all the features of MH-E. I suggest you read this chapter first to | |
| 674 get the big picture, and then you can read the manual as you wish. | |
| 675 | |
| 676 @menu | |
| 677 * Sending Mail Tour:: | |
| 678 * Reading Mail Tour:: | |
| 679 * Processing Mail Tour:: | |
| 680 * Leaving MH-E:: | |
| 681 * More About MH-E:: | |
| 682 @end menu | |
| 683 | |
| 684 @node Sending Mail Tour, Reading Mail Tour, Tour Through MH-E, Tour Through MH-E | |
| 685 @section Sending Mail | |
| 686 | |
| 687 @cindex MH-Letter mode | |
| 688 @cindex mode | |
| 689 @cindex modes, MH-Letter | |
| 690 @cindex sending mail | |
| 691 @findex mh-smail | |
| 692 @kindex M-x mh-smail | |
| 693 | |
| 694 Let's start our tour by sending ourselves a message which we can later | |
| 695 read and process. Enter @kbd{M-x mh-smail} to invoke the MH-E program | |
| 696 to send messages. Your message appears in an Emacs buffer whose | |
| 697 mode@footnote{A @dfn{mode} changes Emacs to make it easier to edit a | |
| 698 particular type of text.} is MH-Letter. | |
| 699 | |
| 700 Enter your login name in the @samp{To:} header field. Press the | |
| 701 @key{TAB} twice to move the cursor past the @samp{Cc:} field, since no | |
| 702 carbon copies are to be sent, and on to the @samp{Subject:} field. | |
| 703 Enter @kbd{Test} or anything else that comes to mind. | |
| 704 | |
| 705 Press @key{TAB} again to move the cursor to the body of the message. | |
| 706 Enter some text, using normal Emacs commands. You should now have | |
| 707 something like this@footnote{If you're running Emacs under the X | |
| 708 Window System, then you would also see a menu bar and a tool bar. I've | |
| 709 left out the menu bar and tool bar in all of the example screens.}: | |
| 710 | |
| 711 @cartouche | |
| 712 @smallexample | |
| 713 | |
| 714 | |
| 715 | |
| 716 | |
| 717 | |
| 718 | |
| 719 --:-- *scratch* All L1 (Lisp Interaction)------------------------- | |
| 720 To: wohler | |
| 721 cc: | |
| 722 Subject: Test | |
| 723 X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1 | |
| 724 -------- | |
| 725 This is a test message to get the wheels churning...# | |
| 726 | |
| 727 | |
| 728 --:** @{draft@} All L5 (MH-Letter)---------------------------------- | |
| 729 Type C-c C-c to send message, C-C ? for help | |
| 730 @end smallexample | |
| 731 @end cartouche | |
| 732 @i{MH-E message composition window} | |
| 733 | |
| 734 Note the line of dashes that separates the header and the body of the | |
| 735 message. It is essential that these dashes (or a blank line) are | |
| 736 present or the body of your message will be considered to be part of | |
| 737 the header. | |
| 738 | |
| 739 @cindex help | |
| 740 @findex describe-mode | |
| 741 @kindex C-c ? | |
| 742 @kindex C-c C-c | |
| 743 @kindex C-h m | |
| 744 | |
| 745 There are several commands specific to MH-Letter mode@footnote{You can | |
| 746 get quick help for the commands used most often with @kbd{C-c ?} or | |
| 747 more complete help with the @kbd{C-h m} (@code{describe-mode}) | |
| 748 command.}, but at this time we'll only use @kbd{C-c C-c} to send your | |
| 749 message. Type @kbd{C-c C-c} now. That's all there is to it! | |
| 750 | |
| 751 @node Reading Mail Tour, Processing Mail Tour, Sending Mail Tour, Tour Through MH-E | |
| 752 @section Receiving Mail | |
| 753 | |
| 754 @cindex @command{inc} | |
| 755 @cindex @command{scan} | |
| 756 @cindex MH commands, @command{inc} | |
| 757 @cindex MH commands, @command{scan} | |
| 758 @cindex MH-Folder mode | |
| 759 @cindex modes, MH-Folder | |
| 760 @cindex reading mail | |
| 761 @findex mh-rmail | |
| 762 @kindex M-x mh-rmail | |
| 763 | |
| 764 To read the mail you've just sent yourself, enter @kbd{M-x mh-rmail}. | |
| 765 This incorporates the new mail and puts the output from | |
| 766 @command{inc}@footnote{See the section | |
| 767 @uref{@value{MH-BOOK-HOME}/reapre.html, Reading Mail: inc show next | |
| 768 prev} in the MH book.} (called @dfn{scan lines} after the MH program | |
| 769 @command{scan}@footnote{See the section | |
| 770 @uref{@value{MH-BOOK-HOME}/faswsprs.html, Find and Specify with scan | |
| 771 pick Ranges Sequences} in the MH book.} which prints a one-line | |
| 772 summary of each message) into a buffer called @samp{+inbox} whose | |
| 773 major mode is MH-Folder. | |
| 774 | |
| 775 @findex mh-rmail | |
| 776 @kindex F r | |
| 777 @kindex M-x mh-rmail | |
| 778 | |
| 779 @sp 1 | |
| 780 @center @strong{NOTE} | |
| 781 | |
| 782 @quotation | |
| 783 | |
| 784 The @kbd{M-x mh-rmail} command will show you only new mail, not mail | |
| 785 you have already read. If you were to run this tour again, you would | |
| 786 use @kbd{F r} to pull all your messages into MH-E. | |
| 787 @end quotation | |
| 788 @sp 1 | |
| 789 | |
| 790 @kindex @key{RET} | |
| 791 @kindex n | |
| 792 @kindex p | |
| 793 | |
| 794 You should see the scan line for your message, and perhaps others. Use | |
| 795 @kbd{n} or @kbd{p} to move the cursor to your test message and type | |
| 796 @key{RET} to read your message. You should see something like: | |
| 797 | |
| 798 @cartouche | |
| 799 @smallexample | |
| 800 3 t08/24 root received fax files on Wed Aug 24 11:00:13 PDT 1 | |
| 801 # 4+t08/24 To:wohler Test<<This is a test message to get the wheels | |
| 802 | |
| 803 -:%% @{+inbox/select@} 4 msgs (1-4) Bot L4 (MH-Folder Show)--------- | |
| 804 To: wohler | |
| 805 Subject: Test | |
| 806 X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1 | |
| 807 Date: Fri, 17 Mar 2006 10:49:11 -0800 | |
| 808 From: Bill Wohler <wohler@@stop.mail-abuse.org> | |
| 809 | |
| 810 This is a test message to get the wheels churning... | |
| 811 | |
| 812 | |
| 813 | |
| 814 --:-- @{show-+inbox@} 4 All L1 (MH-Show)---------------------------- | |
| 815 | |
| 816 @end smallexample | |
| 817 @end cartouche | |
| 818 @i{After incorporating new messages} | |
| 819 | |
| 820 @kindex @key{DEL} | |
| 821 @kindex @key{SPC} | |
| 822 | |
| 823 If you typed a long message, you can view subsequent pages with | |
| 824 @key{SPC} and previous pages with @key{DEL}. | |
| 825 | |
| 826 @node Processing Mail Tour, Leaving MH-E, Reading Mail Tour, Tour Through MH-E | |
| 827 @section Processing Mail | |
| 828 | |
| 829 @cindex processing mail | |
| 830 @kindex @key{RET} | |
| 831 @kindex r | |
| 832 | |
| 833 The first thing we want to do is reply to the message that we sent | |
| 834 ourselves. Ensure that the cursor is still on the same line as your | |
| 835 test message and type @kbd{r}. You are prompted in the minibuffer with | |
| 836 @samp{Reply to whom:}. Here MH-E is asking whether you'd like to reply | |
| 837 to the original sender only, to the sender and primary recipients, or | |
| 838 to the sender and all recipients. You can press @key{TAB} to see these | |
| 839 choices. If you simply press @key{RET}, you'll reply only to the | |
| 840 sender. Press @key{RET} now. | |
| 841 | |
| 842 You'll find yourself in an Emacs buffer similar to that when you were | |
| 843 sending the original message, like this: | |
| 844 | |
| 845 @cartouche | |
| 846 @smallexample | |
| 847 To: | |
| 848 cc: | |
| 849 Subject: Re: Test | |
| 850 In-reply-to: <31054.1142621351@@stop.mail-abuse.org> | |
| 851 References: <31054.1142621351@@stop.mail-abuse.org> | |
| 852 Comments: In-reply-to Bill Wohler <wohler@@stop.mail-abuse.org> | |
| 853 message dated "Fri, 17 Mar 2006 10:49:11 -0800." | |
| 854 X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1 | |
| 855 -------- | |
| 856 # | |
| 857 | |
| 858 --:-- @{draft@} All L10 (MH-Letter)---------------------------------- | |
| 859 To: wohler | |
| 860 Subject: Test | |
| 861 X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1 | |
| 862 Date: Fri, 17 Mar 2006 10:49:11 -0800 | |
| 863 From: Bill Wohler <wohler@@stop.mail-abuse.org> | |
| 864 | |
| 865 This is a test message to get the wheels churning... | |
| 866 | |
| 867 --:-- @{show-+inbox@} 4 All L1 (MH-Show)---------------------------- | |
| 868 Type C-c C-c to send message, C-c ? for help | |
| 869 @end smallexample | |
| 870 @end cartouche | |
| 871 @i{Composition window during reply} | |
| 872 | |
| 873 @findex backward-char | |
| 874 @findex forward-char | |
| 875 @findex next-line | |
| 876 @findex previous-line | |
| 877 @kindex C-b | |
| 878 @kindex C-c C-c | |
| 879 @kindex C-c C-f C-t | |
| 880 @kindex C-f | |
| 881 @kindex C-n | |
| 882 @kindex C-p | |
| 883 @kindex @key{BS} | |
| 884 | |
| 885 By default, MH will not add you to the address list of your replies, | |
| 886 so if you find that the @samp{To:} header field is missing, don't | |
| 887 worry. In this case, type @kbd{C-c C-f C-t} to create and go to the | |
| 888 @samp{To:} field, where you can type your login name again. You can | |
| 889 move around with the arrow keys or with @kbd{C-p} | |
| 890 (@code{previous-line}), @kbd{C-n} (@code{next-line}), @kbd{C-b} | |
| 891 (@code{backward-char}), and @kbd{C-f} (@code{forward-char}) and can | |
| 892 delete the previous character with @key{BS}. When you're finished | |
| 893 editing your message, send it with @kbd{C-c C-c} as before. | |
| 894 | |
| 895 @cindex @command{refile} | |
| 896 @cindex MH commands, @command{refile} | |
| 897 @cindex folders | |
| 898 @kindex @key{SPC} | |
| 899 @kindex o | |
| 900 | |
| 901 You'll often want to save messages that were sent to you in an | |
| 902 organized fashion. This is done with @dfn{folders}. You can use | |
| 903 folders to keep messages from your friends, or messages related to a | |
| 904 particular topic. With your cursor in the MH-Folder buffer and | |
| 905 positioned on the message you sent to yourself, type @kbd{o} to output | |
| 906 (@command{refile} in MH parlance) that message to a folder. Enter | |
| 907 @kbd{test} at the @samp{Destination folder:} prompt and type @kbd{y} | |
| 908 (or @key{SPC}) when MH-E asks to create the folder @samp{+test}. Note | |
| 909 that a @samp{^} (caret) appears next to the message number, which | |
| 910 means that the message has been marked for refiling but has not yet | |
| 911 been refiled. We'll talk about how the refile is actually carried out | |
| 912 in a moment. | |
| 913 | |
| 914 @cindex MH-Folder mode | |
| 915 @cindex modes, MH-Folder | |
| 916 @kindex d | |
| 917 @kindex i | |
| 918 @kindex @key{RET} | |
| 919 @kindex n | |
| 920 @kindex p | |
| 921 @kindex x | |
| 922 | |
| 923 Your previous reply is now waiting in the system mailbox. You | |
| 924 incorporate this mail into your MH-Folder buffer named @samp{+inbox} | |
| 925 with the @kbd{i} command. Do this now. After the mail is incorporated, | |
| 926 use @kbd{n} or @kbd{p} to move the cursor to the new message, and read | |
| 927 it with @key{RET}. Let's delete this message by typing @kbd{d}. Note | |
| 928 that a @samp{D} appears next to the message number. This means that | |
| 929 the message is marked for deletion but is not yet deleted. To perform | |
| 930 the deletion (and the refile we did previously), use the @kbd{x} | |
| 931 command. | |
| 932 | |
| 933 @findex mh-smail | |
| 934 @kindex m | |
| 935 @kindex M-x mh-smail | |
| 936 | |
| 937 If you want to send another message you can use @kbd{m} instead of | |
| 938 @kbd{M-x mh-smail}. So go ahead, send some mail to your friends! | |
| 939 | |
| 940 @cindex help | |
| 941 @cindex prefix characters | |
| 942 @findex describe-mode | |
| 943 @kindex ? | |
| 944 @kindex C-h m | |
| 945 @kindex F ? | |
| 946 | |
| 947 You can get a quick reminder about these commands by typing @kbd{?}. | |
| 948 This lists several @dfn{prefix characters}. To list the commands | |
| 949 available via the prefix characters, type the prefix character | |
| 950 followed by a @kbd{?}, for example, @kbd{F ?}. More complete help is | |
| 951 available with the @kbd{C-h m} (@code{describe-mode}) command. | |
| 952 | |
| 953 @node Leaving MH-E, More About MH-E, Processing Mail Tour, Tour Through MH-E | |
| 954 @section Leaving MH-E | |
| 955 | |
| 956 @cindex Emacs, quitting | |
| 957 @cindex quitting | |
| 958 @kindex C-x C-c | |
| 959 @kindex x | |
| 960 | |
| 961 You may now wish to exit @command{emacs} entirely. Use @kbd{C-x C-c} | |
| 962 to exit @command{emacs}. If you exited without running @kbd{x} in the | |
| 963 @samp{+inbox} buffer, Emacs will offer to save it for you. Type | |
| 964 @kbd{y} or @key{SPC} to save @samp{+inbox} changes, which means to | |
| 965 perform any refiles and deletes that you did there. | |
| 966 | |
| 967 @findex mh-rmail | |
| 968 @kindex C-x b | |
| 969 @kindex C-x k | |
| 970 @kindex M-x mh-rmail | |
| 971 @kindex q | |
| 972 | |
| 973 If you don't want to leave Emacs, you can type @kbd{q} to bury (hide) | |
| 974 the MH-E folder or delete it entirely with @kbd{C-x k}. You can then | |
| 975 later recall it with @kbd{C-x b} or @kbd{M-x mh-rmail}. | |
| 976 | |
| 977 @cindex @command{packf} | |
| 978 @cindex MH commands, @command{packf} | |
| 979 @cindex exporting folders | |
| 980 @cindex folders, exporting | |
| 981 @cindex mbox-style folder | |
| 982 | |
| 983 On the other hand, if you no longer want to use MH and MH-E, you can | |
| 984 take your mail with you. You can copy all of your mail into a single | |
| 985 file, mbox-style, by using the MH command @command{packf}. For | |
| 986 example, to create a file called @file{msgbox} with the messages in | |
| 987 your @samp{+inbox} folder, use @samp{packf +inbox}. The | |
| 988 @command{packf} command will append the messages to the file if it | |
| 989 already exists, so you can use @samp{folders -recurse -fast} in a | |
| 990 script to copy all of your messages into a single file, or using the | |
| 991 @samp{-file} argument, a file for each folder. | |
| 992 | |
| 993 @node More About MH-E, , Leaving MH-E, Tour Through MH-E | |
| 994 @section More About MH-E | |
| 995 | |
| 996 These are the basic commands to get you going, but there are plenty | |
| 997 more. If you think that MH-E is for you, read the rest of the manual | |
| 998 to find out how you can: | |
| 999 | |
| 1000 @itemize @bullet | |
| 1001 @item | |
| 1002 Print your messages (@pxref{Printing}). | |
| 1003 @c ------------------------- | |
| 1004 @item | |
| 1005 Edit messages and include your signature (@pxref{Editing Drafts}). | |
| 1006 @c ------------------------- | |
| 1007 @item | |
| 1008 Forward messages (@pxref{Forwarding}). | |
| 1009 @c ------------------------- | |
| 1010 @item | |
| 1011 Read digests (@pxref{Digests}). | |
| 1012 @c ------------------------- | |
| 1013 @item | |
| 1014 Edit bounced messages (@pxref{Editing Again}). | |
| 1015 @c ------------------------- | |
| 1016 @item | |
| 1017 Send multimedia messages (@pxref{Adding Attachments}). | |
| 1018 @c ------------------------- | |
| 1019 @item | |
| 1020 Read HTML messages (@pxref{HTML}). | |
| 1021 @c ------------------------- | |
| 1022 @item | |
| 1023 Use aliases and identities (see @ref{Aliases}, @pxref{Identities}). | |
| 1024 @c ------------------------- | |
| 1025 @item | |
| 1026 Create different views of your mail (see @ref{Threading}, @pxref{Limits}). | |
| 1027 @c ------------------------- | |
| 1028 @item | |
| 1029 Deal with junk mail (@pxref{Junk}). | |
| 1030 @c ------------------------- | |
| 1031 @item | |
| 1032 Handle signed and encrypted messages (see @ref{Reading PGP}, | |
| 1033 @pxref{Sending PGP}). | |
| 1034 @c ------------------------- | |
| 1035 @item | |
| 1036 Process mail that was sent with @command{shar} or @command{uuencode} | |
| 1037 (@pxref{Files and Pipes}). | |
| 1038 @c ------------------------- | |
| 1039 @item | |
| 1040 Use sequences conveniently (@pxref{Sequences}). | |
| 1041 @c ------------------------- | |
| 1042 @item | |
| 1043 Use the speedbar, tool bar, and menu bar (see @ref{Speedbar}, see @ref{Tool | |
| 1044 Bar}, @pxref{Menu Bar}). | |
| 1045 @c ------------------------- | |
| 1046 @item | |
| 1047 Show header fields in different fonts (@pxref{Reading Mail}). | |
| 1048 @c ------------------------- | |
| 1049 @item | |
| 1050 Find previously refiled messages (@pxref{Searching}). | |
| 1051 @c ------------------------- | |
| 1052 @item | |
| 1053 Place messages in a file (@pxref{Files and Pipes}). | |
| 1054 @end itemize | |
| 1055 | |
| 1056 Remember that you can also use MH commands when you're not running | |
| 1057 MH-E (and when you are!). | |
| 1058 | |
| 1059 @node Using This Manual, Incorporating Mail, Tour Through MH-E, Top | |
| 1060 @chapter Using This Manual | |
| 1061 | |
| 1062 This chapter begins the meat of the manual which goes into more detail | |
| 1063 about every MH-E command and option. | |
| 1064 | |
| 1065 @cindex Emacs, info | |
| 1066 @cindex Emacs, online help | |
| 1067 @cindex info | |
| 1068 @cindex online help | |
| 1069 @findex describe-mode | |
| 1070 @findex mh-help | |
| 1071 @kindex ? | |
| 1072 @kindex C-c ? | |
| 1073 @kindex C-h C-h | |
| 1074 @kindex C-h C-k i | |
| 1075 @kindex C-h i | |
| 1076 @kindex C-h m | |
| 1077 | |
| 1078 There are many commands, but don't get intimidated. There are command | |
| 1079 summaries at the beginning of each chapter. In case you have or would | |
| 1080 like to rebind the keys, the command summaries also list the | |
| 1081 associated Emacs Lisp function. Furthermore, even if you're stranded | |
| 1082 on a desert island with a laptop and are without your manuals, you can | |
| 1083 get a summary of all these commands with GNU Emacs online help: use | |
| 1084 @kbd{C-h m} (@code{describe-mode}) for a brief summary of commands, | |
| 1085 @kbd{?} (@code{mh-help}) for an even briefer summary@footnote{This | |
| 1086 help appears in a buffer called @samp{*MH-E Help*} | |
| 1087 (@pxref{Miscellaneous}).} (@kbd{C-c ?} in MH-Letter mode), or @kbd{C-h | |
| 1088 i} to read this manual via Info. The online help is quite good; try | |
| 1089 running @kbd{C-h C-h}. This brings up a list of available help topics, | |
| 1090 one of which displays the documentation for a given key (like @kbd{C-h | |
| 1091 k C-n}). Another useful help feature is to view the manual section | |
| 1092 that describes a given key (such as @kbd{C-h K i}). In addition, | |
| 1093 review @ref{Conventions}, if any of the GNU Emacs conventions are | |
| 1094 strange to you. | |
| 1095 | |
| 1096 In addition to all of the commands, it is also possible to reconfigure | |
| 1097 MH-E to fit the needs of even the most demanding user. The following | |
| 1098 chapters also describe all of the options, show the defaults, and make | |
| 1099 recommendations for customization. | |
| 1100 | |
| 1101 However, when customizing your mail environment, first try to change | |
| 1102 what you want in MH, and only change MH-E if changing MH is not | |
| 1103 possible. That way you will get the same behavior inside and outside | |
| 1104 GNU Emacs. Note that MH-E does not provide hooks for customizations | |
| 1105 that can be done in MH; this omission is intentional. | |
| 1106 | |
| 1107 @cindex Emacs Lisp Manual | |
| 1108 @cindex Emacs, Emacs Lisp Manual | |
| 1109 @cindex Emacs, info | |
| 1110 @cindex Emacs, online help | |
| 1111 @cindex info | |
| 1112 @cindex online help | |
| 1113 | |
| 1114 I hope I've included enough examples here to get you well on your way. | |
| 1115 If you want to explore Emacs Lisp further, a programming manual does | |
| 1116 exist, | |
| 1117 @c Yes, some of the stuff in the following sections is redundant, but | |
| 1118 @c TeX barfs if the @ifs are inside the @footnote. | |
| 1119 @iftex | |
| 1120 @footnote{The @cite{GNU Emacs Lisp Reference Manual} may be available | |
| 1121 online in the Info system by typing @kbd{C-h i m Emacs Lisp | |
| 1122 @key{RET}}. It is also available online at @* | |
| 1123 @uref{http://www.gnu.org/software/emacs/elisp-manual/html_node/}. You | |
| 1124 can also order a printed manual, which has the desirable side-effect | |
| 1125 of helping to support the Free Software Foundation which made all this | |
| 1126 great software available. You can find an order form by running | |
| 1127 @kbd{C-h C-d}, or you can request an order form from @i{gnu at | |
| 1128 gnu.org}.} | |
| 1129 @end iftex | |
| 1130 @ifinfo | |
| 1131 @footnote{@xref{Top, The GNU Emacs Lisp Reference Manual, , elisp, GNU | |
| 1132 Emacs Lisp Reference Manual}, which may be available online in the | |
| 1133 Info system. It is also available online at | |
| 1134 @uref{http://www.gnu.org/software/emacs/elisp-manual/html_node/}. You | |
| 1135 can also order a printed manual, which has the desirable side-effect | |
| 1136 of helping to support the Free Software Foundation which made all this | |
| 1137 great software available. You can find an order form by running | |
| 1138 @kbd{C-h C-d}, or you can request an order form from @i{gnu at | |
| 1139 gnu.org}.} | |
| 1140 @end ifinfo | |
| 1141 @ifhtml | |
| 1142 @footnote{The | |
| 1143 @uref{http://www.gnu.org/software/emacs/elisp-manual/html_node/, | |
| 1144 The GNU Emacs Lisp Reference Manual} may also be available online in | |
| 1145 the Info system by typing @kbd{C-h i m Emacs Lisp @key{RET}}. You can | |
| 1146 also order a printed manual, which has the desirable side-effect of | |
| 1147 helping to support the Free Software Foundation which made all this | |
| 1148 great software available. You can find an order form by running | |
| 1149 @kbd{C-h C-d}, or you can request an order form from @i{gnu at | |
| 1150 gnu.org}.} | |
| 1151 @end ifhtml | |
| 1152 and you can look at the code itself for examples. Look in the Emacs | |
| 1153 Lisp directory on your system (such as | |
| 1154 @file{/usr/local/lib/emacs/lisp/mh-e}) and find all the @file{mh-*.el} | |
| 1155 files there. When calling MH-E and other Emacs Lisp functions directly | |
| 1156 from Emacs Lisp code, you'll need to know the correct arguments. Use | |
| 1157 the online help for this. For example, try @kbd{C-h f | |
| 1158 mh-execute-commands @key{RET}}. If you write your own functions, | |
| 1159 please do not prefix your symbols (variables and functions) with | |
| 1160 @samp{mh-}. This prefix is reserved for the MH-E package. To avoid | |
| 1161 conflicts with existing MH-E symbols, use a prefix like @samp{my-} or | |
| 1162 your initials. (Unless, of course, your initials happen to be @emph{mh}!) | |
| 1163 | |
| 1164 @menu | |
| 1165 * Options:: | |
| 1166 * Ranges:: | |
| 1167 * Folder Selection:: | |
| 1168 @end menu | |
| 1169 | |
| 1170 @node Options, Ranges, Using This Manual, Using This Manual | |
| 1171 @section Options | |
| 1172 | |
| 1173 @cindex Emacs, customizing | |
| 1174 @cindex Emacs, setting options | |
| 1175 @cindex customizing MH-E | |
| 1176 @cindex setting options | |
| 1177 @findex customize-option | |
| 1178 @vindex mh-lpr-command-format, example | |
| 1179 | |
| 1180 Many string or integer options are easy to modify using @kbd{M-x | |
| 1181 customize-option}. For example, to modify the option that controls | |
| 1182 printing, you would run @kbd{M-x customize-option @key{RET} | |
| 1183 mh-lpr-command-format @key{RET}}. In the buffer that appears, modify | |
| 1184 the string to the right of the variable. For example, you may change | |
| 1185 the @command{lpr} command with @samp{nenscript -G -r -2 -i'%s'}. Then | |
| 1186 use the @samp{State} combo box and select @samp{Save for Future | |
| 1187 Sessions}. To read more about @code{mh-lpr-command-format}, see | |
| 1188 @ref{Printing}. | |
| 1189 | |
| 1190 @cindex nil | |
| 1191 @cindex off, option | |
| 1192 @cindex on, option | |
| 1193 @cindex option, turning on and off | |
| 1194 @cindex t | |
| 1195 @findex customize-option | |
| 1196 @vindex mh-bury-show-buffer-flag, example | |
| 1197 | |
| 1198 Options can also hold boolean values. In Emacs Lisp, the boolean | |
| 1199 values are @code{nil}, which means false, and @code{t}, which means | |
| 1200 true. The @code{customize-option} function makes it easy to change | |
| 1201 boolean values; simply click on the toggle button in the customize | |
| 1202 buffer to switch between @samp{on} (@code{t}) and @samp{off} | |
| 1203 (@code{nil}). For example, try setting @code{mh-bury-show-buffer-flag} | |
| 1204 to @samp{off} to keep the MH-Show buffer at the top of the buffer | |
| 1205 stack. Use the @samp{State} combo box and choose @samp{Set for Current | |
| 1206 Session} to see how the option affects the show buffer. Then choose | |
| 1207 the @samp{Erase Customization} menu item to reset the option to the | |
| 1208 default, which places the MH-Show buffer at the bottom of the buffer | |
| 1209 stack. | |
| 1210 | |
| 1211 @vindex mh-mhl-format-file, example | |
| 1212 | |
| 1213 The text usually says to turn on an option by setting it to a | |
| 1214 @emph{non-@code{nil}} value, because sometimes values other than | |
| 1215 @samp{on} are meaningful. An example of this is the variable | |
| 1216 @code{mh-mhl-format-file} (@pxref{Viewing}). Other options, such as | |
| 1217 hooks, involve a little more Emacs Lisp programming expertise. | |
| 1218 | |
| 1219 @cindex customization group, @samp{mh} | |
| 1220 @cindex @samp{mh} customization group | |
| 1221 @findex customize-group | |
| 1222 @findex mh-customize | |
| 1223 | |
| 1224 You can browse all of the MH-E options with the @code{customize-group} | |
| 1225 function. Try entering @kbd{M-x customize-group @key{RET} mh | |
| 1226 @key{RET}} to view the top-level options as well as buttons for all of | |
| 1227 the MH-E customization groups. Another way to view the MH-E | |
| 1228 customization group is to use @kbd{M-x mh-customize @key{RET}}. | |
| 1229 | |
| 1230 @node Ranges, Folder Selection, Options, Using This Manual | |
| 1231 @section Ranges | |
| 1232 | |
| 1233 @c Sync with mh-folder-mode docstring. | |
| 1234 | |
| 1235 @cindex message abbreviations | |
| 1236 @cindex message ranges | |
| 1237 @cindex ranges | |
| 1238 | |
| 1239 Many commands that operate on individual messages, such as | |
| 1240 @code{mh-forward} or @code{mh-refile-msg} take a @code{RANGE} | |
| 1241 argument. This argument can be used in several ways. | |
| 1242 | |
| 1243 @kindex C-u, with ranges | |
| 1244 | |
| 1245 If you provide the prefix argument @kbd{C-u} to these commands, then | |
| 1246 you will be prompted for the message range. This can be any valid MH | |
| 1247 range which can include messages, sequences (@pxref{Sequences}), and | |
| 1248 the abbreviations (described in the @command{mh}(1) man page): | |
| 1249 | |
| 1250 @table @samp | |
| 1251 @item <num1>-<num2> | |
| 1252 Indicates all messages in the range <num1> to <num2>, inclusive. The | |
| 1253 range must be nonempty. | |
| 1254 @c ------------------------- | |
| 1255 @item <num>:N | |
| 1256 @itemx <num>:+N | |
| 1257 @itemx <num>:-N | |
| 1258 Up to N messages beginning with (or ending with) message num. Num may | |
| 1259 be any of the predefined symbols: first, prev, cur, next or last. | |
| 1260 @c ------------------------- | |
| 1261 @item first:N | |
| 1262 @itemx prev:N | |
| 1263 @itemx next:N | |
| 1264 @itemx last:N | |
| 1265 The first, previous, next or last messages, if they exist. | |
| 1266 @c ------------------------- | |
| 1267 @item all | |
| 1268 All of the messages. | |
| 1269 @end table | |
| 1270 | |
| 1271 For example, a range that shows all of these things is @samp{1 2 3 | |
| 1272 5-10 last:5 unseen}. | |
| 1273 | |
| 1274 @vindex transient-mark-mode | |
| 1275 | |
| 1276 If the option @code{transient-mark-mode} is turned on and you set a | |
| 1277 region in the MH-Folder buffer, then the MH-E command will perform the | |
| 1278 operation on all messages in that region. | |
| 1279 | |
| 1280 @cindex @samp{mh-range} customization group | |
| 1281 @cindex customization group, @samp{mh-range} | |
| 1282 | |
| 1283 The @samp{mh-range} customization group contains a single option which | |
| 1284 affects how ranges are interpreted. | |
| 1285 | |
| 1286 @vtable @code | |
| 1287 @item mh-interpret-number-as-range-flag | |
| 1288 On means interpret a number as a range (default: @samp{on}). | |
| 1289 @end vtable | |
| 1290 | |
| 1291 @vindex mh-interpret-number-as-range-flag | |
| 1292 | |
| 1293 Since one of the most frequent ranges used is @samp{last:N}, MH-E will | |
| 1294 interpret input such as @samp{200} as @samp{last:200} if the | |
| 1295 @code{mh-interpret-number-as-range-flag} option is on (which is the | |
| 1296 default). If you need to scan just the message 200, then use the range | |
| 1297 @samp{200:1} or @samp{200-200}. | |
| 1298 | |
| 1299 @node Folder Selection, , Ranges, Using This Manual | |
| 1300 @section Folder Selection | |
| 1301 | |
| 1302 @cindex completion, folders | |
| 1303 @cindex folders, completion | |
| 1304 @cindex folders, selecting | |
| 1305 | |
| 1306 When you choose a folder in MH-E via a command such as @kbd{o} | |
| 1307 (@code{mh-refile-msg}), completion is used to enter the folder | |
| 1308 @ifnothtml | |
| 1309 (@pxref{Completion, , , emacs, The GNU Emacs Manual}). | |
| 1310 @end ifnothtml | |
| 1311 @ifhtml | |
| 1312 (see the section | |
| 1313 @uref{http://www.gnu.org/software/emacs/manual/html_node/Completion.html, | |
| 1314 Completion} in @cite{The GNU Emacs Manual}). | |
| 1315 @end ifhtml | |
| 1316 In addition, MH-E has several ways of choosing a suitable default so | |
| 1317 that the folder can often be selected with a single @key{RET} key. | |
| 1318 | |
| 1319 @cindex customization group, @samp{mh-folder-selection} | |
| 1320 @cindex @samp{mh-folder-selection} customization group | |
| 1321 | |
| 1322 The @samp{mh-folder-selection} customization group contains some | |
| 1323 options which are used to help with this. | |
| 1324 | |
| 1325 @vtable @code | |
| 1326 @item mh-default-folder-for-message-function | |
| 1327 Function to select a default folder for refiling or @samp{Fcc:} | |
| 1328 (default: @code{nil}). | |
| 1329 @c ------------------------- | |
| 1330 @item mh-default-folder-list | |
| 1331 List of addresses and folders (default: @code{nil}). | |
| 1332 @c ------------------------- | |
| 1333 @item mh-default-folder-must-exist-flag | |
| 1334 On means guessed folder name must exist to be used (default: | |
| 1335 @samp{on}). | |
| 1336 @c ------------------------- | |
| 1337 @item mh-default-folder-prefix | |
| 1338 Prefix used for folder names generated from aliases (default: @code{""}). | |
| 1339 @end vtable | |
| 1340 | |
| 1341 @vindex mh-default-folder-for-message-function | |
| 1342 | |
| 1343 You can set the option @code{mh-default-folder-for-message-function} | |
| 1344 to a function that provides a default folder for the message to be | |
| 1345 refiled. When this function is called, the current buffer contains the | |
| 1346 message being refiled and point is at the start of the message. This | |
| 1347 function should return the default folder as a string with a leading | |
| 1348 @samp{+} sign. It can also return @code{nil} so that the last folder | |
| 1349 name is used as the default, or an empty string to suppress the | |
| 1350 default entirely. | |
| 1351 | |
| 1352 Otherwise, the name of the destination folder is derived from the | |
| 1353 sender as follows: | |
| 1354 | |
| 1355 @enumerate | |
| 1356 @vindex mh-default-folder-list | |
| 1357 @item | |
| 1358 The folder name associated with the first address found in the list | |
| 1359 @code{mh-default-folder-list} is used. Each element in this list | |
| 1360 contains a @samp{Check Recipient} item. If this item is turned on, | |
| 1361 then the address is checked against the recipient instead of the | |
| 1362 sender. This is useful for mailing lists. | |
| 1363 @c ------------------------- | |
| 1364 @vindex mh-default-folder-prefix | |
| 1365 @item | |
| 1366 An alias prefixed by @code{mh-default-folder-prefix} corresponding to | |
| 1367 the address is used. The prefix is used to prevent clutter in your | |
| 1368 mail directory. @xref{Aliases}. | |
| 1369 @end enumerate | |
| 1370 | |
| 1371 @vindex mh-default-folder-must-exist-flag | |
| 1372 | |
| 1373 If the derived folder does not exist, and | |
| 1374 @code{mh-default-folder-must-exist-flag} is @code{t}, then the last | |
| 1375 folder name used is suggested. This is useful if you get mail from | |
| 1376 various people for whom you have an alias, but file them all in the | |
| 1377 same project folder. | |
| 1378 | |
| 1379 @node Incorporating Mail, Reading Mail, Using This Manual, Top | |
| 1380 @chapter Incorporating Your Mail | |
| 1381 | |
| 1382 @cindex @samp{Folder} menu | |
| 1383 @cindex incorporating | |
| 1384 @cindex menu, @samp{Folder} | |
| 1385 | |
| 1386 This chapter talks about getting mail from your system mailbox into | |
| 1387 your MH @samp{+inbox} folder. The following command accomplishes that | |
| 1388 and is found in the @samp{Folder} menu. | |
| 1389 | |
| 1390 @table @kbd | |
| 1391 @cindex @samp{Folder > Incorporate New Mail} menu item | |
| 1392 @cindex menu item, @samp{Folder > Incorporate New Mail} | |
| 1393 @findex mh-inc-folder | |
| 1394 @kindex i | |
| 1395 @item i | |
| 1396 Incorporate new mail into a folder (@code{mh-inc-folder}). | |
| 1397 @end table | |
| 1398 | |
| 1399 @cindex @samp{mh-inc} customization group | |
| 1400 @cindex customization group, @samp{mh-inc} | |
| 1401 | |
| 1402 The following options in the @samp{mh-inc} customization group are | |
| 1403 used. | |
| 1404 | |
| 1405 @vtable @code | |
| 1406 @item mh-inc-prog | |
| 1407 Program to incorporate mail (default: @code{"inc"}). | |
| 1408 @c ------------------------- | |
| 1409 @item mh-inc-spool-list | |
| 1410 Alternate spool files (default: @code{nil}). | |
| 1411 @end vtable | |
| 1412 | |
| 1413 The following hook is available. | |
| 1414 | |
| 1415 @vtable @code | |
| 1416 @findex mh-inc-folder | |
| 1417 @item mh-inc-folder-hook | |
| 1418 Hook run by @code{mh-inc-folder} after incorporating mail into a | |
| 1419 folder (default: @code{nil}). | |
| 1420 @end vtable | |
| 1421 | |
| 1422 @cindex @samp{+inbox} | |
| 1423 @findex mh-inc-folder | |
| 1424 @kindex i | |
| 1425 | |
| 1426 If at any time you receive new mail, incorporate the new mail into | |
| 1427 your @samp{+inbox} buffer with @kbd{i} (@code{mh-inc-folder}). Note | |
| 1428 that @kbd{i} will display the @samp{+inbox} buffer, even if there | |
| 1429 isn't any new mail. You can incorporate mail from any file into the | |
| 1430 current folder by specifying a prefix argument; you'll be prompted for | |
| 1431 the name of the file to use as well as the destination folder (for | |
| 1432 example, @kbd{C-u i ~/mbox @key{RET} +tmp @key{RET}}). | |
| 1433 | |
| 1434 @cindex @file{.emacs} | |
| 1435 @cindex Emacs, notification of new mail | |
| 1436 @cindex files, @file{.emacs} | |
| 1437 @cindex new mail | |
| 1438 @cindex notification of new mail | |
| 1439 | |
| 1440 Emacs can notify you when you have new mail by displaying @samp{Mail} | |
| 1441 in the mode line. To enable this behavior, and to have a clock in the | |
| 1442 mode line as well, add the following to @file{~/.emacs}: | |
| 1443 | |
| 1444 @findex display-time | |
| 1445 | |
| 1446 @smalllisp | |
| 1447 (display-time) | |
| 1448 @end smalllisp | |
| 1449 | |
| 1450 @cindex @command{inc} | |
| 1451 @cindex incorporating | |
| 1452 @cindex MH commands, @command{inc} | |
| 1453 @vindex mh-inc-prog | |
| 1454 @vindex mh-progs | |
| 1455 | |
| 1456 The name of the program that incorporates new mail is stored in | |
| 1457 @code{mh-inc-prog}; it is @code{"inc"} by default. This program | |
| 1458 generates a one-line summary for each of the new messages. Unless it | |
| 1459 is an absolute pathname, the file is assumed to be in the | |
| 1460 @code{mh-progs} directory (@pxref{Getting Started}). You may also link | |
| 1461 a file to @command{inc} that uses a different format (see | |
| 1462 @samp{mh-profile}(5), and sections | |
| 1463 @uref{@value{MH-BOOK-HOME}/reapre.html, Reading Mail: inc show next | |
| 1464 prev} and @uref{@value{MH-BOOK-HOME}/mhstr.html, MH Format Strings} in | |
| 1465 the MH book). You'll then need to modify several variables | |
| 1466 appropriately (@pxref{Scan Line Formats}). | |
| 1467 | |
| 1468 @vindex mh-inc-spool-list | |
| 1469 | |
| 1470 You can use the @code{mh-inc-spool-list} variable to direct MH-E to | |
| 1471 retrieve mail from arbitrary spool files other than your system | |
| 1472 mailbox, file it in folders other than your @samp{+inbox}, and assign | |
| 1473 key bindings to incorporate this mail. | |
| 1474 | |
| 1475 @cindex @command{procmail} | |
| 1476 @cindex @file{.procmailrc} | |
| 1477 @cindex Unix commands, @command{procmail} | |
| 1478 @cindex files, @file{.procmailrc} | |
| 1479 | |
| 1480 Suppose you are subscribed to the @i{mh-e-devel} mailing list and you | |
| 1481 use @command{procmail} to filter this mail into @file{~/mail/mh-e} | |
| 1482 with the following recipe in @file{.procmailrc}: | |
| 1483 | |
| 1484 @smallexample | |
| 1485 PATH=$PATH:/usr/bin/mh | |
| 1486 MAILDIR=$HOME/`mhparam Path` | |
| 1487 :0: | |
| 1488 * ^From mh-e-devel-admin@@stop.mail-abuse.org | |
| 1489 mh-e | |
| 1490 @end smallexample | |
| 1491 | |
| 1492 @findex mh-inc-spool-* | |
| 1493 @kindex I * | |
| 1494 | |
| 1495 In order to incorporate @file{~/mail/mh-e} into @samp{+mh-e} with an | |
| 1496 @kbd{I m} (@code{mh-inc-spool-mh-e}) command, customize this option, | |
| 1497 and click on the @samp{INS} button. Enter a @samp{Spool File} of | |
| 1498 @samp{~/mail/mh-e}, a @samp{Folder} of @samp{mh-e}, and a @samp{Key | |
| 1499 Binding} of @samp{m}. | |
| 1500 | |
| 1501 @cindex @command{emacsclient} | |
| 1502 @cindex @command{gnuclient} | |
| 1503 @cindex @command{xbuffy} | |
| 1504 @cindex @samp{gnuserv} | |
| 1505 @cindex Unix commands, @command{emacsclient} | |
| 1506 @cindex Unix commands, @command{gnuclient} | |
| 1507 @cindex Unix commands, @command{xbuffy} | |
| 1508 | |
| 1509 You can use @command{xbuffy} to automate the incorporation of this | |
| 1510 mail using the Emacs 22 command @command{emacsclient} as follows: | |
| 1511 | |
| 1512 @smallexample | |
| 1513 box ~/mail/mh-e | |
| 1514 title mh-e | |
| 1515 origMode | |
| 1516 polltime 10 | |
| 1517 headertime 0 | |
| 1518 command emacsclient --eval '(mh-inc-spool-mh-e)' | |
| 1519 @end smallexample | |
| 1520 | |
| 1521 In XEmacs, the command @command{gnuclient} is used in a similar | |
| 1522 fashion. | |
| 1523 | |
| 1524 @findex mh-inc-folder | |
| 1525 @kindex i | |
| 1526 @vindex mh-inc-folder-hook | |
| 1527 | |
| 1528 You can set the hook @code{mh-inc-folder-hook}, which is called after | |
| 1529 new mail is incorporated by the @kbd{i} (@code{mh-inc-folder}) | |
| 1530 command. A good use of this hook is to rescan the whole folder either | |
| 1531 after running @kbd{M-x mh-rmail} the first time or when you've changed | |
| 1532 the message numbers from outside of MH-E. | |
| 1533 | |
| 1534 @findex mh-execute-commands | |
| 1535 @findex mh-rescan-folder, example | |
| 1536 @findex mh-show, example | |
| 1537 @vindex mh-inc-folder-hook, example | |
| 1538 | |
| 1539 @smalllisp | |
| 1540 @group | |
| 1541 (defun my-mh-inc-folder-hook () | |
| 1542 "Hook to rescan folder after incorporating mail." | |
| 1543 (if (buffer-modified-p) ; @r{if outstanding refiles and deletes,} | |
| 1544 (mh-execute-commands)) ; @r{carry them out} | |
| 1545 (mh-rescan-folder) ; @r{synchronize with +inbox} | |
| 1546 (mh-show)) ; @r{show the current message} | |
| 1547 | |
| 1548 (add-hook 'mh-inc-folder-hook 'my-mh-inc-folder-hook) | |
| 1549 | |
| 1550 @i{Rescan folder after incorporating new mail via mh-inc-folder-hook} | |
| 1551 | |
| 1552 @end group | |
| 1553 @end smalllisp | |
| 1554 | |
| 1555 @node Reading Mail, Folders, Incorporating Mail, Top | |
| 1556 @chapter Reading Your Mail | |
| 1557 | |
| 1558 @cindex @samp{+inbox} | |
| 1559 @cindex MH-Folder mode | |
| 1560 @cindex MH-Show mode | |
| 1561 @cindex modes, MH-Folder | |
| 1562 @cindex modes, MH-Show | |
| 1563 @cindex reading mail | |
| 1564 @findex mh-rmail | |
| 1565 @kindex F r | |
| 1566 @kindex F v | |
| 1567 @kindex M-x mh-rmail | |
| 1568 | |
| 1569 The MH-E entry point for reading mail is @kbd{M-x mh-rmail}. This | |
| 1570 command incorporates your mail and creates a buffer called | |
| 1571 @samp{+inbox} in MH-Folder mode. The command @kbd{M-x mh-rmail} shows | |
| 1572 you only new mail, not mail you have already read@footnote{If you want | |
| 1573 to see your old mail as well, use @kbd{F r} to pull all your messages | |
| 1574 into MH-E. Or, give a prefix argument to @code{mh-rmail} so it will | |
| 1575 prompt you for folder to visit like @kbd{F v} (for example, @kbd{C-u | |
| 1576 M-x mh-rmail @key{RET} bob @key{RET}}). @xref{Folders}.}. | |
| 1577 | |
| 1578 @findex display-time | |
| 1579 @vindex read-mail-command | |
| 1580 | |
| 1581 There are some commands that need to read mail, such as @kbd{Mouse-2} | |
| 1582 over the @samp{Mail} button that @code{display-time} adds to the mode | |
| 1583 line. You can configure Emacs to have these commands use MH-E by | |
| 1584 setting the option @code{read-mail-command} to @samp{mh-rmail}. | |
| 1585 | |
| 1586 @cindex @command{scan} | |
| 1587 @cindex @samp{Message} menu | |
| 1588 @cindex MH commands, @command{scan} | |
| 1589 @cindex menu, @samp{Message} | |
| 1590 @cindex scan lines | |
| 1591 | |
| 1592 The @samp{+inbox} buffer contains @dfn{scan lines}, which are one-line | |
| 1593 summaries of each incorporated message. You can perform most MH | |
| 1594 commands on these messages via one- or two-letter commands in either | |
| 1595 the MH-Folder or MH-Show buffers or by using the @samp{Message} menu. | |
| 1596 See @command{scan}(1) for a description of the contents of the scan | |
| 1597 lines, and see the Figure in @ref{Reading Mail Tour}, for an example. | |
| 1598 | |
| 1599 @table @kbd | |
| 1600 @kindex ? | |
| 1601 @findex mh-help | |
| 1602 @item ? | |
| 1603 Display cheat sheet for the MH-E commands (@code{mh-help}). | |
| 1604 @c ------------------------- | |
| 1605 @cindex @samp{Message > Show Message} menu item | |
| 1606 @cindex menu item, @samp{Message > Show Message} | |
| 1607 @kindex @key{RET} | |
| 1608 @findex mh-show | |
| 1609 @item @key{RET} | |
| 1610 Display message (@code{mh-show}). | |
| 1611 @c ------------------------- | |
| 1612 @cindex @samp{Message > Show Message with Header} menu item | |
| 1613 @cindex menu item, @samp{Message > Show Message with Header} | |
| 1614 @kindex , (comma) | |
| 1615 @findex mh-header-display | |
| 1616 @item , (comma) | |
| 1617 Display message with all header fields (@code{mh-header-display}). | |
| 1618 @c ------------------------- | |
| 1619 @kindex ; (semicolon) | |
| 1620 @findex mh-toggle-mh-decode-mime-flag | |
| 1621 @item ; (semicolon) | |
| 1622 Toggle the value of @code{mh-decode-mime-flag} | |
| 1623 (@code{mh-toggle-mh-decode-mime-flag}). | |
| 1624 @c ------------------------- | |
| 1625 @kindex @key{SPC} | |
| 1626 @findex mh-page-msg | |
| 1627 @item @key{SPC} | |
| 1628 Display next page in message (@code{mh-page-msg}). | |
| 1629 @c ------------------------- | |
| 1630 @kindex @key{BS} | |
| 1631 @findex mh-previous-page | |
| 1632 @item @key{BS} | |
| 1633 Display previous page in message (@code{mh-previous-page}). | |
| 1634 @c ------------------------- | |
| 1635 @cindex @samp{Message > Write Message to File...} menu item | |
| 1636 @cindex menu item, @samp{Message > Write Message to File...} | |
| 1637 @kindex > | |
| 1638 @findex mh-write-msg-to-file | |
| 1639 @item > | |
| 1640 Append message to end of file (@code{mh-write-msg-to-file}). | |
| 1641 @c ------------------------- | |
| 1642 @cindex @samp{Message > Pipe Message to Command...} menu item | |
| 1643 @cindex menu item, @samp{Message > Pipe Message to Command...} | |
| 1644 @kindex | | |
| 1645 @findex mh-pipe-msg | |
| 1646 @item | | |
| 1647 Pipe message through shell command (@code{mh-pipe-msg}). | |
| 1648 @c ------------------------- | |
| 1649 @kindex C-d | |
| 1650 @findex mh-delete-msg-no-motion | |
| 1651 @item C-d | |
| 1652 Delete range, don't move to next message | |
| 1653 (@code{mh-delete-msg-no-motion}). | |
| 1654 @c ------------------------- | |
| 1655 @cindex @samp{Message > Delete Message} menu item | |
| 1656 @cindex menu item, @samp{Message > Delete Message} | |
| 1657 @kindex d | |
| 1658 @findex mh-delete-msg | |
| 1659 @item d | |
| 1660 Delete range (@code{mh-delete-msg}). | |
| 1661 @c ------------------------- | |
| 1662 @kindex D ? | |
| 1663 @findex mh-prefix-help | |
| 1664 @item D ? | |
| 1665 Display cheat sheet for the commands of the current prefix in | |
| 1666 minibuffer (@code{mh-prefix-help}). | |
| 1667 @c ------------------------- | |
| 1668 @kindex D @key{SPC} | |
| 1669 @findex mh-page-digest | |
| 1670 @item D @key{SPC} | |
| 1671 Display next message in digest (@code{mh-page-digest}). | |
| 1672 @c ------------------------- | |
| 1673 @kindex D @key{BS} | |
| 1674 @findex mh-page-digest-backwards | |
| 1675 @item D @key{BS} | |
| 1676 Display previous message in digest (@code{mh-page-digest-backwards}). | |
| 1677 @c ------------------------- | |
| 1678 @cindex @samp{Message > Burst Digest Message} menu item | |
| 1679 @cindex menu item, @samp{Message > Burst Digest Message} | |
| 1680 @kindex D b | |
| 1681 @findex mh-burst-digest | |
| 1682 @item D b | |
| 1683 Break up digest into separate messages (@code{mh-burst-digest}). | |
| 1684 @c ------------------------- | |
| 1685 @cindex @samp{Message > Go to Message by Number...} menu item | |
| 1686 @cindex menu item, @samp{Message > Go to Message by Number...} | |
| 1687 @kindex g | |
| 1688 @findex mh-goto-msg | |
| 1689 @item g | |
| 1690 Go to a message (@code{mh-goto-msg}). | |
| 1691 @c ------------------------- | |
| 1692 @kindex k | |
| 1693 @findex mh-delete-subject-or-thread | |
| 1694 @item k | |
| 1695 Delete messages with same subject or thread | |
| 1696 (@code{mh-delete-subject-or-thread}). | |
| 1697 @c ------------------------- | |
| 1698 @kindex K ? | |
| 1699 @findex mh-prefix-help | |
| 1700 @item K ? | |
| 1701 Display cheat sheet for the commands of the current prefix in | |
| 1702 minibuffer (@code{mh-prefix-help}). | |
| 1703 @c ------------------------- | |
| 1704 @kindex K @key{TAB} | |
| 1705 @findex mh-next-button | |
| 1706 @item K @key{TAB} | |
| 1707 Go to the next button (@code{mh-next-button}). | |
| 1708 @c ------------------------- | |
| 1709 @kindex K S-@key{TAB} | |
| 1710 @findex mh-prev-button | |
| 1711 @item K S-@key{TAB} | |
| 1712 Go to the previous button (@code{mh-prev-button}). | |
| 1713 @c ------------------------- | |
| 1714 @kindex K a | |
| 1715 @findex mh-mime-save-parts | |
| 1716 @item K a | |
| 1717 Save attachments (@code{mh-mime-save-parts}). | |
| 1718 @c ------------------------- | |
| 1719 @kindex K e | |
| 1720 @findex mh-display-with-external-viewer | |
| 1721 @item K e | |
| 1722 View attachment externally (@code{mh-display-with-external-viewer}). | |
| 1723 @c ------------------------- | |
| 1724 @kindex K i | |
| 1725 @findex mh-folder-inline-mime-part | |
| 1726 @item K i | |
| 1727 Show attachment verbatim (@code{mh-folder-inline-mime-part}). | |
| 1728 @c ------------------------- | |
| 1729 @kindex K o | |
| 1730 @findex mh-folder-save-mime-part | |
| 1731 @item K o | |
| 1732 Save (output) attachment (@code{mh-folder-save-mime-part}). | |
| 1733 @c ------------------------- | |
| 1734 @kindex K t | |
| 1735 @findex mh-toggle-mime-buttons | |
| 1736 @item K t | |
| 1737 Toggle option @code{mh-display-buttons-for-inline-parts-flag} | |
| 1738 (@code{mh-toggle-mime-buttons}). | |
| 1739 @c ------------------------- | |
| 1740 @kindex K v | |
| 1741 @findex mh-folder-toggle-mime-part | |
| 1742 @item K v | |
| 1743 View attachment (@code{mh-folder-toggle-mime-part}). | |
| 1744 @c ------------------------- | |
| 1745 @cindex @samp{Message > Modify Message} menu item | |
| 1746 @cindex menu item, @samp{Message > Modify Message} | |
| 1747 @kindex M | |
| 1748 @findex mh-modify | |
| 1749 @item M | |
| 1750 Edit message (@code{mh-modify}). | |
| 1751 @c ------------------------- | |
| 1752 @cindex @samp{Message > Go to First Message} menu item | |
| 1753 @cindex menu item, @samp{Message > Go to First Message} | |
| 1754 @kindex M-< | |
| 1755 @findex mh-first-msg | |
| 1756 @item M-< | |
| 1757 Display first message (@code{mh-first-msg}). | |
| 1758 @c ------------------------- | |
| 1759 @cindex @samp{Message > Go to Last Message} menu item | |
| 1760 @cindex menu item, @samp{Message > Go to Last Message} | |
| 1761 @kindex M-> | |
| 1762 @findex mh-last-msg | |
| 1763 @item M-> | |
| 1764 Display last message (@code{mh-last-msg}). | |
| 1765 @c ------------------------- | |
| 1766 @kindex M-n | |
| 1767 @findex mh-next-unread-msg | |
| 1768 @item M-n | |
| 1769 Display next unread message (@code{mh-next-unread-msg}). | |
| 1770 @c ------------------------- | |
| 1771 @kindex M-p | |
| 1772 @findex mh-previous-unread-msg | |
| 1773 @item M-p | |
| 1774 Display previous unread message (@code{mh-previous-unread-msg}). | |
| 1775 @c ------------------------- | |
| 1776 @cindex @samp{Message > Next Message} menu item | |
| 1777 @cindex menu item, @samp{Message > Next Message} | |
| 1778 @kindex n | |
| 1779 @findex mh-next-undeleted-msg | |
| 1780 @item n | |
| 1781 Display next message (@code{mh-next-undeleted-msg}). | |
| 1782 @c ------------------------- | |
| 1783 @cindex @samp{Message > Previous Message} menu item | |
| 1784 @cindex menu item, @samp{Message > Previous Message} | |
| 1785 @kindex p | |
| 1786 @findex mh-previous-undeleted-msg | |
| 1787 @item p | |
| 1788 Display previous message (@code{mh-previous-undeleted-msg}). | |
| 1789 @c ------------------------- | |
| 1790 @kindex P ? | |
| 1791 @findex mh-prefix-help | |
| 1792 @item P ? | |
| 1793 Display cheat sheet for the commands of the current prefix in | |
| 1794 minibuffer (@code{mh-prefix-help}). | |
| 1795 @c ------------------------- | |
| 1796 @kindex P C | |
| 1797 @findex mh-ps-print-toggle-color | |
| 1798 @item P C | |
| 1799 Toggle whether color is used in printing messages | |
| 1800 (@code{mh-ps-print-toggle-color}). | |
| 1801 @c ------------------------- | |
| 1802 @kindex P F | |
| 1803 @findex mh-ps-print-toggle-faces | |
| 1804 @item P F | |
| 1805 Toggle whether printing is done with faces or not | |
| 1806 (@code{mh-ps-print-toggle-faces}). | |
| 1807 @c ------------------------- | |
| 1808 @kindex P f | |
| 1809 @findex mh-ps-print-msg-file | |
| 1810 @item P f | |
| 1811 Print range to file (@code{mh-ps-print-msg-file}). | |
| 1812 @c ------------------------- | |
| 1813 @cindex @samp{Message > Print Message} menu item | |
| 1814 @cindex menu item, @samp{Message > Print Message} | |
| 1815 @kindex P l | |
| 1816 @findex mh-print-msg | |
| 1817 @item P l | |
| 1818 Print range the old fashioned way | |
| 1819 (@code{mh-print-msg}). | |
| 1820 @c ------------------------- | |
| 1821 @kindex P p | |
| 1822 @findex mh-ps-print-msg | |
| 1823 @item P p | |
| 1824 Print range (@code{mh-ps-print-msg}). | |
| 1825 @c ------------------------- | |
| 1826 @kindex X ? | |
| 1827 @findex mh-prefix-help | |
| 1828 @item X ? | |
| 1829 Display cheat sheet for the commands of the current prefix in | |
| 1830 minibuffer (@code{mh-prefix-help}). | |
| 1831 @c ------------------------- | |
| 1832 @cindex @samp{Message > Unpack Uuencoded Message...} menu item | |
| 1833 @cindex menu item, @samp{Message > Unpack Uuencoded Message...} | |
| 1834 @kindex X s | |
| 1835 @kindex X u | |
| 1836 @findex mh-store-msg | |
| 1837 @item X s | |
| 1838 @itemx X u | |
| 1839 Unpack message created with @command{uudecode} or @command{shar} | |
| 1840 (@code{mh-store-msg}). | |
| 1841 @c ------------------------- | |
| 1842 @kindex Mouse-2 | |
| 1843 @findex mh-show-mouse | |
| 1844 @item Mouse-2 | |
| 1845 Move point to mouse event and show message (@code{mh-show-mouse}). | |
| 1846 @end table | |
| 1847 | |
| 1848 Within the MH-Show buffer, the following command is defined. | |
| 1849 | |
| 1850 @table @kbd | |
| 1851 @kindex @key{RET} | |
| 1852 @kindex Mouse-1 | |
| 1853 @kindex Mouse-2 | |
| 1854 @findex mh-press-button | |
| 1855 @item @key{RET} | |
| 1856 @itemx Mouse-1 | |
| 1857 @itemx Mouse-2 | |
| 1858 View contents of button (@code{mh-press-button}). | |
| 1859 @end table | |
| 1860 | |
| 1861 @cindex @samp{mh-show} customization group | |
| 1862 @cindex customization group, @samp{mh-show} | |
| 1863 | |
| 1864 The following table lists options in the @samp{mh-show} customization | |
| 1865 group that are used while reading mail. | |
| 1866 | |
| 1867 @vtable @code | |
| 1868 @item mh-bury-show-buffer-flag | |
| 1869 On means show buffer is buried (default: @samp{on}). | |
| 1870 @c ------------------------- | |
| 1871 @item mh-clean-message-header-flag | |
| 1872 On means remove extraneous header fields (default: @samp{on}). | |
| 1873 @c ------------------------- | |
| 1874 @item mh-decode-mime-flag | |
| 1875 On means attachments are handled (default: @samp{on} if the Gnus | |
| 1876 @samp{mm-decode} package is present). | |
| 1877 @c ------------------------- | |
| 1878 @item mh-display-buttons-for-alternatives-flag | |
| 1879 On means display buttons for all alternative attachments (default: | |
| 1880 @samp{off}). | |
| 1881 @c ------------------------- | |
| 1882 @item mh-display-buttons-for-inline-parts-flag | |
| 1883 On means display buttons for all inline attachments (default: | |
| 1884 @samp{off}). | |
| 1885 @c ------------------------- | |
| 1886 @item mh-do-not-confirm-flag | |
| 1887 On means non-reversible commands do not prompt for confirmation | |
| 1888 (default: @samp{off}). | |
| 1889 @c ------------------------- | |
| 1890 @item mh-fetch-x-image-url | |
| 1891 Control fetching of @samp{X-Image-URL:} header field image (default: | |
| 1892 @samp{Never Fetch}). | |
| 1893 @c ------------------------- | |
| 1894 @item mh-graphical-smileys-flag | |
| 1895 On means graphical smileys are displayed (default: @samp{on}). | |
| 1896 @c ------------------------- | |
| 1897 @item mh-graphical-emphasis-flag | |
| 1898 On means graphical emphasis is displayed (default: @samp{on}). | |
| 1899 @c ------------------------- | |
| 1900 @item mh-highlight-citation-style | |
| 1901 Style for highlighting citations (default: @samp{Multicolor}). | |
| 1902 @c ------------------------- | |
| 1903 @item mh-invisible-header-fields-default | |
| 1904 List of hidden header fields (default: a checklist too long to list | |
| 1905 here). | |
| 1906 @c ------------------------- | |
| 1907 @item mh-invisible-header-fields | |
| 1908 Additional header fields to hide (default: @code{nil}). | |
| 1909 @c ------------------------- | |
| 1910 @item mh-lpr-command-format | |
| 1911 Command used to print (default: @code{"lpr -J '%s'"}). | |
| 1912 @c ------------------------- | |
| 1913 @item mh-max-inline-image-height | |
| 1914 Maximum inline image height if @samp{Content-Disposition:} is not | |
| 1915 present (default: 0). | |
| 1916 @c ------------------------- | |
| 1917 @item mh-max-inline-image-width | |
| 1918 Maximum inline image width if @samp{Content-Disposition:} is not | |
| 1919 present(default: 0). | |
| 1920 @c ------------------------- | |
| 1921 @item mh-mhl-format-file | |
| 1922 Specifies the format file to pass to the @command{mhl} program | |
| 1923 (default: @samp{Use Default mhl Format (Printing Only)}). | |
| 1924 @c ------------------------- | |
| 1925 @item mh-mime-save-parts-default-directory | |
| 1926 Default directory to use for @kbd{K a}. | |
| 1927 @c ------------------------- | |
| 1928 @item mh-print-background-flag | |
| 1929 On means messages should be printed in the background (default: | |
| 1930 @samp{off}). | |
| 1931 @c ------------------------- | |
| 1932 @item mh-show-buffer-mode-line-buffer-id | |
| 1933 Format string to produce @code{mode-line-buffer-identification} for | |
| 1934 show buffers (default: @code{" @{show-%s@} %d"}). | |
| 1935 @c ------------------------- | |
| 1936 @item mh-show-maximum-size | |
| 1937 Maximum size of message (in bytes) to display automatically (default: | |
| 1938 0). | |
| 1939 @c ------------------------- | |
| 1940 @item mh-show-use-xface-flag | |
| 1941 On means display face images in MH-Show buffers (default: @samp{on}). | |
| 1942 @c ------------------------- | |
| 1943 @item mh-store-default-directory | |
| 1944 Default directory for @kbd{X s} (default: @samp{Current}). | |
| 1945 @c ------------------------- | |
| 1946 @item mh-summary-height | |
| 1947 Number of lines in MH-Folder buffer (including the mode line) | |
| 1948 (default: depends on size of frame). | |
| 1949 @end vtable | |
| 1950 | |
| 1951 The following hooks are available. | |
| 1952 | |
| 1953 @vtable @code | |
| 1954 @item mh-delete-msg-hook | |
| 1955 Hook run after marking each message for deletion (default: @code{nil}). | |
| 1956 @c ------------------------- | |
| 1957 @item mh-show-hook | |
| 1958 Hook run after @key{RET} shows a message (default: @code{nil}). | |
| 1959 @c ------------------------- | |
| 1960 @item mh-show-mode-hook | |
| 1961 Hook run upon entry to @code{mh-show-mode} (default: @code{nil}). | |
| 1962 @end vtable | |
| 1963 | |
| 1964 The following faces are available. | |
| 1965 | |
| 1966 @vtable @code | |
| 1967 @item mh-show-cc | |
| 1968 Face used to highlight @samp{cc:} header fields. | |
| 1969 @c ------------------------- | |
| 1970 @item mh-show-date | |
| 1971 Face used to highlight @samp{Date:} header fields. | |
| 1972 @c ------------------------- | |
| 1973 @item mh-show-from | |
| 1974 Face used to highlight @samp{From:} header fields. | |
| 1975 @c ------------------------- | |
| 1976 @item mh-show-header | |
| 1977 Face used to deemphasize less interesting header fields. | |
| 1978 @c ------------------------- | |
| 1979 @item mh-show-pgg-bad | |
| 1980 Bad PGG signature face. | |
| 1981 @c ------------------------- | |
| 1982 @item mh-show-pgg-good | |
| 1983 Good PGG signature face. | |
| 1984 @c ------------------------- | |
| 1985 @item mh-show-pgg-unknown | |
| 1986 Unknown or untrusted PGG signature face. | |
| 1987 @c ------------------------- | |
| 1988 @item mh-show-signature | |
| 1989 Signature face. | |
| 1990 @c ------------------------- | |
| 1991 @item mh-show-subject | |
| 1992 Face used to highlight @samp{Subject:} header fields. | |
| 1993 @c ------------------------- | |
| 1994 @item mh-show-to | |
| 1995 Face used to highlight @samp{To:} header fields. | |
| 1996 @c ------------------------- | |
| 1997 @item mh-show-xface | |
| 1998 X-Face image face. | |
| 1999 @end vtable | |
| 2000 | |
| 2001 The functions and variables introduced here are explained in more | |
| 2002 detail in the following sections. | |
| 2003 | |
| 2004 @menu | |
| 2005 * Viewing:: | |
| 2006 * Viewing Attachments:: | |
| 2007 * HTML:: | |
| 2008 * Digests:: | |
| 2009 * Reading PGP:: | |
| 2010 * Printing:: | |
| 2011 * Files and Pipes:: | |
| 2012 * Navigating:: | |
| 2013 * Miscellaneous Commands and Options:: | |
| 2014 @end menu | |
| 2015 | |
| 2016 @node Viewing, Viewing Attachments, Reading Mail, Reading Mail | |
| 2017 @section Viewing Your Mail | |
| 2018 | |
| 2019 @findex mh-header-display | |
| 2020 @findex mh-page-msg | |
| 2021 @findex mh-previous-page | |
| 2022 @findex mh-show | |
| 2023 @findex mh-show-mouse | |
| 2024 @kindex , (comma) | |
| 2025 @kindex . (period) | |
| 2026 @kindex @key{BS} | |
| 2027 @kindex @key{RET} | |
| 2028 @kindex @key{SPC} | |
| 2029 @kindex Mouse-2 | |
| 2030 | |
| 2031 The command @key{RET} (@code{mh-show}) displays the message that the | |
| 2032 cursor is on while @kbd{Mouse-2} (@code{mh-show-mouse}) displays the | |
| 2033 message that the mouse cursor is on. If the message is already | |
| 2034 displayed, it scrolls to the beginning of the message. Use @key{SPC} | |
| 2035 (@code{mh-page-msg}) and @key{BS} (@code{mh-previous-page}) to move | |
| 2036 forwards and backwards one page at a time through the message. You can | |
| 2037 give either of these commands a prefix argument that specifies the | |
| 2038 number of lines to scroll (such as @kbd{10 @key{SPC}}). The @key{SPC} | |
| 2039 command will also show the next undeleted message if it is used at the | |
| 2040 bottom of a message. MH-E normally hides a lot of the superfluous | |
| 2041 header fields that mailers add to a message, but if you wish to see | |
| 2042 all of them, use the command @kbd{,} (comma; | |
| 2043 @code{mh-header-display}). | |
| 2044 | |
| 2045 @vindex mh-show-maximum-size | |
| 2046 | |
| 2047 The option @code{mh-show-maximum-size} provides an opportunity to skip | |
| 2048 over large messages which may be slow to load. The default value of 0 | |
| 2049 means that all message are shown regardless of size. | |
| 2050 | |
| 2051 A litany of options control what displayed messages look like. | |
| 2052 | |
| 2053 @vindex mh-show-cc | |
| 2054 @vindex mh-show-date | |
| 2055 @vindex mh-show-from | |
| 2056 @vindex mh-show-header | |
| 2057 @vindex mh-show-subject | |
| 2058 @vindex mh-show-to | |
| 2059 | |
| 2060 First, the appearance of the header fields can be modified by | |
| 2061 customizing the associated face: @code{mh-show-to}, @code{mh-show-cc}, | |
| 2062 @code{mh-show-from}, @code{mh-show-date}, and @code{mh-show-subject}. | |
| 2063 The face @code{mh-show-header} is used to deemphasize the other, less | |
| 2064 interesting, header fields. | |
| 2065 | |
| 2066 @cindex regular expressions, @code{mh-invisible-header-fields} | |
| 2067 @vindex mh-clean-message-header-flag | |
| 2068 @vindex mh-invisible-header-fields | |
| 2069 @vindex mh-invisible-header-fields-default | |
| 2070 | |
| 2071 Normally messages are delivered with a handful of uninteresting header | |
| 2072 fields. These are hidden by turning on the option | |
| 2073 @code{mh-clean-message-header-flag} (which it is by default). The | |
| 2074 header fields listed in the option | |
| 2075 @code{mh-invisible-header-fields-default} are hidden, although you can | |
| 2076 check off any field that you would like to see. Header fields that you | |
| 2077 would like to hide that aren't listed can be added to the option | |
| 2078 @code{mh-invisible-header-fields} with a couple of caveats. Regular | |
| 2079 expressions are not allowed. Unique fields should have a @samp{:} | |
| 2080 suffix; otherwise, the element can be used to render invisible an | |
| 2081 entire class of fields that start with the same prefix. If you think a | |
|
93018
230091ad831d
(Viewing): Update URL for adding header fields to
Bill Wohler <wohler@newt.com>
parents:
92984
diff
changeset
|
2082 header field should be generally ignored, please update |
|
230091ad831d
(Viewing): Update URL for adding header fields to
Bill Wohler <wohler@newt.com>
parents:
92984
diff
changeset
|
2083 @uref{https://sourceforge.net/tracker/index.php?func=detail&aid=1916032&group_id=13357&atid=113357, |
|
230091ad831d
(Viewing): Update URL for adding header fields to
Bill Wohler <wohler@newt.com>
parents:
92984
diff
changeset
|
2084 SF #1916032}. |
| 84306 | 2085 |
| 2086 @cindex header field, @samp{Face:} | |
| 2087 @cindex header field, @samp{X-Face:} | |
| 2088 @cindex header field, @samp{X-Image-URL:} | |
| 2089 @cindex @samp{Face:} header field | |
| 2090 @cindex @samp{X-Face:} header field | |
| 2091 @cindex @samp{X-Image-URL:} header field | |
| 2092 @vindex mh-show-use-xface-flag | |
| 2093 | |
| 2094 MH-E can display the content of @samp{Face:}, @samp{X-Face:}, and | |
| 2095 @samp{X-Image-URL:} header fields. If any of these fields occur in the | |
| 2096 header of your message, the sender's face will appear in the | |
| 2097 @samp{From:} header field. If more than one of these fields appear, | |
| 2098 then the first field found in the order @samp{Face:}, @samp{X-Face:}, | |
| 2099 and @samp{X-Image-URL:} will be used. The option | |
| 2100 @code{mh-show-use-xface-flag} is used to turn this feature on and off. | |
| 2101 This feature will be turned on by default if your system supports it. | |
| 2102 | |
| 2103 The first header field used, if present, is the Gnus-specific | |
| 2104 @samp{Face:} field@footnote{The @samp{Face:} field appeared in GNU | |
| 2105 Emacs 21 and XEmacs. For more information, see | |
| 2106 @uref{http://quimby.gnus.org/circus/face/}.}. | |
| 2107 | |
| 2108 @cindex @command{uncompface} | |
| 2109 @cindex Emacs, packages, x-face | |
| 2110 @cindex Unix commands, @command{uncompface} | |
| 2111 @cindex x-face package | |
| 2112 @vindex mh-show-xface | |
| 2113 | |
| 2114 Next is the traditional @samp{X-Face:} header field@footnote{The | |
| 2115 display of this field requires the | |
| 2116 @uref{ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z, | |
| 2117 @command{uncompface} program}. Recent versions of XEmacs have internal | |
| 2118 support for @samp{X-Face:} images. If your version of XEmacs does not, | |
| 2119 then you'll need both @command{uncompface} and the | |
| 2120 @uref{ftp://ftp.jpl.org/pub/elisp/, @samp{x-face} package}.}. MH-E | |
| 2121 renders the foreground and background of the image using the | |
| 2122 associated attributes of the face @code{mh-show-xface}. | |
| 2123 | |
| 2124 @cindex @command{convert} | |
| 2125 @cindex @command{wget} | |
| 2126 @cindex ImageMagick | |
| 2127 @cindex Unix commands, @command{convert} | |
| 2128 @cindex Unix commands, @command{wget} | |
| 2129 @vindex mh-fetch-x-image-url | |
| 2130 | |
| 2131 Finally, MH-E will display images referenced by the | |
| 2132 @samp{X-Image-URL:} header field if neither the @samp{Face:} nor the | |
| 2133 @samp{X-Face:} fields are present@footnote{The display of the images | |
| 2134 requires the @uref{http://www.gnu.org/software/wget/wget.html, | |
| 2135 @command{wget} program} to fetch the image and the @command{convert} | |
| 2136 program from the @uref{http://www.imagemagick.org/, ImageMagick | |
| 2137 suite}.}. Of the three header fields this is the most efficient in | |
| 2138 terms of network usage since the image doesn't need to be transmitted | |
| 2139 with every single mail. The option @code{mh-fetch-x-image-url} | |
| 2140 controls the fetching of the @samp{X-Image-URL:} header field image | |
| 2141 with the following values: | |
| 2142 | |
| 2143 @table @samp | |
| 2144 @item Ask Before Fetching | |
| 2145 You are prompted before the image is fetched. MH-E will remember your | |
| 2146 reply and will either use the already fetched image the next time the | |
| 2147 same URL is encountered or silently skip it if you didn't fetch it the | |
| 2148 first time. This is a good setting. | |
| 2149 @c ------------------------- | |
| 2150 @item Never Fetch | |
| 2151 Images are never fetched and only displayed if they are already | |
| 2152 present in the cache. This is the default. | |
| 2153 @end table | |
| 2154 | |
| 2155 There isn't a value of @samp{Always Fetch} for privacy and DOS (denial | |
| 2156 of service) reasons. For example, fetching a URL can tip off a spammer | |
| 2157 that you've read his email (which is why you shouldn't blindly answer | |
| 2158 yes if you've set this option to @samp{Ask Before Fetching}). Someone | |
| 2159 may also flood your network and fill your disk drive by sending a | |
| 2160 torrent of messages, each specifying a unique URL to a very large | |
| 2161 file. | |
| 2162 | |
| 2163 @cindex @file{.mhe-x-image-cache} | |
| 2164 @cindex files, @file{.mhe-x-image-cache} | |
| 2165 | |
| 2166 The cache of images is found in the directory | |
| 2167 @file{.mhe-x-image-cache} within your MH directory. You can add your | |
| 2168 own face to the @samp{From:} field too. @xref{Picture}. | |
| 2169 | |
| 2170 @cindex @command{mhl} | |
| 2171 @cindex MH commands, @command{mhl} | |
| 2172 @vindex mh-mhl-format-file | |
| 2173 | |
| 2174 Normally MH-E takes care of displaying messages itself (rather than | |
| 2175 calling an MH program to do the work). If you'd rather have | |
| 2176 @command{mhl} display the message (within MH-E), change the option | |
| 2177 @code{mh-mhl-format-file} from its default value of @samp{Use Default | |
| 2178 mhl Format (Printing Only)}. You can set this option to @samp{Use | |
| 2179 Default mhl Format} to get the same output as you would get if you ran | |
| 2180 @command{mhl} from the shell. If you have a format file that you want | |
| 2181 MH-E to use, you can set this option to @samp{Specify an mhl Format | |
| 2182 File} and enter the name of your format file (@command{mhl}(1) or | |
| 2183 section @uref{@value{MH-BOOK-HOME}/shomes.html#Usisho, Using mhl} in | |
| 2184 the MH book tells you how to write one). Your format file should | |
| 2185 specify a non-zero value for @samp{overflowoffset} to allow MH-E to | |
| 2186 parse the header. Note that @command{mhl} is always used for printing | |
| 2187 and forwarding; in this case, the value of @code{mh-mhl-format-file} | |
| 2188 is consulted if you have specified a format file. | |
| 2189 | |
| 2190 @cindex citations, highlighting | |
| 2191 @cindex highlighting citations | |
| 2192 @vindex mh-highlight-citation-style | |
| 2193 | |
| 2194 If the sender of the message has cited other messages in his message, | |
| 2195 then MH-E will highlight these citations to emphasize the sender's | |
| 2196 actual response. The option @code{mh-highlight-citation-style} can be | |
| 2197 customized to change the highlighting style. The @samp{Multicolor} | |
| 2198 method uses a different color for each indentation while the | |
| 2199 @samp{Monotone} method highlights all citations in red. To disable | |
| 2200 highlighting of citations entirely, choose @samp{None}. | |
| 2201 | |
| 2202 @cindex URLs, highlighting | |
| 2203 @cindex email addresses, highlighting | |
| 2204 @cindex highlighting URLs | |
| 2205 @cindex highlighting email addresses | |
| 2206 @cindex links, following | |
| 2207 @findex goto-address-at-point | |
| 2208 @kindex C-c @key{RET} | |
| 2209 @kindex Mouse-2 | |
| 2210 @vindex goto-address-highlight-p | |
| 2211 | |
| 2212 Email addresses and URLs in the message are highlighted if the option | |
| 2213 @code{goto-address-highlight-p} is on, which it is by default. To view | |
| 2214 the web page for a highlighted URL or to send a message using a | |
| 2215 highlighted email address, use @kbd{Mouse-2} or @kbd{C-c @key{RET}} | |
| 2216 (@code{goto-address-at-point}). @xref{Sending Mail}, to see how to | |
| 2217 configure Emacs to send the message using MH-E. | |
| 2218 | |
| 2219 @cindex boldface, showing | |
| 2220 @cindex emphasis | |
| 2221 @cindex italics, showing | |
| 2222 @cindex smileys | |
| 2223 @cindex typesetting | |
| 2224 @cindex underline, showing | |
| 2225 @vindex gnus-emphasis-alist | |
| 2226 @vindex mh-decode-mime-flag | |
| 2227 @vindex mh-graphical-emphasis-flag | |
| 2228 @vindex mh-graphical-smileys-flag | |
| 2229 | |
| 2230 It is a long standing custom to inject body language using a | |
| 2231 cornucopia of punctuation, also known as the @dfn{smileys}. MH-E can | |
| 2232 render these as graphical widgets if the option | |
| 2233 @code{mh-graphical-smileys-flag} is turned on, which it is by default. | |
| 2234 Smileys include patterns such as :-) and ;-). Similarly, a few | |
| 2235 typesetting features are indicated in ASCII text with certain | |
| 2236 characters. If your terminal supports it, MH-E can render these | |
| 2237 typesetting directives naturally if the option | |
| 2238 @code{mh-graphical-emphasis-flag} is turned on, which it is by | |
| 2239 default. For example, _underline_ will be | |
| 2240 @ifhtml | |
| 2241 @html | |
| 2242 <u>underlined</u>, | |
| 2243 @end html | |
| 2244 @end ifhtml | |
| 2245 @ifnothtml | |
| 2246 underlined, | |
| 2247 @end ifnothtml | |
| 2248 *bold* will appear in @b{bold}, /italics/ will appear in @i{italics}, | |
| 2249 and so on. See the option @code{gnus-emphasis-alist} for the whole | |
| 2250 list. Both of these options are disabled if the option | |
| 2251 @code{mh-decode-mime-flag} is turned off. @xref{Viewing Attachments}. | |
| 2252 | |
| 2253 @cindex signature separator | |
| 2254 @cindex vCard | |
| 2255 @vindex mh-show-signature | |
| 2256 | |
| 2257 MH-E normally renders signatures and vCards in italics so that the | |
| 2258 body of the message stands out more. MH-E depends on the presence of | |
| 2259 the @dfn{signature separator} (@code{"-- "}) to do this. You can also | |
| 2260 customize the face @code{mh-show-signature} so the appearance of the | |
| 2261 signature block is more to your liking. | |
| 2262 | |
| 2263 @vindex mh-show-hook | |
| 2264 @vindex mh-show-mode-hook | |
| 2265 | |
| 2266 Two hooks can be used to control how messages are displayed. The first | |
| 2267 hook, @code{mh-show-mode-hook}, is called early on in the process of | |
| 2268 the message display. It is usually used to perform some action on the | |
| 2269 message's content. The second hook, @code{mh-show-hook}, is the last | |
| 2270 thing called after messages are displayed. It's used to affect the | |
| 2271 behavior of MH-E in general or when @code{mh-show-mode-hook} is too | |
| 2272 early. | |
| 2273 | |
| 2274 @cindex MH-Show mode | |
| 2275 @cindex modes, MH-Show | |
| 2276 @vindex mh-show-buffer-mode-line-buffer-id | |
| 2277 | |
| 2278 For those who like to modify their mode lines, use | |
| 2279 @code{mh-show-buffer-mode-line-buffer-id} to modify the mode line in | |
| 2280 the MH-Show buffers. Place the two escape strings @samp{%s} and | |
| 2281 @samp{%d}, which will display the folder name and the message number, | |
| 2282 respectively, somewhere in the string in that order. The default value | |
| 2283 of @code{"@{show-%s@} %d"} yields a mode line of | |
| 2284 | |
| 2285 @smallexample | |
| 2286 -----@{show-+inbox@} 4 (MH-Show)--Bot-------------------------------- | |
| 2287 @end smallexample | |
| 2288 | |
| 2289 @node Viewing Attachments, HTML, Viewing, Reading Mail | |
| 2290 @section Viewing Attachments | |
| 2291 | |
| 2292 @cindex attachments | |
| 2293 @cindex body parts | |
| 2294 @cindex @command{mhshow} | |
| 2295 @cindex @command{show} | |
| 2296 @cindex MH commands, @command{mhshow} | |
| 2297 @cindex MH commands, @command{show} | |
| 2298 @cindex MIME | |
| 2299 @cindex multimedia mail | |
| 2300 | |
| 2301 MH has the ability to display @dfn{@sc{mime}} (Multipurpose Internet | |
| 2302 Mail Extensions) messages which are simply messages with additional | |
| 2303 @dfn{body parts} or @dfn{attachments}. You can use the MH commands | |
| 2304 @command{show}@footnote{See the section | |
| 2305 @uref{@value{MH-BOOK-HOME}/reapre.html, Reading Mail: inc show next | |
| 2306 prev} in the MH book.} or @command{mhshow}@footnote{See the section | |
| 2307 @uref{@value{MH-BOOK-HOME}/usimim.html#ReMIMa, Reading MIME Mail} in | |
| 2308 the MH book.} from the shell to read @sc{mime} messages@footnote{You | |
| 2309 can call them directly from Emacs if you're running the X Window | |
| 2310 System: type @kbd{M-! xterm -e mhshow @var{message-number}}. You can | |
| 2311 leave out the @samp{xterm -e} if you use @command{mhlist} or | |
| 2312 @command{mhstore}.}. | |
| 2313 | |
| 2314 @cindex Emacs, packages, mm-decode | |
| 2315 @cindex mm-decode package | |
| 2316 @findex mh-toggle-mh-decode-mime-flag | |
| 2317 @kindex ; (semicolon) | |
| 2318 @vindex mh-decode-mime-flag | |
| 2319 | |
| 2320 MH-E can handle attachments as well if the Gnus @samp{mm-decode} | |
| 2321 package is present. If so, the option @code{mh-decode-mime-flag} will | |
| 2322 be on. Otherwise, you'll see the @sc{mime} body parts rather than text | |
| 2323 or attachments. There isn't much point in turning off the option | |
| 2324 @code{mh-decode-mime-flag}; however, you can inspect it if it appears | |
| 2325 that the body parts are not being interpreted correctly or toggle it | |
| 2326 with the command @kbd{;} (semicolon; | |
| 2327 @code{mh-toggle-mh-decode-mime-flag}) to view the raw message. This | |
| 2328 option also controls the display of quoted-printable messages and | |
| 2329 other graphical widgets. @xref{Viewing}. | |
| 2330 | |
| 2331 @cindex buttons | |
| 2332 | |
| 2333 Attachments in MH-E are indicated by @dfn{buttons} like this: | |
| 2334 | |
| 2335 @smallexample | |
| 2336 [1. image/jpeg; foo.jpg]... | |
| 2337 @end smallexample | |
| 2338 | |
| 2339 @findex mh-next-button | |
| 2340 @findex mh-press-button | |
| 2341 @findex mh-prev-button | |
| 2342 @kindex @key{RET} | |
| 2343 @kindex K @key{TAB} | |
| 2344 @kindex K S-@key{TAB} | |
| 2345 @kindex Mouse-1 | |
| 2346 @kindex Mouse-2 | |
| 2347 | |
| 2348 To view the contents of the button, use either @kbd{Mouse-1} or | |
| 2349 @kbd{Mouse-2} on the button or @key{RET} (@code{mh-press-button}) when | |
| 2350 the cursor is over the button. This command is a toggle so if you use | |
| 2351 it again on the same attachment, it is hidden. If Emacs does not know | |
| 2352 how to display the attachment, then Emacs offers to save the | |
| 2353 attachment in a file. To move the cursor to the next button, use the | |
| 2354 command @kbd{K @key{TAB}} (@code{mh-next-button}). If the end of the | |
| 2355 buffer is reached then the search wraps over to the start of the | |
| 2356 buffer. To move the cursor to the previous button, use the command | |
| 2357 @kbd{K S-@key{TAB}} (@code{mh-prev-button}). If the beginning of the | |
| 2358 buffer is reached then the search wraps over to the end of the buffer. | |
| 2359 | |
| 2360 @cindex attachments, viewing | |
| 2361 @cindex viewing attachments | |
| 2362 @findex mh-folder-toggle-mime-part | |
| 2363 @kindex K v | |
| 2364 | |
| 2365 Another way to view the contents of a button is to use the command | |
| 2366 @kbd{K v} (@code{mh-folder-toggle-mime-part}). This command displays | |
| 2367 (or hides) the attachment associated with the button under the cursor. | |
| 2368 If the cursor is not located over a button, then the cursor first | |
| 2369 moves to the next button, wrapping to the beginning of the message if | |
| 2370 necessary. This command has the advantage over the previous commands | |
| 2371 of working from the MH-Folder buffer. You can also provide a numeric | |
| 2372 prefix argument (as in @kbd{4 K v}) to view the attachment labeled | |
| 2373 with that number. If Emacs does not know how to display the | |
| 2374 attachment, then Emacs offers to save the attachment in a file. | |
| 2375 | |
| 2376 @cindex @file{/etc/mailcap} | |
| 2377 @cindex files, @file{/etc/mailcap} | |
| 2378 @findex mailcap-mime-info | |
| 2379 @findex mh-display-with-external-viewer | |
| 2380 @kindex K e | |
| 2381 | |
| 2382 If Emacs does not know how to view an attachment, you could save it | |
| 2383 into a file and then run some program to open it. It is easier, | |
| 2384 however, to launch the program directly from MH-E with the command | |
| 2385 @kbd{K e} (@code{mh-display-with-external-viewer}). While you'll most | |
| 2386 likely use this to view spreadsheets and documents, it is also useful | |
| 2387 to use your browser to view HTML attachments with higher fidelity than | |
| 2388 what Emacs can provide. This command displays the attachment | |
| 2389 associated with the button under the cursor. If the cursor is not | |
| 2390 located over a button, then the cursor first moves to the next button, | |
| 2391 wrapping to the beginning of the message if necessary. You can provide | |
| 2392 a numeric prefix argument (as in @kbd{4 K e}) to view the attachment | |
| 2393 labeled with that number. This command tries to provide a reasonable | |
| 2394 default for the viewer by calling the Emacs function | |
| 2395 @code{mailcap-mime-info}. This function usually reads the file | |
| 2396 @file{/etc/mailcap}. | |
| 2397 | |
| 2398 @cindex attachments, saving | |
| 2399 @cindex saving attachments | |
| 2400 @findex mh-folder-save-mime-part | |
| 2401 @kindex K o | |
| 2402 | |
| 2403 Use the command @kbd{K o} (@code{mh-folder-save-mime-part}) to save | |
| 2404 attachments (the mnemonic is ``output''). This command saves the | |
| 2405 attachment associated with the button under the cursor. If the cursor | |
| 2406 is not located over a button, then the cursor first moves to the next | |
| 2407 button, wrapping to the beginning of the message if necessary. You can | |
| 2408 also provide a numeric prefix argument (as in @kbd{3 K o}) to save the | |
| 2409 attachment labeled with that number. This command prompts you for a | |
| 2410 filename and suggests a specific name if it is available. | |
| 2411 | |
| 2412 @cindex @command{mhn} | |
| 2413 @cindex @command{mhstore} | |
| 2414 @cindex MH commands, @command{mhn} | |
| 2415 @cindex MH commands, @command{mhstore} | |
| 2416 @findex mh-mime-save-parts | |
| 2417 @kindex K a | |
| 2418 @vindex mh-mime-save-parts-default-directory | |
| 2419 | |
| 2420 You can save all of the attachments at once with the command @kbd{K a} | |
| 2421 (@code{mh-mime-save-parts}). The attachments are saved in the | |
| 2422 directory specified by the option | |
| 2423 @code{mh-mime-save-parts-default-directory} unless you use a prefix | |
| 2424 argument (as in @kbd{C-u K a}) in which case you are prompted for the | |
| 2425 directory. These directories may be superseded by MH profile | |
| 2426 components, since this function calls on @command{mhstore} | |
| 2427 (@command{mhn}) to do the work. | |
| 2428 | |
| 2429 @vindex mh-mime-save-parts-default-directory | |
| 2430 | |
| 2431 The default value for the option | |
| 2432 @code{mh-mime-save-parts-default-directory} is @samp{Prompt Always} so | |
| 2433 that you are always prompted for the directory in which to save the | |
| 2434 attachments. However, if you usually use the same directory within a | |
| 2435 session, then you can set this option to @samp{Prompt the First Time} | |
| 2436 to avoid the prompt each time. you can make this directory permanent | |
| 2437 by choosing @samp{Directory} and entering the directory's name. | |
| 2438 | |
| 2439 @cindex attachments, inline | |
| 2440 @cindex inline attachments | |
| 2441 @findex mh-toggle-mime-buttons | |
| 2442 @kindex K t | |
| 2443 @vindex mh-display-buttons-for-inline-parts-flag | |
| 2444 | |
| 2445 The sender can request that attachments should be viewed inline so | |
| 2446 that they do not really appear like an attachment at all to the | |
| 2447 reader. Most of the time, this is desirable, so by default MH-E | |
| 2448 suppresses the buttons for inline attachments. On the other hand, you | |
| 2449 may receive code or HTML which the sender has added to his message as | |
| 2450 inline attachments so that you can read them in MH-E. In this case, it | |
| 2451 is useful to see the buttons so that you know you don't have to cut | |
| 2452 and paste the code into a file; you can simply save the attachment. If | |
| 2453 you want to make the buttons visible for inline attachments, you can | |
| 2454 use the command @kbd{K t} (@code{mh-toggle-mime-buttons}) to toggle | |
| 2455 the visibility of these buttons. You can turn on these buttons | |
| 2456 permanently by turning on the option | |
| 2457 @code{mh-display-buttons-for-inline-parts-flag}. | |
| 2458 | |
| 2459 MH-E cannot display all attachments inline however. It can display | |
| 2460 text (including @sc{html}) and images. | |
| 2461 | |
| 2462 @cindex header field, @samp{Content-Disposition:} | |
| 2463 @cindex inline images | |
| 2464 @cindex @samp{Content-Disposition:} header field | |
| 2465 @vindex mh-max-inline-image-height | |
| 2466 @vindex mh-max-inline-image-width | |
| 2467 | |
| 2468 Some older mail programs do not insert the needed | |
| 2469 plumbing@footnote{This plumbing is the @samp{Content-Disposition:} | |
| 2470 header field.} to tell MH-E whether to display the attachments inline | |
| 2471 or not. If this is the case, MH-E will display these images inline if | |
| 2472 they are smaller than the window. However, you might want to allow | |
| 2473 larger images to be displayed inline. To do this, you can change the | |
| 2474 options @code{mh-max-inline-image-width} and | |
| 2475 @code{mh-max-inline-image-height} from their default value of zero to | |
| 2476 a large number. The size of your screen is a good choice for these | |
| 2477 numbers. | |
| 2478 | |
| 2479 @cindex alternatives | |
| 2480 @cindex attachments, alternatives | |
| 2481 @vindex mh-display-buttons-for-alternatives-flag | |
| 2482 | |
| 2483 Sometimes, a mail program will produce multiple alternatives of an | |
| 2484 attachment in increasing degree of faithfulness to the original | |
| 2485 content. By default, only the preferred alternative is displayed. If | |
| 2486 the option @code{mh-display-buttons-for-alternatives-flag} is on, then | |
| 2487 the preferred part is shown inline and buttons are shown for each of | |
| 2488 the other alternatives. | |
| 2489 | |
| 2490 @vindex mm-discouraged-alternatives | |
| 2491 | |
| 2492 Many people prefer to see the @samp{text/plain} alternative rather | |
| 2493 than the @samp{text/html} alternative. To do this in MH-E, customize | |
| 2494 the option @code{mm-discouraged-alternatives}, and add | |
| 2495 @samp{text/html}. The next best alternative, if any, will be shown. | |
| 2496 | |
| 2497 @kindex K i | |
| 2498 @findex mh-folder-inline-mime-part | |
| 2499 | |
| 2500 You can view the raw contents of an attachment with the command @kbd{K | |
| 2501 i} (@code{mh-folder-inline-mime-part}). This command displays (or | |
| 2502 hides) the contents of the attachment associated with the button under | |
| 2503 the cursor verbatim. If the cursor is not located over a button, then | |
| 2504 the cursor first moves to the next button, wrapping to the beginning | |
| 2505 of the message if necessary. You can also provide a numeric prefix | |
| 2506 argument (as in @kbd{4 K i}) to view the attachment labeled with that | |
| 2507 number. | |
| 2508 | |
| 2509 For additional information on buttons, see | |
| 2510 @ifinfo | |
| 2511 @ref{Article Buttons,,,gnus}, and @ref{MIME Commands,,,gnus}. | |
| 2512 @end ifinfo | |
| 2513 @ifnotinfo | |
| 2514 the chapters @uref{http://www.gnus.org/manual/gnus_101.html#SEC101, | |
| 2515 Article Buttons} and | |
| 2516 @uref{http://www.gnus.org/manual/gnus_108.html#SEC108, MIME Commands} | |
| 2517 in the @cite{The Gnus Manual}. | |
| 2518 @end ifnotinfo | |
| 2519 | |
| 2520 @node HTML, Digests, Viewing Attachments, Reading Mail | |
| 2521 @section HTML | |
| 2522 | |
| 2523 @cindex HTML | |
| 2524 @cindex Gnus | |
| 2525 | |
| 2526 MH-E can display messages that have been sent in HTML@footnote{This | |
| 2527 feature depends on a version of Gnus that is at least 5.10.}. The | |
| 2528 content of the message will appear in the MH-Show buffer as you would | |
| 2529 expect if the entire message is HTML, or there is an inline HTML body | |
| 2530 part. However, if there is an HTML body part that is an attachment, | |
| 2531 then you'll see a button like this: | |
| 2532 | |
| 2533 @smallexample | |
| 2534 [1. text/html; foo.html]... | |
| 2535 @end smallexample | |
| 2536 | |
| 2537 To see how to read the contents of this body part, see @ref{Viewing | |
| 2538 Attachments}. | |
| 2539 | |
| 2540 @vindex mm-text-html-renderer | |
| 2541 | |
| 2542 The browser that MH-E uses is determined by the option | |
| 2543 @code{mm-text-html-renderer}. The default setting is set automatically | |
| 2544 based upon the presence of a known browser on your system. If you wish | |
| 2545 to use a different browser, then set this option accordingly. See the | |
| 2546 documentation for the browser you use for additional information on | |
| 2547 how to use it. In particular, find and disable the option to render | |
| 2548 images as this can tip off spammers that the email address they have | |
| 2549 used is valid. | |
| 2550 | |
| 2551 @vindex mm-text-html-renderer | |
| 2552 | |
| 2553 If you're confused about which @code{mm-text-html-renderer} to use, | |
| 2554 here's a brief description of each, sorted by popularity, that | |
| 2555 includes the results of a quick poll of MH-E users from 2005-12-23. | |
| 2556 | |
| 2557 @table @asis | |
| 2558 @cindex browser, @samp{w3m} | |
| 2559 @cindex @samp{w3m} | |
| 2560 @kindex Mouse-2 | |
| 2561 @item @samp{w3m} 7 | |
| 2562 The @samp{w3m} browser requires an external program. It's quick, | |
| 2563 produces pretty nice output, and best of all, it's the only browser | |
| 2564 that highlights links. These can be clicked with @kbd{Mouse-2} to view | |
|
84934
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2565 the content of the link in @samp{w3m}. The @samp{w3m} browser handles |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2566 tables well and actually respects the table's width parameter (which |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2567 can cause text to wrap if the author didn't anticipate that the page |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2568 would be viewed in Emacs). |
| 84306 | 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 | |
|
84934
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2646 @cindex @file{.emacs} |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2647 @cindex files, @file{.emacs} |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2648 @findex browse-url-at-mouse |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2649 @kindex S-Mouse-2 |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2650 |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2651 A useful key binding that you can add to to @file{~/.emacs} is the |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2652 following which displays an HTML link or textual URL in an external |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2653 browser when clicked with @kbd{S-mouse-2}. This binding works in any |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2654 buffer, including HTML buffers. |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2655 |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2656 @smalllisp |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2657 (global-set-key [S-mouse-2] 'browse-url-at-mouse) |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2658 @end smalllisp |
|
659f550b9193
(HTML): Mention binding of S-mouse-2 to browse-url-at-mouse.
Bill Wohler <wohler@newt.com>
parents:
84329
diff
changeset
|
2659 |
| 84306 | 2660 @node Digests, Reading PGP, HTML, Reading Mail |
| 2661 @section Digests | |
| 2662 | |
| 2663 @cindex digests | |
| 2664 @findex mh-page-digest | |
| 2665 @findex mh-page-digest-backwards | |
| 2666 @kindex D @key{BS} | |
| 2667 @kindex D @key{SPC} | |
| 2668 @kindex @key{BS} | |
| 2669 @kindex @key{SPC} | |
| 2670 | |
| 2671 A digest is a message that contains other messages. Special MH-E | |
| 2672 commands let you read digests conveniently. You can use @key{SPC} and | |
| 2673 @key{BS} to page through the digest as if it were a normal message, | |
| 2674 but if you wish to skip to the next message in the digest, use | |
| 2675 @kbd{D @key{SPC}} (@code{mh-page-digest}). To return to a previous message, | |
| 2676 use @kbd{D @key{BS}} (@code{mh-page-digest-backwards}). | |
| 2677 | |
| 2678 @cindex @command{burst} | |
| 2679 @cindex MH commands, @command{burst} | |
| 2680 @cindex MH-Folder Show mode | |
| 2681 @cindex modes, MH-Folder Show | |
| 2682 @findex mh-burst-digest | |
| 2683 @kindex d | |
| 2684 @kindex D b | |
| 2685 @kindex t | |
| 2686 | |
| 2687 Another handy command is @kbd{D b} (@code{mh-burst-digest}). This | |
| 2688 command uses the MH command @command{burst}@footnote{See the section | |
| 2689 @uref{@value{MH-BOOK-HOME}/burdig.html, Bursting Messages} in the MH | |
| 2690 book.} to break out each message in the digest into its own message. | |
| 2691 Using this command, you can quickly delete unwanted messages, like | |
| 2692 this: Once the digest is split up, toggle out of MH-Folder Show mode | |
| 2693 with @kbd{t} (@pxref{Folders}) so that the scan lines fill the screen | |
| 2694 and messages aren't displayed. Then use @kbd{d} (@pxref{Reading Mail}) | |
| 2695 to quickly delete messages that you don't want to read (based on the | |
| 2696 @samp{Subject:} header field). You can also burst the digest to reply | |
| 2697 directly to the people who posted the messages in the digest. One | |
| 2698 problem you may encounter is that the @samp{From:} header fields are | |
| 2699 preceded with a @samp{>} so that your reply can't create the | |
| 2700 @samp{To:} field correctly. In this case, you must correct the | |
| 2701 @samp{To:} field yourself. This is described later (@pxref{Editing | |
| 2702 Drafts}). | |
| 2703 | |
| 2704 @node Reading PGP, Printing, Digests, Reading Mail | |
| 2705 @section Signed and Encrypted Messages | |
| 2706 | |
| 2707 @cindex GPG | |
| 2708 @cindex GnuPG | |
| 2709 @cindex Gnus | |
| 2710 @cindex OpenPGP | |
| 2711 @cindex PGP | |
| 2712 @cindex RFC 3156 | |
| 2713 @cindex encrypted messages | |
| 2714 @cindex security | |
| 2715 @cindex signed messages | |
| 2716 | |
| 2717 You can read encrypted or signed PGP or GPG messages with | |
| 2718 MH-E@footnote{This feature depends on post-5.10 versions of Gnus. | |
| 2719 @cite{MIME Security with OpenPGP} is documented in | |
| 2720 @uref{http://www.rfc-editor.org/rfc/rfc3156.txt, RFC 3156}. However, | |
| 2721 MH-E can also decrypt old-style PGP messages that are not in MIME | |
| 2722 format.}. This section assumes that you already have a good | |
| 2723 understanding of GPG and have set up your keys appropriately. | |
| 2724 | |
| 2725 If someone sends you a signed message, here is what you'll see: | |
| 2726 | |
| 2727 @smallexample | |
| 2728 @group | |
| 2729 [[PGP Signed Part:Bill Wohler <wohler@@stop.mail-abuse.org>]] | |
| 2730 This is a signed message. | |
| 2731 | |
| 2732 [[End of PGP Signed Part]] | |
| 2733 @end group | |
| 2734 @end smallexample | |
| 2735 | |
| 2736 @cindex keychain | |
| 2737 @cindex key server | |
| 2738 @cindex signed messages | |
| 2739 | |
| 2740 If the key for the given signature is not in your keychain, you'll be | |
| 2741 given the opportunity to fetch the key from a key server and verify | |
| 2742 the key. If the message is really large, the verification process can | |
| 2743 take a long time. You can press @kbd{C-g} at any time to | |
| 2744 cancel@footnote{Unfortunately in the current version, the validation | |
| 2745 process doesn't display a message so it appears that MH-E has hung. We | |
| 2746 hope that this will be fixed in the future.}. | |
| 2747 | |
| 2748 If the signature doesn't check out, you might see something like this: | |
| 2749 | |
| 2750 @smallexample | |
| 2751 @group | |
| 2752 [[PGP Signed Part:Failed]] | |
| 2753 This is a signed message. | |
| 2754 This is garbage added after the signature was made. | |
| 2755 | |
| 2756 [[End of PGP Signed Part]] | |
| 2757 @end group | |
| 2758 @end smallexample | |
| 2759 | |
| 2760 @cindex decrypting messages | |
| 2761 | |
| 2762 If someone sends you an encrypted message, MH-E will ask for your | |
| 2763 passphrase to decrypt the message. You should see something like this: | |
| 2764 | |
| 2765 @smallexample | |
| 2766 @group | |
| 2767 [[PGP Encrypted Part:OK]] | |
| 2768 | |
| 2769 [[PGP Signed Part:Bill Wohler <wohler@@stop.mail-abuse.org>]] | |
| 2770 This is the secret message. | |
| 2771 | |
| 2772 [[End of PGP Signed Part]] | |
| 2773 | |
| 2774 [[End of PGP Encrypted Part]] | |
| 2775 @end group | |
| 2776 @end smallexample | |
| 2777 | |
| 2778 If there is a problem decrypting the message, the button will say: | |
| 2779 | |
| 2780 @smallexample | |
| 2781 [[PGP Encrypted Part:Failed]] | |
| 2782 @end smallexample | |
| 2783 | |
| 2784 You can read the contents of this button using the methods described in | |
| 2785 @ref{Viewing Attachments}. If the message were corrupted, you'd see | |
| 2786 this: | |
| 2787 | |
| 2788 @smallexample | |
| 2789 [[PGP Encrypted Part:Failed] | |
| 2790 Invalid base64 data] | |
| 2791 @end smallexample | |
| 2792 | |
| 2793 If your passphrase were incorrect, you'd see something like this: | |
| 2794 | |
| 2795 @smallexample | |
| 2796 [GNUPG:] ENC_TO CD9C88BB610BD9AD 1 0 | |
| 2797 [GNUPG:] USERID_HINT CD9C88BB610BD9AD Bill Wohler <wohler@@stop.mail-abuse.org> | |
| 2798 [GNUPG:] NEED_PASSPHRASE CD9C88BB610BD9AD CD9C88BB610BD9AD 1 0 | |
| 2799 [GNUPG:] BAD_PASSPHRASE CD9C88BB610BD9AD | |
| 2800 gpg: encrypted with 1024-bit RSA key, ID 610BD9AD, created 1997-09-09 | |
| 2801 "Bill Wohler <wohler@@stop.mail-abuse.org>" | |
| 2802 gpg: public key decryption failed: bad passphrase | |
| 2803 [GNUPG:] BEGIN_DECRYPTION | |
| 2804 [GNUPG:] DECRYPTION_FAILED | |
| 2805 gpg: decryption failed: secret key not available | |
| 2806 [GNUPG:] END_DECRYPTION | |
| 2807 | |
| 2808 gpg exited abnormally: '2' | |
| 2809 @end smallexample | |
| 2810 | |
| 2811 @vindex mh-show-pgg-bad | |
| 2812 @vindex mh-show-pgg-good | |
| 2813 @vindex mh-show-pgg-unknown | |
| 2814 | |
| 2815 The appearance of the buttons is controlled by the faces | |
| 2816 @code{mh-show-pgg-good}, @code{mh-show-pgg-bad}, and | |
| 2817 @code{mh-show-pgg-unknown} depending on the validity of the signature. | |
| 2818 The latter is used whether the signature is unknown or untrusted. | |
| 2819 | |
| 2820 @cindex @samp{pgg} customization group | |
| 2821 @cindex PGG | |
| 2822 @cindex customization group, @samp{pgg} | |
| 2823 | |
| 2824 The @samp{pgg} customization group may have some settings which may | |
| 2825 interest you. | |
| 2826 @iftex | |
| 2827 See @cite{The PGG Manual}. | |
| 2828 @end iftex | |
| 2829 @ifinfo | |
| 2830 @xref{Top, , The PGG Manual, pgg, The PGG Manual}. | |
| 2831 @end ifinfo | |
| 2832 @ifhtml | |
| 2833 See | |
| 2834 @uref{http://www.dk.xemacs.org/Documentation/packages/html/pgg.html, | |
| 2835 @cite{The PGG Manual}}. | |
| 2836 @end ifhtml | |
| 2837 | |
| 2838 @node Printing, Files and Pipes, Reading PGP, Reading Mail | |
| 2839 @section Printing Your Mail | |
| 2840 | |
| 2841 @cindex printing | |
| 2842 @findex mh-ps-print-msg | |
| 2843 @findex mh-ps-print-msg-file | |
| 2844 @kindex P f | |
| 2845 @kindex P p | |
| 2846 @vindex mh-lpr-command-format | |
| 2847 @vindex mh-print-background-flag | |
| 2848 | |
| 2849 To print messages in MH-E, use the command @kbd{P p} | |
| 2850 (@code{mh-ps-print-msg}). You can print all the messages in a range | |
| 2851 (as in @kbd{C-u P p 1 3 5-7 last:5 frombob @key{RET}}, | |
| 2852 @pxref{Ranges}). You can also send the output to a file with @kbd{P f} | |
| 2853 (@code{mh-ps-print-msg-file}). This command will print inline text | |
| 2854 attachments but will not decrypt messages. However, when a message is | |
| 2855 displayed in an MH-Show buffer, then that buffer is used verbatim for | |
| 2856 printing with the caveat that only text attachments, if opened inline, | |
| 2857 are printed. Therefore, encrypted messages can be printed by showing | |
| 2858 and decrypting them first. The commands @kbd{P p} and @kbd{P f} do not | |
| 2859 use the options @code{mh-lpr-command-format} or | |
| 2860 @code{mh-print-background-flag}, described below. | |
| 2861 | |
| 2862 @findex mh-ps-print-toggle-color | |
| 2863 @kindex P C | |
| 2864 @vindex ps-print-color-p | |
| 2865 | |
| 2866 Colors are emulated on black-and-white printers with shades of gray. | |
| 2867 This might produce illegible output, even if your screen colors only | |
| 2868 use shades of gray. If this is the case, try using the command @kbd{P | |
| 2869 C} (@code{mh-ps-print-toggle-color}) to toggle between color, no | |
| 2870 color, and a black and white representation of the colors and see | |
| 2871 which works best. You change this setting permanently by customizing | |
| 2872 the option @code{ps-print-color-p}. | |
| 2873 | |
| 2874 @findex mh-ps-print-toggle-faces | |
| 2875 @kindex P F | |
| 2876 | |
| 2877 Another related function is the command @kbd{P F} | |
| 2878 (@code{mh-ps-print-toggle-faces}). This command toggles between using | |
| 2879 faces and not. When faces are enabled, the printed message will look | |
| 2880 very similar to the message in the MH-Show buffer. | |
| 2881 | |
| 2882 @cindex ps-print package | |
| 2883 @cindex Emacs, packages, ps-print | |
| 2884 | |
| 2885 MH-E uses the @samp{ps-print} package to do the printing, so you can | |
| 2886 customize the printing further by going to the @samp{ps-print} | |
| 2887 customization group. | |
| 2888 | |
| 2889 @cindex @command{lpr} | |
| 2890 @cindex @command{mhl} | |
| 2891 @cindex MH commands, @command{mhl} | |
| 2892 @cindex Unix commands, @command{lpr} | |
| 2893 @findex mh-print-msg | |
| 2894 @kindex P l | |
| 2895 | |
| 2896 An alternative to using the @samp{ps-print} package is the command | |
| 2897 @kbd{P l} (@code{mh-print-msg}) (the @i{l} is for @i{l}ine printer or | |
| 2898 @i{l}pr). You can print all the messages in a range. The message is | |
| 2899 formatted with @command{mhl}@footnote{See the section | |
| 2900 @uref{@value{MH-BOOK-HOME}/shomes.html#Usisho, Using mhl} in the MH | |
| 2901 book.} and printed with the @command{lpr} command. | |
| 2902 | |
| 2903 @kindex P f | |
| 2904 @kindex P l | |
| 2905 @kindex P p | |
| 2906 @vindex mh-lpr-command-format | |
| 2907 @vindex mh-print-background-flag | |
| 2908 | |
| 2909 The command @kbd{P l} uses two options. The option | |
| 2910 @code{mh-lpr-command-format} contains the Unix command line which | |
| 2911 performs the actual printing. The string can contain one escape, | |
| 2912 @samp{%s}, which is replaced by the name of the folder and the message | |
| 2913 number and is useful for print job names. The default setting is | |
| 2914 @code{"lpr -J '%s'"}. I use @code{"mpage -h'%s' -b Letter -H1of -mlrtb | |
| 2915 -P"} which produces a nice header and adds a bit of margin so the text | |
| 2916 fits within my printer's margins. Normally messages are printed in the | |
| 2917 foreground. If this is slow on your system, you may elect to turn on | |
| 2918 the option @code{mh-print-background-flag} to print in the background. | |
| 2919 If you do this, do not delete the message until it is printed or else | |
| 2920 the output may be truncated. These options are not used by the | |
| 2921 commands @kbd{P p} or @kbd{P f}. | |
| 2922 | |
| 2923 @node Files and Pipes, Navigating, Printing, Reading Mail | |
| 2924 @section Files and Pipes | |
| 2925 | |
| 2926 @cindex files | |
| 2927 @cindex pipes | |
| 2928 @findex mh-refile-or-write-again | |
| 2929 @findex mh-write-msg-to-file | |
| 2930 @kindex > | |
| 2931 @kindex ! | |
| 2932 | |
| 2933 MH-E does offer a couple of commands that are not a part of MH@. The | |
| 2934 first one, @kbd{>} (@code{mh-write-msg-to-file}), writes a message to | |
| 2935 a file. You are prompted for the filename. If the file already exists, | |
| 2936 the message is appended to it. You can also write the message to the | |
| 2937 file without the header by specifying a prefix argument (such as | |
| 2938 @kbd{C-u > /tmp/foobar @key{RET}}). Subsequent writes to the same file | |
| 2939 can be made with the command @kbd{!} | |
| 2940 (@code{mh-refile-or-write-again}). | |
| 2941 | |
| 2942 @findex mh-pipe-msg | |
| 2943 @kindex | | |
| 2944 @kindex l | |
| 2945 | |
| 2946 You can also pipe the message through a Unix shell command with the | |
| 2947 command @kbd{|} (@code{mh-pipe-msg}). You are prompted for the Unix | |
| 2948 command through which you wish to run your message. If you give a | |
| 2949 prefix argument to this command, the message header is included in the | |
| 2950 text passed to the command (the contrived example @kbd{C-u | lpr} | |
| 2951 would be done with the @kbd{l} command instead). | |
| 2952 | |
| 2953 @cindex @command{shar} | |
| 2954 @cindex @command{uuencode} | |
| 2955 @cindex Unix commands, @command{shar} | |
| 2956 @cindex Unix commands, @command{uuencode} | |
| 2957 @findex mh-store-msg | |
| 2958 @kindex X s | |
| 2959 @vindex mh-store-default-directory | |
| 2960 | |
| 2961 If the message is a shell archive @command{shar} or has been run | |
| 2962 through @command{uuencode} use @kbd{X s} (@code{mh-store-msg}) to | |
| 2963 extract the body of the message. The default directory for extraction | |
| 2964 is the current directory; however, you have a chance to specify a | |
| 2965 different extraction directory. The next time you use this command, | |
| 2966 the default directory is the last directory you used. If you would | |
| 2967 like to change the initial default directory, customize the option | |
| 2968 @code{mh-store-default-directory}, change the value from | |
| 2969 @samp{Current} to @samp{Directory}, and then enter the name of the | |
| 2970 directory for storing the content of these messages. | |
| 2971 | |
| 2972 @findex mh-store-buffer | |
| 2973 @kindex @key{RET} | |
| 2974 @kindex X s | |
| 2975 | |
| 2976 By the way, @kbd{X s} calls the Emacs Lisp function | |
| 2977 @code{mh-store-buffer}. I mention this because you can use it directly | |
| 2978 if you're editing a buffer that contains a file that has been run | |
| 2979 through @command{uuencode} or @command{shar}. For example, you can | |
| 2980 extract the contents of the current buffer in your home directory by | |
| 2981 typing @kbd{M-x mh-store-buffer @key{RET} ~ @key{RET}}. | |
| 2982 | |
| 2983 @node Navigating, Miscellaneous Commands and Options, Files and Pipes, Reading Mail | |
| 2984 @section Navigating | |
| 2985 | |
| 2986 @cindex moving between messages | |
| 2987 @cindex navigation | |
| 2988 @findex mh-first-msg | |
| 2989 @findex mh-goto-msg | |
| 2990 @findex mh-last-msg | |
| 2991 @findex mh-next-undeleted-msg | |
| 2992 @findex mh-next-unread-msg | |
| 2993 @findex mh-previous-undeleted-msg | |
| 2994 @findex mh-previous-unread-msg | |
| 2995 @kindex g | |
| 2996 @kindex M-< | |
| 2997 @kindex M-> | |
| 2998 @kindex M-n | |
| 2999 @kindex M-p | |
| 3000 @kindex n | |
| 3001 @kindex p | |
| 3002 | |
| 3003 To move on to the next message, use the command @kbd{n} | |
| 3004 (@code{mh-next-undeleted-msg}); use @kbd{p} | |
| 3005 (@code{mh-previous-undeleted-msg}) to read the previous message. To | |
| 3006 move to the next unread message, use @kbd{M-n} | |
| 3007 (@code{mh-next-unread-msg}); use @kbd{M-p} | |
| 3008 (@code{mh-previous-unread-msg}) to move to the previous unread | |
| 3009 message. These commands can be given a prefix argument to specify how | |
| 3010 many messages to skip (for example, @kbd{5 n}). You can also move to a | |
| 3011 specific message with @kbd{g} (@code{mh-goto-msg}). You can enter the | |
| 3012 message number either before or after typing @kbd{g}. In the latter | |
| 3013 case, Emacs prompts you. Finally, you can go to the first or last | |
| 3014 message with @kbd{M-<} (@code{mh-first-msg}) and @kbd{M->} | |
| 3015 (@code{mh-last-msg}) respectively. | |
| 3016 | |
| 3017 @cindex MH-Folder mode | |
| 3018 @cindex modes, MH-Folder | |
| 3019 @findex next-line | |
| 3020 @findex previous-line | |
| 3021 @kindex C-n | |
| 3022 @kindex C-p | |
| 3023 @kindex @key{RET} | |
| 3024 | |
| 3025 You can also use the Emacs commands @kbd{C-p} (@code{previous-line}) | |
| 3026 and @kbd{C-n} (@code{next-line}) to move up and down the scan lines in | |
| 3027 the MH-Folder window. These commands can be used in conjunction with | |
| 3028 @key{RET} to look at deleted or refiled messages. | |
| 3029 | |
| 3030 @cindex deleting messages | |
| 3031 @findex mh-delete-msg | |
| 3032 @kindex d | |
| 3033 @kindex n | |
| 3034 @kindex p | |
| 3035 | |
| 3036 To mark a message for deletion, use the command @kbd{d} | |
| 3037 (@code{mh-delete-msg}). A @samp{D} is placed by the message in the | |
| 3038 scan window, and the next undeleted message is displayed. If the | |
| 3039 previous command had been @kbd{p}, then the next message displayed is | |
| 3040 the first undeleted message previous to the message just deleted. Use | |
| 3041 @kbd{n} to force subsequent @kbd{d} commands to move forward to the | |
| 3042 next undeleted message after deleting the message under the cursor. | |
| 3043 You may also specify a range (for example, @kbd{C-u d 1 3 5-7 last:5 | |
| 3044 frombob @key{RET}}, @pxref{Ranges}). | |
| 3045 | |
| 3046 @findex mh-delete-msg-no-motion | |
| 3047 @kindex C-d | |
| 3048 | |
| 3049 The command @kbd{C-d} (@code{mh-delete-msg-no-motion}) marks the | |
| 3050 message (or messages in range) for deletion but leaves the cursor at | |
| 3051 the current message in case you wish to perform other operations on | |
| 3052 the message. | |
| 3053 | |
| 3054 @findex mh-delete-subject | |
| 3055 @findex mh-delete-subject-or-thread | |
| 3056 @findex mh-thread-delete | |
| 3057 @findex mh-undo | |
| 3058 @kindex k | |
| 3059 @kindex T d | |
| 3060 @kindex u | |
| 3061 | |
| 3062 And to delete more messages faster, you can use @kbd{k} | |
| 3063 (@code{mh-delete-subject-or-thread}) to delete all the messages with | |
| 3064 the same subject as the current message. This command puts these | |
| 3065 messages in a sequence named @samp{subject}. You can undo this action | |
| 3066 by using @kbd{u} (@code{mh-undo}) with a prefix argument and then | |
| 3067 specifying the @samp{subject} sequence. However, if the buffer is | |
| 3068 displaying a threaded view of the folder then @kbd{k} behaves like | |
| 3069 @kbd{T d} (@code{mh-thread-delete}). @xref{Threading}. | |
| 3070 | |
| 3071 @findex mh-execute-commands | |
| 3072 @kindex x | |
| 3073 | |
| 3074 However you mark a message for deletion, the command @kbd{x} | |
| 3075 (@code{mh-execute-commands}) actually carries out the deletion | |
| 3076 (@pxref{Folders}). | |
| 3077 | |
| 3078 @vindex mh-delete-msg-hook | |
| 3079 | |
| 3080 The hook @code{mh-delete-msg-hook} is called after you mark a message | |
| 3081 for deletion. For example, a past maintainer of MH-E used this once | |
| 3082 when he kept statistics on his mail usage. | |
| 3083 | |
| 3084 @node Miscellaneous Commands and Options, , Navigating, Reading Mail | |
| 3085 @section Miscellaneous Commands and Options | |
| 3086 | |
| 3087 This section contains a few more miscellaneous commands and options. | |
| 3088 | |
| 3089 @cindex editing message | |
| 3090 @findex mh-modify | |
| 3091 @kindex M | |
| 3092 | |
| 3093 There are times when you need to edit a message. For example, you may | |
| 3094 need to fix a broken Content-Type header field. You can do this with | |
| 3095 the command @kbd{M} (@code{mh-modify}). It displays the raw message in | |
| 3096 an editable buffer. When you are done editing, save and kill the | |
| 3097 buffer as you would any other. | |
| 3098 | |
| 3099 @findex mh-kill-folder | |
| 3100 @findex mh-pack-folder | |
| 3101 @vindex mh-do-not-confirm-flag | |
| 3102 | |
| 3103 Commands such as @code{mh-pack-folder} prompt to confirm whether to | |
| 3104 process outstanding moves and deletes or not before continuing. | |
| 3105 Turning on the option @code{mh-do-not-confirm-flag} means that these | |
| 3106 actions will be performed---which is usually desired but cannot be | |
| 3107 retracted---without question@footnote{In previous versions of MH-E, | |
| 3108 this option suppressed the confirmation in @code{mh-kill-folder}. | |
| 3109 Since this kept most users from setting this option, | |
| 3110 @code{mh-kill-folder} was modified in version 6.0 to always ask for | |
| 3111 confirmation subject to @code{mh-kill-folder-suppress-prompt-hook}. | |
| 3112 @xref{Folders}.}. | |
| 3113 | |
| 3114 @cindex MH-Folder mode | |
| 3115 @cindex modes, MH-Folder | |
| 3116 @vindex mh-summary-height | |
| 3117 | |
| 3118 The option @code{mh-summary-height} controls the number of scan lines | |
| 3119 displayed in the MH-Folder window, including the mode line. The | |
| 3120 default value of this option is @samp{Automatic} which means that the | |
| 3121 MH-Folder buffer will maintain the same proportional size if the frame | |
| 3122 is resized. If you'd prefer a fixed height, then choose the | |
| 3123 @samp{Fixed Size} option and enter the number of lines you'd like to | |
| 3124 see. | |
| 3125 | |
| 3126 @vindex mh-bury-show-buffer-flag | |
| 3127 | |
| 3128 Normally the buffer for displaying messages is buried at the bottom at | |
| 3129 the buffer stack. You may wish to disable this feature by turning off | |
| 3130 the option @code{mh-bury-show-buffer-flag}. One advantage of not | |
| 3131 burying the show buffer is that one can delete the show buffer more | |
| 3132 easily in an electric buffer list because of its proximity to its | |
| 3133 associated MH-Folder buffer. Try running @kbd{M-x | |
| 3134 electric-buffer-list} to see what I mean. | |
| 3135 | |
| 3136 @cindex @file{.emacs} | |
| 3137 @cindex files, @file{.emacs} | |
| 3138 @cindex reading mail | |
| 3139 | |
| 3140 Before we leave this section, I'll include a function that I use as a | |
| 3141 front end to MH-E@footnote{Stephen Gildea's favorite binding is | |
| 3142 @kbd{(global-set-key "\C-cr" 'mh-rmail)}.}. It toggles between your | |
| 3143 working window configuration, which may be quite involved---windows | |
| 3144 filled with source, compilation output, man pages, and other | |
| 3145 documentation---and your MH-E window configuration. Like the rest of | |
| 3146 the customization described in this section, simply add the following | |
| 3147 code to @file{~/.emacs}. | |
| 3148 | |
| 3149 @iftex | |
| 3150 @filbreak | |
| 3151 @end iftex | |
| 3152 | |
| 3153 @findex mh-rmail, example | |
| 3154 | |
| 3155 @smalllisp | |
| 3156 @group | |
| 3157 (defvar my-mh-screen-saved nil | |
| 3158 "Set to non-@code{nil} when MH-E window configuration shown.") | |
| 3159 (defvar my-normal-screen nil "Normal window configuration.") | |
| 3160 (defvar my-mh-screen nil "MH-E window configuration.") | |
| 3161 | |
| 3162 (defun my-mh-rmail (&optional arg) | |
| 3163 "Toggle between MH-E and normal screen configurations. | |
| 3164 With non-@code{nil} or prefix argument, @i{inc} mailbox as well | |
| 3165 when going into mail." | |
| 3166 (interactive "P") ; @r{user callable function, P=prefix arg} | |
| 3167 (setq my-mh-screen-saved ; @r{save state} | |
| 3168 (cond | |
| 3169 ;; @r{Bring up MH-E screen if arg or normal window configuration.} | |
| 3170 ;; @r{If arg or +inbox buffer doesn't exist, run mh-rmail.} | |
| 3171 ((or arg (null my-mh-screen-saved)) | |
| 3172 (setq my-normal-screen (current-window-configuration)) | |
| 3173 (if (or arg (null (get-buffer "+inbox"))) | |
| 3174 (mh-rmail) | |
| 3175 (set-window-configuration my-mh-screen)) | |
| 3176 t) ; @r{set my-mh-screen-saved to @code{t}} | |
| 3177 ;; @r{Otherwise, save MH-E screen and restore normal screen.} | |
| 3178 (t | |
| 3179 (setq my-mh-screen (current-window-configuration)) | |
| 3180 (set-window-configuration my-normal-screen) | |
| 3181 nil)))) ; @r{set my-mh-screen-saved to nil} | |
| 3182 | |
| 3183 (global-set-key "\C-x\r" 'my-mh-rmail) ;@r{ call with C-x @key{RET}} | |
| 3184 | |
| 3185 @i{Starting MH-E} | |
| 3186 | |
| 3187 @end group | |
| 3188 @end smalllisp | |
| 3189 | |
| 3190 If you type an argument (@kbd{C-u}) or if @code{my-mh-screen-saved} is | |
| 3191 @code{nil} (meaning a non-MH-E window configuration), the current | |
| 3192 window configuration is saved, either the @samp{+inbox} buffer is | |
| 3193 displayed or @code{mh-rmail} is run, and the MH-E window configuration | |
| 3194 is shown. Otherwise, the MH-E window configuration is saved and the | |
| 3195 original configuration is displayed. | |
| 3196 | |
| 3197 @node Folders, Sending Mail, Reading Mail, Top | |
| 3198 @chapter Organizing Your Mail with Folders | |
| 3199 | |
| 3200 @cindex @samp{Folder} menu | |
| 3201 @cindex @samp{Message} menu | |
| 3202 @cindex folders | |
| 3203 @cindex menu, @samp{Folder} | |
| 3204 @cindex menu, @samp{Message} | |
| 3205 @cindex using folders | |
| 3206 | |
| 3207 This chapter discusses the things you can do with folders within MH-E. | |
| 3208 The commands in this chapter are also found in the @samp{Folder} and | |
| 3209 @samp{Message} menus. | |
| 3210 | |
| 3211 @table @kbd | |
| 3212 @kindex ? | |
| 3213 @findex mh-help | |
| 3214 @item ? | |
| 3215 Display cheat sheet for the MH-E commands (@code{mh-help}). | |
| 3216 @c ------------------------- | |
| 3217 @kindex ! | |
| 3218 @findex mh-refile-or-write-again | |
| 3219 @item ! | |
| 3220 Repeat last output command (@code{mh-refile-or-write-again}). | |
| 3221 @c ------------------------- | |
| 3222 @cindex @samp{Message > Copy Message to Folder...} menu item | |
| 3223 @cindex menu item, @samp{Message > Copy Message to Folder...} | |
| 3224 @kindex c | |
| 3225 @findex mh-copy-msg | |
| 3226 @item c | |
| 3227 Copy range to folder (@code{mh-copy-msg}). | |
| 3228 @c ------------------------- | |
| 3229 @kindex F ? | |
| 3230 @findex mh-prefix-help | |
| 3231 @item F ? | |
| 3232 Display cheat sheet for the commands of the current prefix in | |
| 3233 minibuffer (@code{mh-prefix-help}). | |
| 3234 @c ------------------------- | |
| 3235 @kindex F ' | |
| 3236 @findex mh-index-ticked-messages | |
| 3237 @item F ' | |
| 3238 Display ticked messages (@code{mh-index-ticked-messages}). | |
| 3239 @c ------------------------- | |
| 3240 @kindex F c | |
| 3241 @findex mh-catchup | |
| 3242 @item F c | |
| 3243 Delete range from the @samp{unseen} sequence (@code{mh-catchup}). | |
| 3244 @c ------------------------- | |
| 3245 @kindex F k | |
| 3246 @findex mh-kill-folder | |
| 3247 @item F k | |
| 3248 Remove folder (@code{mh-kill-folder}). | |
| 3249 @c ------------------------- | |
| 3250 @cindex @samp{Folder > List Folders} menu item | |
| 3251 @cindex menu item, @samp{Folder > List Folders} | |
| 3252 @kindex F l | |
| 3253 @findex mh-list-folders | |
| 3254 @item F l | |
| 3255 List all folders (@code{mh-list-folders}). | |
| 3256 @c ------------------------- | |
| 3257 @cindex @samp{Folder > View New Messages} menu item | |
| 3258 @cindex menu item, @samp{Folder > View New Messages} | |
| 3259 @kindex F n | |
| 3260 @findex mh-index-new-messages | |
| 3261 @item F n | |
| 3262 Display unseen messages (@code{mh-index-new-messages}). | |
| 3263 @c ------------------------- | |
| 3264 @cindex @samp{Folder > Pack Folder} menu item | |
| 3265 @cindex menu item, @samp{Folder > Pack Folder} | |
| 3266 @kindex F p | |
| 3267 @findex mh-pack-folder | |
| 3268 @item F p | |
| 3269 Pack folder (@code{mh-pack-folder}). | |
| 3270 @c ------------------------- | |
| 3271 @kindex F q | |
| 3272 @findex mh-index-sequenced-messages | |
| 3273 @item F q | |
| 3274 Display messages in any sequence (@code{mh-index-sequenced-messages}). | |
| 3275 @c ------------------------- | |
| 3276 @cindex @samp{Folder > Rescan Folder} menu item | |
| 3277 @cindex menu item, @samp{Folder > Rescan Folder} | |
| 3278 @kindex F r | |
| 3279 @findex mh-rescan-folder | |
| 3280 @item F r | |
| 3281 Rescan folder (@code{mh-rescan-folder}). | |
| 3282 @c ------------------------- | |
| 3283 @cindex @samp{Folder > Search...} menu item | |
| 3284 @cindex menu item, @samp{Folder > Search...} | |
| 3285 @kindex F s | |
| 3286 @findex mh-search | |
| 3287 @item F s | |
| 3288 Search your MH mail (@code{mh-search}). | |
| 3289 @c ------------------------- | |
| 3290 @cindex @samp{Folder > Sort Folder} menu item | |
| 3291 @cindex menu item, @samp{Folder > Sort Folder} | |
| 3292 @kindex F S | |
| 3293 @findex mh-sort-folder | |
| 3294 @item F S | |
| 3295 Sort folder (@code{mh-sort-folder}). | |
| 3296 @c ------------------------- | |
| 3297 @kindex F u | |
| 3298 @findex mh-undo-folder | |
| 3299 @item F u | |
| 3300 Undo all refiles and deletes in the current folder (@code{mh-undo-folder}). | |
| 3301 @c ------------------------- | |
| 3302 @cindex @samp{Folder > Visit a Folder...} menu item | |
| 3303 @cindex menu item, @samp{Folder > Visit a Folder...} | |
| 3304 @kindex F v | |
| 3305 @findex mh-visit-folder | |
| 3306 @item F v | |
| 3307 Visit folder (@code{mh-visit-folder}). | |
| 3308 @c ------------------------- | |
| 3309 @cindex @samp{Message > Refile Message} menu item | |
| 3310 @cindex menu item, @samp{Message > Refile Message} | |
| 3311 @kindex o | |
| 3312 @findex mh-refile-msg | |
| 3313 @item o | |
| 3314 Refile (output) range into folder (@code{mh-refile-msg}). | |
| 3315 @c ------------------------- | |
| 3316 @cindex @samp{Folder > Quit MH-E} menu item | |
| 3317 @cindex menu item, @samp{Folder > Quit MH-E} | |
| 3318 @kindex q | |
| 3319 @findex mh-quit | |
| 3320 @item q | |
| 3321 Quit the current MH-E folder (@code{mh-quit}). | |
| 3322 @c ------------------------- | |
| 3323 @cindex @samp{Folder > Toggle Show/Folder} menu item | |
| 3324 @cindex menu item, @samp{Folder > Toggle Show/Folder} | |
| 3325 @kindex t | |
| 3326 @findex mh-toggle-showing | |
| 3327 @item t | |
| 3328 Toggle between MH-Folder and MH-Folder Show modes | |
| 3329 (@code{mh-toggle-showing}). | |
| 3330 @c ------------------------- | |
| 3331 @cindex @samp{Message > Undo Delete/Refile} menu item | |
| 3332 @cindex menu item, @samp{Message > Undo Delete/Refile} | |
| 3333 @kindex u | |
| 3334 @findex mh-undo | |
| 3335 @item u | |
| 3336 Undo pending deletes or refiles in range (@code{mh-undo}). | |
| 3337 @c ------------------------- | |
| 3338 @cindex @samp{Message > Execute Delete/Refile} menu item | |
| 3339 @cindex menu item, @samp{Message > Execute Delete/Refile} | |
| 3340 @kindex x | |
| 3341 @findex mh-execute-commands | |
| 3342 @item x | |
| 3343 Process outstanding delete and refile requests | |
| 3344 (@code{mh-execute-commands}). | |
| 3345 @end table | |
| 3346 | |
| 3347 @cindex @samp{mh-folder} customization group | |
| 3348 @cindex customization group, @samp{mh-folder} | |
| 3349 | |
| 3350 The @samp{mh-folder} customization group is used to tune these | |
| 3351 commands. | |
| 3352 | |
| 3353 @vtable @code | |
| 3354 @item mh-new-messages-folders | |
| 3355 Folders searched for the @samp{unseen} sequence (default: | |
| 3356 @code{Inbox}). | |
| 3357 @c ------------------------- | |
| 3358 @item mh-ticked-messages-folders | |
| 3359 Folders searched for @code{mh-tick-seq} (default: @code{t}). | |
| 3360 @c ------------------------- | |
| 3361 @item mh-large-folder | |
| 3362 The number of messages that indicates a large folder (default: 200). | |
| 3363 @c ------------------------- | |
| 3364 @item mh-recenter-summary-flag | |
| 3365 On means to recenter the summary window (default: @samp{off}). | |
| 3366 @c ------------------------- | |
| 3367 @item mh-recursive-folders-flag | |
| 3368 On means that commands which operate on folders do so recursively | |
| 3369 (default: @samp{off}). | |
| 3370 @c ------------------------- | |
| 3371 @item mh-sortm-args | |
| 3372 Additional arguments for @command{sortm} (default: @code{nil}). | |
| 3373 @end vtable | |
| 3374 | |
| 3375 The following hooks are available. | |
| 3376 | |
| 3377 @vtable @code | |
| 3378 @item mh-after-commands-processed-hook | |
| 3379 Hook run by @kbd{x} after performing outstanding refile and delete | |
| 3380 requests (default: @code{nil}). | |
| 3381 @c ------------------------- | |
| 3382 @item mh-before-commands-processed-hook | |
| 3383 Hook run by @kbd{x} before performing outstanding refile and delete | |
| 3384 requests (default: @code{nil}). | |
| 3385 @c ------------------------- | |
| 3386 @item mh-before-quit-hook | |
| 3387 Hook run by q before quitting MH-E (default: @code{nil}). | |
| 3388 @c ------------------------- | |
| 3389 @item mh-folder-mode-hook | |
| 3390 Hook run by @code{mh-folder-mode} when visiting a new folder (default: | |
| 3391 @code{nil}). | |
| 3392 @c ------------------------- | |
| 3393 @item mh-kill-folder-suppress-prompt-hook | |
| 3394 Abnormal hook run at the beginning of @code{mh-kill-folder} (default: | |
| 3395 @code{'mh-search-p}). | |
| 3396 @c ------------------------- | |
| 3397 @item mh-quit-hook | |
| 3398 Hook run by q after quitting MH-E (default: @code{nil}). | |
| 3399 @c ------------------------- | |
| 3400 @item mh-refile-msg-hook | |
| 3401 Hook run by o after marking each message for refiling (default: | |
| 3402 @code{nil}). | |
| 3403 @end vtable | |
| 3404 | |
| 3405 The following faces are available for customizing the appearance of | |
| 3406 the MH-Folder buffer. @xref{Scan Line Formats}. | |
| 3407 | |
| 3408 @vtable @code | |
| 3409 @item mh-folder-address | |
| 3410 Recipient face. | |
| 3411 @c ------------------------- | |
| 3412 @item mh-folder-body | |
| 3413 Body text face. | |
| 3414 @c ------------------------- | |
| 3415 @item mh-folder-cur-msg-number | |
| 3416 Current message number face. | |
| 3417 @c ------------------------- | |
| 3418 @item mh-folder-date | |
| 3419 Date face. | |
| 3420 @c ------------------------- | |
| 3421 @item mh-folder-deleted | |
| 3422 Deleted message face. | |
| 3423 @c ------------------------- | |
| 3424 @item mh-folder-followup | |
| 3425 @samp{Re:} face. | |
| 3426 @c ------------------------- | |
| 3427 @item mh-folder-msg-number | |
| 3428 Message number face. | |
| 3429 @c ------------------------- | |
| 3430 @item mh-folder-refiled | |
| 3431 Refiled message face. | |
| 3432 @c ------------------------- | |
| 3433 @vindex mh-scan-format-nmh | |
| 3434 @vindex mh-scan-sent-to-me-sender-regexp | |
| 3435 @item mh-folder-sent-to-me-hint | |
| 3436 Fontification hint face in messages sent directly to us. The detection | |
| 3437 of messages sent to us is governed by the scan format | |
| 3438 @code{mh-scan-format-nmh} and regular expression | |
| 3439 @code{mh-scan-sent-to-me-sender-regexp}. | |
| 3440 @c ------------------------- | |
| 3441 @vindex mh-scan-format-nmh | |
| 3442 @vindex mh-scan-sent-to-me-sender-regexp | |
| 3443 @item mh-folder-scan-format | |
| 3444 Sender face in messages sent directly to us. The detection of messages | |
| 3445 sent to us is governed by the scan format @code{mh-scan-format-nmh} | |
| 3446 and regular expression @code{mh-scan-sent-to-me-sender-regexp}. | |
| 3447 @c ------------------------- | |
| 3448 @item mh-folder-subject | |
| 3449 Subject face. | |
| 3450 @c ------------------------- | |
| 3451 @item mh-folder-tick | |
| 3452 Ticked message face. | |
| 3453 @c ------------------------- | |
| 3454 @item mh-folder-to | |
| 3455 @samp{To:} face. | |
| 3456 @end vtable | |
| 3457 | |
| 3458 @vindex mh-folder-mode-hook | |
| 3459 | |
| 3460 The hook @code{mh-folder-mode-hook} is called when visiting a new | |
| 3461 folder in MH-Folder mode. This could be used to set your own key | |
| 3462 bindings, for example: | |
| 3463 | |
| 3464 @vindex mh-folder-mode-hook, example | |
| 3465 | |
| 3466 @smalllisp | |
| 3467 @group | |
| 3468 (defvar my-mh-init-done nil | |
| 3469 "Non-@code{nil} when one-time MH-E settings made.") | |
| 3470 | |
| 3471 (defun my-mh-folder-mode-hook () | |
| 3472 "Hook to set key bindings in MH-Folder mode." | |
| 3473 (if (not my-mh-init-done) ; @r{only need to bind the keys once } | |
| 3474 (progn | |
| 3475 (local-set-key "//" 'my-search-msg) | |
| 3476 (local-set-key "b" 'mh-burst-digest) ; @r{better use of @kbd{b}} | |
| 3477 (setq my-mh-init-done t)))) | |
| 3478 | |
| 3479 (add-hook 'mh-folder-mode-hook 'my-mh-folder-mode-hook) | |
| 3480 | |
| 3481 (defun my-search-msg () | |
| 3482 "Search for a regexp in the current message." | |
| 3483 (interactive) ; @r{user function} | |
| 3484 (save-window-excursion | |
| 3485 (other-window 1) ; @r{go to next window} | |
| 3486 (isearch-forward-regexp))) ; @r{string search; hit return} | |
| 3487 ; @r{ when done} | |
| 3488 | |
| 3489 @i{Create additional key bindings via mh-folder-mode-hook} | |
| 3490 | |
| 3491 @end group | |
| 3492 @end smalllisp | |
| 3493 | |
| 3494 @cindex @command{folder} | |
| 3495 @cindex @command{refile} | |
| 3496 @cindex MH commands, @command{folder} | |
| 3497 @cindex MH commands, @command{refile} | |
| 3498 @findex mh-refile-msg | |
| 3499 @kindex o | |
| 3500 @vindex mh-refile-msg-hook | |
| 3501 | |
| 3502 MH-E has analogies for each of the MH @command{folder} and | |
| 3503 @command{refile} commands@footnote{See the sections | |
| 3504 @uref{@value{MH-BOOK-HOME}/fol.html#Youfol, Your Current Folder: | |
| 3505 folder} and @uref{@value{MH-BOOK-HOME}/fol.html#Movref, Moving and | |
| 3506 Linking Messages: refile} in the MH book.}. To refile a message in | |
| 3507 another folder, use the command @kbd{o} (@code{mh-refile-msg}) | |
| 3508 (mnemonic: ``output''). You are prompted for the folder name | |
| 3509 (@pxref{Folder Selection}). Note that this command can also be used to | |
| 3510 create folders. If you specify a folder that does not exist, you will | |
| 3511 be prompted to create it. The hook @code{mh-refile-msg-hook} is called | |
| 3512 after a message is marked to be refiled. | |
| 3513 | |
| 3514 @findex mh-write-msg-to-file | |
| 3515 @kindex ! | |
| 3516 | |
| 3517 If you are refiling several messages into the same folder, you can use | |
| 3518 the command @kbd{!} (@code{mh-refile-or-write-again}) to repeat the | |
| 3519 last refile or write (for the description of @kbd{>} | |
| 3520 (@code{mh-write-msg-to-file}), @pxref{Files and Pipes}). You can use a | |
| 3521 range in either case (for example, @kbd{C-u o 1 3 5-7 last:5 frombob | |
| 3522 @key{RET}}, @pxref{Ranges}). | |
| 3523 | |
| 3524 @cindex expunging refiles and deletes | |
| 3525 @cindex undoing refiles and deletes | |
| 3526 @findex mh-undo | |
| 3527 @kindex u | |
| 3528 | |
| 3529 If you've deleted a message or refiled it, but changed your mind, you | |
| 3530 can cancel the action before you've executed it. Use @kbd{u} | |
| 3531 (@code{mh-undo}) to undo a refile on or deletion of a single message. | |
| 3532 You can also undo refiles and deletes for messages that are found in a | |
| 3533 given range (@pxref{Ranges}). | |
| 3534 | |
| 3535 @findex mh-undo-folder | |
| 3536 @kindex F u | |
| 3537 | |
| 3538 Alternatively, you can use @kbd{F u} (@code{mh-undo-folder}) to undo | |
| 3539 all refiles and deletes in the current folder. | |
| 3540 | |
| 3541 @findex mh-execute-commands | |
| 3542 @kindex x | |
| 3543 | |
| 3544 If you've marked messages to be deleted or refiled and you want to go | |
| 3545 ahead and delete or refile the messages, use @kbd{x} | |
| 3546 (@code{mh-execute-commands}). Many MH-E commands that may affect the | |
| 3547 numbering of the messages (such as @kbd{F r} or @kbd{F p}) will ask if | |
| 3548 you want to process refiles or deletes first and then either run | |
| 3549 @kbd{x} for you or undo the pending refiles and deletes. | |
| 3550 | |
| 3551 @kindex x | |
| 3552 @vindex mh-after-commands-processed-hook | |
| 3553 @vindex mh-before-commands-processed-hook | |
| 3554 | |
| 3555 The command @kbd{x} runs @code{mh-before-commands-processed-hook} | |
| 3556 before the commands are processed and | |
| 3557 @code{mh-after-commands-processed-hook} after the commands are | |
| 3558 processed. Variables that are useful with the former hook include | |
| 3559 @code{mh-delete-list} and @code{mh-refile-list} which can be used to | |
| 3560 see which changes will be made to the current folder, | |
| 3561 @code{mh-current-folder}. Variables that are useful with the latter | |
| 3562 hook include @code{mh-folders-changed}, which lists which folders were | |
| 3563 affected by deletes and refiles. This list will always include the | |
| 3564 current folder @code{mh-current-folder}. | |
| 3565 | |
| 3566 @findex mh-copy-msg | |
| 3567 @kindex c | |
| 3568 @kindex o | |
| 3569 | |
| 3570 If you wish to copy a message to another folder, you can use the | |
| 3571 command @kbd{c} (@code{mh-copy-msg}) (see the @option{-link} argument | |
| 3572 to @command{refile}(1)). Like the command @kbd{o}, this command | |
| 3573 prompts you for the name of the target folder and you can specify a | |
| 3574 range (@pxref{Ranges}). Note that unlike the command @kbd{o}, the copy | |
| 3575 takes place immediately. The original copy remains in the current | |
| 3576 folder. | |
| 3577 | |
| 3578 @cindex junk mail | |
| 3579 @cindex MH-Folder mode | |
| 3580 @cindex MH-Folder Show mode | |
| 3581 @cindex modes, MH-Folder | |
| 3582 @cindex modes, MH-Folder Show | |
| 3583 @cindex spam | |
| 3584 @findex mh-toggle-showing | |
| 3585 @kindex t | |
| 3586 | |
| 3587 The command @kbd{t} (@code{mh-toggle-showing}) switches between | |
| 3588 MH-Folder mode and MH-Folder Show mode@footnote{For you Emacs wizards, | |
| 3589 this is implemented as an Emacs minor mode.}. MH-Folder mode turns off | |
| 3590 the associated show buffer so that you can perform operations on the | |
| 3591 messages quickly without reading them. This is an excellent way to | |
| 3592 prune out your junk mail or to refile a group of messages to another | |
| 3593 folder for later examination. | |
| 3594 | |
| 3595 @cindex MH-Folder mode | |
| 3596 @cindex MH-Show mode | |
| 3597 @cindex modes, MH-Folder | |
| 3598 @cindex modes, MH-Show | |
| 3599 @cindex moving between messages | |
| 3600 @kindex t | |
| 3601 @vindex mh-recenter-summary-flag | |
| 3602 | |
| 3603 When you use @kbd{t} to toggle from MH-Folder Show mode to MH-Folder | |
| 3604 mode, the MH-Show buffer is hidden and the MH-Folder buffer is left | |
| 3605 alone. Setting @code{mh-recenter-summary-flag} to a non-@code{nil} | |
| 3606 value causes the toggle to display as many scan lines as possible, | |
| 3607 with the cursor at the middle. The effect of | |
| 3608 @code{mh-recenter-summary-flag} is rather useful, but it can be | |
| 3609 annoying on a slow network connection. | |
| 3610 | |
| 3611 @findex mh-visit-folder | |
| 3612 @kindex F v | |
| 3613 @vindex mh-large-folder | |
| 3614 | |
| 3615 When you want to read the messages that you have refiled into folders, | |
| 3616 use the command @kbd{F v} (@code{mh-visit-folder}) to visit the | |
| 3617 folder. You are prompted for the folder name. The folder buffer will | |
| 3618 show just unseen messages if there are any; otherwise, it will show | |
| 3619 all the messages in the buffer as long there are fewer than | |
| 3620 @code{mh-large-folder} messages. If there are more, then you are | |
| 3621 prompted for a range of messages to scan. You can provide a prefix | |
| 3622 argument in order to specify a range of messages to show when you | |
| 3623 visit the folder (@pxref{Ranges}). In this case, regions are not used | |
| 3624 to specify the range and @code{mh-large-folder} is ignored. Note that | |
| 3625 this command can also be used to create folders. If you specify a | |
| 3626 folder that does not exist, you will be prompted to create it. | |
| 3627 | |
| 3628 @findex mh-search | |
| 3629 @kindex F s | |
| 3630 | |
| 3631 If you forget where you've refiled your messages, you can find them | |
| 3632 using @kbd{F s} (@code{mh-search}). @xref{Searching}. | |
| 3633 | |
| 3634 @cindex @command{procmail} | |
| 3635 @cindex @samp{unseen} sequence | |
| 3636 @cindex sequence, @samp{unseen} | |
| 3637 @cindex Unix commands, @command{procmail} | |
| 3638 @cindex unseen messages, viewing | |
| 3639 @findex mh-index-new-messages | |
| 3640 @kindex F n | |
| 3641 @vindex mh-new-messages-folders | |
| 3642 | |
| 3643 If you use a program such as @command{procmail} to file your incoming | |
| 3644 mail automatically, you can display new, unseen, messages using the | |
| 3645 command @kbd{F n} (@code{mh-index-new-messages}). All messages in the | |
| 3646 @samp{unseen} sequence from the folders in | |
| 3647 @code{mh-new-messages-folders} are listed. However, this list of | |
| 3648 folders can be overridden with a prefix argument: with a prefix | |
| 3649 argument, enter a space-separated list of folders, or nothing to | |
| 3650 search all folders. | |
| 3651 | |
| 3652 @cindex @samp{tick} sequence | |
| 3653 @cindex sequence, @samp{tick} | |
| 3654 @cindex ticked messages, viewing | |
| 3655 @findex mh-index-ticked-messages | |
| 3656 @kindex F ' | |
| 3657 @vindex mh-ticked-messages-folders | |
| 3658 | |
| 3659 If you have ticked messages (@pxref{Sequences}), you can display them | |
| 3660 using the command @kbd{F '} (@code{mh-index-ticked-messages}). All | |
| 3661 messages in the @samp{tick} sequence from the folders in | |
| 3662 @code{mh-ticked-messages-folders} are listed. With a prefix argument, | |
| 3663 enter a space-separated list of folders, or nothing to search all | |
| 3664 folders. | |
| 3665 | |
| 3666 @findex mh-index-sequenced-messages | |
| 3667 @kindex F q | |
| 3668 @vindex mh-new-messages-folders | |
| 3669 | |
| 3670 You can display messages in any sequence with the command @kbd{F q} | |
| 3671 (@code{mh-index-sequenced-messages}). All messages from the folders in | |
| 3672 @code{mh-new-messages-folders} in the sequence you provide are listed. | |
| 3673 With a prefix argument, enter a space-separated list of folders at the | |
| 3674 prompt, or nothing to search all folders. | |
| 3675 | |
| 3676 @vindex mh-new-messages-folders | |
| 3677 @vindex mh-recursive-folders-flag | |
| 3678 @vindex mh-ticked-messages-folders | |
| 3679 | |
| 3680 Set the options @code{mh-new-messages-folders} and | |
| 3681 @code{mh-ticked-messages-folders} to @samp{Inbox} to search the | |
| 3682 @samp{+inbox} folder or @samp{All} to search all of the top level | |
| 3683 folders. Otherwise, list the folders that should be searched with the | |
| 3684 @samp{Choose Folders} menu item. See @code{mh-recursive-folders-flag}. | |
| 3685 | |
| 3686 @cindex buffers, @samp{*MH-E Folders*} | |
| 3687 @cindex @samp{*MH-E Folders*} | |
| 3688 @findex mh-kill-folder | |
| 3689 @findex mh-list-folders | |
| 3690 @findex mh-pack-folder | |
| 3691 @findex mh-rescan-folder | |
| 3692 @findex mh-sort-folder | |
| 3693 @kindex F k | |
| 3694 @kindex F l | |
| 3695 @kindex F p | |
| 3696 @kindex F r | |
| 3697 @kindex F S | |
| 3698 | |
| 3699 Other commands you can perform on folders include: @kbd{F l} | |
| 3700 (@code{mh-list-folders}), to place a listing of all the folders in | |
| 3701 your mail directory in a buffer called @samp{*MH-E Folders*} | |
| 3702 (@pxref{Miscellaneous}); @kbd{F k} (@code{mh-kill-folder}), to remove | |
| 3703 a folder; @kbd{F S} (@code{mh-sort-folder}), to sort the messages by | |
| 3704 date (see @command{sortm}(1) to see how to sort by other criteria); | |
| 3705 @kbd{F p} (@code{mh-pack-folder}), to pack a folder, removing gaps | |
| 3706 from the numbering sequence; and @kbd{F r} (@code{mh-rescan-folder}), | |
| 3707 to rescan the folder, which is useful to grab all messages in your | |
| 3708 @samp{+inbox} after processing your new mail for the first time. If | |
| 3709 you don't want to rescan the entire folder, the commands @kbd{F r} or | |
| 3710 @kbd{F p} will accept a range (@pxref{Ranges}). | |
| 3711 | |
| 3712 @kindex @key{TAB} | |
| 3713 @vindex mh-recursive-folders-flag | |
| 3714 | |
| 3715 By default, operations on folders work only one level at a time. Set | |
| 3716 @code{mh-recursive-folders-flag} to non-@code{nil} to operate on all | |
| 3717 folders. This mostly means that you'll be able to see all your folders | |
| 3718 when you press @key{TAB} when prompted for a folder name. | |
| 3719 | |
| 3720 @findex mh-search-p | |
| 3721 @kindex k | |
| 3722 @vindex mh-kill-folder-suppress-prompt-hooks | |
| 3723 | |
| 3724 The hook @code{mh-kill-folder-suppress-prompt-hooks} is an abnormal | |
| 3725 hook run at the beginning of the command @kbd{k}. The hook functions | |
| 3726 are called with no arguments and should return a non-nil value to | |
| 3727 suppress the normal prompt when you remove a folder. This is useful | |
| 3728 for folders that are easily regenerated. The default value of | |
| 3729 @code{mh-search-p} suppresses the prompt on folders generated by | |
| 3730 searching. | |
| 3731 | |
| 3732 @sp 1 | |
| 3733 @center @strong{NOTE} | |
| 3734 | |
| 3735 @quotation | |
| 3736 Use this hook with care. If there is a bug in your hook which returns | |
| 3737 @code{t} on @samp{+inbox} and you press @kbd{k} by accident in the | |
| 3738 @code{+inbox} folder, you will not be happy. | |
| 3739 @end quotation | |
| 3740 @sp 1 | |
| 3741 | |
| 3742 @cindex @command{sortm} | |
| 3743 @cindex @file{.mh_profile} | |
| 3744 @cindex files, @file{.mh_profile} | |
| 3745 @cindex MH commands, @command{sortm} | |
| 3746 @cindex MH profile component, @samp{sortm:} | |
| 3747 @cindex @samp{sortm:} MH profile component | |
| 3748 @kindex F S | |
| 3749 @vindex mh-sortm-args | |
| 3750 | |
| 3751 The option @code{mh-sortm-args} holds extra arguments to pass on to | |
| 3752 the command @command{sortm}@footnote{See the section | |
| 3753 @uref{@value{MH-BOOK-HOME}/sorsor.html, Sorting Messages: sortm} in the | |
| 3754 MH book.} when a prefix argument is used with @kbd{F S}. Normally | |
| 3755 default arguments to @command{sortm} are specified in the MH profile. | |
| 3756 This option may be used to provide an alternate view. For example, | |
| 3757 @samp{'(\"-nolimit\" \"-textfield\" \"subject\")} is a useful setting. | |
| 3758 | |
| 3759 @cindex exiting | |
| 3760 @cindex quitting | |
| 3761 @findex mh-quit | |
| 3762 @kindex q | |
| 3763 | |
| 3764 When you want to quit using MH-E and go back to editing, you can use | |
| 3765 the @kbd{q} (@code{mh-quit}) command. This buries the buffers of the | |
| 3766 current MH-E folder and restores the buffers that were present when | |
| 3767 you first ran @kbd{M-x mh-rmail}. It also removes any MH-E working | |
| 3768 buffers whose name begins with @samp{ *mh-} or @samp{*MH-E } | |
| 3769 (@pxref{Miscellaneous}). You can later restore your MH-E session by | |
| 3770 selecting the @samp{+inbox} buffer or by running @kbd{M-x mh-rmail} | |
| 3771 again. | |
| 3772 | |
| 3773 @findex mh-execute-commands | |
| 3774 @kindex q | |
| 3775 @vindex mh-before-quit-hook | |
| 3776 @vindex mh-before-quit-hook, example | |
| 3777 @vindex mh-quit-hook | |
| 3778 @vindex mh-quit-hook, example | |
| 3779 | |
| 3780 The two hooks @code{mh-before-quit-hook} and @code{mh-quit-hook} are | |
| 3781 called by @kbd{q}. The former one is called before the quit occurs, so | |
| 3782 you might use it to perform any MH-E operations; you could perform | |
| 3783 some query and abort the quit or call @code{mh-execute-commands}, for | |
| 3784 example. The latter is not run in an MH-E context, so you might use it | |
| 3785 to modify the window setup. If you find that @kbd{q} buries a lot of | |
| 3786 buffers that you would rather remove, you can use both | |
| 3787 @code{mh-before-quit-hook} and @code{mh-quit-hook} to accomplish that. | |
| 3788 | |
| 3789 @smalllisp | |
| 3790 @group | |
| 3791 (defvar my-mh-folder-buffer-to-delete nil | |
| 3792 "Folder buffer that is being quit.") | |
| 3793 | |
| 3794 (defun my-mh-before-quit-hook () | |
| 3795 "Save folder buffer that is to be deleted." | |
| 3796 (setq my-mh-folder-buffer-to-delete (current-buffer))) | |
| 3797 | |
| 3798 (defun my-mh-quit-hook () | |
| 3799 "Kill folder buffer rather than just bury it." | |
| 3800 (set-buffer my-mh-folder-buffer-to-delete) | |
| 3801 (if (get-buffer mh-show-buffer) | |
| 3802 (kill-buffer mh-show-buffer)) | |
| 3803 (kill-buffer (current-buffer))) | |
| 3804 | |
| 3805 @i{Kill MH-Folder buffer instead of burying it} | |
| 3806 @end group | |
| 3807 @end smalllisp | |
| 3808 | |
| 3809 @cindex folders, renaming | |
| 3810 @cindex renaming folders | |
| 3811 @findex dired | |
| 3812 @findex dired-do-rename | |
| 3813 | |
| 3814 You can use dired to manipulate the folders themselves. For example, I | |
| 3815 renamed my @samp{+out} folder to the more common @samp{+outbox} by | |
| 3816 running dired on my mail directory (@kbd{M-x dired RET ~/Mail RET}), | |
| 3817 moving my cursor to @samp{out} and using the command @kbd{R} | |
| 3818 (@code{dired-do-rename}). | |
| 3819 | |
| 3820 @node Sending Mail, Editing Drafts, Folders, Top | |
| 3821 @chapter Sending Mail | |
| 3822 | |
| 3823 @cindex sending mail | |
| 3824 @findex mh-smail | |
| 3825 @kindex M-x mh-smail | |
| 3826 | |
| 3827 You can send a mail message in several ways. You can call @kbd{M-x | |
| 3828 mh-smail} directly, or from the command line like this: | |
| 3829 | |
| 3830 @cindex starting from command line | |
| 3831 | |
| 3832 @smallexample | |
| 3833 $ @kbd{emacs -f mh-smail} | |
| 3834 @end smallexample | |
| 3835 | |
| 3836 @findex goto-address-at-point | |
| 3837 @vindex mail-user-agent | |
| 3838 | |
| 3839 There are some commands that need to send a mail message, such as | |
| 3840 @code{goto-address-at-point}. You can configure Emacs to have these | |
| 3841 commands use MH-E by setting the option @code{mail-user-agent} to | |
| 3842 @samp{Emacs interface to MH}. | |
| 3843 | |
| 3844 @cindex @samp{Message} menu | |
| 3845 @cindex menu, @samp{Message} | |
| 3846 | |
| 3847 From within MH-E's MH-Folder mode, other methods of sending mail are | |
| 3848 available as well. These can also be found in the @samp{Message} menu. | |
| 3849 | |
| 3850 @table @kbd | |
| 3851 @cindex @samp{Message > Edit Message Again} menu item | |
| 3852 @cindex menu item, @samp{Message > Edit Message Again} | |
| 3853 @kindex e | |
| 3854 @findex mh-edit-again | |
| 3855 @item e | |
| 3856 Edit a message to send it again (@code{mh-edit-again}). | |
| 3857 @c ------------------------- | |
| 3858 @cindex @samp{Message > Re-edit a Bounced Message} menu item | |
| 3859 @cindex menu item, @samp{Message > Re-edit a Bounced Message} | |
| 3860 @kindex E | |
| 3861 @findex mh-extract-rejected-mail | |
| 3862 @item E | |
| 3863 Edit a message that was returned by the mail system | |
| 3864 (@code{mh-extract-rejected-mail}). | |
| 3865 @c ------------------------- | |
| 3866 @cindex @samp{Message > Forward Message...} menu item | |
| 3867 @cindex menu item, @samp{Message > Forward Message...} | |
| 3868 @kindex f | |
| 3869 @findex mh-forward | |
| 3870 @item f | |
| 3871 Forward message (@code{mh-forward}). | |
| 3872 @c ------------------------- | |
| 3873 @cindex @samp{Message > Reply to Message...} menu item | |
| 3874 @cindex menu item, @samp{Message > Reply to Message...} | |
| 3875 @kindex r | |
| 3876 @findex mh-reply | |
| 3877 @item r | |
| 3878 Reply to a message (@code{mh-reply}). | |
| 3879 @c ------------------------- | |
| 3880 @cindex @samp{Message > Compose a New Message} menu item | |
| 3881 @cindex menu item, @samp{Message > Compose a New Message} | |
| 3882 @kindex s | |
| 3883 @findex mh-send | |
| 3884 @item s | |
| 3885 Compose a message (@code{mh-send}). | |
| 3886 @c ------------------------- | |
| 3887 @cindex @samp{Message > Redistribute Message...} menu item | |
| 3888 @cindex menu item, @samp{Message > Redistribute Message...} | |
| 3889 @kindex M-d | |
| 3890 @findex mh-redistribute | |
| 3891 @item M-d | |
| 3892 Redistribute a message (@code{mh-redistribute}). | |
| 3893 @c ------------------------- | |
| 3894 @findex mh-smail | |
| 3895 @item M-x mh-smail | |
| 3896 Compose a message with the MH mail system. | |
| 3897 @c ------------------------- | |
| 3898 @findex mh-smail-other-window | |
| 3899 @item M-x mh-smail-other-window | |
| 3900 Compose a message with the MH mail system in other window. | |
| 3901 @end table | |
| 3902 | |
| 3903 @cindex @samp{mh-sending-mail} customization group | |
| 3904 @cindex customization group, @samp{mh-sending-mail} | |
| 3905 | |
| 3906 In addition, several options from the @samp{mh-sending-mail} | |
| 3907 customization group are useful when sending mail or replying to mail. | |
| 3908 They are summarized in the following table. | |
| 3909 | |
| 3910 @vtable @code | |
| 3911 @item mh-compose-forward-as-mime-flag | |
| 3912 On means that messages are forwarded as attachments (default: | |
| 3913 @samp{on}). | |
| 3914 @c ------------------------- | |
| 3915 @item mh-compose-letter-function | |
| 3916 Hook run when starting a new draft (default: @code{nil}). | |
| 3917 @c ------------------------- | |
| 3918 @item mh-compose-prompt-flag | |
| 3919 On means prompt for header fields when composing a new draft (default: | |
| 3920 @samp{off}). | |
| 3921 @c ------------------------- | |
| 3922 @item mh-forward-subject-format | |
| 3923 Format string for forwarded message subject (default: @code{"%s: | |
| 3924 %s"}). | |
| 3925 @c ------------------------- | |
| 3926 @item mh-insert-x-mailer-flag | |
| 3927 On means append an @samp{X-Mailer:} header field to the header | |
| 3928 (default: @samp{on}). | |
| 3929 @c ------------------------- | |
| 3930 @item mh-redist-full-contents-flag | |
| 3931 On means the @command{dist} command needs entire letter for | |
| 3932 redistribution (default: @samp{off}). | |
| 3933 @c ------------------------- | |
| 3934 @item mh-reply-default-reply-to | |
| 3935 Sets the person or persons to whom a reply will be sent (default: | |
| 3936 @samp{Prompt}). | |
| 3937 @c ------------------------- | |
| 3938 @item mh-reply-show-message-flag | |
| 3939 On means the MH-Show buffer is displayed using @kbd{r} | |
| 3940 (@code{mh-reply}) (default: @samp{on}). | |
| 3941 @end vtable | |
| 3942 | |
| 3943 The following hooks are available. | |
| 3944 | |
| 3945 @vtable @code | |
| 3946 @item mh-forward-hook | |
| 3947 Hook run by @code{mh-forward} on a forwarded letter (default: | |
| 3948 @code{nil}). | |
| 3949 @c ------------------------- | |
| 3950 @item mh-letter-mode-hook | |
| 3951 Hook run by @code{mh-letter-mode} on a new letter (default: | |
| 3952 @code{nil}). | |
| 3953 @end vtable | |
| 3954 | |
| 3955 The functions and options introduced here are explained in more detail | |
| 3956 in the following sections. | |
| 3957 | |
| 3958 @menu | |
| 3959 * Composing:: | |
| 3960 * Replying:: | |
| 3961 * Forwarding:: | |
| 3962 * Redistributing:: | |
| 3963 * Editing Again:: | |
| 3964 @end menu | |
| 3965 | |
| 3966 @node Composing, Replying, Sending Mail, Sending Mail | |
| 3967 @section Composing | |
| 3968 | |
| 3969 @cindex @file{.emacs} | |
| 3970 @cindex MH-Folder mode | |
| 3971 @cindex composing mail | |
| 3972 @cindex draft | |
| 3973 @cindex files, @file{.emacs} | |
| 3974 @cindex modes, MH-Folder | |
| 3975 @cindex sending mail | |
| 3976 @findex mh-smail | |
| 3977 @findex mh-smail-other-window | |
| 3978 @kindex M-x mh-smail | |
| 3979 @kindex M-x mh-smail-other-window | |
| 3980 | |
| 3981 Outside of an MH-Folder buffer, you must call either @kbd{M-x | |
| 3982 mh-smail} or @kbd{M-x mh-smail-other-window} to compose a new message. | |
| 3983 The former command always creates a two-window layout with the current | |
| 3984 buffer on top and the draft on the bottom. Use the latter command if | |
| 3985 you would rather preserve the window layout. You may find adding the | |
| 3986 following key bindings to @file{~/.emacs} useful: | |
| 3987 | |
| 3988 @smalllisp | |
| 3989 (global-set-key "\C-xm" 'mh-smail) | |
| 3990 (global-set-key "\C-x4m" 'mh-smail-other-window) | |
| 3991 @end smalllisp | |
| 3992 | |
| 3993 @cindex draft folder | |
| 3994 @cindex MH-Letter mode | |
| 3995 @cindex modes, MH-Letter | |
| 3996 @findex mh-send | |
| 3997 @kindex m | |
| 3998 | |
| 3999 From within a MH-Folder buffer, you can simply use the command @kbd{m} | |
| 4000 (@code{mh-send}). However you invoke @code{mh-send}, your letter | |
| 4001 appears in an Emacs buffer whose mode is MH-Letter (to see what the | |
| 4002 buffer looks like, @pxref{Sending Mail Tour}). MH-Letter mode allows | |
| 4003 you to edit your message, to check the validity of the recipients, to | |
| 4004 insert attachments and other messages into your message, and to send | |
| 4005 the message. We'll go more into depth about editing a | |
| 4006 @dfn{draft}@footnote{I highly recommend that you use a @dfn{draft | |
| 4007 folder} so that you can edit several drafts in parallel. To do so, | |
| 4008 create a folder named @samp{+drafts} for example, and add the profile | |
| 4009 component @samp{Draft-Folder: drafts} (see @code{mh-profile}(5)).} (a | |
| 4010 message you're composing) in just a moment (@pxref{Editing Drafts}). | |
| 4011 | |
| 4012 @vindex mh-compose-prompt-flag | |
| 4013 | |
| 4014 If you prefer to be prompted for the recipient and subject fields | |
| 4015 before the MH-Letter buffer appears, turn on the option | |
| 4016 @code{mh-compose-prompt-flag}. | |
| 4017 | |
| 4018 @cindex header field, @samp{X-Mailer:} | |
| 4019 @cindex @samp{X-Mailer:} header field | |
| 4020 @vindex mh-insert-x-mailer-flag | |
| 4021 | |
| 4022 MH-E adds an @samp{X-Mailer:} header field to the header that includes | |
| 4023 the version of MH-E and Emacs that you are using. If you don't want to | |
| 4024 participate in our marketing, you can turn off the option | |
| 4025 @code{mh-insert-x-mailer-flag}. | |
| 4026 | |
| 4027 @cindex @command{repl} | |
| 4028 @cindex @file{components} | |
| 4029 @cindex MH commands, @command{repl} | |
| 4030 @cindex MH-Letter mode | |
| 4031 @cindex Mail mode | |
| 4032 @cindex files, @file{components} | |
| 4033 @cindex modes, MH-Letter | |
| 4034 @cindex modes, Mail | |
| 4035 @vindex mail-mode-hook | |
| 4036 @vindex mh-letter-mode-hook | |
| 4037 @vindex text-mode-hook | |
| 4038 | |
| 4039 Two hooks are provided to run commands on your freshly created draft. | |
| 4040 The first hook, @code{mh-letter-mode-hook}, allows you to do some | |
| 4041 processing before editing a letter@footnote{Actually, because | |
| 4042 MH-Letter mode inherits from Mail mode, the hooks | |
| 4043 @code{text-mode-hook} and @code{mail-mode-hook} are run (in that | |
| 4044 order) before @code{mh-letter-mode-hook}.}. For example, you may wish | |
| 4045 to modify the header after @command{repl} has done its work, or you | |
| 4046 may have a complicated @file{components} file and need to tell MH-E | |
| 4047 where the cursor should go. Here's an example of how you would use | |
| 4048 this hook. | |
| 4049 | |
| 4050 @findex mh-insert-signature, example | |
| 4051 | |
| 4052 @smalllisp | |
| 4053 @group | |
| 4054 (defvar letter-mode-init-done-flag nil | |
| 4055 "Non-nil means one-time MH-E settings have been made.") | |
| 4056 | |
| 4057 (defun my-mh-letter-mode-hook () | |
| 4058 "Prepare letter for editing." | |
| 4059 (when (not letter-mode-init-done) ; @r{only need to bind the keys once} | |
| 4060 (local-set-key "\C-ctb" 'add-enriched-text) | |
| 4061 (local-set-key "\C-cti" 'add-enriched-text) | |
| 4062 (local-set-key "\C-ctf" 'add-enriched-text) | |
| 4063 (local-set-key "\C-cts" 'add-enriched-text) | |
| 4064 (local-set-key "\C-ctB" 'add-enriched-text) | |
| 4065 (local-set-key "\C-ctu" 'add-enriched-text) | |
| 4066 (local-set-key "\C-ctc" 'add-enriched-text) | |
| 4067 (setq letter-mode-init-done t)) | |
| 4068 (save-excursion | |
| 4069 (goto-char (point-max)) ; @r{go to end of message to} | |
| 4070 (mh-insert-signature))) ; @r{insert signature} | |
| 4071 | |
| 4072 @i{Prepare draft for editing via mh-letter-mode-hook} | |
| 4073 | |
| 4074 @end group | |
| 4075 @end smalllisp | |
| 4076 | |
| 4077 The function, @code{add-enriched-text} is defined in the example in | |
| 4078 @ref{Adding Attachments}. | |
| 4079 | |
| 4080 @vindex mh-compose-letter-function | |
| 4081 @vindex mh-letter-mode-hook | |
| 4082 | |
| 4083 The second hook, a function really, is | |
| 4084 @code{mh-compose-letter-function}. Like @code{mh-letter-mode-hook}, it | |
| 4085 is called just before editing a new message; however, it is the last | |
| 4086 function called before you edit your message. The consequence of this | |
| 4087 is that you can write a function to write and send the message for | |
| 4088 you. This function is passed three arguments: the contents of the | |
| 4089 @samp{To:}, @samp{Subject:}, and @samp{Cc:} header fields. | |
| 4090 | |
| 4091 @node Replying, Forwarding, Composing, Sending Mail | |
| 4092 @section Replying to Mail | |
| 4093 | |
| 4094 @cindex @command{mhl} | |
| 4095 @cindex @file{mhl.reply} | |
| 4096 @cindex MH commands, @command{mhl} | |
| 4097 @cindex files, @file{mhl.reply} | |
| 4098 @cindex replying | |
| 4099 @findex mh-reply | |
| 4100 @kindex r | |
| 4101 | |
| 4102 To compose a reply to a message, use the @kbd{r} (@code{mh-reply}) | |
| 4103 command. | |
| 4104 | |
| 4105 When you reply to a message, you are first prompted with @samp{Reply | |
| 4106 to whom?}. You have several choices here. | |
| 4107 | |
| 4108 @quotation | |
| 4109 @multitable @columnfractions .20 .80 | |
| 4110 @c @headitem Response @tab Reply Goes To | |
| 4111 @c XXX @headitem not yet supported by SourceForge's texi2pdf. | |
| 4112 @item @b{Response} @tab @b{Reply Goes To} | |
| 4113 @c ------------------------- | |
| 4114 @item @kbd{from} | |
| 4115 @tab | |
| 4116 The person who sent the message. This is the default, so @key{RET} is | |
| 4117 sufficient. | |
| 4118 @c ------------------------- | |
| 4119 @item @kbd{to} | |
| 4120 @tab | |
| 4121 Replies to the sender, plus all recipients in the @samp{To:} header field. | |
| 4122 @c ------------------------- | |
| 4123 @item @kbd{cc}@*@kbd{all} | |
| 4124 @tab | |
| 4125 Forms a reply to the addresses in the @samp{Mail-Followup-To:} header | |
| 4126 field if one exists; otherwise forms a reply to the sender, plus all | |
| 4127 recipients. | |
| 4128 @end multitable | |
| 4129 @end quotation | |
| 4130 | |
| 4131 @cindex @command{repl} | |
| 4132 @cindex MH commands, @command{repl} | |
| 4133 @vindex mh-reply-default-reply-to | |
| 4134 | |
| 4135 Depending on your answer, @command{repl}@footnote{See the section | |
| 4136 @uref{@value{MH-BOOK-HOME}/reprep.html, Replying to Messages: repl} in | |
| 4137 the MH book.} is given a different argument to form your reply. | |
| 4138 Specifically, a choice of @kbd{from} or none at all runs @samp{repl | |
| 4139 -nocc all}, and a choice of @kbd{to} runs @samp{repl -cc to}. Finally, | |
| 4140 either @kbd{cc} or @kbd{all} runs @samp{repl -cc all -nocc me}. If you | |
| 4141 find that most of the time you specify one of these choices when you | |
| 4142 reply to a message, you can change the option | |
| 4143 @code{mh-reply-default-reply-to} from its default value of | |
| 4144 @samp{Prompt} to one of the choices listed above. You can always edit | |
| 4145 the recipients in the draft. | |
| 4146 | |
| 4147 @cindex @samp{repl:} MH profile component | |
| 4148 @cindex MH profile component, @samp{repl:} | |
| 4149 @cindex MH-Letter mode | |
| 4150 @cindex MH-Show mode | |
| 4151 @cindex draft | |
| 4152 @cindex modes, MH-Letter | |
| 4153 @cindex modes, MH-Show | |
| 4154 | |
| 4155 Two windows are then created. One window contains the message to which | |
| 4156 you are replying in an MH-Show buffer. Your draft, in MH-Letter mode | |
| 4157 (@pxref{Editing Drafts}), is in the other window. If the reply draft | |
| 4158 was not one that you expected, check the things that affect the | |
| 4159 behavior of @command{repl} which include the @samp{repl:} profile | |
| 4160 component and the @file{replcomps} and @file{replgroupcomps} files. | |
| 4161 | |
| 4162 If you supply a prefix argument (as in @kbd{C-u r}), the message you | |
| 4163 are replying to is inserted in your reply after having first been run | |
| 4164 through @command{mhl} with the format file @file{mhl.reply}. See | |
| 4165 @command{mhl}(1) or the section | |
| 4166 @uref{@value{MH-BOOK-HOME}/shomes.html#Usisho, Using mhl} in the MH | |
| 4167 book to see how you can modify the default @file{mhl.reply} file. | |
| 4168 | |
| 4169 @vindex mh-yank-behavior | |
| 4170 | |
| 4171 Alternatively, you can customize the option @code{mh-yank-behavior} | |
| 4172 and choose one of its @samp{Automatically} variants to do the same | |
| 4173 thing. @xref{Inserting Letter}. If you do so, the prefix argument has | |
| 4174 no effect. | |
| 4175 | |
| 4176 Another way to include the message automatically in your draft is to | |
| 4177 use @samp{repl: -filter repl.filter} in your MH profile. | |
| 4178 | |
| 4179 @vindex mh-reply-show-message-flag | |
| 4180 | |
| 4181 If you include the message automatically, you can hide the MH-Show | |
| 4182 buffer by turning off the option @code{mh-reply-show-message-flag}. | |
| 4183 | |
| 4184 If you wish to customize the header or other parts of the reply draft, | |
| 4185 please see @command{repl}(1) and @code{mh-format}(5). | |
| 4186 | |
| 4187 @node Forwarding, Redistributing, Replying, Sending Mail | |
| 4188 @section Forwarding Mail | |
| 4189 | |
| 4190 @cindex @command{forw} | |
| 4191 @cindex draft | |
| 4192 @cindex forwarding | |
| 4193 @cindex MH commands, @command{forw} | |
| 4194 @findex mh-forward | |
| 4195 @kindex f | |
| 4196 @vindex mh-forward-hook | |
| 4197 | |
| 4198 To forward a message, use the @kbd{f} (@code{mh-forward}) command. You | |
| 4199 are prompted for the @samp{To:} and @samp{cc:} recipients. You are | |
| 4200 given a draft to edit that looks like it would if you had run the MH | |
| 4201 command @command{forw}@footnote{See the section | |
| 4202 @uref{@value{MH-BOOK-HOME}/forfor.html, Forwarding Messages: forw} in | |
| 4203 the MH book.}. You can then add some text (@pxref{Editing Drafts}). | |
| 4204 You can forward several messages by using a range (@pxref{Ranges}). | |
| 4205 All of the messages in the range are inserted into your draft. The | |
| 4206 hook @code{mh-forward-hook} is called on the draft. | |
| 4207 | |
| 4208 @cindex @file{.mh_profile} | |
| 4209 @cindex files, @file{.mh_profile} | |
| 4210 @cindex MH profile component, @samp{forw:} | |
| 4211 @cindex @samp{forw:} MH profile component | |
| 4212 @vindex mh-compose-forward-as-mime-flag | |
| 4213 | |
| 4214 By default, the option @code{mh-compose-forward-as-mime-flag} is on | |
| 4215 which means that the forwarded messages are included as attachments. | |
|
92984
46a2b7ab3cd6
(Preface): Add Gnus to requirements.
Bill Wohler <wohler@newt.com>
parents:
87903
diff
changeset
|
4216 These are inline attachments so the forwarded message should appear in |
|
46a2b7ab3cd6
(Preface): Add Gnus to requirements.
Bill Wohler <wohler@newt.com>
parents:
87903
diff
changeset
|
4217 the body of your recipient's mail program. If you would prefer to |
|
46a2b7ab3cd6
(Preface): Add Gnus to requirements.
Bill Wohler <wohler@newt.com>
parents:
87903
diff
changeset
|
4218 forward your messages verbatim (as text, inline), then turn off this |
|
46a2b7ab3cd6
(Preface): Add Gnus to requirements.
Bill Wohler <wohler@newt.com>
parents:
87903
diff
changeset
|
4219 option. Forwarding messages verbatim works well for short, textual |
|
46a2b7ab3cd6
(Preface): Add Gnus to requirements.
Bill Wohler <wohler@newt.com>
parents:
87903
diff
changeset
|
4220 messages, but your recipient won't be able to view any non-textual |
|
46a2b7ab3cd6
(Preface): Add Gnus to requirements.
Bill Wohler <wohler@newt.com>
parents:
87903
diff
changeset
|
4221 attachments that were in the forwarded message. Be aware that if you |
|
46a2b7ab3cd6
(Preface): Add Gnus to requirements.
Bill Wohler <wohler@newt.com>
parents:
87903
diff
changeset
|
4222 have @samp{forw: -mime} in your MH profile, then forwarded messages |
|
46a2b7ab3cd6
(Preface): Add Gnus to requirements.
Bill Wohler <wohler@newt.com>
parents:
87903
diff
changeset
|
4223 will always be included as attachments regardless of the settings of |
|
46a2b7ab3cd6
(Preface): Add Gnus to requirements.
Bill Wohler <wohler@newt.com>
parents:
87903
diff
changeset
|
4224 @code{mh-compose-forward-as-mime-flag}. |
| 84306 | 4225 |
| 4226 @vindex mh-forward-subject-format | |
| 4227 | |
| 4228 The format of the @samp{Subject:} header field for forwarded messages | |
| 4229 is controlled by the option @code{mh-forward-subject-format}. This | |
| 4230 option is a string which includes two escapes (@samp{%s}). The first | |
| 4231 @samp{%s} is replaced with the sender of the original message, and the | |
| 4232 second one is replaced with the original @samp{Subject:}. The default | |
| 4233 value of @code{"%s: %s"} takes a message with the header: | |
| 4234 | |
| 4235 @smallexample | |
| 4236 @group | |
| 4237 To: Bill Wohler <wohler@@stop.mail-abuse.org> | |
| 4238 Subject: Re: 49er football | |
| 4239 From: Greg DesBrisay <gd@@stop.mail-abuse.org> | |
| 4240 @end group | |
| 4241 @end smallexample | |
| 4242 | |
| 4243 and creates a subject header field of: | |
| 4244 | |
| 4245 @smallexample | |
| 4246 Subject: Greg DesBrisay: Re: 49er football | |
| 4247 @end smallexample | |
| 4248 | |
| 4249 @node Redistributing, Editing Again, Forwarding, Sending Mail | |
| 4250 @section Redistributing Your Mail | |
| 4251 | |
| 4252 @cindex @command{dist} | |
| 4253 @cindex MH commands, @command{dist} | |
| 4254 @cindex redistributing | |
| 4255 @findex mh-redistribute | |
| 4256 @kindex M-d | |
| 4257 | |
| 4258 The command @kbd{M-d} (@code{mh-redistribute}) is similar in function | |
| 4259 to forwarding mail, but it does not allow you to edit the message, nor | |
| 4260 does it add your name to the @samp{From:} header field. It appears to | |
| 4261 the recipient as if the message had come from the original sender. | |
| 4262 When you run this command, you are prompted for the recipients. | |
| 4263 | |
| 4264 @findex mh-edit-again | |
| 4265 @kindex e | |
| 4266 | |
| 4267 For more information on redistributing messages, see | |
| 4268 @command{dist}(1). Also investigate the command @kbd{e} | |
| 4269 (@code{mh-edit-again}) for another way to redistribute messages | |
| 4270 (@pxref{Editing Again}). | |
| 4271 | |
| 4272 @cindex @command{send} | |
| 4273 @cindex MH commands, @command{send} | |
| 4274 @vindex mh-redist-full-contents-flag | |
| 4275 | |
| 4276 The option @code{mh-redist-full-contents-flag} must be turned on if | |
| 4277 @command{dist}@footnote{See the section | |
| 4278 @uref{@value{MH-BOOK-HOME}/disdis.html, Distributing Messages with | |
| 4279 dist} in the MH book.} requires the whole letter for redistribution, | |
| 4280 which is the case if @command{send}@footnote{See the section | |
| 4281 @uref{@value{MH-BOOK-HOME}/sensen.html, Sending Some Mail: comp send} | |
| 4282 in the MH book.} is compiled with the @sc{berk} option (which many | |
| 4283 people abhor). If you find that MH will not allow you to redistribute | |
| 4284 a message that has been redistributed before, turn off this option. | |
| 4285 | |
| 4286 @node Editing Again, , Redistributing, Sending Mail | |
| 4287 @section Editing Old Drafts and Bounced Messages | |
| 4288 | |
| 4289 @cindex @file{draft} | |
| 4290 @cindex files, @file{draft} | |
| 4291 @cindex re-editing drafts | |
| 4292 @findex mh-edit-again | |
| 4293 @kindex F v drafts | |
| 4294 @kindex e | |
| 4295 @kindex n | |
| 4296 | |
| 4297 If you don't complete a draft for one reason or another, and if the | |
| 4298 draft buffer is no longer available, you can pick your draft up again | |
| 4299 with @kbd{e} (@code{mh-edit-again}). If you don't use a draft | |
| 4300 folder, your last @file{draft} file will be used. If you use draft | |
| 4301 folders, you'll need to visit the draft folder with @kbd{F v drafts | |
| 4302 @key{RET}}, use @kbd{n} to move to the appropriate message, and then | |
| 4303 use @kbd{e} to prepare the message for editing. | |
| 4304 | |
| 4305 @kindex e | |
| 4306 | |
| 4307 The @kbd{e} command can also be used to take messages that were sent | |
| 4308 to you and to send them to more people. | |
| 4309 | |
| 4310 @cindex Mailer-Daemon | |
| 4311 @findex mh-extract-rejected-mail | |
| 4312 @kindex C-c C-c | |
| 4313 @kindex E | |
| 4314 | |
| 4315 Don't use @kbd{e} to re-edit a message from a @i{Mailer-Daemon} who | |
| 4316 complained that your mail wasn't posted for some reason or another. In | |
| 4317 this case, use @kbd{E} (@code{mh-extract-rejected-mail}) to prepare | |
| 4318 the message for editing by removing the @i{Mailer-Daemon} envelope and | |
| 4319 unneeded header fields. Fix whatever addressing problem you had, and | |
| 4320 send the message again with @kbd{C-c C-c}. | |
| 4321 | |
| 4322 @node Editing Drafts, Aliases, Sending Mail, Top | |
| 4323 @chapter Editing a Draft | |
| 4324 | |
| 4325 @cindex @samp{Letter} menu | |
| 4326 @cindex MH-Letter mode | |
| 4327 @cindex draft | |
| 4328 @cindex editing draft | |
| 4329 @cindex menu, @samp{Letter} | |
| 4330 @cindex modes, MH-Letter | |
| 4331 | |
| 4332 When you edit a message that you want to send (called a @dfn{draft} in | |
| 4333 this case), the mode used is MH-Letter. This mode provides several | |
| 4334 commands in addition to the normal Emacs editing commands to help you | |
| 4335 edit your draft. These can also be found in the @samp{Letter} menu. | |
| 4336 | |
| 4337 @table @kbd | |
| 4338 @kindex @key{SPC} | |
| 4339 @findex mh-letter-complete-or-space | |
| 4340 @item @key{SPC} | |
| 4341 Perform completion or insert space (@code{mh-letter-complete-or-space}). | |
| 4342 @c ------------------------- | |
| 4343 @kindex M-@key{TAB} | |
| 4344 @findex mh-letter-complete | |
| 4345 @item M-@key{TAB} | |
| 4346 Perform completion on header field or word preceding point | |
| 4347 (@code{mh-letter-complete}). | |
| 4348 @c ------------------------- | |
| 4349 @kindex , (comma) | |
| 4350 @findex mh-letter-confirm-address | |
| 4351 @item , (comma) | |
| 4352 Flash alias expansion (@code{mh-letter-confirm-address}). | |
| 4353 @c ------------------------- | |
| 4354 @kindex @key{TAB} | |
| 4355 @findex mh-letter-next-header-field-or-indent | |
| 4356 @item @key{TAB} | |
| 4357 Cycle to next field (@code{mh-letter-next-header-field-or-indent}). | |
| 4358 @c ------------------------- | |
| 4359 @kindex S-@key{TAB} | |
| 4360 @findex mh-letter-previous-header-field | |
| 4361 @item S-@key{TAB} | |
| 4362 Cycle to the previous header field | |
| 4363 (@code{mh-letter-previous-header-field}). | |
| 4364 @c ------------------------- | |
| 4365 @kindex C-c ? | |
| 4366 @findex mh-help | |
| 4367 @item C-c ? | |
| 4368 Display cheat sheet for the MH-E commands (@code{mh-help}). | |
| 4369 @c ------------------------- | |
| 4370 @cindex @samp{Letter > Send This Draft} menu item | |
| 4371 @cindex menu item, @samp{Letter > Send This Draft} | |
| 4372 @kindex C-c C-c | |
| 4373 @findex mh-send-letter | |
| 4374 @item C-c C-c | |
| 4375 Save draft and send message (@code{mh-send-letter}). | |
| 4376 @c ------------------------- | |
| 4377 @kindex C-c C-d | |
| 4378 @findex mh-insert-identity | |
| 4379 @item C-c C-d | |
| 4380 Insert fields specified by the given identity | |
| 4381 (@code{mh-insert-identity}). @xref{Identities}. | |
| 4382 @c ------------------------- | |
| 4383 @cindex @samp{Letter > Pull in All Compositions (MH)} menu item | |
| 4384 @cindex menu item, @samp{Letter > Pull in All Compositions (MH)} | |
| 4385 @kindex C-c C-e | |
| 4386 @findex mh-mh-to-mime | |
| 4387 @item C-c C-e | |
| 4388 Compose @sc{mime} message from MH-style directives | |
| 4389 (@code{mh-mh-to-mime}). | |
| 4390 @c ------------------------- | |
| 4391 @kindex C-c C-f C-a | |
| 4392 @kindex C-c C-f a | |
| 4393 @findex mh-to-field | |
| 4394 @item C-c C-f C-a | |
| 4395 @itemx C-c C-f a | |
| 4396 Move to @samp{Mail-Reply-To:} header field (@code{mh-to-field}). | |
| 4397 @c ------------------------- | |
| 4398 @kindex C-c C-f C-b | |
| 4399 @kindex C-c C-f b | |
| 4400 @item C-c C-f C-b | |
| 4401 @itemx C-c C-f b | |
| 4402 Move to @samp{Bcc:} header field (@code{mh-to-field}). | |
| 4403 @c ------------------------- | |
| 4404 @kindex C-c C-f C-c | |
| 4405 @kindex C-c C-f c | |
| 4406 @item C-c C-f C-c | |
| 4407 @itemx C-c C-f c | |
| 4408 Move to @samp{Cc:} header field (@code{mh-to-field}). | |
| 4409 @c ------------------------- | |
| 4410 @kindex C-c C-f C-d | |
| 4411 @kindex C-c C-f d | |
| 4412 @item C-c C-f C-d | |
| 4413 @itemx C-c C-f d | |
| 4414 Move to @samp{Dcc:} header field (@code{mh-to-field}). | |
| 4415 @c ------------------------- | |
| 4416 @kindex C-c C-f C-f | |
| 4417 @kindex C-c C-f f | |
| 4418 @findex mh-to-fcc | |
| 4419 @item C-c C-f C-f | |
| 4420 @itemx C-c C-f f | |
| 4421 Move to @samp{Fcc:} header field (@code{mh-to-fcc}). | |
| 4422 @c ------------------------- | |
| 4423 @kindex C-c C-f C-l | |
| 4424 @kindex C-c C-f l | |
| 4425 @item C-c C-f C-l | |
| 4426 @itemx C-c C-f l | |
| 4427 Move to @samp{Mail-Followup-To:} header field (@code{mh-to-field}). | |
| 4428 @c ------------------------- | |
| 4429 @kindex C-c C-f C-m | |
| 4430 @kindex C-c C-f m | |
| 4431 @item C-c C-f C-m | |
| 4432 @itemx C-c C-f m | |
| 4433 Move to @samp{From:} header field (@code{mh-to-field}). | |
| 4434 @c ------------------------- | |
| 4435 @kindex C-c C-f C-r | |
| 4436 @kindex C-c C-f r | |
| 4437 @item C-c C-f C-r | |
| 4438 @itemx C-c C-f r | |
| 4439 Move to @samp{Reply-To:} header field (@code{mh-to-field}). | |
| 4440 @c ------------------------- | |
| 4441 @kindex C-c C-f C-s | |
| 4442 @kindex C-c C-f s | |
| 4443 @item C-c C-f C-s | |
| 4444 @itemx C-c C-f s | |
| 4445 Move to @samp{Subject:} header field (@code{mh-to-field}). | |
| 4446 @c ------------------------- | |
| 4447 @kindex C-c C-f C-t | |
| 4448 @kindex C-c C-f t | |
| 4449 @item C-c C-f C-t | |
| 4450 @itemx C-c C-f t | |
| 4451 Move to @samp{To:} header field (@code{mh-to-field}). | |
| 4452 @c ------------------------- | |
| 4453 @cindex @samp{Letter > Insert a Message...} menu item | |
| 4454 @cindex menu item, @samp{Letter > Insert a Message...} | |
| 4455 @kindex C-c C-i | |
| 4456 @findex mh-insert-letter | |
| 4457 @item C-c C-i | |
| 4458 Insert a message (@code{mh-insert-letter}). | |
| 4459 @c ------------------------- | |
| 4460 @kindex C-c C-m C-e | |
| 4461 @findex mh-mml-secure-message-encrypt | |
| 4462 @item C-c C-m C-e | |
| 4463 Add tag to encrypt the message (@code{mh-mml-secure-message-encrypt}). | |
| 4464 @c ------------------------- | |
| 4465 @cindex @samp{Letter > Compose Forward...} menu item | |
| 4466 @cindex menu item, @samp{Letter > Compose Forward...} | |
| 4467 @kindex C-c C-m C-f | |
| 4468 @kindex C-c C-m f | |
| 4469 @findex mh-compose-forward | |
| 4470 @item C-c C-m C-f | |
| 4471 @itemx C-c C-m f | |
| 4472 Add tag to forward a message (@code{mh-compose-forward}). | |
| 4473 @c ------------------------- | |
| 4474 @cindex @samp{Letter > Compose Get File (MH)...} menu item | |
| 4475 @cindex menu item, @samp{Letter > Compose Get File (MH)...} | |
| 4476 @kindex C-c C-m C-g | |
| 4477 @kindex C-c C-m g | |
| 4478 @findex mh-mh-compose-anon-ftp | |
| 4479 @item C-c C-m C-g | |
| 4480 @itemx C-c C-m g | |
| 4481 Add tag to include anonymous ftp reference to a file | |
| 4482 (@code{mh-mh-compose-anon-ftp}). | |
| 4483 @c ------------------------- | |
| 4484 @cindex @samp{Letter > Compose Insertion...} menu item | |
| 4485 @cindex menu item, @samp{Letter > Compose Insertion...} | |
| 4486 @kindex C-c C-m C-i | |
| 4487 @kindex C-c C-m i | |
| 4488 @findex mh-compose-insertion | |
| 4489 @item C-c C-m C-i | |
| 4490 @itemx C-c C-m i | |
| 4491 Add tag to include a file such as an image or sound | |
| 4492 (@code{mh-compose-insertion}). | |
| 4493 @c ------------------------- | |
| 4494 @cindex @samp{Letter > Pull in All Compositions (MML)} menu item | |
| 4495 @cindex menu item, @samp{Letter > Pull in All Compositions (MML)} | |
| 4496 @kindex C-c C-m C-m | |
| 4497 @kindex C-c C-m m | |
| 4498 @findex mh-mml-to-mime | |
| 4499 @item C-c C-m C-m | |
| 4500 @itemx C-c C-m m | |
| 4501 Compose @sc{mime} message from MML tags (@code{mh-mml-to-mime}). | |
| 4502 @c ------------------------- | |
| 4503 @kindex C-c C-m C-n | |
| 4504 @kindex C-c C-m n | |
| 4505 @findex mh-mml-unsecure-message | |
| 4506 @item C-c C-m C-n | |
| 4507 @itemx C-c C-m n | |
| 4508 Remove any secure message tags (@code{mh-mml-unsecure-message}). | |
| 4509 @c ------------------------- | |
| 4510 @kindex C-c C-m C-s | |
| 4511 @findex mh-mml-secure-message-sign | |
| 4512 @item C-c C-m C-s | |
| 4513 Add tag to sign the message (@code{mh-mml-secure-message-sign}). | |
| 4514 @c ------------------------- | |
| 4515 @cindex @samp{Letter > Compose Compressed tar (MH)...} menu item | |
| 4516 @cindex menu item, @samp{Letter > Compose Compressed tar (MH)...} | |
| 4517 @kindex C-c C-m C-t | |
| 4518 @kindex C-c C-m t | |
| 4519 @findex mh-mh-compose-external-compressed-tar | |
| 4520 @item C-c C-m C-t | |
| 4521 @itemx C-c C-m t | |
| 4522 Add tag to include anonymous ftp reference to a compressed tar file | |
| 4523 (@code{mh-mh-compose-external-compressed-tar}). | |
| 4524 @c ------------------------- | |
| 4525 @cindex @samp{Letter > Revert to Non-MIME Edit (MH)} menu item | |
| 4526 @cindex menu item, @samp{Letter > Revert to Non-MIME Edit (MH)} | |
| 4527 @kindex C-c C-m C-u | |
| 4528 @kindex C-c C-m u | |
| 4529 @findex mh-mh-to-mime-undo | |
| 4530 @item C-c C-m C-u | |
| 4531 @itemx C-c C-m u | |
| 4532 Undo effects of @kbd{C-c C-e} (@code{mh-mh-to-mime-undo}). | |
| 4533 @c ------------------------- | |
| 4534 @kindex C-c C-m C-x | |
| 4535 @kindex C-c C-m x | |
| 4536 @findex mh-mh-compose-external-type | |
| 4537 @item C-c C-m C-x | |
| 4538 @itemx C-c C-m x | |
| 4539 Add tag to refer to a remote file | |
| 4540 (@code{mh-mh-compose-external-type}). | |
| 4541 @c ------------------------- | |
| 4542 @kindex C-c C-m e e | |
| 4543 @findex mh-mml-secure-message-encrypt | |
| 4544 @item C-c C-m e e | |
| 4545 Add tag to encrypt the message (@code{mh-mml-secure-message-encrypt}). | |
| 4546 @c ------------------------- | |
| 4547 @kindex C-c C-m e s | |
| 4548 @findex mh-mml-secure-message-signencrypt | |
| 4549 @item C-c C-m e s | |
| 4550 Add tag to encrypt and sign the message@* | |
| 4551 (@code{mh-mml-secure-message-signencrypt}). | |
| 4552 @c ------------------------- | |
| 4553 @kindex C-c C-m s e | |
| 4554 @findex mh-mml-secure-message-signencrypt | |
| 4555 @item C-c C-m s e | |
| 4556 Add tag to encrypt and sign the message@* | |
| 4557 (@code{mh-mml-secure-message-signencrypt}). | |
| 4558 @c ------------------------- | |
| 4559 @kindex C-c C-m s s | |
| 4560 @findex mh-mml-secure-message-sign | |
| 4561 @item C-c C-m s s | |
| 4562 Add tag to sign the message (@code{mh-mml-secure-message-sign}). | |
| 4563 @c ------------------------- | |
| 4564 @cindex @samp{Letter > Split Current Line} menu item | |
| 4565 @cindex menu item, @samp{Letter > Split Current Line} | |
| 4566 @kindex C-c C-o | |
| 4567 @findex mh-open-line | |
| 4568 @item C-c C-o | |
| 4569 Insert a newline and leave point before it (@code{mh-open-line}). | |
| 4570 @c ------------------------- | |
| 4571 @cindex @samp{Letter > Kill This Draft} menu item | |
| 4572 @cindex menu item, @samp{Letter > Kill This Draft} | |
| 4573 @kindex C-c C-q | |
| 4574 @findex mh-fully-kill-draft | |
| 4575 @item C-c C-q | |
| 4576 Quit editing and delete draft message (@code{mh-fully-kill-draft}). | |
| 4577 @c ------------------------- | |
| 4578 @cindex @samp{Letter > Insert Signature} menu item | |
| 4579 @cindex menu item, @samp{Letter > Insert Signature} | |
| 4580 @kindex C-c C-s | |
| 4581 @findex mh-insert-signature | |
| 4582 @item C-c C-s | |
| 4583 Insert signature in message (@code{mh-insert-signature}). | |
| 4584 @c ------------------------- | |
| 4585 @kindex C-c C-t | |
| 4586 @findex mh-letter-toggle-header-field-display | |
| 4587 @item C-c C-t | |
| 4588 Toggle display of header field at point | |
| 4589 (@code{mh-letter-toggle-header-field-display}). | |
| 4590 @c ------------------------- | |
| 4591 @cindex @samp{Letter > Check Recipient} menu item | |
| 4592 @cindex menu item, @samp{Letter > Check Recipient} | |
| 4593 @kindex C-c C-w | |
| 4594 @findex mh-check-whom | |
| 4595 @item C-c C-w | |
| 4596 Verify recipients, showing expansion of any aliases | |
| 4597 (@code{mh-check-whom}). | |
| 4598 @c ------------------------- | |
| 4599 @cindex @samp{Letter > Yank Current Message} menu item | |
| 4600 @cindex menu item, @samp{Letter > Yank Current Message} | |
| 4601 @kindex C-c C-y | |
| 4602 @findex mh-yank-cur-msg | |
| 4603 @item C-c C-y | |
| 4604 Insert the current message into the draft buffer | |
| 4605 (@code{mh-yank-cur-msg}). | |
| 4606 @c ------------------------- | |
| 4607 @kindex C-c M-d | |
| 4608 @findex mh-insert-auto-fields | |
| 4609 @item C-c M-d | |
| 4610 Insert custom fields if recipient is found in | |
| 4611 @code{mh-auto-fields-list} (@code{mh-insert-auto-fields}). | |
| 4612 @xref{Identities}. | |
| 4613 @end table | |
| 4614 | |
| 4615 @cindex @samp{mh-letter} customization group | |
| 4616 @cindex customization group, @samp{mh-letter} | |
| 4617 | |
| 4618 Several options from the @samp{mh-letter} customization group are used | |
| 4619 while editing a draft. | |
| 4620 | |
| 4621 @vtable @code | |
| 4622 @item mh-compose-insertion | |
| 4623 Type of @sc{mime} message tags in messages (default: @samp{MML} if | |
| 4624 available; otherwise @samp{MH}). | |
| 4625 @c ------------------------- | |
| 4626 @item mh-compose-skipped-header-fields | |
| 4627 List of header fields to skip over when navigating in draft (default: | |
| 4628 @code{'("From"} @code{"Organization"} @code{"References"} | |
| 4629 @code{"In-Reply-To"} @code{"X-Face"} @code{"Face"} | |
| 4630 @code{"X-Image-URL"} @code{"X-Mailer")}. | |
| 4631 @c ------------------------- | |
| 4632 @item mh-compose-space-does-completion-flag | |
| 4633 On means @key{SPC} does completion in message header (default: | |
| 4634 @samp{off}). | |
| 4635 @c ------------------------- | |
| 4636 @item mh-delete-yanked-msg-window-flag | |
| 4637 On means delete any window displaying the message (default: @samp{off}). | |
| 4638 @c ------------------------- | |
| 4639 @item mh-extract-from-attribution-verb | |
| 4640 Verb to use for attribution when a message is yanked by @kbd{C-c C-y} | |
| 4641 (default: @code{"wrote:"}). | |
| 4642 @c ------------------------- | |
| 4643 @item mh-ins-buf-prefix | |
| 4644 String to put before each line of a yanked or inserted message | |
| 4645 (default: @code{"> "}). | |
| 4646 @c ------------------------- | |
| 4647 @item mh-letter-complete-function | |
| 4648 Function to call when completing outside of address or folder fields | |
| 4649 (default: @code{ispell-complete-word}). | |
| 4650 @c ------------------------- | |
| 4651 @item mh-letter-fill-column | |
| 4652 Fill column to use in MH-Letter mode (default: 72). | |
| 4653 @c ------------------------- | |
| 4654 @item mh-mml-method-default | |
| 4655 Default method to use in security tags (default: @samp{PGP (MIME)} if | |
| 4656 support for it is available; otherwise @samp{None}). | |
| 4657 @c ------------------------- | |
| 4658 @item mh-signature-file-name | |
| 4659 Source of user's signature (default: @code{"~/.signature"}). | |
| 4660 @c ------------------------- | |
| 4661 @item mh-signature-separator-flag | |
| 4662 On means a signature separator should be inserted (default: | |
| 4663 @samp{on}). | |
| 4664 @c ------------------------- | |
| 4665 @item mh-x-face-file | |
| 4666 File containing X-Face or Face header field to insert in outgoing mail. | |
| 4667 (default: @code{"~/.face"}). | |
| 4668 @c ------------------------- | |
| 4669 @item mh-yank-behavior | |
| 4670 Controls which part of a message is yanked by @kbd{C-c C-y} (default: | |
| 4671 @samp{Body With Attribution}). | |
| 4672 @end vtable | |
| 4673 | |
| 4674 The following hooks are available. | |
| 4675 | |
| 4676 @vtable @code | |
| 4677 @item mail-citation-hook | |
| 4678 Hook for modifying a citation just inserted in the mail buffer | |
| 4679 (default: @code{nil}). | |
| 4680 @c ------------------------- | |
| 4681 @item mh-before-send-letter-hook | |
| 4682 Hook run at the beginning of the @kbd{C-c C-c} command (default: | |
| 4683 @samp{nil}). | |
| 4684 @c ------------------------- | |
| 4685 @item mh-mh-to-mime-hook | |
| 4686 Hook run on the formatted letter by @kbd{C-c C-e} (default: | |
| 4687 @samp{nil}). | |
| 4688 @c ------------------------- | |
| 4689 @item mh-insert-signature-hook | |
| 4690 Hook run by @kbd{C-c C-s} after signature has been inserted (default: | |
| 4691 @code{nil}). | |
| 4692 @end vtable | |
| 4693 | |
| 4694 The following face is available. | |
| 4695 | |
| 4696 @vtable @code | |
| 4697 @item mh-letter-header-field | |
| 4698 Editable header field value face in draft buffers. | |
| 4699 @end vtable | |
| 4700 | |
| 4701 The commands and options introduced here are explained in more | |
| 4702 detail in the following sections. | |
| 4703 | |
| 4704 @menu | |
| 4705 * Editing Message:: | |
| 4706 * Inserting Letter:: | |
| 4707 * Inserting Messages:: | |
| 4708 * Signature:: | |
| 4709 * Picture:: | |
| 4710 * Adding Attachments:: | |
| 4711 * Sending PGP:: | |
| 4712 * Checking Recipients:: | |
| 4713 * Sending Message:: | |
| 4714 * Killing Draft:: | |
| 4715 @end menu | |
| 4716 | |
| 4717 @node Editing Message, Inserting Letter, Editing Drafts, Editing Drafts | |
| 4718 @section Editing the Message | |
| 4719 | |
| 4720 @cindex @samp{Bcc:} header field | |
| 4721 @cindex @samp{Cc:} header field | |
| 4722 @cindex @samp{Dcc:} header field | |
| 4723 @cindex @samp{From:} header field | |
| 4724 @cindex @samp{Mail-Followup-To:} header field | |
| 4725 @cindex @samp{Mail-Reply-To:} header field | |
| 4726 @cindex @samp{Reply-To:} header field | |
| 4727 @cindex @samp{Subject:} header field | |
| 4728 @cindex @samp{To:} header field | |
| 4729 @cindex editing header | |
| 4730 @cindex header field, @samp{Bcc:} | |
| 4731 @cindex header field, @samp{Cc:} | |
| 4732 @cindex header field, @samp{Dcc:} | |
| 4733 @cindex header field, @samp{From:} | |
| 4734 @cindex header field, @samp{Mail-Followup-To:} | |
| 4735 @cindex header field, @samp{Mail-Reply-To:} | |
| 4736 @cindex header field, @samp{Reply-To:} | |
| 4737 @cindex header field, @samp{Subject:} | |
| 4738 @cindex header field, @samp{To:} | |
| 4739 @findex mh-to-field | |
| 4740 @kindex C-c C-f C-t | |
| 4741 @kindex C-c C-f t | |
| 4742 | |
| 4743 Because the header is part of the message, you can edit the header | |
| 4744 fields as you wish. However, several convenience commands exist to | |
| 4745 help you create and edit them. For example, the command @kbd{C-c C-f | |
| 4746 C-t} (@code{mh-to-field}; alternatively, @kbd{C-c C-f t}) moves the | |
| 4747 cursor to the @samp{To:} header field, creating it if necessary. The | |
| 4748 commands for moving to the @samp{Cc:}, @samp{Subject:}, @samp{From:}, | |
| 4749 @samp{Reply-To:}, @samp{Mail-Reply-To:}, @samp{Mail-Followup-To}, | |
| 4750 @samp{Bcc:}, and @samp{Dcc:} header fields are similar. | |
| 4751 | |
| 4752 @findex mh-to-fcc | |
| 4753 @kindex C-c C-f C-f | |
| 4754 @kindex C-c C-f f | |
| 4755 | |
| 4756 One command behaves differently from the others, namely, @kbd{C-c C-f | |
| 4757 C-f} (@code{mh-to-fcc}; alternatively, @kbd{C-c C-f f}). This command | |
| 4758 will prompt you for the folder name in which to file a copy of the | |
| 4759 draft. @xref{Folder Selection}. | |
| 4760 | |
| 4761 @findex indent-relative | |
| 4762 @findex mh-letter-next-header-field-or-indent | |
| 4763 @findex mh-letter-previous-header-field | |
| 4764 @kindex @key{TAB} | |
| 4765 @kindex S-@key{TAB} | |
| 4766 @vindex mh-compose-skipped-header-fields | |
| 4767 @vindex mh-letter-header-field | |
| 4768 | |
| 4769 Within the header of the message, the command@* @key{TAB} | |
| 4770 (@code{mh-letter-next-header-field-or-indent}) moves between fields | |
| 4771 that are highlighted with the face @code{mh-letter-header-field}, | |
| 4772 skipping those fields listed in | |
| 4773 @code{mh-compose-skipped-header-fields}. After the last field, this | |
| 4774 command then moves point to the message body before cycling back to | |
| 4775 the first field. If point is already past the first line of the | |
| 4776 message body, then this command indents by calling | |
| 4777 @code{indent-relative} with the given prefix argument. The command | |
| 4778 @kbd{S-@key{TAB}} (@code{mh-letter-previous-header-field}) moves | |
| 4779 backwards between the fields and cycles to the body of the message | |
| 4780 after the first field. Unlike the command @key{TAB}, it will always | |
| 4781 take point to the last field from anywhere in the body. | |
| 4782 | |
| 4783 @cindex alias completion | |
| 4784 @cindex completion | |
| 4785 @cindex spell check | |
| 4786 @findex ispell-complete-word | |
| 4787 @findex mh-letter-complete | |
| 4788 @findex mh-letter-complete-or-space | |
| 4789 @findex mh-letter-confirm-address | |
| 4790 @kindex , (comma) | |
| 4791 @kindex @key{SPC} | |
| 4792 @kindex M-@key{TAB} | |
| 4793 @vindex mh-alias-flash-on-comma | |
| 4794 @vindex mh-compose-space-does-completion-flag | |
| 4795 @vindex mh-letter-complete-function | |
| 4796 | |
| 4797 If the field contains addresses (for example, @samp{To:} or | |
| 4798 @samp{Cc:}) or folders (for example, @samp{Fcc:}) then the command | |
| 4799 @kbd{M-@key{TAB}} (@code{mh-letter-complete}) will provide alias | |
| 4800 completion (@pxref{Aliases}). In the body of the message, | |
| 4801 @kbd{M-@key{TAB}} runs @code{mh-letter-complete-function} instead, | |
| 4802 which is set to @samp{'ispell-complete-word} by default. The command | |
| 4803 @kbd{M-@key{TAB}} (@code{mh-letter-complete}) takes a prefix argument | |
| 4804 that is passed to the @code{mh-letter-complete-function}. In addition, | |
| 4805 turn on the option @code{mh-compose-space-does-completion-flag} to use | |
| 4806 the command @key{SPC} (@code{mh-letter-complete-or-space}) to perform | |
| 4807 completion in the header as well; use a prefix argument to specify | |
| 4808 more than one space. Addresses are separated by a comma; when you | |
| 4809 press the comma, the command @code{mh-letter-confirm-address} flashes | |
| 4810 the alias expansion in the minibuffer if | |
| 4811 @code{mh-alias-flash-on-comma} is turned on. | |
| 4812 | |
| 4813 @c XXX Document the replacement for the inaccessible 'long argument. | |
| 4814 | |
| 4815 @findex mh-letter-toggle-header-field-display | |
| 4816 @kindex C-c C-t | |
| 4817 | |
| 4818 Use the command @kbd{C-c C-t} | |
| 4819 @code{mh-letter-toggle-header-field-display} to display truncated | |
| 4820 header fields. This command is a toggle so entering it again will hide | |
| 4821 the field. This command takes a prefix argument: if negative then the | |
| 4822 field is hidden, if positive then the field is displayed (for example, | |
| 4823 @kbd{C-u C-c C-t}). | |
| 4824 | |
| 4825 Be sure to leave a row of dashes or a blank line between the header | |
| 4826 and the body of the message. | |
| 4827 | |
| 4828 @vindex mh-letter-fill-column | |
| 4829 | |
| 4830 The body of the message is edited as you would edit any Emacs buffer | |
| 4831 although there are a few commands and options to assist you. You can | |
| 4832 change the fill column in MH-Letter mode with the option | |
| 4833 @code{mh-letter-fill-column}. By default, this option is 72 to allow | |
| 4834 others to quote your message without line wrapping. | |
| 4835 | |
| 4836 @cindex filling paragraphs | |
| 4837 @cindex paragraphs, filling | |
| 4838 @findex fill-paragraph | |
| 4839 @kindex M-q | |
| 4840 @vindex mh-ins-buf-prefix | |
| 4841 | |
| 4842 You'll often include messages that were sent from user agents that | |
| 4843 haven't yet realized that paragraphs consist of more than a single | |
| 4844 line. This makes for long lines that wrap in an ugly fashion. You'll | |
| 4845 find that @kbd{M-q} (@code{fill-paragraph}) works well even on these | |
| 4846 quoted messages, even if they are nested, just as long as all of the | |
| 4847 quotes match the value of @code{mh-ins-buf-prefix} (@pxref{Inserting | |
| 4848 Letter}). For example, let's assume you have the following in your | |
| 4849 draft: | |
| 4850 | |
| 4851 @smallexample | |
| 4852 @group | |
| 4853 > Hopefully this gives you an idea of what I'm currently doing. I'm \ | |
| 4854 not sure yet whether I'm completely satisfied with my setup, but \ | |
| 4855 it's worked okay for me so far. | |
| 4856 @end group | |
| 4857 @end smallexample | |
| 4858 | |
| 4859 Running @kbd{M-q} on this paragraph produces: | |
| 4860 | |
| 4861 @smallexample | |
| 4862 @group | |
| 4863 > Hopefully this gives you an idea of what I'm currently doing. I'm not | |
| 4864 > sure yet whether I'm completely satisfied with my setup, but it's | |
| 4865 > worked okay for me so far. | |
| 4866 @end group | |
| 4867 @end smallexample | |
| 4868 | |
| 4869 @findex mh-open-line | |
| 4870 @findex open-line | |
| 4871 @kindex C-c C-o | |
| 4872 @kindex C-o | |
| 4873 | |
| 4874 The command @kbd{C-c C-o} (@code{mh-open-line}) is similar to the | |
| 4875 command @kbd{C-o} (@code{open-line}) in that it inserts a newline | |
| 4876 after point. It differs in that it also inserts the right number of | |
| 4877 quoting characters and spaces so that the next line begins in the same | |
| 4878 column as it was. This is useful when breaking up paragraphs in | |
| 4879 replies. For example, if this command was used when point was after | |
| 4880 the first period in the paragraph above, the result would be this: | |
| 4881 | |
| 4882 @smallexample | |
| 4883 @group | |
| 4884 > Hopefully this gives you an idea of what I'm currently doing. | |
| 4885 | |
| 4886 > I'm not | |
| 4887 > sure yet whether I'm completely satisfied with my setup, but it's | |
| 4888 > worked okay for me so far. | |
| 4889 @end group | |
| 4890 @end smallexample | |
| 4891 | |
| 4892 @node Inserting Letter, Inserting Messages, Editing Message, Editing Drafts | |
| 4893 @section Inserting Letter to Which You're Replying | |
| 4894 | |
| 4895 @cindex inserting messages | |
| 4896 @cindex replying to messages | |
| 4897 @cindex yanking messages | |
| 4898 @findex mh-yank-cur-msg | |
| 4899 @kindex C-c C-y | |
| 4900 @vindex mh-ins-buf-prefix | |
| 4901 | |
| 4902 It is often useful to insert a snippet of text from a letter that | |
| 4903 someone mailed to provide some context for your reply. The command | |
| 4904 @kbd{C-c C-y} (@code{mh-yank-cur-msg}) does this by adding an | |
| 4905 attribution, yanking a portion of text from the message to which | |
| 4906 you're replying, and inserting @code{mh-ins-buf-prefix} (@samp{> }) | |
| 4907 before each line. | |
| 4908 | |
| 4909 @smallexample | |
| 4910 @group | |
| 4911 Michael W Thelen <thelenm@@stop.mail-abuse.org> wrote: | |
| 4912 | |
| 4913 > Hopefully this gives you an idea of what I'm currently doing. I'm not | |
| 4914 > sure yet whether I'm completely satisfied with my setup, but it's | |
| 4915 > worked okay for me so far. | |
| 4916 @end group | |
| 4917 @end smallexample | |
| 4918 | |
| 4919 @vindex mh-extract-from-attribution-verb | |
| 4920 | |
| 4921 The attribution consists of the sender's name and email address | |
| 4922 followed by the content of the option | |
| 4923 @code{mh-extract-from-attribution-verb}. This option can be set to | |
| 4924 @samp{wrote:}, @samp{a écrit:}, and @samp{schrieb:}. You can also use | |
| 4925 the @samp{Custom String} menu item to enter your own verb. | |
| 4926 | |
| 4927 @vindex mail-citation-hook | |
| 4928 @vindex mh-ins-buf-prefix | |
| 4929 @vindex mh-yank-behavior | |
| 4930 | |
| 4931 The prefix @code{"> "} is the default setting for the option | |
| 4932 @code{mh-ins-buf-prefix}. I suggest that you not modify this option | |
| 4933 since it is used by many mailers and news readers: messages are far | |
| 4934 easier to read if several included messages have all been indented by | |
| 4935 the same string. This prefix is not inserted if you use one of the | |
| 4936 supercite flavors of @code{mh-yank-behavior} or you have added a | |
| 4937 @code{mail-citation-hook} as described below. | |
| 4938 | |
| 4939 @vindex mh-delete-yanked-msg-window-flag | |
| 4940 | |
| 4941 You can also turn on the @code{mh-delete-yanked-msg-window-flag} | |
| 4942 option to delete the window containing the original message after | |
| 4943 yanking it to make more room on your screen for your reply. | |
| 4944 | |
| 4945 @cindex Emacs, packages, supercite | |
| 4946 @cindex supercite package | |
| 4947 @kindex r | |
| 4948 @vindex mail-citation-hook | |
| 4949 @vindex mh-yank-behavior | |
| 4950 | |
| 4951 You can control how the message to which you are replying is yanked | |
| 4952 into your reply using @code{mh-yank-behavior}. To include the entire | |
| 4953 message, including the entire header, use @samp{Body and | |
| 4954 Header}@footnote{If you'd rather have the header cleaned up, use | |
| 4955 @kbd{C-u r} instead of @kbd{r} when replying | |
| 4956 (@pxref{Replying}).}@footnote{In the past you would use this setting | |
| 4957 and set @code{mail-citation-hook} to @samp{supercite}, but this usage | |
| 4958 is now deprecated in favor of the @samp{Invoke supercite} setting.}. | |
| 4959 Use @samp{Body} to yank just the body without the header. To yank only | |
| 4960 the portion of the message following the point, set this option to | |
| 4961 @samp{Below Point}. | |
| 4962 | |
| 4963 Choose @samp{Invoke supercite}@footnote{@emph{Supercite} is a | |
| 4964 full-bodied, full-featured, citation package that comes standard with | |
| 4965 Emacs.} to pass the entire message and header through supercite. | |
| 4966 | |
| 4967 @vindex mh-extract-from-attribution-verb | |
| 4968 | |
| 4969 If the @samp{Body With Attribution} setting is used, then the message | |
| 4970 minus the header is yanked and a simple attribution line is added at | |
| 4971 the top using the value of the option | |
| 4972 @code{mh-extract-from-attribution-verb}. This is the default. | |
| 4973 | |
| 4974 @kindex C-c C-y | |
| 4975 @vindex mh-delete-yanked-msg-window-flag | |
| 4976 | |
| 4977 If the @samp{Invoke supercite} or @samp{Body With Attribution} | |
| 4978 settings are used, the @samp{-noformat} argument is passed to the | |
| 4979 @command{repl} program to override a @samp{-filter} or @samp{-format} | |
| 4980 argument. These settings also have @samp{Automatically} variants that | |
| 4981 perform the action automatically when you reply so that you don't need | |
| 4982 to use @kbd{C-c C-y} at all. Note that this automatic action is only | |
| 4983 performed if the show buffer matches the message being replied to. | |
| 4984 People who use the automatic variants tend to turn on the option | |
| 4985 @code{mh-delete-yanked-msg-window-flag} as well so that the show | |
| 4986 window is never displayed. | |
| 4987 | |
| 4988 @vindex mh-yank-behavior | |
| 4989 | |
| 4990 If the show buffer has a region, the option @code{mh-yank-behavior} is | |
| 4991 ignored unless its value is one of @samp{Attribution} variants in | |
| 4992 which case the attribution is added to the yanked region. | |
| 4993 | |
| 4994 @findex trivial-cite | |
| 4995 @vindex mail-citation-hook | |
| 4996 @vindex mh-ins-buf-prefix | |
| 4997 @vindex mh-yank-behavior | |
| 4998 | |
| 4999 If this isn't enough, you can gain full control over the appearance of | |
| 5000 the included text by setting @code{mail-citation-hook} to a function | |
| 5001 that modifies it. This hook is ignored if the option | |
| 5002 @code{mh-yank-behavior} is set to one of the supercite flavors. | |
| 5003 Otherwise, this option controls how much of the message is passed to | |
| 5004 the hook. The function can find the citation between point and mark | |
| 5005 and it should leave point and mark around the modified citation text | |
| 5006 for the next hook function. The standard prefix | |
| 5007 @code{mh-ins-buf-prefix} is not added if this hook is set. | |
| 5008 | |
| 5009 @cindex Emacs, packages, trivial-cite | |
| 5010 @cindex trivial-cite package | |
| 5011 @vindex mh-yank-behavior | |
| 5012 | |
| 5013 For example, if you use the hook function | |
| 5014 @uref{http://shasta.cs.uiuc.edu/~lrclause/tc.html, | |
| 5015 @code{trivial-cite}} (which is NOT part of Emacs), set | |
| 5016 @code{mh-yank-behavior} to @samp{Body and Header}. | |
| 5017 | |
| 5018 @node Inserting Messages, Signature, Inserting Letter, Editing Drafts | |
| 5019 @section Inserting Messages | |
| 5020 | |
| 5021 @cindex inserting messages | |
| 5022 @findex mh-insert-letter | |
| 5023 @findex mh-yank-behavior | |
| 5024 @kindex C-c C-i | |
| 5025 @vindex mh-ins-buf-prefix | |
| 5026 @vindex mh-invisible-header-fields-compiled | |
| 5027 @vindex mh-yank-behavior | |
| 5028 | |
| 5029 Messages can be inserted with @kbd{C-c C-i} (@code{mh-insert-letter}). | |
| 5030 This command prompts you for the folder and message number, which | |
| 5031 defaults to the current message in that folder. It then inserts the | |
| 5032 messages, indented by @code{mh-ins-buf-prefix} (@samp{> }) unless | |
| 5033 @code{mh-yank-behavior} is set to one of the supercite flavors in | |
| 5034 which case supercite is used to format the message. Certain | |
| 5035 undesirable header fields (see | |
| 5036 @code{mh-invisible-header-fields-compiled}) are removed before | |
| 5037 insertion. | |
| 5038 | |
| 5039 If given a prefix argument (like @kbd{C-u C-c C-i}), the header is | |
| 5040 left intact, the message is not indented, and @samp{> } is not | |
| 5041 inserted before each line. This command leaves the mark before the | |
| 5042 letter and point after it. | |
| 5043 | |
| 5044 @node Signature, Picture, Inserting Messages, Editing Drafts | |
| 5045 @section Inserting Your Signature | |
| 5046 | |
| 5047 @cindex signature | |
| 5048 @findex mh-insert-signature | |
| 5049 @kindex C-c C-s | |
| 5050 | |
| 5051 You can insert your signature at the current cursor location with the | |
| 5052 command @kbd{C-c C-s} (@code{mh-insert-signature}). | |
| 5053 | |
| 5054 @cindex files, @file{.signature} | |
| 5055 @cindex @file{.signature} | |
| 5056 @cindex vCard | |
| 5057 @vindex mh-signature-file-name | |
| 5058 | |
| 5059 By default, the text of your signature is taken from the file | |
| 5060 @file{~/.signature}. You can read from other sources by changing the | |
| 5061 option @code{mh-signature-file-name}. This file may contain a | |
| 5062 @dfn{vCard} in which case an attachment is added with the vCard. | |
| 5063 | |
| 5064 @findex mh-signature-separator-p | |
| 5065 @vindex mh-signature-file-name | |
| 5066 @vindex mh-signature-separator | |
| 5067 @vindex mh-signature-separator-regexp | |
| 5068 | |
| 5069 The option @code{mh-signature-file-name} may also be a symbol, in | |
| 5070 which case that function is called. You may not want a signature | |
| 5071 separator to be added for you; instead you may want to insert one | |
| 5072 yourself. Options that you may find useful to do this include | |
| 5073 @code{mh-signature-separator} (when inserting a signature separator) | |
| 5074 and @code{mh-signature-separator-regexp} (for finding said separator). | |
| 5075 The function @code{mh-signature-separator-p}, which reports @code{t} | |
| 5076 if the buffer contains a separator, may be useful as well. | |
| 5077 | |
| 5078 @cindex signature separator | |
| 5079 @vindex mh-signature-separator-flag | |
| 5080 | |
| 5081 A signature separator (@code{"-- "}) will be added if the signature | |
| 5082 block does not contain one and @code{mh-signature-separator-flag} is | |
| 5083 on. It is not recommended that you change this option since various | |
| 5084 mail user agents, including MH-E, use the separator to present the | |
| 5085 signature differently, and to suppress the signature when replying or | |
| 5086 yanking a letter into a draft. | |
| 5087 | |
| 5088 @vindex mh-insert-signature-hook | |
| 5089 @vindex mh-signature-file-name | |
| 5090 | |
| 5091 The hook @code{mh-insert-signature-hook} is run after the signature is | |
| 5092 inserted. Hook functions may access the actual name of the file or the | |
| 5093 function used to insert the signature with | |
| 5094 @code{mh-signature-file-name}. | |
| 5095 | |
| 5096 The signature can also be inserted using Identities. | |
| 5097 @xref{Identities}. | |
| 5098 | |
| 5099 @node Picture, Adding Attachments, Signature, Editing Drafts | |
| 5100 @section Inserting Your Picture | |
| 5101 | |
| 5102 @cindex @file{.face} | |
| 5103 @cindex files, @file{.face} | |
| 5104 @vindex mh-x-face-file | |
| 5105 | |
| 5106 You can insert your picture in the header of your mail message so that | |
| 5107 recipients see your face in the @samp{From:} header field if their | |
| 5108 mail user agent is sophisticated enough. In MH-E, this is done by | |
| 5109 placing your image in the file named by the option | |
| 5110 @code{mh-x-face-file} which is @file{~/.face} by default. | |
| 5111 | |
| 5112 @cindex @samp{Face:} header field | |
| 5113 @cindex @samp{X-Face:} header field | |
| 5114 @cindex @samp{X-Image-URL:} header field | |
| 5115 @cindex header field, @samp{Face:} | |
| 5116 @cindex header field, @samp{X-Face:} | |
| 5117 @cindex header field, @samp{X-Image-URL:} | |
| 5118 | |
| 5119 If the file starts with either of the strings @samp{X-Face:}, | |
| 5120 @samp{Face:} or @samp{X-Image-URL:} then the contents are added to the | |
| 5121 message header verbatim. Otherwise it is assumed that the file | |
| 5122 contains the value of the @samp{X-Face:} header field. | |
| 5123 | |
| 5124 @cindex @command{compface} | |
| 5125 @cindex Unix commands, @command{compface} | |
| 5126 | |
| 5127 The @samp{X-Face:} header field, which is a low-resolution, black and | |
| 5128 white image, can be generated using the | |
| 5129 @uref{ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z, | |
| 5130 @command{compface}} command. The @uref{http://www.dairiki.org/xface/, | |
| 5131 @cite{Online X-Face Converter}} is a useful resource for quick | |
| 5132 conversion of images into @samp{X-Face:} header fields. | |
| 5133 | |
| 5134 Use the @uref{http://quimby.gnus.org/circus/face/make-face, | |
| 5135 @command{make-face}} script to convert a JPEG image to the higher | |
| 5136 resolution, color, @samp{Face:} header field. | |
| 5137 | |
| 5138 The URL of any image can be used for the @samp{X-Image-URL:} field and | |
| 5139 no processing of the image is required. | |
| 5140 | |
| 5141 @vindex mh-x-face-file | |
| 5142 | |
| 5143 To prevent the setting of any of these header fields, either set | |
| 5144 @code{mh-x-face-file} to @code{nil}, or simply ensure that the file | |
| 5145 defined by this option doesn't exist. | |
| 5146 | |
| 5147 @xref{Viewing}, to see how these header fields are displayed in MH-E. | |
| 5148 | |
| 5149 @node Adding Attachments, Sending PGP, Picture, Editing Drafts | |
| 5150 @section Adding Attachments | |
| 5151 | |
| 5152 @cindex @command{mhbuild} | |
| 5153 @cindex @command{mhn} | |
| 5154 @cindex MH commands, @command{mhbuild} | |
| 5155 @cindex MH commands, @command{mhn} | |
| 5156 @cindex MIME | |
| 5157 @cindex multimedia mail | |
| 5158 | |
| 5159 MH-E has the capability to create multimedia messages. It uses the | |
| 5160 @sc{mime} (Multipurpose Internet Mail Extensions) | |
| 5161 protocol@footnote{@sc{mime} is defined in | |
| 5162 @uref{http://www.rfc-editor.org/rfc/rfc2045.txt, RFC 2045}.} The | |
| 5163 @sc{mime} protocol allows you to incorporate images, sound, video, | |
| 5164 binary files, and even commands that fetch a file with @samp{ftp} when | |
| 5165 your recipient reads the message! | |
| 5166 | |
| 5167 @kindex C-c C-m | |
| 5168 | |
| 5169 If you were to create a multimedia message with plain MH commands, you | |
| 5170 would insert @command{mhbuild} or @command{mhn} directives (henceforth | |
| 5171 called @dfn{MH-style directives} into your draft and use the | |
| 5172 @command{mhbuild} command in nmh or @command{mhn} command in MH and | |
| 5173 GNU mailutils to expand them. MH-E works in much the same way, | |
| 5174 although it provides a handful of commands prefixed with @kbd{C-c C-m} | |
| 5175 to insert the directives so you don't need to remember the syntax of | |
| 5176 them. Remember: you can always add MH-style directives by | |
| 5177 hand@footnote{See the section | |
| 5178 @uref{@value{MH-BOOK-HOME}/usimim.html#SeMIMa, Sending MIME Mail} in | |
| 5179 the MH book.}. | |
| 5180 | |
| 5181 @cindex MIME Meta Language (MML) | |
| 5182 @cindex MML | |
| 5183 @vindex mh-compose-insertion | |
| 5184 | |
| 5185 In addition to MH-style directives, MH-E also supports MML (@sc{mime} | |
| 5186 Meta Language) tags@footnote{ | |
| 5187 @ifinfo | |
| 5188 @c Although the third argument should default to the | |
| 5189 @c first, makeinfo goes to the wrong Info file without it being | |
| 5190 @c different--it seems to be getting our own Composing node. | |
| 5191 @xref{Composing,,Composing with MML,emacs-mime}. | |
| 5192 @end ifinfo | |
| 5193 @ifnotinfo | |
| 5194 See the section Composing in | |
| 5195 @uref{http://www.gnus.org/manual/emacs-mime.html, @cite{The Emacs MIME | |
| 5196 Manual}}. | |
| 5197 @end ifnotinfo | |
| 5198 }. The option @code{mh-compose-insertion} can be used to choose | |
| 5199 between them. By default, this option is set to @samp{MML} if it is | |
| 5200 supported since it provides a lot more functionality. This option can | |
| 5201 also be set to @samp{MH} if MH-style directives are preferred. | |
| 5202 | |
| 5203 @cindex media types | |
| 5204 @cindex MIME, media types | |
| 5205 | |
| 5206 The MH-E @sc{mime} commands require a @dfn{media type} for each body | |
| 5207 part or attachment. For example, a PDF document is of type | |
| 5208 @samp{application/pdf} and an HTML document is of type | |
| 5209 @samp{text/html}. Some commands fill in the media type for you, | |
| 5210 whereas others require you to enter one. | |
| 5211 | |
| 5212 @cindex @command{file} | |
| 5213 @cindex @file{/etc/mime.types} | |
| 5214 @cindex files, @file{/etc/mime.types} | |
| 5215 @cindex Unix commands, @command{file} | |
| 5216 @findex mailcap-mime-types | |
| 5217 | |
| 5218 In the cases where MH-E can do so, it will determine the media type | |
| 5219 automatically. It uses the @command{file} command to do this. Failing | |
| 5220 that, the Emacs function @code{mailcap-mime-types} is used to provide | |
| 5221 a list from which to choose. This function usually reads the file | |
| 5222 @file{/etc/mime.types}. | |
| 5223 | |
| 5224 Whether the media type is chosen automatically, or you choose it from | |
| 5225 a list, use the type that seems to match best the file that you are | |
| 5226 including. In the case of binaries, the media type | |
| 5227 @samp{application/x-executable} can be useful. If you can't find an | |
| 5228 appropriate media type, use @samp{text/plain} for text messages and | |
| 5229 @samp{application/octet-stream} for everything else. | |
| 5230 | |
| 5231 @cindex content description | |
| 5232 @cindex MIME, content description | |
| 5233 | |
| 5234 You are also sometimes asked for a @dfn{content description}. This is | |
| 5235 simply an optional brief phrase, in your own words, that describes the | |
| 5236 object. If you don't care to enter a content description, just press | |
| 5237 return and none will be included; however, a reader may skip over | |
| 5238 multimedia fields unless the content description is compelling. | |
| 5239 | |
| 5240 You can also create your own @sc{mime} body parts. In the following | |
| 5241 example, I describe how you can create and edit a @samp{text/enriched} | |
| 5242 body part to liven up your plain text messages with boldface, | |
| 5243 underlining, and italics. I include an Emacs function which inserts | |
| 5244 enriched text tags. | |
| 5245 | |
| 5246 @smalllisp | |
| 5247 @group | |
| 5248 (defvar enriched-text-types '(("b" . "bold") ("i" . "italic") | |
| 5249 ("u" . "underline") | |
| 5250 ("s" . "smaller") ("B" . "bigger") | |
| 5251 ("f" . "fixed") | |
| 5252 ("c" . "center")) | |
| 5253 "Alist of (final-character . tag) choices for add-enriched-text. | |
| 5254 Additional types can be found in RFC 1563.") | |
| 5255 | |
| 5256 (defun add-enriched-text (begin end) | |
| 5257 "Add enriched text tags around region. | |
| 5258 The tag used comes from the list enriched-text-types and is | |
| 5259 specified by the last keystroke of the command. When called from Lisp, | |
| 5260 arguments are BEGIN and END@." | |
| 5261 (interactive "r") | |
| 5262 ;; @r{Set type to the tag indicated by the last keystroke.} | |
| 5263 (let ((type (cdr (assoc (char-to-string (logior last-input-char ?@w{`})) | |
| 5264 enriched-text-types)))) | |
| 5265 (save-restriction ; @r{restores state from narrow-to-region} | |
| 5266 (narrow-to-region begin end) ; @r{narrow view to region} | |
| 5267 (goto-char (point-min)) ; @r{move to beginning of text} | |
| 5268 (insert "<" type ">") ; @r{insert beginning tag} | |
| 5269 (goto-char (point-max)) ; @r{move to end of text} | |
| 5270 (insert "</" type ">")))) ; @r{insert terminating tag} | |
| 5271 @i{Emacs function for entering enriched text} | |
| 5272 | |
| 5273 @end group | |
| 5274 @end smalllisp | |
| 5275 | |
| 5276 To use the function @code{add-enriched-text}, first add it to | |
| 5277 @file{~/.emacs} and create key bindings for it (@pxref{Composing}). | |
| 5278 | |
| 5279 Then, in your plain text message, set the mark with @kbd{C-@@} or | |
| 5280 @kbd{C-@key{SPC}}, type in the text to be highlighted, and type @kbd{C-c t | |
| 5281 b}. This adds @samp{<bold>} where you set the mark and adds | |
| 5282 @samp{</bold>} at the location of your cursor, giving you something | |
| 5283 like: @samp{You should be <bold>very</bold>}. | |
| 5284 | |
| 5285 Before sending this message, use @kbd{C-c C-m C-m} | |
| 5286 (@code{mh-mml-to-mime})@footnote{Use @kbd{C-c C-e} | |
| 5287 (@code{mh-mh-to-mime}) if you're using MH-style directives.} to add | |
| 5288 MIME header fields. Then replace @samp{text/plain} with | |
| 5289 @samp{text/enriched} in the @samp{Content-Type:} header field. | |
| 5290 | |
| 5291 You may also be interested in investigating @code{sgml-mode}. | |
| 5292 | |
| 5293 @subheading Including Files | |
| 5294 | |
| 5295 @cindex attachments, inserting | |
| 5296 @cindex images | |
| 5297 @cindex MIME, images | |
| 5298 @cindex MIME, sound | |
| 5299 @cindex MIME, video | |
| 5300 @cindex sound | |
| 5301 @cindex video | |
| 5302 @findex mh-compose-insertion | |
| 5303 @kindex C-c C-m C-i | |
| 5304 @kindex C-c C-m i | |
| 5305 @vindex mh-compose-insertion | |
| 5306 | |
| 5307 Binaries, images, sound, and video can be inserted in your message | |
| 5308 with the command @kbd{C-c C-m C-i} (@code{mh-compose-insertion}). You | |
| 5309 are prompted for the filename containing the object, the media type if | |
| 5310 it cannot be determined automatically, and a content description. If | |
| 5311 you're using MH-style directives, you will also be prompted for | |
| 5312 additional attributes. | |
| 5313 | |
| 5314 @subheading Forwarding Multimedia Messages | |
| 5315 | |
| 5316 @findex mh-compose-forward | |
| 5317 @kindex C-c C-m C-f | |
| 5318 @kindex C-c C-m f | |
| 5319 | |
| 5320 Mail may be forwarded with @sc{mime} using the command @kbd{C-c C-m | |
| 5321 C-f} (@code{mh-compose-forward}). You are prompted for a content | |
| 5322 description, the name of the folder in which the messages to forward | |
| 5323 are located, and a range of messages, which defaults to the current | |
| 5324 message in that folder. @xref{Ranges}. | |
| 5325 | |
| 5326 @subheading Including an FTP Reference | |
| 5327 | |
| 5328 @cindex @command{ftp} | |
| 5329 @cindex MIME, @command{ftp} | |
| 5330 @cindex Unix commands, @command{ftp} | |
| 5331 @findex mh-mh-compose-anon-ftp | |
| 5332 @kindex C-c C-m C-g | |
| 5333 @kindex C-c C-m g | |
| 5334 | |
| 5335 You can have your message initiate an @command{ftp} transfer when the | |
| 5336 recipient reads the message. To do this, use the command @kbd{C-c C-m | |
| 5337 C-g} (@code{mh-mh-compose-anon-ftp}). You are prompted for the remote | |
| 5338 host and filename, the media type, and the content description. | |
| 5339 | |
| 5340 @subheading Including tar Files | |
| 5341 | |
| 5342 @cindex @command{ftp} | |
| 5343 @cindex @command{tar} | |
| 5344 @cindex MIME, @command{ftp} | |
| 5345 @cindex MIME, @command{tar} | |
| 5346 @cindex Unix commands, @command{ftp} | |
| 5347 @cindex Unix commands, @command{tar} | |
| 5348 @findex mh-mh-compose-anon-ftp | |
| 5349 @findex mh-mh-compose-external-compressed-tar | |
| 5350 @kindex C-c C-m C-g | |
| 5351 @kindex C-c C-m C-t | |
| 5352 @kindex C-c C-m t | |
| 5353 | |
| 5354 If the remote file is a compressed tar file, you can use @kbd{C-c C-m | |
| 5355 C-t} (@code{mh-mh-compose-external-compressed-tar}). Then, in addition | |
| 5356 to retrieving the file via anonymous @emph{ftp} as per the command | |
| 5357 @kbd{C-c C-m C-g} (@code{mh-mh-compose-anon-ftp}), the file will also | |
| 5358 be uncompressed and untarred. You are prompted for the remote host and | |
| 5359 filename and the content description. | |
| 5360 | |
| 5361 @subheading Including Other External Files | |
| 5362 | |
| 5363 @findex mh-mh-compose-external-type | |
| 5364 @kindex C-c C-m C-x | |
| 5365 @kindex C-c C-m x | |
| 5366 | |
| 5367 The command @kbd{C-c C-m C-x} (@code{mh-mh-compose-external-type}) is | |
| 5368 a general utility for referencing external files. In fact, all of the | |
| 5369 other commands that insert tags to access external files call this | |
| 5370 command. You are prompted for the access type, remote host and | |
| 5371 filename, and content type. If you provide a prefix argument, you are | |
| 5372 also prompted for a content description, attributes, parameters, and a | |
| 5373 comment. | |
| 5374 | |
| 5375 @subheading Previewing Multimedia Messages | |
| 5376 | |
| 5377 When you are finished editing a @sc{mime} message, it might look like this: | |
| 5378 | |
| 5379 @cartouche | |
| 5380 @smallexample | |
| 5381 3 t08/24 root received fax files on Wed Aug 24 11:00: | |
| 5382 4+t08/24 To:wohler Test<<This is a test message to get the | |
| 5383 | |
| 5384 | |
| 5385 | |
| 5386 | |
| 5387 | |
| 5388 --:%% @{+inbox@} 4 msgs (1-4) Bot L4 (MH-Folder Show)--------------- | |
| 5389 To: wohler | |
| 5390 cc: | |
| 5391 Subject: Test of MIME | |
| 5392 -------- | |
| 5393 Here is the SETI@@Home logo: | |
| 5394 | |
| 5395 <#part type="image/x-xpm" filename="~/lib/images/setiathome.xpm" | |
| 5396 disposition=inline description="SETI@@home logo"> | |
| 5397 <#/part> | |
| 5398 --:** @{draft@} All L8 (MH-Letter)---------------------------------- | |
| 5399 | |
| 5400 @end smallexample | |
| 5401 @end cartouche | |
| 5402 @i{MH-E @sc{mime} draft} | |
| 5403 | |
| 5404 @findex mh-mml-to-mime | |
| 5405 @kindex C-c C-m C-m | |
| 5406 @kindex C-c C-m m | |
| 5407 | |
| 5408 Typically, you send a message with attachments just like any other | |
| 5409 message (@pxref{Sending Message}). | |
| 5410 | |
| 5411 @findex mh-mml-to-mime | |
| 5412 @kindex C-c C-m C-m | |
| 5413 | |
| 5414 However, you may take a sneak preview of the @sc{mime} encoding if you | |
| 5415 wish by running the command @kbd{C-c C-m C-m} (@code{mh-mml-to-mime}). | |
| 5416 The following screen shows the @sc{mime} encoding specified by the | |
| 5417 tags. You can see why mail user agents are usually built to hide these | |
| 5418 details from the user. | |
| 5419 | |
| 5420 @cartouche | |
| 5421 @smallexample | |
| 5422 To: wohler | |
| 5423 cc: | |
| 5424 Subject: Test of MIME | |
| 5425 X-Mailer: MH-E 8.0; nmh 1.1; GNU Emacs 22.1 | |
| 5426 MIME-Version: 1.0 | |
| 5427 Content-Type: multipart/mixed; boundary="=-=-=" | |
| 5428 -------- | |
| 5429 --=-=-= | |
| 5430 | |
| 5431 Here is the SETI@@Home logo: | |
| 5432 | |
| 5433 | |
| 5434 --=-=-= | |
| 5435 Content-Type: image/x-xpm | |
| 5436 Content-Disposition: inline; filename=setiathome.xpm | |
| 5437 Content-Transfer-Encoding: base64 | |
| 5438 Content-Description: SETI@@home logo | |
| 5439 | |
| 5440 LyogWFBNICovCnN0YXRpYyBjaGFyICogc2V0aWF0aG9tZV94cG1bXSA9IHsKIjQ1IDQ1IDc2N | |
| 5441 --:-- @{draft@} Top L1 (MH-Letter)---------------------------------- | |
| 5442 | |
| 5443 @end smallexample | |
| 5444 @end cartouche | |
| 5445 @i{MH-E @sc{mime} draft ready to send} | |
| 5446 | |
| 5447 @cindex undo effects of mh-mml-to-mime | |
| 5448 | |
| 5449 This action can be undone by running @kbd{C-_} (@code{undo}). | |
| 5450 | |
| 5451 @cindex @command{mhbuild} | |
| 5452 @cindex @command{mhn} | |
| 5453 @cindex MH commands, @command{mhbuild} | |
| 5454 @cindex MH commands, @command{mhn} | |
| 5455 @cindex undo effects of mh-mh-to-mime | |
| 5456 @findex mh-mh-to-mime | |
| 5457 @findex mh-mh-to-mime-undo | |
| 5458 @kindex C-c C-e | |
| 5459 @kindex C-c C-m C-m | |
| 5460 @kindex C-c C-m C-u | |
| 5461 @kindex C-c C-m u | |
| 5462 | |
| 5463 If you're using MH-style directives, use @kbd{C-c C-e} | |
| 5464 (@code{mh-mh-to-mime}) instead of @kbd{C-c C-m C-m}. This runs the | |
| 5465 command @command{mhbuild} (@command{mhn}) on the message which expands | |
| 5466 the tags@footnote{See the section | |
| 5467 @uref{@value{MH-BOOK-HOME}/usimim.html#SeMIMa, Sending MIME Mail} in | |
| 5468 the MH book.}. This action can be undone by running @kbd{C-c C-m C-u} | |
| 5469 (@code{mh-mh-to-mime-undo}), which works by reverting to a backup | |
| 5470 file. You are prompted to confirm this action, but you can avoid the | |
| 5471 confirmation by adding an argument (for example, @kbd{C-u C-c C-m | |
| 5472 C-u}). | |
| 5473 | |
| 5474 @kindex C-c C-e | |
| 5475 @vindex mh-mh-to-mime-args | |
| 5476 | |
| 5477 If you wish to pass additional arguments to @command{mhbuild} | |
| 5478 (@command{mhn}) to affect how it builds your message, use the option | |
| 5479 @code{mh-mh-to-mime-args}. For example, you can build a consistency | |
| 5480 check into the message by setting @code{mh-mh-to-mime-args} to | |
| 5481 @samp{-check}. The recipient of your message can then run | |
| 5482 @samp{mhbuild -check} on the message---@command{mhbuild} | |
| 5483 (@command{mhn}) will complain if the message has been corrupted on the | |
| 5484 way. The command @kbd{C-c C-e} only consults this option when given a | |
| 5485 prefix argument (as in @kbd{C-u C-c C-e}). | |
| 5486 | |
| 5487 @kindex C-c C-e | |
| 5488 @vindex mh-mh-to-mime-hook | |
| 5489 | |
| 5490 The hook @code{mh-mh-to-mime-hook} is called after the message has | |
| 5491 been formatted by @kbd{C-c C-e}. | |
| 5492 | |
| 5493 @node Sending PGP, Checking Recipients, Adding Attachments, Editing Drafts | |
| 5494 @section Signing and Encrypting Messages | |
| 5495 | |
| 5496 @cindex signing messages | |
| 5497 @cindex encrypting messages | |
| 5498 @cindex RFC 3156 | |
| 5499 | |
| 5500 MH-E can sign and encrypt messages as defined in | |
| 5501 @uref{http://www.rfc-editor.org/rfc/rfc3156.txt, RFC 3156}. If you | |
| 5502 should choose to sign or encrypt your message, use one of the | |
| 5503 following commands to do so any time before sending your message. | |
| 5504 | |
| 5505 @findex mh-mml-secure-message-encrypt | |
| 5506 @findex mh-mml-secure-message-sign | |
| 5507 @findex mh-mml-secure-message-signencrypt | |
| 5508 @kindex C-c C-m C-e | |
| 5509 @kindex C-c C-m C-s | |
| 5510 @kindex C-c C-m e e | |
| 5511 @kindex C-c C-m e s | |
| 5512 @kindex C-c C-m s e | |
| 5513 @kindex C-c C-m s s | |
| 5514 | |
| 5515 The command @kbd{C-c C-m C-s} (@code{mh-mml-secure-message-sign}) | |
| 5516 inserts the following tag: | |
| 5517 | |
| 5518 @smallexample | |
| 5519 <#secure method=pgpmime mode=sign> | |
| 5520 @end smallexample | |
| 5521 | |
| 5522 This is used to sign your message digitally. Likewise, the command | |
| 5523 @kbd{C-c C-m C-e} (@code{mh-mml-secure-message-encrypt}) inserts the | |
| 5524 following tag: | |
| 5525 | |
| 5526 @smallexample | |
| 5527 <#secure method=pgpmime mode=encrypt> | |
| 5528 @end smallexample | |
| 5529 | |
| 5530 This is used to encrypt your message. Finally, the command @kbd{C-c | |
| 5531 C-m s e} (@code{mh-mml-secure-message-signencrypt}) inserts the | |
| 5532 following tag: | |
| 5533 | |
| 5534 @smallexample | |
| 5535 <#secure method=pgpmime mode=signencrypt> | |
| 5536 @end smallexample | |
| 5537 | |
| 5538 @findex mh-mml-unsecure-message | |
| 5539 @kindex C-c C-m C-n | |
| 5540 @kindex C-c C-m n | |
| 5541 @vindex mh-mml-method-default | |
| 5542 | |
| 5543 This is used to sign and encrypt your message. In each of these cases, | |
| 5544 a proper multipart message is created for you when you send the | |
| 5545 message. Use the command @kbd{C-c C-m C-n} | |
| 5546 (@code{mh-mml-unsecure-message}) to remove these tags. Use a prefix | |
| 5547 argument (as in @kbd{C-u C-c C-m s e}) to be prompted for one of the | |
| 5548 possible security methods (see @code{mh-mml-method-default}). | |
| 5549 | |
| 5550 @vindex mh-mml-method-default | |
| 5551 | |
| 5552 The option @code{mh-mml-method-default} is used to select between a | |
| 5553 variety of mail security mechanisms. The default is @samp{PGP (MIME)} | |
| 5554 if it is supported; otherwise, the default is @samp{None}. Other | |
| 5555 mechanisms include vanilla @samp{PGP} and @samp{S/MIME}. | |
| 5556 | |
| 5557 @cindex @samp{pgg} customization group | |
| 5558 @cindex PGG | |
| 5559 @cindex customization group, @samp{pgg} | |
| 5560 | |
| 5561 The @samp{pgg} customization group may have some settings which may | |
| 5562 interest you. | |
| 5563 @iftex | |
| 5564 See @cite{The PGG Manual}. | |
| 5565 @end iftex | |
| 5566 @ifinfo | |
| 5567 @xref{Top, , The PGG Manual, pgg, The PGG Manual}. | |
| 5568 @end ifinfo | |
| 5569 @ifhtml | |
| 5570 See | |
| 5571 @uref{http://www.dk.xemacs.org/Documentation/packages/html/pgg.html, | |
| 5572 @cite{The PGG Manual}}. | |
| 5573 @end ifhtml | |
| 5574 | |
| 5575 @cindex header field, @samp{Fcc:} | |
| 5576 @cindex @samp{Fcc:} header field | |
| 5577 @vindex pgg-encrypt-for-me | |
| 5578 | |
| 5579 In particular, I turn on the option @code{pgg-encrypt-for-me} so that | |
| 5580 all messages I encrypt are encrypted with my public key as well. If | |
| 5581 you keep a copy of all of your outgoing mail with a @samp{Fcc:} header | |
| 5582 field, this setting is vital so that you can read the mail you write! | |
| 5583 | |
| 5584 @node Checking Recipients, Sending Message, Sending PGP, Editing Drafts | |
| 5585 @section Checking Recipients | |
| 5586 | |
| 5587 @cindex @samp{*MH-E Recipients*} | |
| 5588 @cindex @command{whom} | |
| 5589 @cindex MH commands, @command{whom} | |
| 5590 @cindex buffers, @samp{*MH-E Recipients*} | |
| 5591 @cindex checking recipients | |
| 5592 @cindex recipients, checking | |
| 5593 @findex mh-check-whom | |
| 5594 @kindex C-c C-w | |
| 5595 | |
| 5596 The command @kbd{C-c C-w} (@code{mh-check-whom}) expands aliases so | |
| 5597 you can check the actual address(es) in the alias. A new buffer named | |
| 5598 @samp{*MH-E Recipients*} is created with the output of @command{whom} | |
| 5599 (@pxref{Miscellaneous})@footnote{See the section | |
| 5600 @uref{@value{MH-BOOK-HOME}/senove.html#WhaPro, What now? -- and the | |
| 5601 whatnow Program} in the MH book.}. | |
| 5602 | |
| 5603 @node Sending Message, Killing Draft, Checking Recipients, Editing Drafts | |
| 5604 @section Sending a Message | |
| 5605 | |
| 5606 @cindex buffers, @samp{*MH-E Mail Delivery*} | |
| 5607 @cindex @samp{*MH-E Mail Delivery*} | |
| 5608 @cindex sending mail | |
| 5609 @findex mh-send-letter | |
| 5610 @kindex C-c C-c | |
| 5611 | |
| 5612 When you are all through editing a message, you send it with the | |
| 5613 command @kbd{C-c C-c} (@code{mh-send-letter}). You can give a prefix | |
| 5614 argument (as in @kbd{C-u C-c C-c}) to monitor the first stage of the | |
| 5615 delivery; this output can be found in a buffer called @samp{*MH-E Mail | |
| 5616 Delivery*} (@pxref{Miscellaneous}). | |
| 5617 | |
| 5618 @cindex sending mail | |
| 5619 @cindex spell check | |
| 5620 @findex ispell-message | |
| 5621 @kindex C-c C-c | |
| 5622 @vindex mh-before-send-letter-hook | |
| 5623 | |
| 5624 The hook @code{mh-before-send-letter-hook} is run at the beginning of | |
| 5625 the command @kbd{C-c C-c}. For example, if you want to check your | |
| 5626 spelling in your message before sending, add the function | |
| 5627 @code{ispell-message}. | |
| 5628 | |
| 5629 @cindex @command{send} | |
| 5630 @cindex MH commands, @command{send} | |
| 5631 @vindex mh-send-prog | |
| 5632 | |
| 5633 In case the MH @command{send} program@footnote{See the section | |
| 5634 @uref{@value{MH-BOOK-HOME}/sensen.html, Sending Some Mail: comp send} | |
| 5635 in the MH book.} is installed under a different name, use | |
| 5636 @code{mh-send-prog} to tell MH-E the name. | |
| 5637 | |
| 5638 @node Killing Draft, , Sending Message, Editing Drafts | |
| 5639 @section Killing the Draft | |
| 5640 | |
| 5641 @cindex killing draft | |
| 5642 @findex kill-buffer | |
| 5643 @findex mh-fully-kill-draft | |
| 5644 @kindex C-c C-q | |
| 5645 @kindex C-x k | |
| 5646 | |
| 5647 If for some reason you are not happy with the draft, you can use the | |
| 5648 command @kbd{C-c C-q} (@code{mh-fully-kill-draft}) to kill the draft | |
| 5649 buffer and delete the draft message. Use the command @kbd{C-x k} | |
| 5650 (@code{kill-buffer}) if you don't want to delete the draft message. | |
| 5651 | |
| 5652 @node Aliases, Identities, Editing Drafts, Top | |
| 5653 @chapter Aliases | |
| 5654 | |
| 5655 @cindex aliases | |
| 5656 | |
| 5657 MH aliases are used in the same way in MH-E as they are in MH. Any | |
| 5658 alias listed as a recipient will be expanded when the message is sent. | |
| 5659 This chapter discusses other things you can do with aliases in MH-E. | |
| 5660 | |
| 5661 @cindex MH-Letter mode | |
| 5662 @cindex modes, MH-Letter | |
| 5663 | |
| 5664 The following commands are available in MH-Letter mode with the | |
| 5665 exception of @code{mh-alias-reload} which can be called from anywhere. | |
| 5666 | |
| 5667 @table @kbd | |
| 5668 @kindex @key{SPC} | |
| 5669 @findex mh-letter-complete-or-space | |
| 5670 @item @key{SPC} | |
| 5671 Perform completion or insert space (@code{mh-letter-complete-or-space}). | |
| 5672 @c ------------------------- | |
| 5673 @kindex M-@key{TAB} | |
| 5674 @findex mh-letter-complete | |
| 5675 @item M-@key{TAB} | |
| 5676 Perform completion on header field or word preceding point | |
| 5677 (@code{mh-letter-complete}). | |
| 5678 @c ------------------------- | |
| 5679 @findex mh-alias-apropos | |
| 5680 @item mh-alias-apropos | |
| 5681 Show all aliases or addresses that match a regular expression. | |
| 5682 @c ------------------------- | |
| 5683 @findex mh-alias-grab-from-field | |
| 5684 @item mh-alias-grab-from-field | |
| 5685 Add alias for the sender of the current message | |
| 5686 @c ------------------------- | |
| 5687 @findex mh-alias-reload | |
| 5688 @item mh-alias-reload | |
| 5689 Reload MH aliases. | |
| 5690 @end table | |
| 5691 | |
| 5692 @cindex @samp{mh-alias} customization group | |
| 5693 @cindex customization group, @samp{mh-alias} | |
| 5694 | |
| 5695 The @samp{mh-alias} customization group contains options associated | |
| 5696 with aliases. | |
| 5697 | |
| 5698 @vtable @code | |
| 5699 @item mh-alias-completion-ignore-case-flag | |
| 5700 On means don't consider case significant in MH alias completion | |
| 5701 (default: @samp{on}). | |
| 5702 @c ------------------------- | |
| 5703 @item mh-alias-expand-aliases-flag | |
| 5704 On means to expand aliases entered in the minibuffer (default: | |
| 5705 @samp{off}). | |
| 5706 @c ------------------------- | |
| 5707 @item mh-alias-flash-on-comma | |
| 5708 Specify whether to flash address or warn on translation (default: @samp{Flash | |
| 5709 but Don't Warn If No Alias}). | |
| 5710 @c ------------------------- | |
| 5711 @item mh-alias-insert-file | |
| 5712 Filename used to store a new MH-E alias (default: @samp{Use Aliasfile | |
| 5713 Profile Component}). | |
| 5714 @c ------------------------- | |
| 5715 @item mh-alias-insertion-location | |
| 5716 Specifies where new aliases are entered in alias files (default: | |
| 5717 @samp{Alphabetical}). | |
| 5718 @c ------------------------- | |
| 5719 @item mh-alias-local-users | |
| 5720 If @samp{on}, local users are added to alias completion (default: | |
| 5721 @samp{on}). | |
| 5722 @c ------------------------- | |
| 5723 @item mh-alias-local-users-prefix | |
| 5724 String prefixed to the real names of users from the password file | |
| 5725 (default: @code{"local."}. | |
| 5726 @c ------------------------- | |
| 5727 @item mh-alias-passwd-gecos-comma-separator-flag | |
| 5728 On means the GECOS field in the password file uses a comma separator | |
| 5729 (default: @samp{on}). | |
| 5730 @end vtable | |
| 5731 | |
| 5732 The following hook is available. | |
| 5733 | |
| 5734 @vtable @code | |
| 5735 @item mh-alias-reloaded-hook | |
| 5736 Hook run by @code{mh-alias-reload} after loading aliases (default: | |
| 5737 @code{nil}). | |
| 5738 @end vtable | |
| 5739 | |
| 5740 @subheading Adding Addresses to Draft | |
| 5741 | |
| 5742 You can use aliases when you are adding recipients to a message. | |
| 5743 | |
| 5744 @findex minibuffer-complete | |
| 5745 @kindex @key{TAB} | |
| 5746 @vindex mh-alias-expand-aliases-flag | |
| 5747 @vindex mh-compose-prompt-flag | |
| 5748 | |
| 5749 In order to use minibuffer prompting for recipients and the subject | |
| 5750 line in the minibuffer, turn on the option | |
| 5751 @code{mh-compose-prompt-flag} (@pxref{Composing}), and use the | |
| 5752 @key{TAB} (@code{minibuffer-complete}) command to complete aliases | |
| 5753 (and optionally local logins) when prompted for the recipients. Turn | |
| 5754 on the option @code{mh-alias-expand-aliases-flag} if you want these | |
| 5755 aliases to be expanded to their respective addresses in the draft. | |
| 5756 | |
| 5757 @findex mh-letter-complete | |
| 5758 @findex mh-letter-complete-or-space | |
| 5759 @kindex @key{SPC} | |
| 5760 @kindex M-@key{TAB} | |
| 5761 | |
| 5762 Otherwise, you can complete aliases in the header of the draft with | |
| 5763 @kbd{M-@key{TAB}} (@code{mh-letter-complete}) or @key{SPC} | |
| 5764 (@code{mh-letter-complete-or-space}). | |
| 5765 | |
| 5766 @vindex mh-alias-completion-ignore-case-flag | |
| 5767 | |
| 5768 As MH ignores case in the aliases, so too does MH-E. However, you may | |
| 5769 turn off the option @code{mh-alias-completion-ignore-case-flag} to | |
| 5770 make case significant which can be used to segregate completion of | |
| 5771 your aliases. You might use uppercase for mailing lists and lowercase | |
| 5772 for people. For example, you might have: | |
| 5773 | |
| 5774 @smallexample | |
| 5775 mark.baushke: Mark Baushke <mdb@@stop.mail-abuse.org> | |
| 5776 MH-E: MH-E Mailing List <mh-e-devel@@stop.mail-abuse.org> | |
| 5777 @end smallexample | |
| 5778 | |
| 5779 When this option is turned off, if you were to type @kbd{M} in the | |
| 5780 @samp{To:} field and then @kbd{M-@key{TAB}}, then you'd get the list; | |
| 5781 if you started with @kbd{m} and then entered @kbd{M-@key{TAB}}, then | |
| 5782 you'd get Mark's address. Note that this option affects completion | |
| 5783 only. If you were to enter @kbd{Mark.Baushke}, it would still be | |
| 5784 identified with your @samp{mark.baushke} alias. | |
| 5785 | |
| 5786 @findex mh-alias-minibuffer-confirm-address | |
| 5787 @findex mh-letter-confirm-address | |
| 5788 @vindex mh-alias-flash-on-comma | |
| 5789 @vindex mh-compose-prompt-flag | |
| 5790 | |
| 5791 To verify that the alias you've entered is valid, the alias will be | |
| 5792 displayed in the minibuffer when you type a comma | |
| 5793 (@code{mh-letter-confirm-address} or | |
| 5794 @code{mh-alias-minibuffer-confirm-address} if the option | |
| 5795 @code{mh-compose-prompt-flag} is turned on). @xref{Composing}. This | |
| 5796 behavior can be controlled with the option | |
| 5797 @code{mh-alias-flash-on-comma} which provides three choices: | |
| 5798 @samp{Flash but Don't Warn If No Alias}, @samp{Flash and Warn If No | |
| 5799 Alias}, and @samp{Don't Flash Nor Warn If No Alias}. | |
| 5800 | |
| 5801 For another way to verify the alias expansion, see @ref{Checking | |
| 5802 Recipients}. | |
| 5803 | |
| 5804 @subheading Loading Aliases | |
| 5805 | |
| 5806 @cindex @command{ali} | |
| 5807 @cindex @file{/etc/nmh/MailAliases} | |
| 5808 @cindex @samp{Aliasfile:} MH profile component | |
| 5809 @cindex MH commands, @command{ali} | |
| 5810 @cindex MH profile component, @samp{Aliasfile:} | |
| 5811 @cindex files, @file{/etc/nmh/MailAliases} | |
| 5812 | |
| 5813 MH-E loads aliases for completion and folder name hints from various | |
| 5814 places. It uses the MH command @command{ali}@footnote{See the section | |
| 5815 @uref{@value{MH-BOOK-HOME}/mh.html, MH Aliases} in the MH book.} to | |
| 5816 read aliases from the files listed in the profile component | |
| 5817 @samp{Aliasfile:} as well as system-wide aliases (for example, | |
| 5818 @file{/etc/nmh/MailAliases}). | |
| 5819 | |
| 5820 @cindex @file{/etc/passwd} | |
| 5821 @cindex files, @file{/etc/passwd} | |
| 5822 | |
| 5823 In addition, aliases are created from @file{/etc/passwd} entries with | |
| 5824 a user ID larger than a magical number, typically 200. This can be a | |
| 5825 handy tool on a machine where you and co-workers exchange messages. | |
| 5826 These aliases have the form @samp{local.@var{first.last}} if a real | |
| 5827 name is present in the password file. Otherwise, the alias will have | |
| 5828 the form @samp{local.@var{login}}. | |
| 5829 | |
| 5830 @vindex mh-alias-local-users-prefix | |
| 5831 | |
| 5832 The prefix @samp{local.} can be modified via the option | |
| 5833 @code{mh-alias-local-users-prefix}. This option can also be set to | |
| 5834 @samp{Use Login}. | |
| 5835 | |
| 5836 For example, consider the following password file entry: | |
| 5837 | |
| 5838 @smallexample | |
| 5839 psg:x:1000:1000:Peter S Galbraith,,,:/home/psg:/bin/tcsh | |
| 5840 @end smallexample | |
| 5841 | |
| 5842 @vindex mh-alias-local-users-prefix | |
| 5843 | |
| 5844 The following settings of option @code{mh-alias-local-users-prefix} | |
| 5845 will produce the associated aliases: | |
| 5846 | |
| 5847 @table @code | |
| 5848 @item "local." | |
| 5849 local.peter.galbraith | |
| 5850 @c ------------------------- | |
| 5851 @item "" | |
| 5852 peter.galbraith | |
| 5853 @c ------------------------- | |
| 5854 @item Use Login | |
| 5855 psg | |
| 5856 @end table | |
| 5857 | |
| 5858 @vindex mh-alias-passwd-gecos-comma-separator-flag | |
| 5859 | |
| 5860 In the example above, commas are used to separate different values | |
| 5861 within the so-called GECOS field. This is a fairly common usage. | |
| 5862 However, in the rare case that the GECOS field in your password file | |
| 5863 is not separated by commas and whose contents may contain commas, you | |
| 5864 can turn the option @code{mh-alias-passwd-gecos-comma-separator-flag} | |
| 5865 off. | |
| 5866 | |
| 5867 @cindex NIS, obtaining local aliases from | |
| 5868 @cindex @samp{ypcat passwd} | |
| 5869 @vindex mh-alias-local-users | |
| 5870 | |
| 5871 If you're on a system with thousands of users you don't know, and the | |
| 5872 loading of local aliases slows MH-E down noticeably, then the local | |
| 5873 alias feature can be disabled by turning off the option | |
| 5874 @code{mh-alias-local-users}. This option also takes a string which is | |
| 5875 executed to generate the password file. For example, use @samp{ypcat | |
| 5876 passwd} to obtain the NIS password file. | |
| 5877 | |
| 5878 @findex mh-alias-reload | |
| 5879 @kindex M-x mh-alias-reload | |
| 5880 @vindex mh-alias-reloaded-hook | |
| 5881 | |
| 5882 Since aliases are updated frequently, MH-E reloads aliases | |
| 5883 automatically whenever an alias lookup occurs if an alias source has | |
| 5884 changed. However, you can reload your aliases manually by calling the | |
| 5885 command @kbd{M-x mh-alias-reload} directly. This command runs | |
| 5886 @code{mh-alias-reloaded-hook} after the aliases have been loaded. | |
| 5887 | |
| 5888 @subheading Adding Aliases | |
| 5889 | |
| 5890 In the past, you have manually added aliases to your alias file(s) | |
| 5891 listed in your @samp{Aliasfile:} profile component. MH-E provides | |
| 5892 other methods for maintaining your alias file(s). | |
| 5893 | |
| 5894 @findex mh-alias-add-alias | |
| 5895 @kindex M-x mh-alias-add-alias | |
| 5896 | |
| 5897 You can use the @kbd{M-x mh-alias-add-alias} command which will prompt | |
| 5898 you for the alias and address that you would like to add. If the alias | |
| 5899 exists already, you will have the choice of inserting the new alias | |
| 5900 before or after the old alias. In the former case, this alias will be | |
| 5901 used when sending mail to this alias. In the latter case, the alias | |
| 5902 serves as an additional folder name hint when filing messages | |
| 5903 (@pxref{Folder Selection}). | |
| 5904 | |
| 5905 Earlier, the alias prefix @samp{local} was presented. You can use | |
| 5906 other prefixes to organize your aliases or disambiguate entries. You | |
| 5907 might use prefixes for locales, jobs, or activities. For example, I | |
| 5908 have: | |
| 5909 | |
| 5910 @smallexample | |
| 5911 @group | |
| 5912 ; Work | |
| 5913 attensity.don.mitchell: Don Mitchell <dmitchell@@stop.mail-abuse.com> | |
| 5914 isharp.don.mitchell: Don Mitchell <donaldsmitchell@@stop.mail-abuse.com> | |
| 5915 ... | |
| 5916 ; Sport | |
| 5917 diving.ken.mayer: Ken Mayer <kmayer@@stop.mail-abuse.com> | |
| 5918 sailing.mike.maloney: Mike Maloney <mmaloney@@stop.mail-abuse.com> | |
| 5919 ... | |
| 5920 ; Personal | |
| 5921 ariane.kolkmann: Ariane Kolkmann <ArianeKolkmann@@stop.mail-abuse.com> | |
| 5922 ... | |
| 5923 @end group | |
| 5924 @end smallexample | |
| 5925 | |
| 5926 Using prefixes instead of postfixes helps you explore aliases during | |
| 5927 completion. If you forget the name of an old dive buddy, you can enter | |
| 5928 @samp{div} and then @key{SPC} to get a listing of all your dive buddies. | |
| 5929 | |
| 5930 @kindex M-x mh-alias-add-address-under-point | |
| 5931 @kindex M-x mh-alias-grab-from-field | |
| 5932 | |
| 5933 An alias for the sender of the current message is added automatically | |
| 5934 by clicking on the @samp{Grab From alias} tool bar button or by running | |
| 5935 the @kbd{M-x mh-alias-grab-from-field} command. Aliases for other | |
| 5936 recipients of the current message are added by placing your cursor | |
| 5937 over the desired recipient and giving the @kbd{M-x | |
| 5938 mh-alias-add-address-under-point} command. | |
| 5939 | |
| 5940 @vindex mh-alias-insert-file | |
| 5941 @vindex mh-alias-insertion-location | |
| 5942 | |
| 5943 The options @code{mh-alias-insert-file} and | |
| 5944 @code{mh-alias-insertion-location} controls how and where these aliases | |
| 5945 are inserted. | |
| 5946 | |
| 5947 @vindex mh-alias-insert-file | |
| 5948 | |
| 5949 The default setting of option @code{mh-alias-insert-file} is @samp{Use | |
| 5950 Aliasfile Profile Component}. This option can also hold the name of a | |
| 5951 file or a list a file names. If this option is set to a list of file | |
| 5952 names, or the @samp{Aliasfile:} profile component contains more than | |
| 5953 one file name, MH-E will prompt for one of them. | |
| 5954 | |
| 5955 @vindex mh-alias-insertion-location | |
| 5956 | |
| 5957 The option @code{mh-alias-insertion-location} is set to | |
| 5958 @samp{Alphabetical} by default. If you organize your alias file in | |
| 5959 other ways, then the settings @samp{Top} and @samp{Bottom} might be | |
| 5960 more appropriate. | |
| 5961 | |
| 5962 @subheading Querying Aliases | |
| 5963 | |
| 5964 @cindex regular expressions, @code{mh-alias-apropos} | |
| 5965 @findex mh-alias-apropos | |
| 5966 @kindex M-x mh-alias-apropos | |
| 5967 | |
| 5968 If you can't quite remember an alias, you can use @kbd{M-x | |
| 5969 mh-alias-apropos} to show all aliases or addresses that match a | |
| 5970 regular expression | |
| 5971 @ifnothtml | |
| 5972 (@pxref{Regexps, , Syntax of Regular Expressions, emacs, The | |
| 5973 GNU Emacs Manual}). | |
| 5974 @end ifnothtml | |
| 5975 @ifhtml | |
| 5976 (see the section | |
| 5977 @uref{http://www.gnu.org/software/emacs/manual/html_node/Regexps.html, | |
| 5978 Syntax of Regular Expressions} in | |
| 5979 @cite{The GNU Emacs Manual}). | |
| 5980 @end ifhtml | |
| 5981 | |
| 5982 @node Identities, Speedbar, Aliases, Top | |
| 5983 @chapter Identities | |
| 5984 | |
| 5985 @cindex identities | |
| 5986 @cindex multiple personalities | |
| 5987 | |
| 5988 MH-E supports the concept of multiple personalities or identities. | |
| 5989 This means that you can easily have a different header and signature | |
| 5990 at home and at work. | |
| 5991 | |
| 5992 @cindex @samp{Identity} menu | |
| 5993 @cindex menu, @samp{Identity} | |
| 5994 | |
| 5995 A couple of commands are used to insert identities in MH-Letter mode | |
| 5996 which are also found in the @samp{Identity} menu. | |
| 5997 | |
| 5998 @table @kbd | |
| 5999 @kindex C-c C-d | |
| 6000 @findex mh-insert-identity | |
| 6001 @item C-c C-d | |
| 6002 Insert fields specified by given identity (@code{mh-insert-identity}). | |
| 6003 @c ------------------------- | |
| 6004 @cindex @samp{Identity > Insert Auto Fields} menu item | |
| 6005 @cindex menu item, @samp{Identity > Insert Auto Fields} | |
| 6006 @kindex C-c M-d | |
| 6007 @findex mh-insert-auto-fields | |
| 6008 @item C-c M-d | |
| 6009 Insert custom fields if recipient found in @code{mh-auto-fields-list} | |
| 6010 (@code{mh-insert-auto-fields}). | |
| 6011 @end table | |
| 6012 | |
| 6013 @cindex @samp{mh-identity} customization group | |
| 6014 @cindex customization group, @samp{mh-identity} | |
| 6015 | |
| 6016 The @samp{mh-identity} customization group contains the following | |
| 6017 options. | |
| 6018 | |
| 6019 @vtable @code | |
| 6020 @item mh-auto-fields-list | |
| 6021 List of recipients for which header lines are automatically inserted | |
| 6022 (default: @code{nil}). | |
| 6023 @c ------------------------- | |
| 6024 @item mh-auto-fields-prompt-flag | |
| 6025 On means to prompt before sending if fields inserted (default: | |
| 6026 @samp{on}) | |
| 6027 @c ------------------------- | |
| 6028 @item mh-identity-default | |
| 6029 Default identity to use when @code{mh-letter-mode} is called (default: | |
| 6030 @samp{None}). | |
| 6031 @c ------------------------- | |
| 6032 @item mh-identity-handlers | |
| 6033 Handler functions for fields in @code{mh-identity-list}. | |
| 6034 @c ------------------------- | |
| 6035 @item mh-identity-list | |
| 6036 List of identities (default: @code{nil}). | |
| 6037 @end vtable | |
| 6038 | |
| 6039 Some of the common header fields that people change depending on the | |
| 6040 context are the @samp{From:} and @samp{Organization:} fields, as well | |
| 6041 as the signature. | |
| 6042 | |
| 6043 @vindex mh-identity-list | |
| 6044 | |
| 6045 This is done by customizing the option @code{mh-identity-list}. In the | |
| 6046 customization buffer for this option, click on the @samp{INS} button | |
| 6047 and enter a label such as @samp{Home} or @samp{Work}. Then click on | |
| 6048 the @samp{INS} button with the label @samp{Add at least one item | |
| 6049 below}. The @samp{Value Menu} has the following menu items: | |
| 6050 | |
| 6051 @table @samp | |
| 6052 @cindex header field, @samp{From:} | |
| 6053 @cindex @samp{From:} header field | |
| 6054 @item From Field | |
| 6055 Specify an alternate @samp{From:} header field. You must include a | |
| 6056 valid email address. A standard format is @samp{First Last | |
| 6057 <login@@host.domain>}. If you use an initial with a period, then you | |
| 6058 must quote your name as in @samp{"First I. Last" | |
| 6059 <login@@host.domain>}. | |
| 6060 @c ------------------------- | |
| 6061 @cindex header field, @samp{Organization:} | |
| 6062 @cindex @samp{Organization:} header field | |
| 6063 @item Organization Field | |
| 6064 People usually list the name of the company where they work here. | |
| 6065 @c ------------------------- | |
| 6066 @item Other Field | |
| 6067 Set any arbitrary header field and value here. Unless the header field | |
| 6068 is a standard one, precede the name of your field's label with | |
| 6069 @samp{X-}, as in @samp{X-Fruit-of-the-Day:}. | |
| 6070 @c ------------------------- | |
| 6071 @item Attribution Verb | |
| 6072 This value overrides the setting of | |
| 6073 @code{mh-extract-from-attribution-verb}. @xref{Inserting Letter}. | |
| 6074 @c ------------------------- | |
| 6075 @cindex signature | |
| 6076 @vindex mh-signature-file-name | |
| 6077 @item Signature | |
| 6078 Set your signature with this item. You can specify the contents of | |
| 6079 @code{mh-signature-file-name}, a file, or a function. | |
| 6080 @xref{Signature}. | |
| 6081 @c ------------------------- | |
| 6082 @item GPG Key ID | |
| 6083 Specify a different key to sign or encrypt messages. | |
| 6084 @end table | |
| 6085 | |
| 6086 @cindex Identity menu | |
| 6087 @cindex menu, Identity | |
| 6088 @findex mh-insert-identity | |
| 6089 @kindex C-c C-d | |
| 6090 | |
| 6091 You can select the identities you have added via the menu called | |
| 6092 @samp{Identity} in the MH-Letter buffer. You can also use @kbd{C-c | |
| 6093 C-d} (@code{mh-insert-identity}). To clear the fields and signature | |
| 6094 added by the identity, select the @samp{None} identity. | |
| 6095 | |
| 6096 @cindex menu item, @samp{Identity > Customize Identities} | |
| 6097 @cindex menu item, @samp{Identity > Save as Default} | |
| 6098 @cindex menu item, @samp{Identity > Set Default for Session} | |
| 6099 @cindex @samp{Identity > Customize Identities} menu item | |
| 6100 @cindex @samp{Identity > Save as Default} menu item | |
| 6101 @cindex @samp{Identity > Set Default for Session} menu item | |
| 6102 @vindex mh-identity-default | |
| 6103 | |
| 6104 The @samp{Identity} menu contains two other items to save you from | |
| 6105 having to set the identity on every message. The menu item @samp{Set | |
| 6106 Default for Session} can be used to set the default identity to the | |
| 6107 current identity until you exit Emacs. The menu item @samp{Save as | |
| 6108 Default} sets the option @code{mh-identity-default} to the current | |
| 6109 identity setting. You can also customize the option | |
| 6110 @code{mh-identity-default} in the usual fashion. If you find that you | |
| 6111 need to add another identity, the menu item @samp{Customize | |
| 6112 Identities} is available for your convenience. | |
| 6113 | |
| 6114 @cindex regular expressions, @code{mh-auto-fields-list} | |
| 6115 @vindex mh-auto-fields-list | |
| 6116 | |
| 6117 The option @code{mh-auto-fields-list} can also be used to set the | |
| 6118 identity depending on the recipient to provide even more control. To | |
| 6119 customize @code{mh-auto-fields-list}, click on the @samp{INS} button | |
| 6120 and enter a regular expression for the recipient's address | |
| 6121 @ifnothtml | |
| 6122 (@pxref{Regexps, , Syntax of Regular Expressions, emacs, The | |
| 6123 GNU Emacs Manual}). | |
| 6124 @end ifnothtml | |
| 6125 @ifhtml | |
| 6126 (see the section | |
| 6127 @uref{http://www.gnu.org/software/emacs/manual/html_node/Regexps.html, | |
| 6128 Syntax of Regular Expressions} in | |
| 6129 @cite{The GNU Emacs Manual}). | |
| 6130 @end ifhtml | |
| 6131 Click on the @samp{INS} button with the @samp{Add at least one item | |
| 6132 below} label. The @samp{Value Menu} contains the following menu items: | |
| 6133 | |
| 6134 @table @samp | |
| 6135 @item Identity | |
| 6136 Select an identity from those configured in @code{mh-identity-list}. | |
| 6137 All of the information for that identity will be added if the | |
| 6138 recipient matches. | |
| 6139 @c ------------------------- | |
| 6140 @cindex @samp{Fcc:} header field | |
| 6141 @cindex header field, @samp{Fcc:} | |
| 6142 @item Fcc Field | |
| 6143 Insert an @samp{Fcc:} header field with the folder you provide. When | |
| 6144 you send the message, MH will put a copy of your message in this | |
| 6145 folder. | |
| 6146 @c ------------------------- | |
| 6147 @cindex @samp{Mail-Followup-To:} header field | |
| 6148 @cindex header field, @samp{Mail-Followup-To:} | |
| 6149 @item Mail-Followup-To Field | |
| 6150 Insert an @samp{Mail-Followup-To:} header field with the recipients | |
| 6151 you provide. If the recipient's mail user agent supports this header | |
| 6152 field@footnote{@samp{Mail-Followup-To:} is supported by nmh.}, then | |
| 6153 their replies will go to the addresses listed. This is useful if their | |
| 6154 replies go both to the list and to you and you don't have a mechanism | |
| 6155 to suppress duplicates. If you reply to someone not on the list, you | |
| 6156 must either remove the @samp{Mail-Followup-To:} field, or ensure the | |
| 6157 recipient is also listed there so that he receives replies to your | |
| 6158 reply. | |
| 6159 @c ------------------------- | |
| 6160 @item Other Field | |
| 6161 Other header fields may be added using this menu item. | |
| 6162 @end table | |
| 6163 | |
| 6164 @findex mh-insert-auto-fields | |
| 6165 @kindex C-c M-d | |
| 6166 @vindex mh-auto-fields-prompt-flag | |
| 6167 | |
| 6168 These fields can only be added after the recipient is known. Because | |
| 6169 you can continue to add recipients as you edit the draft, MH-E waits | |
| 6170 until the message is sent to perform the auto-insertions. This seems | |
| 6171 strange at first, but you'll get used to it. There are two ways to | |
| 6172 help you feel that the desired fields are added. The first is the | |
| 6173 action when the message is sent: if any fields are added | |
| 6174 automatically, you are given a chance to see and to confirm these | |
| 6175 fields before the message is actually sent. You can do away with this | |
| 6176 confirmation by turning off the option | |
| 6177 @code{mh-auto-fields-prompt-flag}. The second method is manual: once | |
| 6178 the header contains one or more recipients, you may run the command | |
| 6179 @kbd{C-c M-d} (@code{mh-insert-auto-fields}) or choose the | |
| 6180 @samp{Identity -> Insert Auto Fields} menu item to insert these fields | |
| 6181 manually. However, if you use this command, the automatic insertion | |
| 6182 when the message is sent is disabled. | |
| 6183 | |
| 6184 @vindex mh-auto-fields-list | |
| 6185 @vindex mh-identity-list | |
| 6186 | |
| 6187 You should avoid using the same header field in | |
| 6188 @code{mh-auto-fields-list} and @code{mh-identity-list} definitions | |
| 6189 that may apply to the same message as the result is undefined. | |
| 6190 | |
| 6191 @vindex mh-identity-handlers | |
| 6192 @vindex mh-identity-list | |
| 6193 | |
| 6194 The option @code{mh-identity-handlers} is used to change the way that | |
| 6195 fields, signatures, and attributions in @code{mh-identity-list} are | |
| 6196 added. To customize @code{mh-identity-handlers}, replace the name of | |
| 6197 an existing handler function associated with the field you want to | |
| 6198 change with the name of a function you have written. You can also | |
| 6199 click on an @samp{INS} button and insert a field of your choice and | |
| 6200 the name of the function you have written to handle it. | |
| 6201 | |
| 6202 @vindex mh-identity-list | |
| 6203 | |
| 6204 The @samp{Field} field can be any field that you've used in your | |
| 6205 @code{mh-identity-list}. The special fields @samp{:attribution-verb}, | |
| 6206 @samp{:signature}, or @samp{:pgg-default-user-id} are used for the | |
| 6207 @code{mh-identity-list} choices @samp{Attribution Verb}, | |
| 6208 @samp{Signature}, and @samp{GPG Key ID} respectively. | |
| 6209 | |
| 6210 The handler associated with the @samp{:default} field is used when no | |
| 6211 other field matches. | |
| 6212 | |
| 6213 The handler functions are passed two or three arguments: the field | |
| 6214 itself (for example, @samp{From}), or one of the special fields (for | |
| 6215 example, @samp{:signature}), and the action @samp{'remove} or | |
| 6216 @samp{'add}. If the action is @samp{'add}, an additional argument | |
| 6217 containing the value for the field is given. | |
| 6218 | |
| 6219 @node Speedbar, Menu Bar, Identities, Top | |
| 6220 @chapter The Speedbar | |
| 6221 | |
| 6222 @cindex folder navigation | |
| 6223 @cindex speedbar | |
| 6224 @findex mh-visit-folder | |
| 6225 @kindex F v | |
| 6226 @kindex M-x speedbar | |
| 6227 @kindex Mouse-2 | |
| 6228 | |
| 6229 You can also use the speedbar | |
| 6230 @ifnothtml | |
| 6231 (@pxref{Speedbar, , Speedbar Frames, emacs, The GNU Emacs Manual},) | |
| 6232 @end ifnothtml | |
| 6233 @ifhtml | |
| 6234 (see the section | |
| 6235 @uref{http://www.gnu.org/software/emacs/manual/html_node/Speedbar.html, | |
| 6236 Speedbar Frames} in @cite{The GNU Emacs Manual}) | |
| 6237 @end ifhtml | |
| 6238 to view your folders. To bring up the speedbar, run @kbd{M-x speedbar | |
| 6239 @key{RET}}. You will see a new frame appear with all of your MH | |
| 6240 folders. Folders with unseen messages appear in boldface. Click on a | |
| 6241 folder name with @kbd{Mouse-2} to visit that folder in a similar | |
| 6242 fashion to the command @kbd{F v} (@code{mh-visit-folder}) | |
| 6243 (@pxref{Folders}). Click on the @samp{+} icon to expand and view the | |
| 6244 sub-folders of that folder. | |
| 6245 | |
| 6246 The speedbar can be manipulated with the keyboard as well. Use the | |
| 6247 Emacs navigational keys (like the arrow keys, or @kbd{C-n}) to move | |
| 6248 the cursor over the desired folder and then use the shortcuts for the | |
| 6249 menu items listed in the table below. | |
| 6250 | |
| 6251 @table @samp | |
| 6252 @findex mh-speed-view | |
| 6253 @item Visit Folder (@key{RET}) | |
| 6254 Visits the selected folder just as if you had used @kbd{F v} | |
| 6255 (@code{mh-speed-view}). | |
| 6256 @c ------------------------- | |
| 6257 @findex mh-speed-expand-folder | |
| 6258 @item Expand Nested Folders (@kbd{+}) | |
| 6259 Expands the selected folder in the speedbar, exposing the children | |
| 6260 folders inside it (@code{mh-speed-expand-folder}). | |
| 6261 @c ------------------------- | |
| 6262 @findex mh-speed-contract-folder | |
| 6263 @item Contract Nested Folders (@kbd{-}) | |
| 6264 Contracts or collapses the selected folder in the speedbar, hiding the | |
| 6265 children folders inside it (@code{mh-speed-contract-folder}). | |
| 6266 @c ------------------------- | |
| 6267 @findex mh-speed-refresh | |
| 6268 @item Refresh Speedbar (@kbd{r}) | |
| 6269 Regenerates the list of folders in the speedbar. Run this command if | |
| 6270 you've added or deleted a folder, or want to update the unseen message | |
| 6271 count before the next automatic update (@code{mh-speed-refresh}). | |
| 6272 @end table | |
| 6273 | |
| 6274 @findex delete-frame | |
| 6275 @kindex C-x 5 0 | |
| 6276 @kindex Mouse-3 | |
| 6277 | |
| 6278 You can click on @kbd{Mouse-3} to bring up a context menu that | |
| 6279 contains these items. Dismiss the speedbar with @kbd{C-x 5 0} | |
| 6280 (@code{delete-frame}). | |
| 6281 | |
| 6282 @cindex @command{flists} | |
| 6283 @cindex MH commands, @command{flists} | |
| 6284 @cindex @samp{mh-speedbar} customization group | |
| 6285 @cindex customization group, @samp{mh-speedbar} | |
| 6286 | |
| 6287 The MH-E speedbar uses the MH command @command{flists}@footnote{See | |
| 6288 the section @uref{@value{MH-BOOK-HOME}/morseq.html#flist, Searching for | |
| 6289 Sequences with flist} in the MH book.} to generate the list of | |
| 6290 folders. The @samp{mh-speedbar} customization group contains the | |
| 6291 following option which controls how often the speedbar calls | |
| 6292 @command{flists}. | |
| 6293 | |
| 6294 @vtable @code | |
| 6295 @item mh-speed-update-interval | |
| 6296 Time between speedbar updates in seconds (default: 60). Set to 0 to | |
| 6297 disable automatic update. | |
| 6298 @end vtable | |
| 6299 | |
| 6300 You can modify the appearance of the folders in the speedbar by | |
| 6301 customizing the following faces. | |
| 6302 | |
| 6303 @vtable @code | |
| 6304 @item mh-speedbar-folder | |
| 6305 Basic folder face. | |
| 6306 @c ------------------------- | |
| 6307 @item mh-speedbar-folder-with-unseen-messages | |
| 6308 Folder face when folder contains unread messages. | |
| 6309 @c ------------------------- | |
| 6310 @item mh-speedbar-selected-folder | |
| 6311 Selected folder face. | |
| 6312 @c ------------------------- | |
| 6313 @item mh-speedbar-selected-folder-with-unseen-messages | |
| 6314 Selected folder face when folder contains unread messages. | |
| 6315 @end vtable | |
| 6316 | |
| 6317 @node Menu Bar, Tool Bar, Speedbar, Top | |
| 6318 @chapter The Menu Bar | |
| 6319 | |
| 6320 @cindex @samp{Folder} menu | |
| 6321 @cindex @samp{Identity} menu | |
| 6322 @cindex @samp{Letter} menu | |
| 6323 @cindex @samp{Message} menu | |
| 6324 @cindex @samp{Search} menu | |
| 6325 @cindex @samp{Sequence} menu | |
| 6326 @cindex Folder menu | |
| 6327 @cindex Identity menu | |
| 6328 @cindex Letter menu | |
| 6329 @cindex MH-Folder mode | |
| 6330 @cindex MH-Letter mode | |
| 6331 @cindex MH-Search mode | |
| 6332 @cindex Message menu | |
| 6333 @cindex Search menu | |
| 6334 @cindex Sequence menu | |
| 6335 @cindex menu bar | |
| 6336 @cindex menu, Folder | |
| 6337 @cindex menu, Identity | |
| 6338 @cindex menu, Letter | |
| 6339 @cindex menu, Message | |
| 6340 @cindex menu, Search | |
| 6341 @cindex menu, Sequence | |
| 6342 @cindex menu, @samp{Folder} | |
| 6343 @cindex menu, @samp{Identity} | |
| 6344 @cindex menu, @samp{Letter} | |
| 6345 @cindex menu, @samp{Message} | |
| 6346 @cindex menu, @samp{Search} | |
| 6347 @cindex menu, @samp{Sequence} | |
| 6348 @cindex modes, MH-Folder | |
| 6349 @cindex modes, MH-Letter | |
| 6350 @cindex modes, MH-Search | |
| 6351 | |
| 6352 For those of you who prefer to mouse and menu instead of using the | |
| 6353 meta-coke-bottle-bucky keys, MH-E provides menu items for most of its | |
| 6354 functions. The MH-Folder buffer adds the @samp{Folder}, | |
| 6355 @samp{Message}, and @samp{Sequence} menus. The MH-Letter buffer adds | |
| 6356 the @samp{Identity} and @samp{Letter} menus. The MH-Search buffer adds | |
| 6357 the @samp{Search} menu. There's no need to list the actual items here, | |
| 6358 as you can more easily see them for yourself, and the functions are | |
| 6359 already described elsewhere in this manual. | |
| 6360 | |
| 6361 For a description of the menu bar, please | |
| 6362 @ifnothtml | |
| 6363 @xref{Menu Bar, , The Menu Bar, emacs, The GNU Emacs Manual}. | |
| 6364 @end ifnothtml | |
| 6365 @ifhtml | |
| 6366 see the section | |
| 6367 @uref{http://www.gnu.org/software/emacs/manual/html_node/Menu-Bar.html, | |
| 6368 The Menu Bar} in @cite{The GNU Emacs Manual}. | |
| 6369 @end ifhtml | |
| 6370 | |
| 6371 The Emacs manual describes how to get online help for a particular | |
| 6372 menu item. You can also look up a menu item in the index of this | |
| 6373 manual in two ways: all of the menu items are listed alphabetically, | |
| 6374 and you can also browse all of the items under the index entry | |
| 6375 @samp{menu item}. | |
| 6376 | |
| 6377 @node Tool Bar, Searching, Menu Bar, Top | |
| 6378 @chapter The Tool Bar | |
| 6379 | |
| 6380 @cindex tool bar | |
| 6381 | |
| 6382 Emacs also provides a graphical tool bar. For a description of the | |
| 6383 tool bar, please | |
| 6384 @ifnothtml | |
| 6385 @xref{Tool Bars, , Tool Bars, emacs, The GNU Emacs Manual}. | |
| 6386 @end ifnothtml | |
| 6387 @ifhtml | |
| 6388 see the section | |
| 6389 @uref{http://www.gnu.org/software/emacs/manual/html_node/Tool-Bars.html, | |
| 6390 Tool Bars} in @cite{The GNU Emacs Manual}. | |
| 6391 @end ifhtml | |
| 6392 | |
| 6393 @cindex @samp{mh-tool-bar} customization group | |
| 6394 @cindex customization group, @samp{mh-tool-bar} | |
| 6395 | |
| 6396 MH-E adds several icons to this tool bar; you can modify the MH-E | |
| 6397 aspects of the tool bar via the @samp{mh-tool-bar} customization group. | |
| 6398 | |
| 6399 @vtable @code | |
| 6400 @item mh-tool-bar-folder-buttons | |
| 6401 List of buttons to include in MH-Folder tool bar (default: a checklist | |
| 6402 too long to list here). | |
| 6403 @c ------------------------- | |
| 6404 @item mh-tool-bar-letter-buttons | |
| 6405 List of buttons to include in MH-Letter tool bar (default: a checklist | |
| 6406 too long to list here). | |
| 6407 @c ------------------------- | |
| 6408 @item mh-tool-bar-search-function | |
| 6409 Function called by the tool bar search button (default: | |
| 6410 @code{mh-search}). | |
| 6411 @c ------------------------- | |
| 6412 @item mh-xemacs-tool-bar-position | |
| 6413 Tool bar location (default: @samp{Same As Default Tool Bar}). | |
| 6414 @c ------------------------- | |
| 6415 @item mh-xemacs-use-tool-bar-flag | |
| 6416 If @samp{on}, use tool bar (default: @samp{on}, if supported). | |
| 6417 @end vtable | |
| 6418 | |
| 6419 In GNU Emacs, icons for some of MH-E's functions are added to the tool | |
| 6420 bar. In XEmacs, you have the opportunity to create a separate tool bar for | |
| 6421 the MH-E icons. | |
| 6422 | |
| 6423 @vindex mh-tool-bar-folder-buttons | |
| 6424 @vindex mh-tool-bar-letter-buttons | |
| 6425 | |
| 6426 In either case, you can select which of these functions you'd like to | |
| 6427 see by customizing the options @code{mh-tool-bar-folder-buttons} and | |
| 6428 @code{mh-tool-bar-letter-buttons}. As you probably guessed, the former | |
| 6429 customizes the tool bar in MH-Folder mode and the latter in MH-Letter | |
| 6430 mode. Both of these options present you with a list of functions; | |
| 6431 check the functions whose icons you want to see and clear the check | |
| 6432 boxes for those you don't. | |
| 6433 | |
| 6434 @findex mh-search | |
| 6435 @vindex mh-tool-bar-search-function | |
| 6436 | |
| 6437 The function associated with the searching icon can be set via the | |
| 6438 option @code{mh-tool-bar-search-function}. By default, this is set to | |
| 6439 @code{mh-search}. @xref{Searching}. You can also choose @samp{Other | |
| 6440 Function} from the @samp{Value Menu} and enter a function of your own | |
| 6441 choosing. | |
| 6442 | |
| 6443 @vindex mh-xemacs-use-tool-bar-flag | |
| 6444 | |
| 6445 XEmacs provides a couple of extra options. The first, | |
| 6446 @code{mh-xemacs-use-tool-bar-flag}, controls whether to show the MH-E | |
| 6447 icons at all. By default, this option is turned on if the window | |
| 6448 system supports tool bars. If your system doesn't support tool bars, | |
| 6449 then you won't be able to turn on this option. | |
| 6450 | |
| 6451 @vindex mh-xemacs-tool-bar-position | |
| 6452 | |
| 6453 The second extra option is @code{mh-xemacs-tool-bar-position} which | |
| 6454 controls the placement of the tool bar along the four edges of the | |
| 6455 frame. You can choose from one of @samp{Same As Default Tool Bar}, | |
| 6456 @samp{Top}, @samp{Bottom}, @samp{Left}, or @samp{Right}. If this | |
| 6457 variable is set to anything other than @samp{Same As Default Tool Bar} | |
| 6458 and the default tool bar is in a different location, then two tool | |
| 6459 bars will be displayed: the MH-E tool bar and the default tool bar. | |
| 6460 | |
| 6461 @node Searching, Threading, Tool Bar, Top | |
| 6462 @chapter Searching Through Messages | |
| 6463 | |
| 6464 @cindex @samp{Search} menu | |
| 6465 @cindex menu, @samp{Search} | |
| 6466 @cindex searching | |
| 6467 @findex mh-search | |
| 6468 @kindex F s | |
| 6469 | |
| 6470 Earlier, the command @kbd{F s} (@code{mh-search}) was introduced which | |
| 6471 helps you find messages that lie buried in your folders | |
| 6472 (@pxref{Folders}). This chapter covers this command in more detail. | |
| 6473 Several commands are used to compose the search criteria and to start | |
| 6474 searching. A couple of them can be found in the @samp{Search} menu. | |
| 6475 | |
| 6476 @table @kbd | |
| 6477 @kindex C-c ? | |
| 6478 @findex mh-help | |
| 6479 @item C-c ? | |
| 6480 Display cheat sheet for the MH-E commands (@code{mh-help}). | |
| 6481 @c ------------------------- | |
| 6482 @cindex @samp{Search > Perform Search} menu item | |
| 6483 @cindex menu item, @samp{Search > Perform Search} | |
| 6484 @kindex C-c C-c | |
| 6485 @findex mh-index-do-search | |
| 6486 @item C-c C-c | |
| 6487 Find messages using @code{mh-search-program} | |
| 6488 (@code{mh-index-do-search}). | |
| 6489 @c ------------------------- | |
| 6490 @cindex @samp{Search > Search with pick} menu item | |
| 6491 @cindex menu item, @samp{Search > Search with pick} | |
| 6492 @kindex C-c C-p | |
| 6493 @findex mh-pick-do-search | |
| 6494 @item C-c C-p | |
| 6495 Find messages using @command{pick} (@code{mh-pick-do-search}). | |
| 6496 @c ------------------------- | |
| 6497 @kindex C-c ? | |
| 6498 @findex mh-help | |
| 6499 @item C-c ? | |
| 6500 Display cheat sheet for the MH-E commands (@code{mh-help}). | |
| 6501 @c ------------------------- | |
| 6502 @kindex C-c C-f C-a | |
| 6503 @kindex C-c C-f a | |
| 6504 @findex mh-to-field | |
| 6505 @item C-c C-f a | |
| 6506 @itemx C-c C-f C-a | |
| 6507 Move to @samp{Mail-Reply-To:} header field (@code{mh-to-field}). | |
| 6508 @c ------------------------- | |
| 6509 @kindex C-c C-f C-b | |
| 6510 @kindex C-c C-f b | |
| 6511 @item C-c C-f b | |
| 6512 @itemx C-c C-f C-b | |
| 6513 Move to @samp{Bcc:} header field (@code{mh-to-field}). | |
| 6514 @c ------------------------- | |
| 6515 @kindex C-c C-f C-c | |
| 6516 @kindex C-c C-f c | |
| 6517 @item C-c C-f c | |
| 6518 @itemx C-c C-f C-c | |
| 6519 Move to @samp{Cc:} header field (@code{mh-to-field}). | |
| 6520 @c ------------------------- | |
| 6521 @kindex C-c C-f C-d | |
| 6522 @kindex C-c C-f d | |
| 6523 @item C-c C-f d | |
| 6524 @itemx C-c C-f C-d | |
| 6525 Move to @samp{Dcc:} header field (@code{mh-to-field}). | |
| 6526 @c ------------------------- | |
| 6527 @kindex C-c C-f C-f | |
| 6528 @kindex C-c C-f f | |
| 6529 @item C-c C-f f | |
| 6530 @itemx C-c C-f C-f | |
| 6531 Move to @samp{Fcc:} header field (@code{mh-to-field}). | |
| 6532 @c ------------------------- | |
| 6533 @kindex C-c C-f C-l | |
| 6534 @kindex C-c C-f l | |
| 6535 @item C-c C-f l | |
| 6536 @itemx C-c C-f C-l | |
| 6537 Move to @samp{Mail-Followup-To:} header field (@code{mh-to-field}). | |
| 6538 @c ------------------------- | |
| 6539 @kindex C-c C-f C-m | |
| 6540 @kindex C-c C-f m | |
| 6541 @item C-c C-f m | |
| 6542 @itemx C-c C-f C-m | |
| 6543 Move to @samp{From:} header field (@code{mh-to-field}). | |
| 6544 @c ------------------------- | |
| 6545 @kindex C-c C-f C-r | |
| 6546 @kindex C-c C-f r | |
| 6547 @item C-c C-f r | |
| 6548 @itemx C-c C-f C-r | |
| 6549 Move to @samp{Reply-To:} header field (@code{mh-to-field}). | |
| 6550 @c ------------------------- | |
| 6551 @kindex C-c C-f C-s | |
| 6552 @kindex C-c C-f s | |
| 6553 @item C-c C-f s | |
| 6554 @itemx C-c C-f C-s | |
| 6555 Move to @samp{Subject:} header field (@code{mh-to-field}). | |
| 6556 @c ------------------------- | |
| 6557 @kindex C-c C-f C-t | |
| 6558 @kindex C-c C-f t | |
| 6559 @item C-c C-f t | |
| 6560 @itemx C-c C-f C-t | |
| 6561 Move to @samp{To:} header field (@code{mh-to-field}). | |
| 6562 @end table | |
| 6563 | |
| 6564 Another few commands are available in the MH-Folder buffer resulting | |
| 6565 from a search. | |
| 6566 | |
| 6567 @table @kbd | |
| 6568 @kindex @key{TAB} | |
| 6569 @findex mh-index-next-folder | |
| 6570 @item @key{TAB} | |
| 6571 Jump to the next folder marker (@code{mh-index-next-folder}). | |
| 6572 @c ------------------------- | |
| 6573 @kindex S-@key{TAB} | |
| 6574 @findex mh-index-previous-folder | |
| 6575 @item S-@key{TAB} | |
| 6576 Jump to the previous folder marker (@code{mh-index-previous-folder}). | |
| 6577 @c ------------------------- | |
| 6578 @kindex v | |
| 6579 @findex mh-index-visit-folder | |
| 6580 @item v | |
| 6581 Visit original folder from where the message at point was found | |
| 6582 (@code{mh-index-visit-folder}). | |
| 6583 @end table | |
| 6584 | |
| 6585 @cindex @samp{mh-search} customization group | |
| 6586 @cindex customization group, @samp{mh-search} | |
| 6587 | |
| 6588 There is one option from the @samp{mh-search} customization group used | |
| 6589 in searching. | |
| 6590 | |
| 6591 @vtable @code | |
| 6592 @item mh-search-program | |
| 6593 Search program that MH-E shall use (default: @samp{Auto-detect}). | |
| 6594 @end vtable | |
| 6595 | |
| 6596 The following hook is available. | |
| 6597 | |
| 6598 @vtable @code | |
| 6599 @item mh-search-mode-hook | |
| 6600 Hook run upon entry to @code{mh-search-mode} (default: @code{nil}). | |
| 6601 @end vtable | |
| 6602 | |
| 6603 The following face is available. | |
| 6604 | |
| 6605 @vtable @code | |
| 6606 @item mh-search-folder | |
| 6607 Folder heading face in MH-Folder buffers created by searches. | |
| 6608 @end vtable | |
| 6609 | |
| 6610 @findex mh-search-folder | |
| 6611 @kindex F s | |
| 6612 | |
| 6613 The command @kbd{F s} (@code{mh-search-folder}) helps you find | |
| 6614 messages in your entire corpus of mail. You can search for messages to | |
| 6615 or from a particular person or about a particular subject. In fact, | |
| 6616 you can also search for messages containing selected strings in any | |
| 6617 arbitrary header field or any string found within the messages. | |
| 6618 | |
| 6619 @cindex @command{pick} | |
| 6620 @cindex MH commands, @command{pick} | |
| 6621 | |
| 6622 Out of the box, MH-E uses @command{pick} to find messages. With a | |
| 6623 little extra effort, you can set an indexing program which rewards you | |
| 6624 with extremely quick results. The drawback is that sometimes the index | |
| 6625 does not contain the words you're looking for. You can still use | |
| 6626 @command{pick} in these situations. | |
| 6627 | |
| 6628 You are prompted for the folder to search. This can be @samp{all} to | |
| 6629 search all folders. Note that the search works recursively on the | |
| 6630 listed folder. | |
| 6631 | |
| 6632 @cindex MH-Search mode | |
| 6633 @cindex modes, MH-Search | |
| 6634 | |
| 6635 Next, an MH-Search buffer appears where you can enter search criteria. | |
| 6636 | |
| 6637 @cartouche | |
| 6638 @smallexample | |
| 6639 From: | |
| 6640 To: | |
| 6641 Cc: | |
| 6642 Date: | |
| 6643 Subject: | |
| 6644 -------- | |
| 6645 # | |
| 6646 | |
| 6647 | |
| 6648 | |
| 6649 | |
| 6650 | |
| 6651 | |
| 6652 | |
| 6653 | |
| 6654 --:** search-pattern All L7 (MH-Search)--------------------------- | |
| 6655 Type C-c C-c to search messages, C-c C-p to use pick, C-c ? for help | |
| 6656 @end smallexample | |
| 6657 @end cartouche | |
| 6658 @i{Search window} | |
| 6659 | |
| 6660 @cindex @command{pick} | |
| 6661 @cindex MH commands, @command{pick} | |
| 6662 | |
| 6663 Edit this template by entering your search criteria in an appropriate | |
| 6664 header field that is already there, or create a new field yourself. If | |
| 6665 the string you're looking for could be anywhere in a message, then | |
| 6666 place the string underneath the row of dashes. | |
| 6667 | |
| 6668 As an example, let's say that we want to find messages from Ginnean | |
| 6669 about horseback riding in the Kosciusko National Park (Australia) | |
| 6670 during January, 1994. Normally we would start with a broad search and | |
| 6671 narrow it down if necessary to produce a manageable amount of data, | |
| 6672 but we'll cut to the chase and create a fairly restrictive set of | |
| 6673 criteria as follows: | |
| 6674 | |
| 6675 @smallexample | |
| 6676 @group | |
| 6677 From: ginnean | |
| 6678 To: | |
| 6679 Cc: | |
| 6680 Date: Jan 1994 | |
| 6681 Subject: | |
| 6682 -------- | |
| 6683 horse | |
| 6684 kosciusko | |
| 6685 @end group | |
| 6686 @end smallexample | |
| 6687 | |
| 6688 @findex mh-to-field | |
| 6689 @kindex C-c C-f C-t | |
| 6690 | |
| 6691 As with MH-Letter mode, MH-Search provides commands like @kbd{C-c C-f | |
| 6692 C-t} (@code{mh-to-field}) to help you fill in the blanks. | |
| 6693 @xref{Editing Message}. | |
| 6694 | |
| 6695 @kindex F s | |
| 6696 @vindex mh-search-mode-hook | |
| 6697 | |
| 6698 If you find that you do the same thing over and over when editing the | |
| 6699 search template, you may wish to bind some shortcuts to keys. This can | |
| 6700 be done with the variable @code{mh-search-mode-hook}, which is called | |
| 6701 when @kbd{F s} is run on a new pattern. | |
| 6702 | |
| 6703 @findex mh-index-do-search | |
| 6704 @findex mh-pick-do-search | |
| 6705 @kindex C-c C-c | |
| 6706 @kindex C-c C-p | |
| 6707 | |
| 6708 To perform the search, type @kbd{C-c C-c} (@code{mh-index-do-search}). | |
| 6709 Sometimes you're searching for text that is either not indexed, or | |
| 6710 hasn't been indexed yet. In this case you can override the default | |
| 6711 method with the pick method by running the command @kbd{C-c C-p} | |
| 6712 (@code{mh-pick-do-search}). | |
| 6713 | |
| 6714 @cindex folders, @samp{+mhe-index} | |
| 6715 @cindex @samp{+mhe-index} | |
| 6716 @findex mh-index-next-folder | |
| 6717 @findex mh-index-previous-folder | |
| 6718 @kindex @key{TAB} | |
| 6719 @kindex S-@key{TAB} | |
| 6720 @vindex mh-search-folder | |
| 6721 | |
| 6722 The messages that are found are put in a temporary sub-folder of | |
| 6723 @samp{+mhe-index} and are displayed in an MH-Folder buffer. This | |
| 6724 buffer is special because it displays messages from multiple folders; | |
| 6725 each set of messages from a given folder has a heading with the folder | |
| 6726 name. The appearance of the heading can be modified by customizing the | |
| 6727 face @code{mh-search-folder}. You can jump back and forth between the | |
| 6728 headings using the commands @kbd{@key{TAB}} | |
| 6729 (@code{mh-index-next-folder}) and @kbd{S-@key{TAB}} | |
| 6730 (@code{mh-index-previous-folder}). | |
| 6731 | |
| 6732 @findex mh-index-visit-folder | |
| 6733 @findex mh-rescan-folder | |
| 6734 @kindex F r | |
| 6735 @kindex v | |
| 6736 | |
| 6737 In addition, the command @kbd{v} (@code{mh-index-visit-folder}) can be | |
| 6738 used to visit the folder of the message at point. Initially, only the | |
| 6739 messages that matched the search criteria are displayed in the folder. | |
| 6740 While the temporary buffer has its own set of message numbers, the | |
| 6741 actual messages numbers are shown in the visited folder. Thus, the | |
| 6742 command @kbd{v} is useful to find the actual message number of an | |
| 6743 interesting message, or to view surrounding messages with the command | |
| 6744 @kbd{F r} @code{mh-rescan-folder}. @xref{Folders}. | |
| 6745 | |
| 6746 @findex mh-kill-folder | |
| 6747 @kindex F k | |
| 6748 | |
| 6749 Because this folder is temporary, you'll probably get in the habit of | |
| 6750 killing it when you're done with @kbd{F k} (@code{mh-kill-folder}). | |
| 6751 @xref{Folders}. | |
| 6752 | |
| 6753 @kindex F s | |
| 6754 | |
| 6755 You can regenerate the results by running @kbd{F s} with a prefix | |
| 6756 argument. | |
| 6757 | |
| 6758 @cindex @command{procmail} | |
| 6759 @cindex Unix commands, @command{procmail} | |
| 6760 @cindex @samp{X-MHE-Checksum:} header field | |
| 6761 @cindex header field, @samp{X-MHE-Checksum:} | |
| 6762 | |
| 6763 Note: This command uses an @samp{X-MHE-Checksum:} header field to | |
| 6764 cache the MD5 checksum of a message. This means that if an incoming | |
| 6765 message already contains an @samp{X-MHE-Checksum:} field, that message | |
| 6766 might not be found by this command. The following @command{procmail} | |
| 6767 recipe avoids this problem by renaming the existing header field: | |
| 6768 | |
| 6769 @smallexample | |
| 6770 @group | |
| 6771 :0 wf | |
| 6772 | formail -R "X-MHE-Checksum" "X-Old-MHE-Checksum" | |
| 6773 @end group | |
| 6774 @end smallexample | |
| 6775 | |
| 6776 @xref{Limits}, for an alternative interface to searching. | |
| 6777 | |
| 6778 @section Configuring Indexed Searches | |
| 6779 | |
| 6780 @cindex @command{grep} | |
| 6781 @cindex @command{mairix} | |
| 6782 @cindex @command{namazu} | |
| 6783 @cindex @command{pick} | |
| 6784 @cindex @command{swish++} | |
| 6785 @cindex @command{swish-e} | |
| 6786 @cindex Unix commands, @command{grep} | |
| 6787 @cindex Unix commands, @command{mairix} | |
| 6788 @cindex Unix commands, @command{namazu} | |
| 6789 @cindex Unix commands, @command{pick} | |
| 6790 @cindex Unix commands, @command{swish++} | |
| 6791 @cindex Unix commands, @command{swish-e} | |
| 6792 @findex mh-search | |
| 6793 @kindex F s | |
| 6794 @vindex mh-search-program | |
| 6795 | |
| 6796 The command @kbd{F s} (@code{mh-search}) runs the command defined by | |
| 6797 the option @code{mh-search-program}. The default value is | |
| 6798 @samp{Auto-detect} which means that MH-E will automatically choose one | |
| 6799 of @command{swish++}, @command{swish-e}, @command{mairix}, | |
| 6800 @command{namazu}, @command{pick} and @command{grep} in that order. If, | |
| 6801 for example, you have both @command{swish++} and @command{mairix} | |
| 6802 installed and you want to use @command{mairix}, then you can set this | |
| 6803 option to @samp{mairix}. | |
| 6804 | |
| 6805 The following sub-sections describe how to set up the various indexing | |
| 6806 programs to use with MH-E. | |
| 6807 | |
| 6808 @subsection swish++ | |
| 6809 | |
| 6810 @cindex @command{swish++} | |
| 6811 @cindex Unix commands, @command{swish++} | |
| 6812 | |
| 6813 In the examples below, replace @file{/home/user/Mail} with the path to | |
| 6814 your MH directory. | |
| 6815 | |
| 6816 First create the directory @file{/home/user/Mail/.swish++}. Then | |
| 6817 create the file @file{/home/user/Mail/.swish++/swish++.conf} with the | |
| 6818 following contents: | |
| 6819 | |
| 6820 @smallexample | |
| 6821 @group | |
| 6822 IncludeMeta Bcc Cc Comments Content-Description From Keywords | |
| 6823 IncludeMeta Newsgroups Resent-To Subject To | |
| 6824 IncludeMeta Message-Id References In-Reply-To | |
| 6825 IncludeFile Mail * | |
| 6826 IndexFile /home/user/Mail/.swish++/swish++.index | |
| 6827 @end group | |
| 6828 @end smallexample | |
| 6829 | |
| 6830 Use the following command line to generate the swish index. Run this | |
| 6831 daily from cron: | |
| 6832 | |
| 6833 @smallexample | |
| 6834 @group | |
| 6835 find /home/user/Mail -path /home/user/Mail/mhe-index -prune \ | |
| 6836 -o -path /home/user/Mail/.swish++ -prune \ | |
| 6837 -o -name "[0-9]*" -print \ | |
| 6838 | index -c /home/user/Mail/.swish++/swish++.conf - | |
| 6839 @end group | |
| 6840 @end smallexample | |
| 6841 | |
| 6842 This command does not index the folders that hold the results of your | |
| 6843 searches in @samp{+mhe-index} since they tend to be ephemeral and the | |
| 6844 original messages are indexed anyway. | |
| 6845 | |
| 6846 @cindex @command{index} | |
| 6847 @cindex Unix commands, @command{index} | |
| 6848 @cindex @command{index++} | |
| 6849 @cindex Unix commands, @command{index++} | |
| 6850 | |
| 6851 On some systems (Debian GNU/Linux, for example), use @command{index++} | |
| 6852 instead of @command{index}. | |
| 6853 | |
| 6854 @subsection swish | |
| 6855 | |
| 6856 @cindex @command{swish-e} | |
| 6857 @cindex Unix commands, @command{swish-e} | |
| 6858 | |
| 6859 In the examples below, replace @file{/home/user/Mail} with the path to | |
| 6860 your MH directory. | |
| 6861 | |
| 6862 First create the directory @file{/home/user/Mail/.swish}. Then create | |
| 6863 the file @file{/home/user/Mail/.swish/config} with the following | |
| 6864 contents: | |
| 6865 | |
| 6866 @smallexample | |
| 6867 @group | |
| 6868 DefaultContents TXT* | |
| 6869 IndexDir /home/user/Mail | |
| 6870 IndexFile /home/user/Mail/.swish/index | |
| 6871 IndexName "Mail Index" | |
| 6872 IndexDescription "Mail Index" | |
| 6873 IndexPointer "http://nowhere" | |
| 6874 IndexAdmin "nobody" | |
| 6875 #MetaNames automatic | |
| 6876 IndexReport 3 | |
| 6877 FollowSymLinks no | |
| 6878 UseStemming no | |
| 6879 IgnoreTotalWordCountWhenRanking yes | |
| 6880 WordCharacters abcdefghijklmnopqrstuvwxyz0123456789- | |
| 6881 BeginCharacters abcdefghijklmnopqrstuvwxyz | |
| 6882 EndCharacters abcdefghijklmnopqrstuvwxyz0123456789 | |
| 6883 IgnoreLimit 50 1000 | |
| 6884 IndexComments 0 | |
| 6885 FileRules filename contains \D | |
| 6886 FileRules pathname contains /home/user/Mail/.swish | |
| 6887 FileRules pathname contains /home/user/Mail/mhe-index | |
| 6888 FileRules filename is index | |
| 6889 @end group | |
| 6890 @end smallexample | |
| 6891 | |
| 6892 This configuration does not index the folders that hold the results of | |
| 6893 your searches in @samp{+mhe-index} since they tend to be ephemeral and | |
| 6894 the original messages are indexed anyway. | |
| 6895 | |
| 6896 If there are any directories you would like to ignore, append lines | |
| 6897 like the following to @file{config}: | |
| 6898 | |
| 6899 @smallexample | |
| 6900 FileRules pathname contains /home/user/Mail/scripts | |
| 6901 @end smallexample | |
| 6902 | |
| 6903 @cindex @command{swish-e} | |
| 6904 @cindex Unix commands, @command{swish-e} | |
| 6905 | |
| 6906 Use the following command line to generate the swish index. Run this | |
| 6907 daily from cron: | |
| 6908 | |
| 6909 @smallexample | |
| 6910 swish-e -c /home/user/Mail/.swish/config | |
| 6911 @end smallexample | |
| 6912 | |
| 6913 @subsection mairix | |
| 6914 | |
| 6915 @cindex @command{mairix} | |
| 6916 @cindex Unix commands, @command{mairix} | |
| 6917 | |
| 6918 In the examples below, replace @file{/home/user/Mail} with the path to | |
| 6919 your MH directory. | |
| 6920 | |
| 6921 First create the directory @file{/home/user/Mail/.mairix}. Then create | |
| 6922 the file @file{/home/user/Mail/.mairix/config} with the following | |
| 6923 contents: | |
| 6924 | |
| 6925 @smallexample | |
| 6926 @group | |
| 6927 base=/home/user/Mail | |
| 6928 | |
| 6929 # List of folders that should be indexed. 3 dots at the end means there | |
| 6930 # are subfolders within the folder | |
| 6931 mh=archive...:inbox:drafts:news:sent:trash | |
| 6932 | |
| 6933 vfolder_format=raw | |
| 6934 database=/home/user/Mail/mairix/database | |
| 6935 @end group | |
| 6936 @end smallexample | |
| 6937 | |
| 6938 Use the following command line to generate the mairix index. Run this daily | |
| 6939 from cron: | |
| 6940 | |
| 6941 @smallexample | |
| 6942 mairix -f /home/user/Mail/.mairix/config | |
| 6943 @end smallexample | |
| 6944 | |
| 6945 @subsection namazu | |
| 6946 | |
| 6947 @cindex @command{namazu} | |
| 6948 @cindex Unix commands, @command{namazu} | |
| 6949 | |
| 6950 In the examples below, replace @file{/home/user/Mail} with the path to | |
| 6951 your MH directory. | |
| 6952 | |
| 6953 First create the directory @file{/home/user/Mail/.namazu}. Then create | |
| 6954 the file @file{/home/user/Mail/.namazu/mknmzrc} with the following | |
| 6955 contents: | |
| 6956 | |
| 6957 @smallexample | |
| 6958 @group | |
| 6959 package conf; # Don't remove this line! | |
| 6960 $ADDRESS = 'user@@localhost'; | |
| 6961 $ALLOW_FILE = "[0-9]*"; | |
| 6962 $EXCLUDE_PATH = "^/home/user/Mail/(mhe-index|spam)"; | |
| 6963 @end group | |
| 6964 @end smallexample | |
| 6965 | |
| 6966 This configuration does not index the folders that hold the results of | |
| 6967 your searches in @samp{+mhe-index} since they tend to be ephemeral and | |
| 6968 the original messages are indexed anyway. | |
| 6969 | |
| 6970 Use the following command line to generate the namazu index. Run this | |
| 6971 daily from cron: | |
| 6972 | |
| 6973 @smallexample | |
| 6974 mknmz -f /home/user/Mail/.namazu/mknmzrc -O /home/user/Mail/.namazu \ | |
| 6975 /home/user/Mail | |
| 6976 @end smallexample | |
| 6977 | |
| 6978 @subsection pick | |
| 6979 | |
| 6980 @cindex @command{pick} | |
| 6981 @cindex MH commands, @command{pick} | |
| 6982 | |
| 6983 This search method does not require any setup. | |
| 6984 | |
| 6985 Read @command{pick}(1) or the section | |
| 6986 @uref{@value{MH-BOOK-HOME}/finpic.html, Finding Messages with pick} in | |
| 6987 the MH book to find out more about how to enter the criteria. | |
| 6988 | |
| 6989 @subsection grep | |
| 6990 | |
| 6991 @cindex @command{grep} | |
| 6992 @cindex Unix commands, @command{grep} | |
| 6993 | |
| 6994 This search method does not require any setup. | |
| 6995 | |
| 6996 Unlike the other search methods, this method does not use the | |
| 6997 MH-Search buffer. Instead, you simply enter a regular expression in | |
| 6998 the minibuffer. For help in constructing regular expressions, see your | |
| 6999 man page for @command{grep}. | |
| 7000 | |
| 7001 @node Threading, Limits, Searching, Top | |
| 7002 @chapter Viewing Message Threads | |
| 7003 | |
| 7004 @cindex threading | |
| 7005 | |
| 7006 MH-E groups messages by @dfn{threads} which are messages that are part | |
| 7007 of the same discussion and usually all have the same @samp{Subject:} | |
| 7008 header field. Other ways to organize messages in a folder include | |
| 7009 limiting (@pxref{Limits}) or using full-text indexed searches | |
| 7010 (@pxref{Searching}). | |
| 7011 | |
| 7012 @cindex root, in threads | |
| 7013 @cindex siblings, in threads | |
| 7014 @cindex ancestor, in threads | |
| 7015 | |
| 7016 A thread begins with a single message called a @dfn{root}. All replies | |
| 7017 to the same message are @dfn{siblings} of each other. Any message that | |
| 7018 has replies to it is an @dfn{ancestor} of those replies. | |
| 7019 | |
| 7020 There are several commands that you can use to navigate and operate on | |
| 7021 threads. | |
| 7022 | |
| 7023 @table @kbd | |
| 7024 @kindex T ? | |
| 7025 @findex mh-prefix-help | |
| 7026 @item T ? | |
| 7027 Display cheat sheet for the commands of the current prefix in | |
| 7028 minibuffer (@code{mh-prefix-help}). | |
| 7029 @c ------------------------- | |
| 7030 @kindex T o | |
| 7031 @findex mh-thread-refile | |
| 7032 @item T o | |
| 7033 Refile (output) thread into folder (@code{mh-thread-refile}). | |
| 7034 @c ------------------------- | |
| 7035 @kindex T d | |
| 7036 @findex mh-thread-delete | |
| 7037 @item T d | |
| 7038 Delete thread (@code{mh-thread-delete}). | |
| 7039 @c ------------------------- | |
| 7040 @kindex T t | |
| 7041 @findex mh-toggle-threads | |
| 7042 @item T t | |
| 7043 Toggle threaded view of folder (@code{mh-toggle-threads}). | |
| 7044 @c ------------------------- | |
| 7045 @kindex T n | |
| 7046 @findex mh-thread-next-sibling | |
| 7047 @item T n | |
| 7048 Display next sibling (@code{mh-thread-next-sibling}). | |
| 7049 @c ------------------------- | |
| 7050 @kindex T p | |
| 7051 @findex mh-thread-previous-sibling | |
| 7052 @item T p | |
| 7053 Display previous sibling (@code{mh-thread-previous-sibling}). | |
| 7054 @c ------------------------- | |
| 7055 @kindex T u | |
| 7056 @findex mh-thread-ancestor | |
| 7057 @item T u | |
| 7058 Display ancestor of current message (@code{mh-thread-ancestor}). | |
| 7059 @end table | |
| 7060 | |
| 7061 @cindex @samp{mh-thread} customization group | |
| 7062 @cindex customization group, @samp{mh-thread} | |
| 7063 | |
| 7064 The @samp{mh-thread} customization group contains one option. | |
| 7065 | |
| 7066 @vtable @code | |
| 7067 @item mh-show-threads-flag | |
| 7068 On means new folders start in threaded mode (default: @samp{off}). | |
| 7069 @end vtable | |
| 7070 | |
| 7071 @findex mh-toggle-threads | |
| 7072 @kindex T t | |
| 7073 @vindex mh-large-folder | |
| 7074 @vindex mh-show-threads-flag | |
| 7075 | |
| 7076 Threading large number of messages can be time consuming so the option | |
| 7077 @code{mh-show-threads-flag} is turned off by default. If you turn on | |
| 7078 this option, then threading will be done only if the number of | |
| 7079 messages being threaded is less than @code{mh-large-folder}. In any | |
| 7080 event, threading can be turned on (and off) with the command @kbd{T t} | |
| 7081 (@code{mh-toggle-threads}). | |
| 7082 | |
| 7083 @findex mh-thread-ancestor | |
| 7084 @findex mh-thread-next-sibling | |
| 7085 @findex mh-thread-previous-sibling | |
| 7086 @kindex T n | |
| 7087 @kindex T p | |
| 7088 @kindex T u | |
| 7089 | |
| 7090 There are a few commands to help you navigate threads. If you do not | |
| 7091 care for the way a particular thread has turned, you can move up the | |
| 7092 chain of messages with the command @kbd{T u} | |
| 7093 (@code{mh-thread-ancestor}. At any point you can use @kbd{T n} | |
| 7094 (@code{mh-thread-next-sibling} or @kbd{T p} | |
| 7095 (@code{mh-thread-previous-sibling}) to jump to the next or previous | |
| 7096 sibling, skipping the sub-threads. The command @kbd{T u} can also take | |
| 7097 a prefix argument to jump to the message that started everything. | |
| 7098 | |
| 7099 @findex mh-delete-subject-or-thread | |
| 7100 @findex mh-thread-delete | |
| 7101 @findex mh-thread-refile | |
| 7102 @kindex k | |
| 7103 @kindex T d | |
| 7104 @kindex T o | |
| 7105 | |
| 7106 There are threaded equivalents for the commands that delete and refile | |
| 7107 messages. For example, @kbd{T o} (@code{mh-thread-refile}) refiles the | |
| 7108 current message and all its children. Similarly, the command @kbd{T d} | |
| 7109 (@code{mh-thread-delete}) deletes the current message and all its | |
| 7110 children. These commands do not refile or delete sibling messages. | |
| 7111 @xref{Navigating}, for a description of the similar command @kbd{k} | |
| 7112 (@code{mh-delete-subject-or-thread}). | |
| 7113 | |
| 7114 @vindex mh-large-folder | |
| 7115 | |
| 7116 If you find that threading is too slow, it may be that you have | |
| 7117 @code{mh-large-folder} set too high. Also, threading is one of the few | |
| 7118 features of MH-E that really benefits from compiling. If you haven't | |
| 7119 compiled MH-E, I encourage you to do so@footnote{If you're not sure if | |
| 7120 MH-E has been byte-compiled, you could try running @samp{locate | |
| 7121 mh-thread.elc} or otherwise find MH-E on your system and ensure that | |
| 7122 @file{mh-thread.elc} exists. If you have multiple versions and you | |
| 7123 find that one is compiled but the other is not, then go into your | |
| 7124 @samp{*scratch*} buffer in Emacs, enter @kbd{load-path C-j}, and | |
| 7125 ensure that the byte-compiled version appears first in the | |
| 7126 @code{load-path}. If you find that MH-E is not compiled and you | |
| 7127 installed MH-E yourself, please refer to the installation directions | |
| 7128 in the file @file{README} in the distribution.}. | |
| 7129 | |
| 7130 @node Limits, Sequences, Threading, Top | |
| 7131 @chapter Limiting Display | |
| 7132 | |
| 7133 @cindex limits | |
| 7134 @cindex filters | |
| 7135 | |
| 7136 Another way to organize messages in a folder besides threading | |
| 7137 (@pxref{Threading}) or using full-text indexed searches | |
| 7138 (@pxref{Searching}) is by limiting the folder display to messages that | |
| 7139 are similar to the current message. | |
| 7140 | |
| 7141 @table @kbd | |
| 7142 @kindex / ? | |
| 7143 @findex mh-prefix-help | |
| 7144 @item / ? | |
| 7145 Display cheat sheet for the commands of the current prefix in | |
| 7146 minibuffer (@code{mh-prefix-help}). | |
| 7147 @c ------------------------- | |
| 7148 @cindex @samp{Sequence > Narrow to Tick Sequence} menu item | |
| 7149 @cindex menu item, @samp{Sequence > Narrow to Tick Sequence} | |
| 7150 @kindex / ' | |
| 7151 @findex mh-narrow-to-tick | |
| 7152 @item / ' | |
| 7153 Limit to messages in the @samp{tick} sequence | |
| 7154 (@code{mh-narrow-to-tick}). | |
| 7155 @c ------------------------- | |
| 7156 @kindex / c | |
| 7157 @findex mh-narrow-to-cc | |
| 7158 @item / c | |
| 7159 Limit to messages with the same @samp{Cc:} field | |
| 7160 (@code{mh-narrow-to-cc}). | |
| 7161 @c ------------------------- | |
| 7162 @kindex / m | |
| 7163 @findex mh-narrow-to-from | |
| 7164 @item / m | |
| 7165 Limit to messages with the same @samp{From:} field | |
| 7166 (@code{mh-narrow-to-from}). | |
| 7167 @c ------------------------- | |
| 7168 @kindex / g | |
| 7169 @findex mh-narrow-to-range | |
| 7170 @item / g | |
| 7171 Limit to range (@code{mh-narrow-to-range}). | |
| 7172 @c ------------------------- | |
| 7173 @cindex @samp{Sequence > Narrow to Subject Sequence} menu item | |
| 7174 @cindex menu item, @samp{Sequence > Narrow to Subject Sequence} | |
| 7175 @kindex / s | |
| 7176 @findex mh-narrow-to-subject | |
| 7177 @item / s | |
| 7178 Limit to messages with the same @samp{Subject:} field | |
| 7179 (@code{mh-narrow-to-subject}). | |
| 7180 @c ------------------------- | |
| 7181 @kindex / t | |
| 7182 @findex mh-narrow-to-to | |
| 7183 @item / t | |
| 7184 Limit to messages with the same @samp{To:} field | |
| 7185 (@code{mh-narrow-to-to}). | |
| 7186 @c ------------------------- | |
| 7187 @cindex @samp{Sequence > Widen from Sequence} menu item | |
| 7188 @cindex menu item, @samp{Sequence > Widen from Sequence} | |
| 7189 @kindex / w | |
| 7190 @findex mh-widen | |
| 7191 @item / w | |
| 7192 Remove last restriction (@code{mh-widen}). | |
| 7193 @end table | |
| 7194 | |
| 7195 All of the limiting commands above refine the display in some way. | |
| 7196 | |
| 7197 @cindex @command{pick} | |
| 7198 @cindex MH commands, @command{pick} | |
| 7199 @findex mh-narrow-to-cc | |
| 7200 @findex mh-narrow-to-from | |
| 7201 @findex mh-narrow-to-subject | |
| 7202 @findex mh-narrow-to-to | |
| 7203 @kindex / c | |
| 7204 @kindex / m | |
| 7205 @kindex / s | |
| 7206 @kindex / t | |
| 7207 | |
| 7208 The commands @kbd{/ c} (@code{mh-narrow-to-cc}), @kbd{/ m} | |
| 7209 (@code{mh-narrow-to-from}), @kbd{/ s} (@code{mh-narrow-to-subject}), | |
| 7210 and @kbd{/ t} (@code{mh-narrow-to-to}) restrict the display to | |
| 7211 messages matching the content of the respective field in the current | |
| 7212 message. However, you can give any of these a prefix argument to edit | |
| 7213 the @command{pick} expression used to narrow the view@footnote{See | |
| 7214 @command{pick}(1) or the section | |
| 7215 @uref{@value{MH-BOOK-HOME}/finpic.html, Finding Messages with pick} in | |
| 7216 the MH book.}. | |
| 7217 | |
| 7218 @cindex @samp{tick} sequence | |
| 7219 @cindex sequence, @samp{tick} | |
| 7220 @cindex ticked messages, viewing | |
| 7221 @findex mh-narrow-to-range | |
| 7222 @findex mh-narrow-to-tick | |
| 7223 @kindex / ' | |
| 7224 @kindex / g | |
| 7225 | |
| 7226 You can also limit the display to messages in the @samp{tick} sequence | |
| 7227 with the command @kbd{/ '} (@code{mh-narrow-to-tick}). | |
| 7228 @xref{Sequences}, for information on putting message into the | |
| 7229 @samp{tick} sequence. Use the @kbd{/ g} (@code{mh-narrow-to-range}) | |
| 7230 command to limit the display to messages in a range (@pxref{Ranges}). | |
| 7231 | |
| 7232 @findex mh-widen | |
| 7233 @kindex / w | |
| 7234 | |
| 7235 Each limit can be undone in turn with the @kbd{/ w} (@code{mh-widen}) | |
| 7236 command. Give this command a prefix argument to remove all limits. | |
| 7237 | |
| 7238 @node Sequences, Junk, Limits, Top | |
| 7239 @chapter Using Sequences | |
| 7240 | |
| 7241 @cindex @samp{Sequence} menu | |
| 7242 @cindex menu, @samp{Sequence} | |
| 7243 @cindex sequences | |
| 7244 | |
| 7245 For the whole scoop on MH sequences, refer to | |
| 7246 @samp{mh-sequence}(5)@footnote{See the section | |
| 7247 @uref{@value{MH-BOOK-HOME}/morseq.html, More About Sequences} in the MH | |
| 7248 book.}. As you've read, several of the MH-E commands can operate on a | |
| 7249 sequence, which is a shorthand for a range or group of messages. For | |
| 7250 example, you might want to forward several messages to a friend or | |
| 7251 colleague. Here's how to manipulate sequences. These commands are also | |
| 7252 available in the @samp{Sequence} menu. | |
| 7253 | |
| 7254 @table @kbd | |
| 7255 @cindex @samp{Sequence > Toggle Tick Mark} menu item | |
| 7256 @cindex menu item, @samp{Sequence > Toggle Tick Mark} | |
| 7257 @kindex ' | |
| 7258 @findex mh-toggle-tick | |
| 7259 @item ' | |
| 7260 Toggle tick mark of range (@code{mh-toggle-tick}). | |
| 7261 @c ------------------------- | |
| 7262 @kindex S ? | |
| 7263 @findex mh-prefix-help | |
| 7264 @item S ? | |
| 7265 Display cheat sheet for the commands of the current prefix in | |
| 7266 minibuffer (@code{mh-prefix-help}). | |
| 7267 @c ------------------------- | |
| 7268 @cindex @samp{Sequence > Narrow to Tick Sequence} menu item | |
| 7269 @cindex menu item, @samp{Sequence > Narrow to Tick Sequence} | |
| 7270 @kindex S ' | |
| 7271 @findex mh-narrow-to-tick | |
| 7272 @item S ' | |
| 7273 Limit to ticked messages (@code{mh-narrow-to-tick}). | |
| 7274 @c ------------------------- | |
| 7275 @cindex @samp{Sequence > Delete Message from Sequence...} menu item | |
| 7276 @cindex menu item, @samp{Sequence > Delete Message from Sequence...} | |
| 7277 @kindex S d | |
| 7278 @findex mh-delete-msg-from-seq | |
| 7279 @item S d | |
| 7280 Delete range from sequence (@code{mh-delete-msg-from-seq}). | |
| 7281 @c ------------------------- | |
| 7282 @cindex @samp{Sequence > Delete Sequence...} menu item | |
| 7283 @cindex menu item, @samp{Sequence > Delete Sequence...} | |
| 7284 @kindex S k | |
| 7285 @findex mh-delete-seq | |
| 7286 @item S k | |
| 7287 Delete sequence (@code{mh-delete-seq}). | |
| 7288 @c ------------------------- | |
| 7289 @cindex @samp{Sequence > List Sequences in Folder...} menu item | |
| 7290 @cindex menu item, @samp{Sequence > List Sequences in Folder...} | |
| 7291 @kindex S l | |
| 7292 @findex mh-list-sequences | |
| 7293 @item S l | |
| 7294 List all sequences in folder (@code{mh-list-sequences}). | |
| 7295 @c ------------------------- | |
| 7296 @cindex @samp{Sequence > Narrow to Sequence...} menu item | |
| 7297 @cindex menu item, @samp{Sequence > Narrow to Sequence...} | |
| 7298 @kindex S n | |
| 7299 @findex mh-narrow-to-seq | |
| 7300 @item S n | |
| 7301 Restrict display to messages in sequence (@code{mh-narrow-to-seq}). | |
| 7302 @c ------------------------- | |
| 7303 @cindex @samp{Sequence > Add Message to Sequence...} menu item | |
| 7304 @cindex menu item, @samp{Sequence > Add Message to Sequence...} | |
| 7305 @kindex S p | |
| 7306 @findex mh-put-msg-in-seq | |
| 7307 @item S p | |
| 7308 Add range to sequence (@code{mh-put-msg-in-seq}). | |
| 7309 @c ------------------------- | |
| 7310 @cindex @samp{Sequence > List Sequences for Message} menu item | |
| 7311 @cindex menu item, @samp{Sequence > List Sequences for Message} | |
| 7312 @kindex S s | |
| 7313 @findex mh-msg-is-in-seq | |
| 7314 @item S s | |
| 7315 Display the sequences in which the current message appears | |
| 7316 (@code{mh-msg-is-in-seq}). | |
| 7317 @c ------------------------- | |
| 7318 @cindex @samp{Sequence > Widen from Sequence} menu item | |
| 7319 @cindex menu item, @samp{Sequence > Widen from Sequence} | |
| 7320 @kindex S w | |
| 7321 @findex mh-widen | |
| 7322 @item S w | |
| 7323 Remove last restriction (@code{mh-widen}). | |
| 7324 @c ------------------------- | |
| 7325 @findex mh-update-sequences | |
| 7326 @item M-x mh-update-sequences | |
| 7327 Flush MH-E's state out to MH@. | |
| 7328 @end table | |
| 7329 | |
| 7330 @cindex @samp{mh-sequences} customization group | |
| 7331 @cindex customization group, @samp{mh-sequences} | |
| 7332 | |
| 7333 The @samp{mh-sequences} customization group contains the options | |
| 7334 associated with sequences. | |
| 7335 | |
| 7336 @vtable @code | |
| 7337 @item mh-refile-preserves-sequences-flag | |
| 7338 On means that sequences are preserved when messages are refiled | |
| 7339 (default: @samp{on}). | |
| 7340 @c ------------------------- | |
| 7341 @item mh-tick-seq | |
| 7342 The name of the MH sequence for ticked messages (default: @samp{'tick}). | |
| 7343 @c ------------------------- | |
| 7344 @item mh-update-sequences-after-mh-show-flag | |
| 7345 On means flush MH sequences to disk after message is shown (default: | |
| 7346 @samp{on}). | |
| 7347 @end vtable | |
| 7348 | |
| 7349 The following hook is available. | |
| 7350 | |
| 7351 @vtable @code | |
| 7352 @item mh-unseen-updated-hook | |
| 7353 Hook run after the unseen sequence has been updated (default: @code{nil}). | |
| 7354 @end vtable | |
| 7355 | |
| 7356 @cindex @command{pick} | |
| 7357 @cindex MH commands, @command{pick} | |
| 7358 @findex mh-put-msg-in-seq | |
| 7359 @kindex S p | |
| 7360 | |
| 7361 To place a message in a sequence, use @kbd{S p} | |
| 7362 (@code{mh-put-msg-in-seq}). Give @kbd{S p} a range and you can add all | |
| 7363 the messages in a sequence to another sequence (for example, @kbd{C-u | |
| 7364 S p SourceSequence @key{RET} DestSequence @key{RET}}, @pxref{Ranges}). | |
| 7365 | |
| 7366 @cindex @samp{tick} sequence | |
| 7367 @cindex sequence, @samp{tick} | |
| 7368 @cindex ticking messages | |
| 7369 @findex mh-index-ticked-messages | |
| 7370 @findex mh-toggle-tick | |
| 7371 @kindex ' | |
| 7372 @kindex F ' | |
| 7373 @kindex S p | |
| 7374 | |
| 7375 One specific use of the @kbd{S p} command is @kbd{'} | |
| 7376 (@code{mh-toggle-tick}) which adds messages to the @samp{tick} | |
| 7377 sequence. This sequence can be viewed later with the @kbd{F '} | |
| 7378 (@code{mh-index-ticked-messages}) command (@pxref{Folders}). | |
| 7379 | |
| 7380 @vindex mh-tick-seq | |
| 7381 | |
| 7382 You can customize the option @code{mh-tick-seq} if you already use the | |
| 7383 @samp{tick} sequence for your own use. You can also disable all of the | |
| 7384 ticking functions by choosing the @samp{Disable Ticking} item but | |
| 7385 there isn't much advantage to that. | |
| 7386 | |
| 7387 @cindex MH-Folder mode | |
| 7388 @cindex modes, MH-Folder | |
| 7389 @findex mh-narrow-to-seq | |
| 7390 @findex mh-narrow-to-tick | |
| 7391 @findex mh-widen | |
| 7392 @kindex S ' | |
| 7393 @kindex S n | |
| 7394 @kindex S w | |
| 7395 | |
| 7396 Once you've placed some messages in a sequence, you may wish to narrow | |
| 7397 the field of view to just those messages in the sequence you've | |
| 7398 created. To do this, use @kbd{S n} (@code{mh-narrow-to-seq}). You are | |
| 7399 prompted for the name of the sequence. What this does is show only | |
| 7400 those messages that are in the selected sequence in the MH-Folder | |
| 7401 buffer. In addition, it limits further MH-E searches to just those | |
| 7402 messages. To narrow the view to the messages in the @samp{tick} | |
| 7403 sequence, use @kbd{S '} (@code{mh-narrow-to-tick}). When you want to | |
| 7404 widen the view to all your messages again, use @kbd{S w} | |
| 7405 (@code{mh-widen}). | |
| 7406 | |
| 7407 @cindex buffers, @samp{*MH-E Sequences*} | |
| 7408 @cindex @samp{*MH-E Sequences*} | |
| 7409 @findex mh-list-sequences | |
| 7410 @findex mh-msg-is-in-seq | |
| 7411 @kindex S l | |
| 7412 @kindex S s | |
| 7413 | |
| 7414 You can see which sequences in which a message appears with the | |
| 7415 command @kbd{S s} (@code{mh-msg-is-in-seq}). Use a prefix argument to | |
| 7416 display the sequences in which another message appears (as in @kbd{C-u | |
| 7417 42 S s @key{RET}}). Or, you can list all sequences in a selected | |
| 7418 folder (default is current folder) with @kbd{S l} | |
| 7419 (@code{mh-list-sequences}). The list appears in a buffer named | |
| 7420 @samp{*MH-E Sequences*} (@pxref{Miscellaneous}). | |
| 7421 | |
| 7422 @cindex MH profile component, @samp{Previous-Sequence:} | |
| 7423 @cindex @samp{cur} sequence | |
| 7424 @cindex @samp{Previous-Sequence:} MH profile component | |
| 7425 @cindex sequence, @samp{cur} | |
| 7426 @cindex sequence, @samp{Previous-Sequence} | |
| 7427 @vindex mh-refile-preserves-sequences-flag | |
| 7428 | |
| 7429 If a message is in any sequence (except | |
| 7430 @samp{Previous-Sequence:}@footnote{See @samp{mh-profile}(5)).} and | |
| 7431 @samp{cur}) when it is refiled, then it will still be in those | |
| 7432 sequences in the destination folder. If this behavior is not desired, | |
| 7433 then turn off the option @code{mh-refile-preserves-sequences-flag}. | |
| 7434 | |
| 7435 @findex mh-delete-msg-from-seq | |
| 7436 @findex mh-delete-seq | |
| 7437 @kindex d | |
| 7438 @kindex S d | |
| 7439 @kindex S k | |
| 7440 | |
| 7441 If you want to remove a message (or range, @pxref{Ranges}) from a | |
| 7442 sequence, use @kbd{S d} (@code{mh-delete-msg-from-seq}). If you want | |
| 7443 to delete an entire sequence, use @kbd{S k} (@code{mh-delete-seq}). In | |
| 7444 the latter case you are prompted for the sequence to delete. Note that | |
| 7445 this deletes only the sequence, not the messages in the sequence. If | |
| 7446 you want to delete the messages, use @kbd{C-u d} (@pxref{Reading | |
| 7447 Mail}). | |
| 7448 | |
| 7449 @cindex @samp{Unseen-Sequence:} MH profile component | |
| 7450 @cindex @samp{cur} sequence | |
| 7451 @cindex @samp{tick} sequence | |
| 7452 @cindex MH profile component, @samp{Unseen-Sequence:} | |
| 7453 @cindex sequence, @samp{Unseen-Sequence} | |
| 7454 @cindex sequence, @samp{cur} | |
| 7455 @cindex sequence, @samp{tick} | |
| 7456 @findex mh-update-sequences | |
| 7457 @kindex M-x mh-update-sequences | |
| 7458 @kindex q | |
| 7459 @kindex x | |
| 7460 @vindex mh-tick-seq | |
| 7461 @vindex mh-update-sequences-after-mh-show-flag | |
| 7462 | |
| 7463 Three sequences are maintained internally by MH-E and pushed out to MH | |
| 7464 when a message is shown. They include the sequence specified by your | |
| 7465 @samp{Unseen-Sequence:} profile component, @samp{cur}, and the | |
| 7466 sequence listed by the option @code{mh-tick-seq} which is @samp{tick} | |
| 7467 by default. If you do not like this behavior, turn off the option | |
| 7468 @code{mh-update-sequences-after-mh-show-flag}. You can then update the | |
| 7469 state manually with the @kbd{x}, @kbd{q}, or @kbd{M-x | |
| 7470 mh-update-sequences} commands. | |
| 7471 | |
| 7472 @vindex mh-seen-list | |
| 7473 @vindex mh-unseen-updated-hook | |
| 7474 | |
| 7475 The hook @code{mh-unseen-updated-hook} is run after the unseen | |
| 7476 sequence has been updated. The variable @code{mh-seen-list} can be | |
| 7477 used by this hook to obtain the list of messages which were removed | |
| 7478 from the unseen sequence. | |
| 7479 | |
| 7480 @cindex @command{mark} | |
| 7481 @cindex MH commands, @command{mark} | |
| 7482 @kindex S n | |
| 7483 @kindex S w | |
| 7484 | |
| 7485 With the exceptions of @kbd{S n} and @kbd{S w}, the underlying MH | |
| 7486 command dealing with sequences is @command{mark}@footnote{See the | |
| 7487 section @uref{@value{MH-BOOK-HOME}/mmbwm.html, Make Message Bookmarks | |
| 7488 with mark} in the MH book.}. | |
| 7489 | |
| 7490 @node Junk, Miscellaneous, Sequences, Top | |
| 7491 @chapter Dealing With Junk Mail | |
| 7492 | |
| 7493 @cindex Marshall Rose | |
| 7494 @cindex junk mail | |
| 7495 @cindex spam | |
| 7496 | |
| 7497 Marshall Rose once wrote a paper on MH entitled, @cite{How to process | |
| 7498 200 messages a day and still get some real work done}. This chapter | |
| 7499 could be entitled, @cite{How to process 1000 spams a day and still get | |
| 7500 some real work done}. | |
| 7501 | |
| 7502 @cindex blacklisting | |
| 7503 @cindex ham | |
| 7504 @cindex viruses | |
| 7505 @cindex whitelisting | |
| 7506 @cindex worms | |
| 7507 | |
| 7508 We use the terms @dfn{junk mail} and @dfn{spam} interchangeably for | |
| 7509 any unwanted message which includes spam, @dfn{viruses}, and | |
| 7510 @dfn{worms}. The opposite of spam is @dfn{ham}. The act of classifying | |
| 7511 a sender as one who sends junk mail is called @dfn{blacklisting}; the | |
| 7512 opposite is called @dfn{whitelisting}. | |
| 7513 | |
| 7514 @table @kbd | |
| 7515 @kindex J ? | |
| 7516 @findex mh-prefix-help | |
| 7517 @item J ? | |
| 7518 Display cheat sheet for the commands of the current prefix in | |
| 7519 minibuffer (@code{mh-prefix-help}). | |
| 7520 @c ------------------------- | |
| 7521 @kindex J b | |
| 7522 @findex mh-junk-blacklist | |
| 7523 @item J b | |
| 7524 Blacklist range as spam (@code{mh-junk-blacklist}). | |
| 7525 @c ------------------------- | |
| 7526 @kindex J w | |
| 7527 @findex mh-junk-whitelist | |
| 7528 @item J w | |
| 7529 Whitelist range as ham (@code{mh-junk-whitelist}). | |
| 7530 @c ------------------------- | |
| 7531 @item @code{mh-spamassassin-identify-spammers} | |
| 7532 Identify spammers who are repeat offenders. | |
| 7533 @end table | |
| 7534 | |
| 7535 @cindex @samp{mh-junk} customization group | |
| 7536 @cindex customization group, @samp{mh-junk} | |
| 7537 | |
| 7538 The following table lists the options from the @samp{mh-junk} | |
| 7539 customization group. | |
| 7540 | |
| 7541 @vtable @code | |
| 7542 @item mh-junk-background | |
| 7543 If on, spam programs are run in background (default: @samp{off}). | |
| 7544 @c ------------------------- | |
| 7545 @item mh-junk-disposition | |
| 7546 Disposition of junk mail (default: @samp{Delete Spam}). | |
| 7547 @c ------------------------- | |
| 7548 @item mh-junk-program | |
| 7549 Spam program that MH-E should use (default: @samp{Auto-detect}). | |
| 7550 @end vtable | |
| 7551 | |
| 7552 @cindex SpamProbe | |
| 7553 @cindex Spamassassin | |
| 7554 @cindex bogofilter | |
| 7555 @cindex spam filters, SpamProbe | |
| 7556 @cindex spam filters, Spamassassin | |
| 7557 @cindex spam filters, bogofilter | |
| 7558 | |
| 7559 MH-E depends on @uref{http://spamassassin.apache.org/, SpamAssassin}, | |
| 7560 @uref{http://bogofilter.sourceforge.net/, bogofilter}, or | |
| 7561 @uref{http://spamprobe.sourceforge.net/, SpamProbe} to throw the dreck | |
| 7562 away. This chapter describes briefly how to configure these programs | |
| 7563 to work well with MH-E and how to use MH-E's interface that provides | |
| 7564 continuing education for these programs. | |
| 7565 | |
| 7566 @vindex mh-junk-program | |
| 7567 | |
| 7568 The default setting of the option @code{mh-junk-program} is | |
| 7569 @samp{Auto-detect} which means that MH-E will automatically choose one | |
| 7570 of SpamAssassin, bogofilter, or SpamProbe in that order. If, for | |
| 7571 example, you have both SpamAssassin and bogofilter installed and you | |
| 7572 want to use bogofilter, then you can set this option to | |
| 7573 @samp{Bogofilter}. | |
| 7574 | |
| 7575 @findex mh-junk-blacklist | |
| 7576 @kindex J b | |
| 7577 @vindex mh-junk-disposition | |
| 7578 | |
| 7579 The command @kbd{J b} (@code{mh-junk-blacklist}) trains the spam | |
| 7580 program in use with the content of the range (@pxref{Ranges}) and then | |
| 7581 handles the message(s) as specified by the option | |
| 7582 @code{mh-junk-disposition}. By default, this option is set to | |
| 7583 @samp{Delete Spam} but you can also specify the name of the folder | |
| 7584 which is useful for building a corpus of spam for training purposes. | |
| 7585 | |
| 7586 @findex mh-junk-whitelist | |
| 7587 @kindex J w | |
| 7588 | |
| 7589 In contrast, the command @kbd{J w} (@code{mh-junk-whitelist}) | |
| 7590 reclassifies a range of messages (@pxref{Ranges}) as ham if it were | |
| 7591 incorrectly classified as spam. It then refiles the message into the | |
| 7592 @file{+inbox} folder. | |
| 7593 | |
| 7594 @cindex @samp{*MH-E Log*} | |
| 7595 @cindex buffers, @samp{*MH-E Log*} | |
| 7596 @findex call-process | |
| 7597 @vindex mh-junk-background | |
| 7598 | |
| 7599 By default, the programs are run in the foreground, but this can be | |
| 7600 slow when junking large numbers of messages. If you have enough memory | |
| 7601 or don't junk that many messages at the same time, you might try | |
| 7602 turning on the option @code{mh-junk-background}. @footnote{Note that | |
| 7603 the option @code{mh-junk-background} is used as the @code{display} | |
| 7604 argument in the call to @code{call-process}. Therefore, turning on | |
| 7605 this option means setting its value to @samp{0}. You can also set its | |
| 7606 value to @samp{t} to direct the programs' output to the @samp{*MH-E | |
| 7607 Log*} buffer; this may be useful for debugging.} | |
| 7608 | |
| 7609 The following sections discuss the various counter-spam measures that | |
| 7610 MH-E can work with. | |
| 7611 | |
| 7612 @cindex @file{.procmailrc} | |
| 7613 @cindex files, @file{.procmailrc} | |
| 7614 | |
| 7615 @subheading SpamAssassin | |
| 7616 | |
| 7617 @cindex Spamassassin | |
| 7618 @cindex spam filters, Spamassassin | |
| 7619 | |
| 7620 SpamAssassin is one of the more popular spam filtering programs. Get | |
| 7621 it from your local distribution or from the | |
| 7622 @uref{http://spamassassin.apache.org/, SpamAssassin web site}. | |
| 7623 | |
| 7624 To use SpamAssassin, add the following recipes to @file{~/.procmailrc}: | |
| 7625 | |
| 7626 @cindex @command{spamc} | |
| 7627 @cindex @samp{X-Spam-Level:} header field | |
| 7628 @cindex @samp{X-Spam-Status:} header field | |
| 7629 @cindex header field, @samp{X-Spam-Level:} | |
| 7630 @cindex header field, @samp{X-Spam-Status:} | |
| 7631 | |
| 7632 @smallexample | |
| 7633 PATH=$PATH:/usr/bin/mh | |
| 7634 MAILDIR=$HOME/`mhparam Path` | |
| 7635 | |
| 7636 # Fight spam with SpamAssassin. | |
| 7637 :0fw | |
| 7638 | spamc | |
| 7639 | |
| 7640 # Anything with a spam level of 10 or more is junked immediately. | |
| 7641 :0: | |
| 7642 * ^X-Spam-Level: .......... | |
| 7643 /dev/null | |
| 7644 | |
| 7645 :0: | |
| 7646 * ^X-Spam-Status: Yes | |
| 7647 spam/. | |
| 7648 @end smallexample | |
| 7649 | |
| 7650 If you don't use @command{spamc}, use @samp{spamassassin -P -a}. | |
| 7651 | |
| 7652 Note that one of the recipes above throws away messages with a score | |
| 7653 greater than or equal to 10. Here's how you can determine a value that | |
| 7654 works best for you. | |
| 7655 | |
| 7656 First, run @samp{spamassassin -t} on every mail message in your | |
| 7657 archive and use @command{gnumeric} to verify that the average plus the | |
| 7658 standard deviation of good mail is under 5, the SpamAssassin default | |
| 7659 for ``spam''. | |
| 7660 | |
| 7661 Using @command{gnumeric}, sort the messages by score and view the | |
| 7662 messages with the highest score. Determine the score which encompasses | |
| 7663 all of your interesting messages and add a couple of points to be | |
| 7664 conservative. Add that many dots to the @samp{X-Spam-Level:} header | |
| 7665 field above to send messages with that score down the drain. | |
| 7666 | |
| 7667 In the example above, messages with a score of 5-9 are set aside in | |
| 7668 the @samp{+spam} folder for later review. The major weakness of | |
| 7669 rules-based filters is a plethora of false positives so it is | |
| 7670 worthwhile to check. | |
| 7671 | |
| 7672 @findex mh-junk-blacklist | |
| 7673 @findex mh-junk-whitelist | |
| 7674 @kindex J b | |
| 7675 @kindex J w | |
| 7676 | |
| 7677 If SpamAssassin classifies a message incorrectly, or is unsure, you can | |
| 7678 use the MH-E commands @kbd{J b} (@code{mh-junk-blacklist}) and | |
| 7679 @kbd{J w} (@code{mh-junk-whitelist}). | |
| 7680 | |
| 7681 @cindex @command{sa-learn} | |
| 7682 @cindex @file{.spamassassin/user_prefs} | |
| 7683 @cindex files, @file{.spamassassin/user_prefs} | |
| 7684 | |
| 7685 The command @kbd{J b} (@code{mh-junk-blacklist}) adds a | |
| 7686 @samp{blacklist_from} entry to @file{~/spamassassin/user_prefs}, | |
| 7687 deletes the message, and sends the message to the Razor, so that | |
| 7688 others might not see this spam. If the @command{sa-learn} command is | |
| 7689 available, the message is also recategorized as spam. | |
| 7690 | |
| 7691 The command@kbd{J w} (@code{mh-junk-whitelist}) adds a | |
| 7692 @samp{whitelist_from} rule to @samp{~/.spamassassin/user_prefs}. If | |
| 7693 the @command{sa-learn} command is available, the message is also | |
| 7694 recategorized as ham. | |
| 7695 | |
| 7696 Over time, you'll observe that the same host or domain occurs | |
| 7697 repeatedly in the @samp{blacklist_from} entries, so you might think | |
| 7698 that you could avoid future spam by blacklisting all mail from a | |
| 7699 particular domain. The utility function | |
| 7700 @code{mh-spamassassin-identify-spammers} helps you do precisely that. | |
| 7701 This function displays a frequency count of the hosts and domains in | |
| 7702 the @samp{blacklist_from} entries from the last blank line in | |
| 7703 @file{~/.spamassassin/user_prefs} to the end of the file. This | |
| 7704 information can be used so that you can replace multiple | |
| 7705 @samp{blacklist_from} entries with a single wildcard entry such as: | |
| 7706 | |
| 7707 @smallexample | |
| 7708 blacklist_from *@@*amazingoffersdirect2u.com | |
| 7709 @end smallexample | |
| 7710 | |
| 7711 In versions of SpamAssassin (2.50 and on) that support a Bayesian | |
| 7712 classifier, @kbd{J b} @code{(mh-junk-blacklist}) uses the program | |
| 7713 @command{sa-learn} to recategorize the message as spam. Neither MH-E, | |
| 7714 nor SpamAssassin, rebuilds the database after adding words, so you | |
| 7715 will need to run @samp{sa-learn --rebuild} periodically. This can be | |
| 7716 done by adding the following to your @file{crontab}: | |
| 7717 | |
| 7718 @smallexample | |
| 7719 0 * * * * sa-learn --rebuild > /dev/null 2>&1 | |
| 7720 @end smallexample | |
| 7721 | |
| 7722 @subheading Bogofilter | |
| 7723 | |
| 7724 @cindex bogofilter | |
| 7725 @cindex spam filters, bogofilter | |
| 7726 | |
| 7727 Bogofilter is a Bayesian spam filtering program. Get it from your | |
| 7728 local distribution or from the | |
| 7729 @uref{http://bogofilter.sourceforge.net/, bogofilter web site}. | |
| 7730 | |
| 7731 Bogofilter is taught by running: | |
| 7732 | |
| 7733 @smallexample | |
| 7734 bogofilter -n < good-message | |
| 7735 @end smallexample | |
| 7736 | |
| 7737 on every good message, and | |
| 7738 | |
| 7739 @smallexample | |
| 7740 bogofilter -s < spam-message | |
| 7741 @end smallexample | |
| 7742 | |
| 7743 @cindex full training | |
| 7744 | |
| 7745 on every spam message. This is called a @dfn{full training}; three | |
| 7746 other training methods are described in the FAQ that is distributed | |
| 7747 with bogofilter. Note that most Bayesian filters need 1000 to 5000 of | |
| 7748 each type of message to start doing a good job. | |
| 7749 | |
| 7750 To use bogofilter, add the following recipes to @file{~/.procmailrc}: | |
| 7751 | |
| 7752 @cindex @samp{X-Bogosity:} header field | |
| 7753 @cindex header field, @samp{X-Bogosity:} | |
| 7754 | |
| 7755 @smallexample | |
| 7756 PATH=$PATH:/usr/bin/mh | |
| 7757 MAILDIR=$HOME/`mhparam Path` | |
| 7758 | |
| 7759 # Fight spam with Bogofilter. | |
| 7760 :0fw | |
| 7761 | bogofilter -3 -e -p | |
| 7762 | |
| 7763 :0: | |
| 7764 * ^X-Bogosity: Yes, tests=bogofilter | |
| 7765 spam/. | |
| 7766 | |
| 7767 :0: | |
| 7768 * ^X-Bogosity: Unsure, tests=bogofilter | |
| 7769 spam/unsure/. | |
| 7770 @end smallexample | |
| 7771 | |
| 7772 @findex mh-junk-blacklist | |
| 7773 @findex mh-junk-whitelist | |
| 7774 @kindex J b | |
| 7775 @kindex J w | |
| 7776 | |
| 7777 If bogofilter classifies a message incorrectly, or is unsure, you can | |
| 7778 use the MH-E commands @kbd{J b} (@code{mh-junk-blacklist}) and @kbd{J | |
| 7779 w} (@code{mh-junk-whitelist}) to update bogofilter's training. | |
| 7780 | |
| 7781 The @cite{Bogofilter FAQ} suggests that you run the following | |
| 7782 occasionally to shrink the database: | |
| 7783 | |
| 7784 @smallexample | |
| 7785 bogoutil -d wordlist.db | bogoutil -l wordlist.db.new | |
| 7786 mv wordlist.db wordlist.db.prv | |
| 7787 mv wordlist.db.new wordlist.db | |
| 7788 @end smallexample | |
| 7789 | |
| 7790 The @cite{Bogofilter tuning HOWTO} describes how you can fine-tune | |
| 7791 bogofilter. | |
| 7792 | |
| 7793 @subheading SpamProbe | |
| 7794 | |
| 7795 @cindex SpamProbe | |
| 7796 @cindex spam filters, SpamProbe | |
| 7797 | |
| 7798 SpamProbe is a Bayesian spam filtering program. Get it from your local | |
| 7799 distribution or from the @uref{http://spamprobe.sourceforge.net, | |
| 7800 SpamProbe web site}. | |
| 7801 | |
| 7802 To use SpamProbe, add the following recipes to @file{~/.procmailrc}: | |
| 7803 | |
| 7804 @cindex @command{formail} | |
| 7805 @cindex @samp{X-SpamProbe:} header field | |
| 7806 @cindex header field, @samp{X-SpamProbe:} | |
| 7807 | |
| 7808 @smallexample | |
| 7809 PATH=$PATH:/usr/bin/mh | |
| 7810 MAILDIR=$HOME/`mhparam Path` | |
| 7811 | |
| 7812 # Fight spam with SpamProbe. | |
| 7813 :0 | |
| 7814 SCORE=| spamprobe receive | |
| 7815 | |
| 7816 :0 wf | |
| 7817 | formail -I "X-SpamProbe: $SCORE" | |
| 7818 | |
| 7819 :0: | |
| 7820 *^X-SpamProbe: SPAM | |
| 7821 spam/. | |
| 7822 @end smallexample | |
| 7823 | |
| 7824 @findex mh-junk-blacklist | |
| 7825 @findex mh-junk-whitelist | |
| 7826 @kindex J b | |
| 7827 @kindex J w | |
| 7828 | |
| 7829 If SpamProbe classifies a message incorrectly, you can use the MH-E | |
| 7830 commands @kbd{J b} (@code{mh-junk-blacklist}) and @kbd{J w} | |
| 7831 (@code{mh-junk-whitelist}) to update SpamProbe's training. | |
| 7832 | |
| 7833 @subheading Other Things You Can Do | |
| 7834 | |
| 7835 There are a couple of things that you can add to @file{~/.procmailrc} | |
| 7836 in order to filter out a lot of spam and viruses. The first is to | |
| 7837 eliminate any message with a Windows executable (which is most likely | |
| 7838 a virus). The second is to eliminate mail in character sets that you | |
| 7839 can't read. | |
| 7840 | |
| 7841 @cindex @samp{Content-Transfer-Encoding:} header field | |
| 7842 @cindex @samp{Content-Type:} header field | |
| 7843 @cindex @samp{Subject:} header field | |
| 7844 @cindex header field, @samp{Content-Transfer-Encoding:} | |
| 7845 @cindex header field, @samp{Content-Type:} | |
| 7846 @cindex header field, @samp{Subject:} | |
| 7847 | |
| 7848 @smallexample | |
| 7849 PATH=$PATH:/usr/bin/mh | |
| 7850 MAILDIR=$HOME/`mhparam Path` | |
| 7851 | |
| 7852 # | |
| 7853 # Filter messages with win32 executables/virii. | |
| 7854 # | |
| 7855 # These attachments are base64 and have a TVqQAAMAAAAEAAAA//8AALg | |
| 7856 # pattern. The string "this program cannot be run in MS-DOS mode" | |
| 7857 # encoded in base64 is 4fug4AtAnNIbg and helps to avoid false | |
| 7858 # positives (Roland Smith via Pete from the bogofilter mailing list). | |
| 7859 # | |
| 7860 :0 B: | |
| 7861 * ^Content-Transfer-Encoding:.*base64 | |
| 7862 * ^TVqQAAMAAAAEAAAA//8AALg | |
| 7863 * 4fug4AtAnNIbg | |
| 7864 spam/exe/. | |
| 7865 | |
| 7866 # | |
| 7867 # Filter mail in unreadable character sets (from the Bogofilter FAQ). | |
| 7868 # | |
| 7869 UNREADABLE='[^?"]*big5|iso-2022-jp|ISO-2022-KR|euc-kr|gb2312|ks_c_5601-1987' | |
| 7870 | |
| 7871 :0: | |
| 7872 * 1^0 $ ^Subject:.*=\?($UNREADABLE) | |
| 7873 * 1^0 $ ^Content-Type:.*charset="?($UNREADABLE) | |
| 7874 spam/unreadable/. | |
| 7875 | |
| 7876 :0: | |
| 7877 * ^Content-Type:.*multipart | |
| 7878 * B ?? $ ^Content-Type:.*^?.*charset="?($UNREADABLE) | |
| 7879 spam/unreadable/. | |
| 7880 @end smallexample | |
| 7881 | |
| 7882 @node Miscellaneous, Scan Line Formats, Junk, Top | |
| 7883 @chapter Miscellaneous Commands, Variables, and Buffers | |
| 7884 | |
| 7885 This chapter covers the following command and the various MH-E | |
| 7886 buffers, | |
| 7887 | |
| 7888 @ftable @code | |
| 7889 @item mh-version | |
| 7890 Display version information about MH-E and the MH mail handling | |
| 7891 system. | |
| 7892 @end ftable | |
| 7893 | |
| 7894 @cindex buffers, @samp{*MH-E Info*} | |
| 7895 @cindex MH-E version | |
| 7896 @cindex @samp{*MH-E Info*} | |
| 7897 @cindex version | |
| 7898 @kindex M-x mh-version | |
| 7899 | |
| 7900 One command worth noting is @kbd{M-x mh-version}. You can compare the | |
| 7901 version this command prints to the latest release (@pxref{Getting | |
| 7902 MH-E}). The output of @kbd{M-x mh-version}, found in a buffer named | |
| 7903 @samp{*MH-E Info*}, should usually be included with any bug report you | |
| 7904 submit (@pxref{Bug Reports}). | |
| 7905 | |
| 7906 @subheading MH-E Buffers | |
| 7907 | |
| 7908 Besides the MH-Folder, MH-Show, and MH-Letter buffers, MH-E creates | |
| 7909 several other buffers. They are: | |
| 7910 | |
| 7911 @table @samp | |
| 7912 @cindex @samp{*MH-E Folders*} | |
| 7913 @cindex buffers, @samp{*MH-E Folders*} | |
| 7914 @findex mh-list-folders | |
| 7915 @item *MH-E Folders* | |
| 7916 @kindex F l | |
| 7917 This buffer contains the output of @kbd{F l} (@code{mh-list-folders}). | |
| 7918 @xref{Folders}. | |
| 7919 @c ------------------------- | |
| 7920 @cindex @samp{*MH-E Help*} | |
| 7921 @cindex buffers, @samp{*MH-E Help*} | |
| 7922 @findex mh-help | |
| 7923 @item *MH-E Help* | |
| 7924 @kindex ? | |
| 7925 @kindex C-c ? | |
| 7926 This buffer contains the output of @kbd{?} (@code{mh-help}) and | |
| 7927 @kbd{C-c ?} in MH-Letter mode. @xref{Using This Manual}. | |
| 7928 @c ------------------------- | |
| 7929 @cindex @samp{*MH-E Info*} | |
| 7930 @cindex buffers, @samp{*MH-E Info*} | |
| 7931 @item *MH-E Info* | |
| 7932 This buffer contains the output of @kbd{M-x mh-version @key{RET}}. | |
| 7933 @c ------------------------- | |
| 7934 @cindex @samp{*MH-E Log*} | |
| 7935 @cindex buffers, @samp{*MH-E Log*} | |
| 7936 @item *MH-E Log* | |
| 7937 This buffer contains the last 100 lines of the output of the various | |
| 7938 MH commands. | |
| 7939 @c ------------------------- | |
| 7940 @cindex @samp{*MH-E Mail Delivery*} | |
| 7941 @cindex buffers, @samp{*MH-E Mail Delivery*} | |
| 7942 @item *MH-E Mail Delivery* | |
| 7943 This buffer contains the transcript of a mail delivery. @xref{Sending | |
| 7944 Message}. | |
| 7945 @c ------------------------- | |
| 7946 @cindex @samp{*MH-E Recipients*} | |
| 7947 @cindex buffers, @samp{*MH-E Recipients*} | |
| 7948 @findex mh-check-whom | |
| 7949 @item *MH-E Recipients* | |
| 7950 @kindex C-c C-w | |
| 7951 This buffer contains the output of @kbd{C-c C-w} | |
| 7952 (@code{mh-check-whom}) and is killed when draft is sent. | |
| 7953 @xref{Checking Recipients}. | |
| 7954 @c ------------------------- | |
| 7955 @cindex @samp{*MH-E Sequences*} | |
| 7956 @cindex buffers, @samp{*MH-E Sequences*} | |
| 7957 @item *MH-E Sequences* | |
| 7958 This buffer contains the output of @kbd{S l} | |
| 7959 (@code{mh-list-sequences}). @xref{Sequences}. | |
| 7960 @c ------------------------- | |
| 7961 @cindex @samp{*mh-temp*} | |
| 7962 @cindex buffers, @samp{*mh-temp*} | |
| 7963 @item *mh-temp* | |
| 7964 This is a scratch, ephemeral, buffer used by MH-E functions. Note that | |
| 7965 it is hidden because the first character in the name is a space. | |
| 7966 You'll generally not have any need for this buffer. | |
| 7967 @end table | |
| 7968 | |
| 7969 @node Scan Line Formats, Procmail, Miscellaneous, Top | |
| 7970 @appendix Scan Line Formats | |
| 7971 | |
| 7972 @cindex scan line formats | |
| 7973 | |
| 7974 This appendix discusses how MH-E creates, parses, and manipulates scan | |
| 7975 lines. If you have your own MH scan or inc format files, you | |
| 7976 @strong{can} teach MH-E how to handle them, but it isn't easy as | |
| 7977 you'll see. | |
| 7978 | |
| 7979 @cindex @samp{mh-scan-line-formats} customization group | |
| 7980 @cindex customization group, @samp{mh-scan-line-formats} | |
| 7981 | |
| 7982 This table lists the options in the @samp{mh-scan-line-formats} | |
| 7983 customization group. | |
| 7984 | |
| 7985 @vtable @code | |
| 7986 @item mh-adaptive-cmd-note-flag | |
| 7987 On means that the message number width is determined dynamically | |
| 7988 (default: @samp{on}). | |
| 7989 @c ------------------------- | |
| 7990 @item mh-scan-format-file | |
| 7991 Specifies the format file to pass to the scan program (default: | |
| 7992 @samp{Use MH-E scan Format}). | |
| 7993 @c ------------------------- | |
| 7994 @item mh-scan-prog | |
| 7995 Program used to scan messages (default: @code{"scan"}). | |
| 7996 @end vtable | |
| 7997 | |
| 7998 @vindex mh-adaptive-cmd-note-flag | |
| 7999 | |
| 8000 There are a couple of caveats when creating your own scan format file. | |
| 8001 First, MH-E will not work if your scan lines do not include message | |
| 8002 numbers. It will work poorly if you don't dedicate a column for | |
| 8003 showing the current message and notations. You won't be able to use | |
| 8004 the option @code{mh-adaptive-cmd-note-flag} or the threading features | |
| 8005 (@pxref{Threading}). | |
| 8006 | |
| 8007 @cindex message numbers | |
| 8008 @findex mh-set-cmd-note | |
| 8009 @vindex mh-adaptive-cmd-note-flag | |
| 8010 @vindex mh-scan-format-file | |
| 8011 | |
| 8012 If you've created your own format to handle long message numbers, | |
| 8013 you'll be pleased to know you no longer need it since MH-E adapts its | |
| 8014 internal format based upon the largest message number if | |
| 8015 @code{mh-adaptive-cmd-note-flag} is on (the default). If you prefer | |
| 8016 fixed-width message numbers, turn off @code{mh-adaptive-cmd-note-flag} | |
| 8017 and call @code{mh-set-cmd-note} with the width specified by your | |
| 8018 format file (see @code{mh-scan-format-file}). For example, the default | |
| 8019 width is 4, so you would use @samp{(mh-set-cmd-note 4)}. | |
| 8020 | |
| 8021 @vindex mh-adaptive-cmd-note-flag | |
| 8022 @vindex mh-scan-format-file | |
| 8023 @vindex mh-scan-format-mh | |
| 8024 @vindex mh-scan-format-nmh | |
| 8025 | |
| 8026 The default setting for @code{mh-scan-format-file} is @samp{Use MH-E | |
| 8027 scan Format}. This means that the format string will be taken from the | |
| 8028 either @code{mh-scan-format-mh} or @code{mh-scan-format-nmh} depending | |
| 8029 on whether MH or nmh (or GNU mailutils) is in use. This setting also | |
| 8030 enables you to turn on the option @code{mh-adaptive-cmd-note-flag}. | |
| 8031 You can also set this option to @samp{Use Default scan Format} to get | |
| 8032 the same output as you would get if you ran @command{scan} from the | |
| 8033 shell. If you have a format file that you want MH-E to use but not MH, | |
| 8034 you can set this option to @samp{Specify a scan Format File} and enter | |
| 8035 the name of your format file. | |
| 8036 | |
| 8037 @vindex mh-scan-format-file | |
| 8038 @vindex mh-scan-format-mh | |
| 8039 @vindex mh-scan-format-nmh | |
| 8040 | |
| 8041 The scan format that MH-E uses when @code{mh-scan-format-file} is set | |
| 8042 to its default of @samp{Use MH-E scan Format} is held in the variables | |
| 8043 @code{mh-scan-format-nmh} and @code{mh-scan-format-mh} depending on | |
| 8044 whether you are using nmh (or GNU mailutils) or not. Typically, you | |
| 8045 create your own format files rather than modifying these variables. | |
| 8046 The value of @code{mh-scan-format-nmh} is: | |
| 8047 | |
| 8048 @smallexample | |
| 8049 (concat | |
| 8050 "%4(msg)" | |
| 8051 "%<(cur)+%| %>" | |
| 8052 "%<@{replied@}-" | |
| 8053 "%?(nonnull(comp@{to@}))%<(mymbox@{to@})t%>" | |
| 8054 "%?(nonnull(comp@{cc@}))%<(mymbox@{cc@})c%>" | |
| 8055 "%?(nonnull(comp@{bcc@}))%<(mymbox@{bcc@})b%>" | |
| 8056 "%?(nonnull(comp@{newsgroups@}))n%>" | |
| 8057 "%<(zero) %>" | |
| 8058 "%02(mon@{date@})/%02(mday@{date@})%<@{date@} %|*%>" | |
| 8059 "%<(mymbox@{from@})%<@{to@}To:%14(decode(friendly@{to@}))%>%>" | |
| 8060 "%<(zero)%17(decode(friendly@{from@}))%> " | |
| 8061 "%(decode@{subject@})%<@{body@}<<%@{body@}%>") | |
| 8062 @end smallexample | |
| 8063 | |
| 8064 @cindex decoding RFC 2047 | |
| 8065 @cindex RFC 2047, decoding | |
| 8066 @vindex mh-scan-format-mh | |
| 8067 | |
| 8068 The setting for @code{mh-scan-format-mh} is similar, except that MH | |
| 8069 doesn't have the function @code{decode} (which is used to decode RFC | |
| 8070 2047 encodings). | |
| 8071 | |
| 8072 @cindex notations, scan line | |
| 8073 @cindex scan line notations | |
| 8074 | |
| 8075 These strings are passed to the @command{scan} program via the | |
| 8076 @option{-format} argument. The formats are identical to the defaults | |
| 8077 except that additional hints for fontification have been added to the | |
| 8078 existing notations in the fifth column (remember that in Emacs, the | |
| 8079 columns start at 0). The values of the fifth column, in priority | |
| 8080 order, are: @samp{-} if the message has been replied to, @samp{t} if | |
| 8081 an address in the @samp{To:} field matches one of the mailboxes of the | |
| 8082 current user, @samp{c} if the @samp{Cc:} field matches, @samp{b} if | |
| 8083 the @samp{Bcc:} field matches, and @samp{n} if a non-empty | |
| 8084 @samp{Newsgroups:} field is present. | |
| 8085 | |
| 8086 @cindex @command{scan} | |
| 8087 @cindex MH commands, @command{scan} | |
| 8088 @vindex mh-progs | |
| 8089 @vindex mh-scan-prog | |
| 8090 | |
| 8091 The name of the program that generates a listing of one line per | |
| 8092 message is held in @code{mh-scan-prog} (default: @code{"scan"}). | |
| 8093 Unless this variable contains an absolute pathname, it is assumed to | |
| 8094 be in the @code{mh-progs} directory (@pxref{Getting Started}). You may | |
| 8095 link another program to @command{scan} (see @samp{mh-profile}(5)) to | |
| 8096 produce a different type of listing@footnote{See the section | |
| 8097 @uref{@value{MH-BOOK-HOME}/faswsprs.html, Find and Specify with scan | |
| 8098 pick Ranges Sequences} in the MH book.}. | |
| 8099 | |
| 8100 @cindex regular expressions, scan line formats | |
| 8101 @findex mh-set-cmd-note | |
| 8102 @findex setq | |
| 8103 | |
| 8104 If you change the format of the scan lines you'll need to tell MH-E | |
| 8105 how to parse the new format. As you will see, quite a lot of variables | |
| 8106 are involved to do that. Use @kbd{M-x apropos @key{RET} | |
| 8107 mh-scan.*regexp @key{RET}} to obtain a list of these variables. You | |
| 8108 will also have to call @code{mh-set-cmd-note} if your notations are | |
| 8109 not in column 4 (columns in Emacs start with 0). Note that unlike most | |
| 8110 of the user options described in this manual, these are variables and | |
| 8111 must be set with @code{setq} instead of in a customization buffer. For | |
| 8112 help with regular expressions, see | |
| 8113 @ifnothtml | |
| 8114 @ref{Regexps, , Syntax of Regular Expressions, emacs, The | |
| 8115 GNU Emacs Manual}. | |
| 8116 @end ifnothtml | |
| 8117 @ifhtml | |
| 8118 section | |
| 8119 @uref{http://www.gnu.org/software/emacs/manual/html_node/Regexps.html, | |
| 8120 Syntax of Regular Expressions} in @cite{The GNU Emacs Manual}. | |
| 8121 @end ifhtml | |
| 8122 | |
| 8123 The first variable has to do with pruning out garbage. | |
| 8124 | |
| 8125 @vtable @code | |
| 8126 @cindex @command{inc} | |
| 8127 @cindex MH commands, @command{inc} | |
| 8128 @cindex @command{scan} | |
| 8129 @cindex MH commands, @command{scan} | |
| 8130 @item mh-scan-valid-regexp | |
| 8131 This regular expression describes a valid scan line. This is used to | |
| 8132 eliminate error messages that are occasionally produced by | |
| 8133 @command{inc}@footnote{See the section | |
| 8134 @uref{@value{MH-BOOK-HOME}/reapre.html, Reading Mail: inc show next | |
| 8135 prev} in the MH book.} or @command{scan} (default: @code{"^ *[0-9]"}). | |
| 8136 @end vtable | |
| 8137 | |
| 8138 Next, many variables control how the scan lines are parsed. | |
| 8139 | |
| 8140 @vtable @code | |
| 8141 @vindex mh-folder-body | |
| 8142 @vindex mh-folder-font-lock-keywords | |
| 8143 @item mh-scan-body-regexp | |
| 8144 This regular expression matches the message body fragment. Note that | |
| 8145 the default setting of @code{mh-folder-font-lock-keywords} expects | |
| 8146 this expression to contain at least one parenthesized expression which | |
| 8147 matches the body text as in the default of | |
| 8148 @code{"\\(<<\\([^\n]+\\)?\\)"}. If this regular expression is not | |
| 8149 correct, the body fragment will not be highlighted with the face | |
| 8150 @code{mh-folder-body}. | |
| 8151 @c ------------------------- | |
| 8152 @vindex mh-folder-cur-msg-number | |
| 8153 @vindex mh-folder-font-lock-keywords | |
| 8154 @vindex mh-note-cur | |
| 8155 @item mh-scan-cur-msg-number-regexp | |
| 8156 This regular expression matches the current message. It must match | |
| 8157 from the beginning of the line. Note that the default setting of | |
| 8158 @code{mh-folder-font-lock-keywords} expects this expression to contain | |
| 8159 at least one parenthesized expression which matches the message number | |
| 8160 as in the default of @w{@code{"^\\( *[0-9]+\\+\\).*"}}. This | |
| 8161 expression includes the leading space and current message marker | |
| 8162 @samp{+} within the parenthesis since it looks better to highlight | |
| 8163 these items as well. The highlighting is done with the face | |
| 8164 @code{mh-folder-cur-msg-number}. This regular expression should be | |
| 8165 correct as it is needed by non-fontification functions. See also | |
| 8166 @code{mh-note-cur}. | |
| 8167 @c ------------------------- | |
| 8168 @vindex mh-folder-date | |
| 8169 @vindex mh-folder-font-lock-keywords | |
| 8170 @vindex mh-scan-sent-to-me-sender-regexp | |
| 8171 @item mh-scan-date-regexp | |
| 8172 This regular expression matches a valid date. It must @strong{not} be | |
| 8173 anchored to the beginning or the end of the line. Note that the | |
| 8174 default setting of @code{mh-folder-font-lock-keywords} expects this | |
| 8175 expression to contain only one parenthesized expression which matches | |
| 8176 the date field as in the default of | |
| 8177 @code{"\\([0-9][0-9]/[0-9][0-9]\\)"}. If this regular expression is | |
| 8178 not correct, the date will not be highlighted with the face | |
| 8179 @code{mh-folder-date}. | |
| 8180 @c ------------------------- | |
| 8181 @vindex mh-folder-deleted | |
| 8182 @vindex mh-folder-font-lock-keywords | |
| 8183 @vindex mh-note-deleted | |
| 8184 @item mh-scan-deleted-msg-regexp | |
| 8185 This regular expression matches deleted messages. It must match from | |
| 8186 the beginning of the line. Note that the default setting of | |
| 8187 @code{mh-folder-font-lock-keywords} expects this expression to contain | |
| 8188 at least one parenthesized expression which matches the message number | |
| 8189 as in the default of @code{"^\\( *[0-9]+\\)D"}. This expression | |
| 8190 includes the leading space within the parenthesis since it looks | |
| 8191 better to highlight it as well. The highlighting is done with the face | |
| 8192 @code{mh-folder-deleted}. This regular expression should be correct as | |
| 8193 it is needed by non-fontification functions. See also | |
| 8194 @code{mh-note-deleted}. | |
| 8195 @c ------------------------- | |
| 8196 @vindex mh-folder-font-lock-keywords | |
| 8197 @vindex mh-folder-msg-number | |
| 8198 @item mh-scan-good-msg-regexp | |
| 8199 This regular expression matches ``good'' messages. It must match from | |
| 8200 the beginning of the line. Note that the default setting of | |
| 8201 @code{mh-folder-font-lock-keywords} expects this expression to contain | |
| 8202 at least one parenthesized expression which matches the message number | |
| 8203 as in the default of @w{@code{"^\\( *[0-9]+\\)[^D^0-9]"}}. This | |
| 8204 expression includes the leading space within the parenthesis since it | |
| 8205 looks better to highlight it as well. The highlighting is done with | |
| 8206 the face @code{mh-folder-msg-number}. This regular expression should | |
| 8207 be correct as it is needed by non-fontification functions. | |
| 8208 @c ------------------------- | |
| 8209 @vindex mh-scan-format-file | |
| 8210 @item mh-scan-msg-format-regexp | |
| 8211 This regular expression finds the message number width in a scan | |
| 8212 format. Note that the message number must be placed in a parenthesized | |
| 8213 expression as in the default of @code{"%\\([0-9]*\\)(msg)"}. This | |
| 8214 variable is only consulted if @code{mh-scan-format-file} is set to | |
| 8215 @samp{Use MH-E scan Format}. | |
| 8216 @c ------------------------- | |
| 8217 @vindex mh-scan-format-file | |
| 8218 @item mh-scan-msg-format-string | |
| 8219 This is a format string for the width of the message number in a scan | |
| 8220 format. Use @samp{0%d} for zero-filled message numbers. This variable | |
| 8221 is only consulted if @code{mh-scan-format-file} is set to @samp{Use | |
| 8222 MH-E scan Format} (default: @code{"%d"}). | |
| 8223 @c ------------------------- | |
| 8224 @item mh-scan-msg-number-regexp | |
| 8225 This regular expression extracts the message number. It must match | |
| 8226 from the beginning of the line. Note that the message number must be | |
| 8227 placed in a parenthesized expression as in the default of @w{@code{"^ | |
| 8228 *\\([0-9]+\\)"}}. | |
| 8229 @c ------------------------- | |
| 8230 @item mh-scan-msg-overflow-regexp | |
| 8231 This regular expression matches overflowed message numbers (default: | |
| 8232 @code{"^[?0-9][0-9]"}). | |
| 8233 @c ------------------------- | |
| 8234 @item mh-scan-msg-search-regexp | |
| 8235 This regular expression matches a particular message. It is a format | |
| 8236 string; use @samp{%d} to represent the location of the message number | |
| 8237 within the expression as in the default of @code{"^[^0-9]*%d[^0-9]"}. | |
| 8238 @c ------------------------- | |
| 8239 @vindex mh-folder-address | |
| 8240 @vindex mh-folder-font-lock-keywords | |
| 8241 @vindex mh-folder-to | |
| 8242 @item mh-scan-rcpt-regexp | |
| 8243 This regular expression specifies the recipient in messages you sent. | |
| 8244 Note that the default setting of @code{mh-folder-font-lock-keywords} | |
| 8245 expects this expression to contain two parenthesized expressions. The | |
| 8246 first is expected to match the @samp{To:} that the default scan format | |
| 8247 file generates. The second is expected to match the recipient's name | |
| 8248 as in the default of @code{"\\(To:\\)\\(..............\\)"}. If this | |
| 8249 regular expression is not correct, the @samp{To:} string will not be | |
| 8250 highlighted with the face @code{mh-folder-to} and the recipient will not be | |
| 8251 highlighted with the face @code{mh-folder-address}. | |
| 8252 @c ------------------------- | |
| 8253 @vindex mh-folder-font-lock-keywords | |
| 8254 @vindex mh-folder-refiled | |
| 8255 @vindex mh-note-refiled | |
| 8256 @item mh-scan-refiled-msg-regexp | |
| 8257 This regular expression matches refiled messages. It must match from | |
| 8258 the beginning of the line. Note that the default setting of | |
| 8259 @code{mh-folder-font-lock-keywords} expects this expression to contain | |
| 8260 at least one parenthesized expression which matches the message number | |
| 8261 as in the default of @w{@code{"^\\( *[0-9]+\\)\\^"}}. This expression | |
| 8262 includes the leading space within the parenthesis since it looks | |
| 8263 better to highlight it as well. The highlighting is done with the face | |
| 8264 @code{mh-folder-refiled}. This regular expression should be correct as | |
| 8265 it is needed by non-fontification functions. See also | |
| 8266 @code{mh-note-refiled}. | |
| 8267 @c ------------------------- | |
| 8268 @vindex mh-folder-font-lock-keywords | |
| 8269 @vindex mh-folder-sent-to-me-sender | |
| 8270 @vindex mh-mh-folder-sent-to-me-hint | |
| 8271 @vindex mh-scan-format-nmh | |
| 8272 @item mh-scan-sent-to-me-sender-regexp | |
| 8273 This regular expression matches messages sent to us. Note that the | |
| 8274 default setting of @code{mh-folder-font-lock-keywords} expects this | |
| 8275 expression to contain at least two parenthesized expressions. The | |
| 8276 first should match the fontification hint (see | |
| 8277 @code{mh-scan-format-nmh}) and the second should match the user name | |
| 8278 as in the default of | |
| 8279 @w{@code{"^ *[0-9]+.\\([bct]\\).....[ ]*\\(..................\\)"}}. | |
| 8280 If this regular expression is not correct, the notation hints will not | |
| 8281 be highlighted with the face @code{mh-mh-folder-sent-to-me-hint} and | |
| 8282 the sender will not be highlighted with the face | |
| 8283 @code{mh-folder-sent-to-me-sender}. | |
| 8284 @c ------------------------- | |
| 8285 @vindex mh-folder-followup | |
| 8286 @vindex mh-folder-font-lock-keywords | |
| 8287 @vindex mh-folder-subject | |
| 8288 @item mh-scan-subject-regexp | |
| 8289 This regular expression matches the subject. It must match from the | |
| 8290 beginning of the line. Note that the default setting of | |
| 8291 @samp{mh-folder-font-lock-keywords} expects this expression to contain | |
| 8292 at least three parenthesized expressions. The first is expected to | |
| 8293 match the @samp{Re:} string, if any, and is highlighted with the face | |
| 8294 @code{mh-folder-followup}. The second matches an optional bracketed | |
| 8295 number after @samp{Re:}, such as in @samp{Re[2]:} (and is thus a | |
| 8296 sub-expression of the first expression). The third is expected to | |
| 8297 match the subject line itself which is highlighted with the face | |
| 8298 @code{mh-folder-subject}. For example, the default is | |
| 8299 @w{@code{"^ *[0-9]+........[ ]*...................}}@* | |
| 8300 @w{@code{\\([Rr][Ee]\\(\\[[0-9]+\\]\\)?:\\s-*\\)*\\([^<\n]*\\)"}}. | |
| 8301 This regular expression should be correct as it is needed by | |
| 8302 non-fontification functions. Note that this example is broken up on | |
| 8303 two lines for readability, but is actually a single string. | |
| 8304 @end vtable | |
| 8305 | |
| 8306 Finally, there are a slew of variables that control how MH-E annotates | |
| 8307 the scan lines. | |
| 8308 | |
| 8309 @vtable @code | |
| 8310 @findex mh-set-cmd-note | |
| 8311 @vindex mh-adaptive-cmd-note-flag | |
| 8312 @item mh-cmd-note | |
| 8313 Column for notations (default: 4). This variable should be set with | |
| 8314 the function @code{mh-set-cmd-note}. This variable may be updated | |
| 8315 dynamically if @code{mh-adaptive-cmd-note-flag} is on. The following | |
| 8316 variables contain the notational characters. Note that columns in | |
| 8317 Emacs start with 0. | |
| 8318 @c ------------------------- | |
| 8319 @item mh-note-copied | |
| 8320 Messages that have been copied are marked by this character (default: | |
| 8321 @code{?C}). | |
| 8322 @c ------------------------- | |
| 8323 @vindex mh-scan-cur-msg-number-regexp | |
| 8324 @item mh-note-cur | |
| 8325 The current message (in MH, not in MH-E) is marked by this character | |
| 8326 (default: @code{?+}). See also @code{mh-scan-cur-msg-number-regexp}. | |
| 8327 @c ------------------------- | |
| 8328 @vindex mh-scan-deleted-msg-regexp | |
| 8329 @item mh-note-deleted | |
| 8330 Messages that have been deleted are marked by this character (default: | |
| 8331 @code{?D}). See also @code{mh-scan-deleted-msg-regexp}. | |
| 8332 @c ------------------------- | |
| 8333 @item mh-note-dist | |
| 8334 Messages that have been redistributed are marked by this character | |
| 8335 (default: @code{?R}). | |
| 8336 @c ------------------------- | |
| 8337 @item mh-note-forw | |
| 8338 Messages that have been forwarded are marked by this character | |
| 8339 (default: @code{?F}). | |
| 8340 @c ------------------------- | |
| 8341 @item mh-note-printed | |
| 8342 Messages that have been printed are marked by this character (default: | |
| 8343 @code{?P}). | |
| 8344 @c ------------------------- | |
| 8345 @vindex mh-scan-refiled-msg-regexp | |
| 8346 @item mh-note-refiled | |
| 8347 Messages that have been refiled are marked by this character (default: | |
| 8348 @code{?^}). See also @code{mh-scan-refiled-msg-regexp}. | |
| 8349 @c ------------------------- | |
| 8350 @item mh-note-repl | |
| 8351 Messages that have been replied to are marked by this character | |
| 8352 (default: @code{?-}). | |
| 8353 @c ------------------------- | |
| 8354 @item mh-note-seq | |
| 8355 Messages in a user-defined sequence are marked by this character | |
| 8356 (default: @code{?%}). Messages in the @samp{search} sequence are | |
| 8357 marked by this character as well. | |
| 8358 @end vtable | |
| 8359 | |
| 8360 For example, let's say I have the following in @file{scan.format} | |
| 8361 which displays the sender, the subject, and the message number. This | |
| 8362 format places a @samp{+} after the message number for the current | |
| 8363 message according to MH; it also uses that column for notations. | |
| 8364 | |
| 8365 @smallexample | |
| 8366 %20(decode(friendly@{from@})) %50(decode@{subject@}) %4(msg)%<(cur)+%| %> | |
| 8367 @end smallexample | |
| 8368 | |
| 8369 @vindex mh-adaptive-cmd-note-flag | |
| 8370 @vindex mh-scan-format-file | |
| 8371 @vindex mh-scan-format-file, example | |
| 8372 | |
| 8373 The first thing you have to do is tell MH-E to use this file. | |
| 8374 Customize @code{mh-scan-format-file} and set its value to @samp{Use | |
| 8375 Default scan Format}. If you didn't get already turn off | |
| 8376 @code{mh-adaptive-cmd-note-flag}, you'll need to do that first. | |
| 8377 | |
| 8378 Next, tell MH-E what a valid scan line looks like so that you can at | |
| 8379 least display the output of scan in your MH-Folder buffer. | |
| 8380 | |
| 8381 @vindex mh-scan-valid-regexp, example | |
| 8382 | |
| 8383 @smalllisp | |
| 8384 (setq mh-scan-valid-regexp "[0-9]+[+D^ ]$") | |
| 8385 @end smalllisp | |
| 8386 | |
| 8387 Now, in order to get rid of the @samp{Cursor not pointing to message} | |
| 8388 message, you need to tell MH-E how to access the message number. You | |
| 8389 should also see why MH-E requires that you include a message number in | |
| 8390 the first place. | |
| 8391 | |
| 8392 @vindex mh-scan-msg-number-regexp, example | |
| 8393 @vindex mh-scan-msg-search-regexp, example | |
| 8394 | |
| 8395 @smalllisp | |
| 8396 (setq mh-scan-msg-number-regexp "^.* \\([0-9]+\\)[+D^ ]$") | |
| 8397 (setq mh-scan-msg-search-regexp " %d[+D^ ]$") | |
| 8398 @end smalllisp | |
| 8399 | |
| 8400 In order to get the next and previous commands working, add this. | |
| 8401 | |
| 8402 @vindex mh-scan-good-msg-regexp, example | |
| 8403 | |
| 8404 @smalllisp | |
| 8405 (setq mh-scan-good-msg-regexp "^.* \\([0-9]+\\)[+D^ ]$") | |
| 8406 @end smalllisp | |
| 8407 | |
| 8408 Note that the current message isn't marked with a @samp{+} when moving | |
| 8409 between the next and previous messages. Here is the code required to | |
| 8410 get this working. | |
| 8411 | |
| 8412 @vindex set-mh-cmd-note, example | |
| 8413 @vindex mh-scan-cur-msg-number-regexp, example | |
| 8414 | |
| 8415 @smalllisp | |
| 8416 (set-mh-cmd-note 76) | |
| 8417 (setq mh-scan-cur-msg-number-regexp "^.* \\([0-9]+\\)\\+$") | |
| 8418 @end smalllisp | |
| 8419 | |
| 8420 Finally, add the following to delete and refile messages. | |
| 8421 | |
| 8422 @vindex mh-scan-deleted-msg-regexp, example | |
| 8423 @vindex mh-scan-refiled-msg-regexp, example | |
| 8424 | |
| 8425 @smalllisp | |
| 8426 (setq mh-scan-deleted-msg-regexp "^.* \\([0-9]+\\)D$") | |
| 8427 (setq mh-scan-refiled-msg-regexp "^.* \\([0-9]+\\)\\^$") | |
| 8428 @end smalllisp | |
| 8429 | |
| 8430 This is just a bare minimum; it's best to adjust all of the regular | |
| 8431 expressions to ensure that MH-E and highlighting perform well. | |
| 8432 | |
| 8433 @node Procmail, Odds and Ends, Scan Line Formats, Top | |
| 8434 @appendix Reading Mailing Lists Effectively | |
| 8435 | |
| 8436 @cindex @command{procmail} | |
| 8437 @cindex @command{slocal} | |
| 8438 @cindex Gnus | |
| 8439 @cindex MH commands, @command{slocal} | |
| 8440 @cindex Unix commands, @command{procmail} | |
| 8441 @cindex mailing lists, reading | |
| 8442 | |
| 8443 This appendix explains how to use @uref{http://www.procmail.org/, | |
| 8444 procmail} to file mail from mailing lists into folders which can then | |
| 8445 be read easily with MH-E@footnote{The MH equivalent, @command{slocal}, | |
| 8446 can be used as well, but procmail is more flexible and more packages | |
| 8447 exist for procmail than for slocal.}. Some mailing lists have such | |
| 8448 high traffic that Gnus must be used and I discuss how to use Gnus | |
| 8449 side-by-side with MH-E. | |
| 8450 | |
| 8451 @cindex @file{.procmailrc} | |
| 8452 @cindex files, @file{.procmailrc} | |
| 8453 | |
| 8454 First, I'll describe how to put mail from your mailing lists directly | |
| 8455 into an MH folder using @command{procmail}. First, add the following | |
| 8456 to @file{~/.procmailrc}. While the logging variables aren't strictly | |
| 8457 necessary, they are extremely useful. | |
| 8458 | |
| 8459 @smallexample | |
| 8460 [1] # Update PATH so procmail can find myrcvstore, rcvstore and mhparam. | |
| 8461 [2] PATH=$PATH:/usr/lib/mh:/usr/bin/mh:$HOME/bin | |
| 8462 [3] | |
| 8463 [4] # Point LOGFILE at the actual log file. | |
| 8464 [5] LOGFILE=$HOME/.procmail.log | |
| 8465 [6] | |
| 8466 [7] # This setting provides just the right amount of information. | |
| 8467 [8] LOGABSTRACT=all | |
| 8468 [9] | |
| 8469 [10] # Uncomment the following line to see how your patterns match. | |
| 8470 [11] #VERBOSE=yes | |
| 8471 [12] | |
| 8472 [13] # Place mail sent to any MH-E mailing list in +mh-e. | |
| 8473 [14] :0 w: mh-e$LOCKEXT | |
| 8474 [15] * ^TO.*mh-e-.*@.*sourceforge.net | |
| 8475 [16] | myrcvstore -create +mh-e | |
| 8476 @end smallexample | |
| 8477 | |
| 8478 @cindex @command{rcvstore} | |
| 8479 @cindex MH commands, @command{rcvstore} | |
| 8480 | |
| 8481 Line 14 creates a lock file in your mail directory based upon the name | |
| 8482 of the folder. This is done because @command{rcvstore} does not | |
| 8483 perform locking. While this lock file will prevent @command{procmail} | |
| 8484 from writing to a folder concurrently, there is a slight chance that | |
| 8485 you might lose a message if you're performing operations on a folder | |
| 8486 at the same time @command{rcvstore} is placing a message there. You | |
| 8487 have been warned. Now that that disclaimer is out of the way, note | |
| 8488 that I've been using this set-up for over a decade and haven't lost | |
| 8489 anything to my knowledge@footnote{See | |
| 8490 @uref{https://savannah.nongnu.org/bugs/?func=detailbug&bug_id=4361&group_id=2166, | |
| 8491 Savannah issue #4361} to see if @command{rcvstore} locking is still an | |
| 8492 issue.}. | |
| 8493 | |
| 8494 @cindex @samp{Unseen-Sequence:} MH profile component | |
| 8495 @cindex MH profile component, @samp{Unseen-Sequence:} | |
| 8496 | |
| 8497 Line 16 uses the following script, @code{myrcvstore}, to massage the | |
| 8498 message as described in the comment and file the message in the given | |
| 8499 folder@footnote{The @samp{-create} argument wasn't always the default | |
| 8500 to @command{rcvstore}.}. | |
| 8501 | |
| 8502 @smallexample | |
| 8503 #! /bin/sh | |
| 8504 | |
| 8505 # Accepts a message on standard input and passes it through rcvstore | |
| 8506 # after first passing it through any filters. All arguments are passed | |
| 8507 # on to rcvstore. | |
| 8508 | |
| 8509 # Force the "From user date" to become part of header. One reason this | |
| 8510 # is done is because the presence of the From field confuses dist so | |
| 8511 # that dist adds a new header, rather than using the existing header. | |
| 8512 # Note that this should not be done for any message that goes into a | |
| 8513 # Gnus incoming file (Gnus will thrown an error) nor should it be | |
| 8514 # applied to any message that goes to the system mailbox because the | |
| 8515 # entire mailbox will be incorporated as a single message. | |
| 8516 formail -c -z -R 'From ' X-Envelope-From: | | |
| 8517 rcvstore $@@ | |
| 8518 @end smallexample | |
| 8519 | |
| 8520 If your version of @command{rcvstore} doesn't add messages to the | |
| 8521 @samp{unseen} sequence by default, add the following line to your MH | |
| 8522 profile: | |
| 8523 | |
| 8524 @smallexample | |
| 8525 Unseen-Sequence: unseen | |
| 8526 @end smallexample | |
| 8527 | |
| 8528 Now view your new messages with the speedbar (@pxref{Speedbar}) or with | |
| 8529 @kbd{F n} (@code{mh-index-new-messages}). @xref{Folders}. | |
| 8530 | |
| 8531 If you're on a mailing list that is so voluminous that it is | |
| 8532 impossible to read every message, it usually better to read the | |
| 8533 mailing list like a newsgroup in a news reader. Emacs has a built-in | |
| 8534 newsreader called Gnus. The remainder of this appendix talks about how | |
| 8535 to use Gnus with an MH message store. The version of Gnus that was | |
| 8536 used to prepare this manual was 5.10. Versions 5.8 through 5.10 should | |
| 8537 work but versions prior to 5.8 use different options. | |
| 8538 | |
| 8539 This table contains a list of Gnus options that you will have to | |
| 8540 modify. Note that for them to become accessible, you'll have to load | |
| 8541 @file{nnml.el} first. This can be done with @kbd{M-x load-library | |
| 8542 @key{RET} nnml @key{RET}}. | |
| 8543 | |
| 8544 @vtable @code | |
| 8545 @item gnus-secondary-select-methods | |
| 8546 Select the @samp{nnml} value. This select method uses directories for | |
| 8547 folders and individual files for messages, just like MH. You do not | |
| 8548 have to set an address. | |
| 8549 @c ------------------------- | |
| 8550 @item mail-sources | |
| 8551 Select the @samp{Several files in a directory} value, check the | |
| 8552 @samp{Path} box and enter @file{~/Mail} to tell Gnus where to find | |
| 8553 your mail. | |
| 8554 @c ------------------------- | |
| 8555 @vindex mail-user-agent | |
| 8556 @item message-mail-user-agent | |
| 8557 In order to send mail within Gnus using MH-E, set this option to | |
| 8558 @samp{mail-user-agent} and set the @code{mail-user-agent} option to | |
| 8559 @samp{Emacs interface to MH}. | |
| 8560 @c ------------------------- | |
| 8561 @item nnmail-keep-last-article | |
| 8562 Since Gnus keeps track of which messages you have read, it would be | |
| 8563 bad if Gnus expired the last message, for example, message 100, and | |
| 8564 @command{rcvstore} gave the next new message number 1. Gnus would then | |
| 8565 ignore it since it thinks that you've read messages 1-100. Turning on | |
| 8566 this option ensures that the last message is never removed thereby | |
| 8567 eliminating this problem. | |
| 8568 @end vtable | |
| 8569 | |
| 8570 Next add the following to @file{~/.procmailrc}. If you don't subscribe | |
| 8571 to the GnuCash mailing list, substitute one to which you are | |
| 8572 subscribed. | |
| 8573 | |
| 8574 @smallexample | |
| 8575 PATH=$PATH:/usr/bin/mh | |
| 8576 MAILDIR=$HOME/`mhparam Path` | |
| 8577 # Place mail sent to the GnuCash mailing list in gnucash.spool, where | |
| 8578 # Gnus will pick it up. | |
| 8579 :0: | |
| 8580 * ^TO.*gnucash.*@.*gnucash.org | |
| 8581 gnucash.spool | |
| 8582 @end smallexample | |
| 8583 | |
| 8584 Wait for some messages to appear in @file{gnucash.spool} and run Gnus | |
| 8585 with @kbd{M-x gnus @key{RET}}. To view the folder created in the | |
| 8586 example above, you would tell Gnus about it the first time only with | |
| 8587 @kbd{G m gnucash @key{RET} nnml @key{RET}}. In MH-E, this folder is | |
| 8588 known as @samp{+gnucash}. | |
| 8589 | |
| 8590 @node Odds and Ends, History, Procmail, Top | |
| 8591 @appendix Odds and Ends | |
| 8592 | |
| 8593 This appendix covers a few topics that don't fit elsewhere. Here I | |
| 8594 tell you how to report bugs and how to get on the MH-E mailing lists. | |
| 8595 I also point out some additional sources of information. | |
| 8596 | |
| 8597 @menu | |
| 8598 * Bug Reports:: | |
| 8599 * Mailing Lists:: | |
| 8600 * MH FAQ and Support:: | |
| 8601 * Getting MH-E:: | |
| 8602 @end menu | |
| 8603 | |
| 8604 @node Bug Reports, Mailing Lists, Odds and Ends, Odds and Ends | |
| 8605 @appendixsec Bug Reports | |
| 8606 | |
| 8607 @cindex bugs | |
| 8608 @cindex SourceForge | |
| 8609 @kindex M-x mh-version | |
| 8610 | |
| 8611 Bug reports should be filed at | |
| 8612 @uref{https://sourceforge.net/tracker/?group_id=13357&atid=113357, | |
| 8613 SourceForge}. You need to be a SourceForge user to submit bug reports, | |
| 8614 but this is easy enough to do that it shouldn't be a restriction for | |
| 8615 you. Please include the output of @kbd{M-x mh-version} | |
| 8616 (@pxref{Miscellaneous}) in any bug report you send unless you're 110% | |
| 8617 positive we won't ask for it. | |
| 8618 | |
| 8619 @node Mailing Lists, MH FAQ and Support, Bug Reports, Odds and Ends | |
| 8620 @appendixsec MH-E Mailing Lists | |
| 8621 | |
| 8622 @cindex SourceForge | |
| 8623 @cindex mailing lists | |
| 8624 | |
| 8625 There are several mailing lists for MH-E. They are @i{mh-e-users at | |
| 8626 lists.sourceforge.net}, @i{mh-e-announce at lists.sourceforge.net}, | |
| 8627 and @i{mh-e-devel at lists.sourceforge.net}. You can subscribe or view | |
| 8628 the archives at @uref{https://sourceforge.net/mail/?group_id=13357, | |
| 8629 SourceForge}. Do not report bugs on these lists; please submit them | |
| 8630 via SourceForge (@pxref{Bug Reports}). | |
| 8631 | |
| 8632 @node MH FAQ and Support, Getting MH-E, Mailing Lists, Odds and Ends | |
| 8633 @appendixsec MH FAQ and Support | |
| 8634 | |
| 8635 @cindex FAQ | |
| 8636 @cindex MH FAQ | |
| 8637 | |
| 8638 The article @uref{http://www.newt.com/faq/mh.html, @cite{MH Frequently | |
| 8639 Asked Questions (FAQ) with Answers}} appears monthly in the newsgroup | |
| 8640 @samp{comp.mail.mh}. While very little is there that deals with MH-E | |
| 8641 specifically, there is an incredible wealth of material about MH | |
| 8642 itself which you will find useful. | |
| 8643 | |
| 8644 @cindex support | |
| 8645 | |
| 8646 You can find FAQs on MH-E at the | |
| 8647 @uref{https://sourceforge.net/tracker/?group_id=13357&atid=213357, | |
| 8648 Support Requests} page on SourceForge. If you don't find the answer to | |
| 8649 your question, file a support request and your question will become a | |
| 8650 new FAQ! | |
| 8651 | |
| 8652 @node Getting MH-E, , MH FAQ and Support, Odds and Ends | |
| 8653 @appendixsec Getting MH-E | |
| 8654 | |
| 8655 @cindex MH-E, obtaining | |
| 8656 @cindex getting MH-E | |
| 8657 @cindex obtaining MH-E | |
| 8658 | |
| 8659 Because MH-E is undergoing a phase of sustained growth, the version of | |
| 8660 MH-E in your Emacs is likely to be out of date although it is most | |
| 8661 likely to be more up to date than the copy that comes with the MH | |
| 8662 distribution in @file{miscellany/mh-e}. | |
| 8663 | |
| 8664 @cindex change log | |
| 8665 @cindex release notes | |
| 8666 | |
| 8667 New MH-E releases are always available for downloading at | |
| 8668 @uref{https://sourceforge.net/project/showfiles.php?group_id=13357, | |
| 8669 SourceForge} before they appear in an Emacs release. You can read the | |
| 8670 release notes on that page to determine if the given release of MH-E | |
| 8671 is already installed in your version of Emacs. You can also read the | |
| 8672 change log to see if you are interested in what the given release of | |
| 8673 MH-E has to offer (although we have no doubt that you will be | |
| 8674 extremely interested in all new releases). | |
| 8675 | |
| 8676 @cindex Debian | |
| 8677 | |
| 8678 If you use Debian, you can install the Debian | |
| 8679 @uref{http://packages.debian.org/unstable/mail/mh-e, mh-e package} | |
| 8680 instead. | |
| 8681 | |
| 8682 @cindex files, @samp{MH-E-NEWS} | |
| 8683 @cindex files, @samp{README} | |
| 8684 @cindex news | |
| 8685 @cindex @samp{MH-E-NEWS} | |
| 8686 @cindex @samp{README} | |
| 8687 @kindex M-x mh-version | |
| 8688 | |
| 8689 After you download and extract the MH-E tarball, read the | |
| 8690 @file{README} file and @file{MH-E-NEWS}. These correspond to the | |
| 8691 release notes and change log mentioned above. The file @file{README} | |
| 8692 contains instructions on installing MH-E. If you're already running | |
| 8693 Emacs, please quit that session and start again to load in the new | |
| 8694 MH-E. Check that you're running the new version with the command | |
| 8695 @kbd{M-x mh-version}. | |
| 8696 | |
| 8697 @cindex contributed software | |
| 8698 @cindex manual | |
| 8699 @cindex documentation | |
| 8700 | |
| 8701 In addition to the mh-e package, the | |
| 8702 @uref{https://sourceforge.net/project/showfiles.php?group_id=13357, | |
| 8703 SourceForge} site also contains doc and contrib packages. The former | |
| 8704 is the latest release of this manual, and the latter contains a few | |
| 8705 contributed packages you might find useful. | |
| 8706 | |
| 8707 @node History, GFDL, Odds and Ends, Top | |
| 8708 @appendix History of MH-E | |
| 8709 | |
| 8710 @cindex Bill Wohler | |
| 8711 @cindex Brian Reid | |
| 8712 @cindex Gildea, Stephen | |
| 8713 @cindex Jim Larus | |
| 8714 @cindex Larus, Jim | |
| 8715 @cindex MH-E, versions | |
| 8716 @cindex Reid, Brian | |
| 8717 @cindex SourceForge | |
| 8718 @cindex Stephen Gildea | |
| 8719 @cindex Wohler, Bill | |
| 8720 @cindex history of MH-E | |
| 8721 @cindex versions of MH-E | |
| 8722 | |
| 8723 MH-E was originally written by Brian Reid in 1983 and has changed | |
| 8724 hands several times since then. Jim Larus wanted to do something | |
| 8725 similar for GNU Emacs, and ended up completely rewriting it that same | |
| 8726 year. In 1989, Stephen Gildea picked it up and added many | |
| 8727 improvements. Bill Wohler then took over in 2000 and moved its | |
| 8728 development to @uref{http://sourceforge.net/, SourceForge} where it | |
| 8729 lives today. | |
| 8730 | |
| 8731 @menu | |
| 8732 * From Brian Reid:: | |
| 8733 * From Jim Larus:: | |
| 8734 * From Stephen Gildea:: | |
| 8735 * From Bill Wohler:: | |
| 8736 @end menu | |
| 8737 | |
| 8738 @node From Brian Reid, From Jim Larus, History, History | |
| 8739 @appendixsec From Brian Reid | |
| 8740 | |
| 8741 @cindex Brian Reid | |
| 8742 @cindex Reid, Brian | |
| 8743 | |
| 8744 One day in 1983 I got the flu and had to stay home from work for three | |
| 8745 days with nothing to do. I used that time to write MHE@. The | |
| 8746 fundamental idea behind MHE was that it was a ``puppeteer'' driving | |
| 8747 the MH programs underneath it. MH had a model that the editor was | |
| 8748 supposed to run as a sub-process of the mailer, which seemed to me at | |
| 8749 the time to be the tail wagging the dog. So I turned it around and | |
| 8750 made the editor drive the MH programs. I made sure that the UCI people | |
| 8751 (who were maintaining MH at the time) took in my changes and made them | |
| 8752 stick. | |
| 8753 | |
| 8754 Today, I still use my own version of MHE because I don't at all like | |
| 8755 the way that GNU MH-E works and I've never gotten to be good enough at | |
| 8756 hacking Emacs Lisp to make GNU MH-E do what I want. The Gosling-emacs | |
| 8757 version of MHE and the GNU Emacs version of MH-E have almost nothing | |
| 8758 in common except similar names. They work differently, have different | |
| 8759 conceptual models, and have different key bindings@footnote{After | |
| 8760 reading this article, I questioned Brian about his version of MHE, and | |
| 8761 received some great ideas for improving MH-E such as a dired-like | |
| 8762 method of selecting folders; and removing the prompting when sending | |
| 8763 mail, filling in the blanks in the draft buffer instead. I passed them | |
| 8764 on to Stephen Gildea, the current maintainer, and he was excited about | |
| 8765 the ideas as well. Perhaps one day, MH-E will again resemble MHE | |
| 8766 (draft form editing was introduced in version 7.4).}. | |
| 8767 | |
| 8768 Brian Reid, June 1994 | |
| 8769 | |
| 8770 @node From Jim Larus, From Stephen Gildea, From Brian Reid, History | |
| 8771 @appendixsec From Jim Larus | |
| 8772 | |
| 8773 @cindex Jim Larus | |
| 8774 @cindex Larus, Jim | |
| 8775 | |
| 8776 Brian Reid, while at CMU or shortly after going to Stanford wrote a | |
| 8777 mail reading program called MHE for Gosling Emacs. It had much the | |
| 8778 same structure as MH-E (i.e., invoked MH programs), though it was | |
| 8779 simpler and the commands were slightly different. Unfortunately, I no | |
| 8780 longer have a copy so the differences are lost in the mists of time. | |
| 8781 | |
| 8782 In '82-83, I was working at BBN and wrote a lot of mlisp code in | |
| 8783 Gosling Emacs to make it look more like Tennex Emacs. One of the | |
| 8784 packages that I picked up and improved was Reid's mail system. In '83, | |
| 8785 I went back to Berkeley. About that time, Stallman's first version of | |
| 8786 GNU Emacs came out and people started to move to it from Gosling Emacs | |
| 8787 (as I recall, the transition took a year or two). I decided to port | |
| 8788 Reid's MHE and used the mlisp to Emacs Lisp translator that came with | |
| 8789 GNU Emacs. It did a lousy job and the resulting code didn't work, so I | |
| 8790 bit the bullet and rewrote the code by hand (it was a lot smaller and | |
| 8791 simpler then, so it took only a day or two). | |
| 8792 | |
| 8793 Soon after that, MH-E became part of the standard Emacs distribution | |
| 8794 and suggestions kept dribbling in for improvements. MH-E soon reached | |
| 8795 sufficient functionality to keep me happy, but I kept on improving it | |
| 8796 because I was a graduate student with plenty of time on my hands and | |
| 8797 it was more fun than my dissertation. In retrospect, the one thing | |
| 8798 that I regret is not writing any documentation, which seriously | |
| 8799 limited the use and appeal of the package. | |
| 8800 | |
| 8801 @cindex @command{xmh}, in MH-E history | |
| 8802 | |
| 8803 In '89, I came to Wisconsin as a professor and decided not to work on | |
| 8804 MH-E. It was stable, except for minor bugs, and had enough | |
| 8805 functionality, so I let it be for a few years. Stephen Gildea of BBN | |
| 8806 began to pester me about the bugs, but I ignored them. In 1990, he | |
| 8807 went off to the X Consortium, said good bye, and said that he would | |
| 8808 now be using @command{xmh}. A few months later, he came back and said | |
| 8809 that he couldn't stand @command{xmh} and could I put a few more bug fixes | |
| 8810 into MH-E. At that point, I had no interest in fixing MH-E, so I gave | |
| 8811 the responsibility of maintenance to him and he has done a fine job | |
| 8812 since then. | |
| 8813 | |
| 8814 Jim Larus, June 1994 | |
| 8815 | |
| 8816 @node From Stephen Gildea, From Bill Wohler, From Jim Larus, History | |
| 8817 @appendixsec From Stephen Gildea | |
| 8818 | |
| 8819 @cindex Gildea, Stephen | |
| 8820 @cindex Stephen Gildea | |
| 8821 | |
| 8822 In 1987 I went to work for Bolt Beranek and Newman, as Jim had before | |
| 8823 me. In my previous job, I had been using RMAIL, but as my folders tend | |
| 8824 to run large, I was frustrated with the speed of RMAIL@. However, I | |
| 8825 stuck with it because I wanted the GNU Emacs interface. I am very | |
| 8826 familiar and comfortable with the Emacs interface (with just a few | |
| 8827 modifications of my own) and dislike having to use applications with | |
| 8828 embedded editors; they never live up to Emacs. | |
| 8829 | |
| 8830 MH is the mail reader of choice at BBN, so I converted to it. Since I | |
| 8831 didn't want to give up using an Emacs interface, I started using MH-E. | |
| 8832 As is my wont, I started hacking on it almost immediately. I first | |
| 8833 used version 3.4m. One of the first features I added was to treat the | |
| 8834 folder buffer as a file-visiting buffer: you could lock it, save it, | |
| 8835 and be warned of unsaved changes when killing it. I also worked to | |
| 8836 bring its functionality a little closer to RMAIL@. Jim Larus was very | |
| 8837 cooperative about merging in my changes, and my efforts first appeared | |
| 8838 in version 3.6, distributed with Emacs 18.52 in 1988. Next I decided | |
| 8839 MH-E was too slow and optimized it a lot. Version, 3.7, distributed | |
| 8840 with Emacs 18.56 in 1990, was noticeably faster. | |
| 8841 | |
| 8842 When I moved to the X Consortium I became the first person there to | |
| 8843 not use xmh. (There is now one other engineer there using MH-E.) About | |
| 8844 this point I took over maintenance of MH-E from Jim and was finally | |
| 8845 able to add some features Jim hadn't accepted, such as the backward | |
| 8846 searching undo. My first release was 3.8 (Emacs 18.58) in 1992. | |
| 8847 | |
| 8848 Now, in 1994, we see a flurry of releases, with both 4.0 and 5.0. | |
| 8849 Version 4.0 added many new features, including background folder | |
| 8850 collection and support for composing @sc{mime} messages. (Reading | |
| 8851 @sc{mime} messages remains to be done, alas.) While writing this book, | |
| 8852 Bill Wohler gave MH-E its closest examination ever, uncovering bugs | |
| 8853 and inconsistencies that required a new major version to fix, and so | |
| 8854 version 5 was released. | |
| 8855 | |
| 8856 Stephen Gildea, June 1994 | |
| 8857 | |
| 8858 @node From Bill Wohler, , From Stephen Gildea, History | |
| 8859 @appendixsec From Bill Wohler | |
| 8860 | |
| 8861 @cindex Wohler, Bill | |
| 8862 @cindex Bill Wohler | |
| 8863 | |
| 8864 The preface originally included the following text which I use to | |
| 8865 begin my story: | |
| 8866 | |
| 8867 @quotation | |
| 8868 But it's important to note a brief history of MH-E. | |
| 8869 | |
| 8870 @w{Version 3} was prevalent through the @w{Emacs 18} and early | |
| 8871 @w{Emacs 19} years. Then @w{Version 4} came out (@w{Emacs 19.23}), | |
| 8872 which introduced several new and changed commands. Next, @w{Version | |
| 8873 5.0} was released, which fixed some bugs and incompatibilities, and | |
| 8874 was incorporated into @w{Emacs 19.29}. | |
| 8875 @end quotation | |
| 8876 | |
| 8877 After a long break, Stephen handed the reins over to me in 2000. I | |
| 8878 moved the project to a new site called SourceForge and organized a | |
| 8879 great team of developers. Our first release in late 2001 was version | |
| 8880 6. It appeared around the time of Emacs 21.2 and had menus and tool | |
| 8881 bar buttons. | |
| 8882 | |
| 8883 Then, indexed searches, improved MIME handling, a speedbar, multiple | |
| 8884 identities, alias completion, an index view of unseen messages, spam | |
| 8885 software support, Face and X-Image-URL header field support, Fcc | |
| 8886 completion, arbitrary range handling, and draft form editing were | |
| 8887 introduced in the version 7 series around the time of Emacs 21.4 | |
| 8888 (2004). Still, Emacs itself contained version 5 of MH-E released back | |
| 8889 in 1994. | |
| 8890 | |
| 8891 Version 8 development was mostly driven by the rewrite of the manual. | |
| 8892 It also brought mailutils support, S/MIME support, picon support, and | |
| 8893 an improved interface for hiding header fields. The CVS repository was | |
| 8894 migrated from SourceForge to Savannah (only for those files that were | |
| 8895 already part of Emacs) and the software was completely reorganized to | |
| 8896 push back two decades of entropy. Version 8 will appear in Emacs 22.1, | |
| 8897 expected to be released in 2006. | |
| 8898 | |
| 8899 Bill Wohler, February 2006 | |
| 8900 | |
| 8901 @node GFDL, GPL, History, Top | |
| 8902 @appendix GNU FREE DOCUMENTATION LICENSE | |
| 8903 @center Version 1.2, November 2002 | |
| 8904 | |
| 8905 @display | |
| 8906 Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. | |
| 8907 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
| 8908 | |
| 8909 Everyone is permitted to copy and distribute verbatim copies | |
| 8910 of this license document, but changing it is not allowed. | |
| 8911 @end display | |
| 8912 @sp 1 | |
| 8913 @enumerate 0 | |
| 8914 @item | |
| 8915 PREAMBLE | |
| 8916 | |
| 8917 The purpose of this License is to make a manual, textbook, or other | |
| 8918 functional and useful document ``free'' in the sense of freedom: to | |
| 8919 assure everyone the effective freedom to copy and redistribute it, | |
| 8920 with or without modifying it, either commercially or noncommercially. | |
| 8921 Secondarily, this License preserves for the author and publisher a way | |
| 8922 to get credit for their work, while not being considered responsible | |
| 8923 for modifications made by others. | |
| 8924 | |
| 8925 This License is a kind of ``copyleft'', which means that derivative | |
| 8926 works of the document must themselves be free in the same sense. It | |
| 8927 complements the GNU General Public License, which is a copyleft | |
| 8928 license designed for free software. | |
| 8929 | |
| 8930 We have designed this License in order to use it for manuals for free | |
| 8931 software, because free software needs free documentation: a free | |
| 8932 program should come with manuals providing the same freedoms that the | |
| 8933 software does. But this License is not limited to software manuals; | |
| 8934 it can be used for any textual work, regardless of subject matter or | |
| 8935 whether it is published as a printed book. We recommend this License | |
| 8936 principally for works whose purpose is instruction or reference. | |
| 8937 | |
| 8938 @sp 1 | |
| 8939 @item | |
| 8940 APPLICABILITY AND DEFINITIONS | |
| 8941 | |
| 8942 This License applies to any manual or other work, in any medium, that | |
| 8943 contains a notice placed by the copyright holder saying it can be | |
| 8944 distributed under the terms of this License. Such a notice grants a | |
| 8945 world-wide, royalty-free license, unlimited in duration, to use that | |
| 8946 work under the conditions stated herein. The ``Document'', below, | |
| 8947 refers to any such manual or work. Any member of the public is a | |
| 8948 licensee, and is addressed as ``you''. You accept the license if you | |
| 8949 copy, modify or distribute the work in a way requiring permission | |
| 8950 under copyright law. | |
| 8951 | |
| 8952 A ``Modified Version'' of the Document means any work containing the | |
| 8953 Document or a portion of it, either copied verbatim, or with | |
| 8954 modifications and/or translated into another language. | |
| 8955 | |
| 8956 A ``Secondary Section'' is a named appendix or a front-matter section of | |
| 8957 the Document that deals exclusively with the relationship of the | |
| 8958 publishers or authors of the Document to the Document's overall subject | |
| 8959 (or to related matters) and contains nothing that could fall directly | |
| 8960 within that overall subject. (Thus, if the Document is in part a | |
| 8961 textbook of mathematics, a Secondary Section may not explain any | |
| 8962 mathematics.) The relationship could be a matter of historical | |
| 8963 connection with the subject or with related matters, or of legal, | |
| 8964 commercial, philosophical, ethical or political position regarding | |
| 8965 them. | |
| 8966 | |
| 8967 The ``Invariant Sections'' are certain Secondary Sections whose titles | |
| 8968 are designated, as being those of Invariant Sections, in the notice | |
| 8969 that says that the Document is released under this License. If a | |
| 8970 section does not fit the above definition of Secondary then it is not | |
| 8971 allowed to be designated as Invariant. The Document may contain zero | |
| 8972 Invariant Sections. If the Document does not identify any Invariant | |
| 8973 Sections then there are none. | |
| 8974 | |
| 8975 The ``Cover Texts'' are certain short passages of text that are listed, | |
| 8976 as Front-Cover Texts or Back-Cover Texts, in the notice that says that | |
| 8977 the Document is released under this License. A Front-Cover Text may | |
| 8978 be at most 5 words, and a Back-Cover Text may be at most 25 words. | |
| 8979 | |
| 8980 A ``Transparent'' copy of the Document means a machine-readable copy, | |
| 8981 represented in a format whose specification is available to the | |
| 8982 general public, that is suitable for revising the document | |
| 8983 straightforwardly with generic text editors or (for images composed of | |
| 8984 pixels) generic paint programs or (for drawings) some widely available | |
| 8985 drawing editor, and that is suitable for input to text formatters or | |
| 8986 for automatic translation to a variety of formats suitable for input | |
| 8987 to text formatters. A copy made in an otherwise Transparent file | |
| 8988 format whose markup, or absence of markup, has been arranged to thwart | |
| 8989 or discourage subsequent modification by readers is not Transparent. | |
| 8990 An image format is not Transparent if used for any substantial amount | |
| 8991 of text. A copy that is not ``Transparent'' is called ``Opaque.'' | |
| 8992 | |
| 8993 | |
| 8994 Examples of suitable formats for Transparent copies include plain | |
| 8995 ASCII without markup, Texinfo input format, LaTeX input format, SGML | |
| 8996 or XML using a publicly available DTD, and standard-conforming simple | |
| 8997 HTML, PostScript or PDF designed for human modification. Examples of | |
| 8998 transparent image formats include PNG, XCF and JPG. Opaque formats | |
| 8999 include proprietary formats that can be read and edited only by | |
| 9000 proprietary word processors, SGML or XML for which the DTD and/or | |
| 9001 processing tools are not generally available, and the | |
| 9002 machine-generated HTML, PostScript or PDF produced by some word | |
| 9003 processors for output purposes only. | |
| 9004 | |
| 9005 The ``Title Page'' means, for a printed book, the title page itself, | |
| 9006 plus such following pages as are needed to hold, legibly, the material | |
| 9007 this License requires to appear in the title page. For works in | |
| 9008 formats which do not have any title page as such, ``Title Page'' means | |
| 9009 the text near the most prominent appearance of the work's title, | |
| 9010 preceding the beginning of the body of the text. | |
| 9011 | |
| 9012 A section ``Entitled XYZ'' means a named subunit of the Document whose | |
| 9013 title either is precisely XYZ or contains XYZ in parentheses following | |
| 9014 text that translates XYZ in another language. (Here XYZ stands for a | |
| 9015 specific section name mentioned below, such as ``Acknowledgements'', | |
| 9016 ``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' | |
| 9017 of such a section when you modify the Document means that it remains a | |
| 9018 section ``Entitled XYZ'' according to this definition. | |
| 9019 | |
| 9020 The Document may include Warranty Disclaimers next to the notice which | |
| 9021 states that this License applies to the Document. These Warranty | |
| 9022 Disclaimers are considered to be included by reference in this | |
| 9023 License, but only as regards disclaiming warranties: any other | |
| 9024 implication that these Warranty Disclaimers may have is void and has | |
| 9025 no effect on the meaning of this License. | |
| 9026 @sp 1 | |
| 9027 @item | |
| 9028 VERBATIM COPYING | |
| 9029 | |
| 9030 You may copy and distribute the Document in any medium, either | |
| 9031 commercially or noncommercially, provided that this License, the | |
| 9032 copyright notices, and the license notice saying this License applies | |
| 9033 to the Document are reproduced in all copies, and that you add no other | |
| 9034 conditions whatsoever to those of this License. You may not use | |
| 9035 technical measures to obstruct or control the reading or further | |
| 9036 copying of the copies you make or distribute. However, you may accept | |
| 9037 compensation in exchange for copies. If you distribute a large enough | |
| 9038 number of copies you must also follow the conditions in section 3. | |
| 9039 | |
| 9040 You may also lend copies, under the same conditions stated above, and | |
| 9041 you may publicly display copies. | |
| 9042 @sp 1 | |
| 9043 @item | |
| 9044 COPYING IN QUANTITY | |
| 9045 | |
| 9046 If you publish printed copies (or copies in media that commonly have | |
| 9047 printed covers) of the Document, numbering more than 100, and the | |
| 9048 Document's license notice requires Cover Texts, you must enclose the | |
| 9049 copies in covers that carry, clearly and legibly, all these Cover | |
| 9050 Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on | |
| 9051 the back cover. Both covers must also clearly and legibly identify | |
| 9052 you as the publisher of these copies. The front cover must present | |
| 9053 the full title with all words of the title equally prominent and | |
| 9054 visible. You may add other material on the covers in addition. | |
| 9055 Copying with changes limited to the covers, as long as they preserve | |
| 9056 the title of the Document and satisfy these conditions, can be treated | |
| 9057 as verbatim copying in other respects. | |
| 9058 | |
| 9059 If the required texts for either cover are too voluminous to fit | |
| 9060 legibly, you should put the first ones listed (as many as fit | |
| 9061 reasonably) on the actual cover, and continue the rest onto adjacent | |
| 9062 pages. | |
| 9063 | |
| 9064 If you publish or distribute Opaque copies of the Document numbering | |
| 9065 more than 100, you must either include a machine-readable Transparent | |
| 9066 copy along with each Opaque copy, or state in or with each Opaque copy | |
| 9067 a computer-network location from which the general network-using | |
| 9068 public has access to download using public-standard network protocols | |
| 9069 a complete Transparent copy of the Document, free of added material. | |
| 9070 If you use the latter option, you must take reasonably prudent steps, | |
| 9071 when you begin distribution of Opaque copies in quantity, to ensure | |
| 9072 that this Transparent copy will remain thus accessible at the stated | |
| 9073 location until at least one year after the last time you distribute an | |
| 9074 Opaque copy (directly or through your agents or retailers) of that | |
| 9075 edition to the public. | |
| 9076 | |
| 9077 It is requested, but not required, that you contact the authors of the | |
| 9078 Document well before redistributing any large number of copies, to give | |
| 9079 them a chance to provide you with an updated version of the Document. | |
| 9080 @sp 1 | |
| 9081 @item | |
| 9082 MODIFICATIONS | |
| 9083 | |
| 9084 You may copy and distribute a Modified Version of the Document under | |
| 9085 the conditions of sections 2 and 3 above, provided that you release | |
| 9086 the Modified Version under precisely this License, with the Modified | |
| 9087 Version filling the role of the Document, thus licensing distribution | |
| 9088 and modification of the Modified Version to whoever possesses a copy | |
| 9089 of it. In addition, you must do these things in the Modified Version: | |
| 9090 | |
| 9091 A. Use in the Title Page (and on the covers, if any) a title distinct | |
| 9092 from that of the Document, and from those of previous versions | |
| 9093 (which should, if there were any, be listed in the History section | |
| 9094 of the Document). You may use the same title as a previous version | |
| 9095 if the original publisher of that version gives permission.@* | |
| 9096 B. List on the Title Page, as authors, one or more persons or entities | |
| 9097 responsible for authorship of the modifications in the Modified | |
| 9098 Version, together with at least five of the principal authors of the | |
| 9099 Document (all of its principal authors, if it has fewer than five), | |
| 9100 unless they release you from this requirement.@* | |
| 9101 C. State on the Title page the name of the publisher of the | |
| 9102 Modified Version, as the publisher.@* | |
| 9103 D. Preserve all the copyright notices of the Document.@* | |
| 9104 E. Add an appropriate copyright notice for your modifications | |
| 9105 adjacent to the other copyright notices.@* | |
| 9106 F. Include, immediately after the copyright notices, a license notice | |
| 9107 giving the public permission to use the Modified Version under the | |
| 9108 terms of this License, in the form shown in the Addendum below.@* | |
| 9109 G. Preserve in that license notice the full lists of Invariant Sections | |
| 9110 and required Cover Texts given in the Document's license notice.@* | |
| 9111 H. Include an unaltered copy of this License.@* | |
| 9112 I. Preserve the section Entitled ``History'', Preserve its Title, and add | |
| 9113 to it an item stating at least the title, year, new authors, and | |
| 9114 publisher of the Modified Version as given on the Title Page. If | |
| 9115 there is no section Entitled ``History'' in the Document, create one | |
| 9116 stating the title, year, authors, and publisher of the Document as | |
| 9117 given on its Title Page, then add an item describing the Modified | |
| 9118 Version as stated in the previous sentence.@* | |
| 9119 J. Preserve the network location, if any, given in the Document for | |
| 9120 public access to a Transparent copy of the Document, and likewise | |
| 9121 the network locations given in the Document for previous versions | |
| 9122 it was based on. These may be placed in the ``History'' section. | |
| 9123 You may omit a network location for a work that was published at | |
| 9124 least four years before the Document itself, or if the original | |
| 9125 publisher of the version it refers to gives permission.@* | |
| 9126 K. For any section Entitled ``Acknowledgements'' or ``Dedications'', | |
| 9127 Preserve the Title of the section, and preserve in the section all | |
| 9128 the substance and tone of each of the contributor acknowledgements | |
| 9129 and/or dedications given therein.@* | |
| 9130 L. Preserve all the Invariant Sections of the Document, | |
| 9131 unaltered in their text and in their titles. Section numbers | |
| 9132 or the equivalent are not considered part of the section titles.@* | |
| 9133 M. Delete any section Entitled ``Endorsements.'' Such a section | |
| 9134 may not be included in the Modified Version.@* | |
| 9135 N. Do not retitle any existing section to be Entitled ``Endorsements'' | |
| 9136 or to conflict in title with any Invariant Section.@* | |
| 9137 O. Preserve any Warranty Disclaimers.@* | |
| 9138 @sp 1 | |
| 9139 If the Modified Version includes new front-matter sections or | |
| 9140 appendices that qualify as Secondary Sections and contain no material | |
| 9141 copied from the Document, you may at your option designate some or all | |
| 9142 of these sections as invariant. To do this, add their titles to the | |
| 9143 list of Invariant Sections in the Modified Version's license notice. | |
| 9144 These titles must be distinct from any other section titles. | |
| 9145 | |
| 9146 You may add a section Entitled ``Endorsements'', provided it contains | |
| 9147 nothing but endorsements of your Modified Version by various | |
| 9148 parties--for example, statements of peer review or that the text has | |
| 9149 been approved by an organization as the authoritative definition of a | |
| 9150 standard. | |
| 9151 | |
| 9152 You may add a passage of up to five words as a Front-Cover Text, and a | |
| 9153 passage of up to 25 words as a Back-Cover Text, to the end of the list | |
| 9154 of Cover Texts in the Modified Version. Only one passage of | |
| 9155 Front-Cover Text and one of Back-Cover Text may be added by (or | |
| 9156 through arrangements made by) any one entity. If the Document already | |
| 9157 includes a cover text for the same cover, previously added by you or | |
| 9158 by arrangement made by the same entity you are acting on behalf of, | |
| 9159 you may not add another; but you may replace the old one, on explicit | |
| 9160 permission from the previous publisher that added the old one. | |
| 9161 | |
| 9162 The author(s) and publisher(s) of the Document do not by this License | |
| 9163 give permission to use their names for publicity for or to assert or | |
| 9164 imply endorsement of any Modified Version. | |
| 9165 @sp 1 | |
| 9166 @item | |
| 9167 COMBINING DOCUMENTS | |
| 9168 | |
| 9169 You may combine the Document with other documents released under this | |
| 9170 License, under the terms defined in section 4 above for modified | |
| 9171 versions, provided that you include in the combination all of the | |
| 9172 Invariant Sections of all of the original documents, unmodified, and | |
| 9173 list them all as Invariant Sections of your combined work in its | |
| 9174 license notice, and that you preserve all their Warranty Disclaimers. | |
| 9175 | |
| 9176 The combined work need only contain one copy of this License, and | |
| 9177 multiple identical Invariant Sections may be replaced with a single | |
| 9178 copy. If there are multiple Invariant Sections with the same name but | |
| 9179 different contents, make the title of each such section unique by | |
| 9180 adding at the end of it, in parentheses, the name of the original | |
| 9181 author or publisher of that section if known, or else a unique number. | |
| 9182 Make the same adjustment to the section titles in the list of | |
| 9183 Invariant Sections in the license notice of the combined work. | |
| 9184 | |
| 9185 In the combination, you must combine any sections Entitled ``History'' | |
| 9186 in the various original documents, forming one section Entitled | |
| 9187 ``History''; likewise combine any sections Entitled ``Acknowledgements'', | |
| 9188 and any sections Entitled ``Dedications.'' You must delete all sections | |
| 9189 Entitled ``Endorsements.'' | |
| 9190 @sp 1 | |
| 9191 @item | |
| 9192 COLLECTIONS OF DOCUMENTS | |
| 9193 | |
| 9194 You may make a collection consisting of the Document and other documents | |
| 9195 released under this License, and replace the individual copies of this | |
| 9196 License in the various documents with a single copy that is included in | |
| 9197 the collection, provided that you follow the rules of this License for | |
| 9198 verbatim copying of each of the documents in all other respects. | |
| 9199 | |
| 9200 You may extract a single document from such a collection, and distribute | |
| 9201 it individually under this License, provided you insert a copy of this | |
| 9202 License into the extracted document, and follow this License in all | |
| 9203 other respects regarding verbatim copying of that document. | |
| 9204 @sp 1 | |
| 9205 @item | |
| 9206 AGGREGATION WITH INDEPENDENT WORKS | |
| 9207 | |
| 9208 A compilation of the Document or its derivatives with other separate | |
| 9209 and independent documents or works, in or on a volume of a storage or | |
| 9210 distribution medium, is called an ``aggregate'' if the copyright | |
| 9211 resulting from the compilation is not used to limit the legal rights | |
| 9212 of the compilation's users beyond what the individual works permit. | |
| 9213 When the Document is included in an aggregate, this License does not | |
| 9214 apply to the other works in the aggregate which are not themselves | |
| 9215 derivative works of the Document. | |
| 9216 | |
| 9217 If the Cover Text requirement of section 3 is applicable to these | |
| 9218 copies of the Document, then if the Document is less than one half of | |
| 9219 the entire aggregate, the Document's Cover Texts may be placed on | |
| 9220 covers that bracket the Document within the aggregate, or the | |
| 9221 electronic equivalent of covers if the Document is in electronic form. | |
| 9222 Otherwise they must appear on printed covers that bracket the whole | |
| 9223 aggregate. | |
| 9224 @sp 1 | |
| 9225 @item | |
| 9226 TRANSLATION | |
| 9227 | |
| 9228 Translation is considered a kind of modification, so you may | |
| 9229 distribute translations of the Document under the terms of section 4. | |
| 9230 Replacing Invariant Sections with translations requires special | |
| 9231 permission from their copyright holders, but you may include | |
| 9232 translations of some or all Invariant Sections in addition to the | |
| 9233 original versions of these Invariant Sections. You may include a | |
| 9234 translation of this License, and all the license notices in the | |
| 9235 Document, and any Warranty Disclaimers, provided that you also include | |
| 9236 the original English version of this License and the original versions | |
| 9237 of those notices and disclaimers. In case of a disagreement between | |
| 9238 the translation and the original version of this License or a notice | |
| 9239 or disclaimer, the original version will prevail. | |
| 9240 | |
| 9241 If a section in the Document is Entitled ``Acknowledgements'', | |
| 9242 ``Dedications'', or ``History'', the requirement (section 4) to Preserve | |
| 9243 its Title (section 1) will typically require changing the actual | |
| 9244 title. | |
| 9245 @sp 1 | |
| 9246 @item | |
| 9247 TERMINATION | |
| 9248 | |
| 9249 You may not copy, modify, sublicense, or distribute the Document except | |
| 9250 as expressly provided for under this License. Any other attempt to | |
| 9251 copy, modify, sublicense or distribute the Document is void, and will | |
| 9252 automatically terminate your rights under this License. However, | |
| 9253 parties who have received copies, or rights, from you under this | |
| 9254 License will not have their licenses terminated so long as such | |
| 9255 parties remain in full compliance. | |
| 9256 @sp 1 | |
| 9257 @item | |
| 9258 FUTURE REVISIONS OF THIS LICENSE | |
| 9259 | |
| 9260 The Free Software Foundation may publish new, revised versions | |
| 9261 of the GNU Free Documentation License from time to time. Such new | |
| 9262 versions will be similar in spirit to the present version, but may | |
| 9263 differ in detail to address new problems or concerns. See | |
| 9264 http://www.gnu.org/copyleft/. | |
| 9265 | |
| 9266 Each version of the License is given a distinguishing version number. | |
| 9267 If the Document specifies that a particular numbered version of this | |
| 9268 License ``or any later version'' applies to it, you have the option of | |
| 9269 following the terms and conditions either of that specified version or | |
| 9270 of any later version that has been published (not as a draft) by the | |
| 9271 Free Software Foundation. If the Document does not specify a version | |
| 9272 number of this License, you may choose any version ever published (not | |
| 9273 as a draft) by the Free Software Foundation. | |
| 9274 | |
| 9275 @end enumerate | |
| 9276 | |
| 9277 @unnumberedsec ADDENDUM: How to use this License for your documents | |
| 9278 | |
| 9279 To use this License in a document you have written, include a copy of | |
| 9280 the License in the document and put the following copyright and | |
| 9281 license notices just after the title page: | |
| 9282 | |
| 9283 @smallexample | |
| 9284 @group | |
| 9285 Copyright (C) @var{year} @var{your name}. | |
| 9286 Permission is granted to copy, distribute and/or modify this document | |
| 9287 under the terms of the GNU Free Documentation License, Version 1.2 | |
| 9288 or any later version published by the Free Software Foundation; | |
| 9289 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. | |
| 9290 A copy of the license is included in the section entitled ``GNU | |
| 9291 Free Documentation License''. | |
| 9292 @end group | |
| 9293 @end smallexample | |
| 9294 | |
| 9295 If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, | |
| 9296 replace the ``with...Texts.'' line with this: | |
| 9297 | |
| 9298 @smallexample | |
| 9299 @group | |
| 9300 with the Invariant Sections being @var{list their titles}, with the | |
| 9301 Front-Cover Texts being @var{list}, and with the Back-Cover Texts being | |
| 9302 @var{list}. | |
| 9303 @end group | |
| 9304 @end smallexample | |
| 9305 | |
| 9306 If you have Invariant Sections without Cover Texts, or some other | |
| 9307 combination of the three, merge those two alternatives to suit the | |
| 9308 situation. | |
| 9309 | |
| 9310 If your document contains nontrivial examples of program code, we | |
| 9311 recommend releasing these examples in parallel under your choice of | |
| 9312 free software license, such as the GNU General Public License, | |
| 9313 to permit their use in free software. | |
| 9314 | |
| 9315 @node GPL, Key Index, GFDL, Top | |
| 9316 @appendix GNU GENERAL PUBLIC LICENSE | |
| 9317 @center Version 2, June 1991 | |
| 9318 | |
| 9319 @display | |
| 9320 Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. | |
| 9321 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA | |
| 9322 | |
| 9323 Everyone is permitted to copy and distribute verbatim copies | |
| 9324 of this license document, but changing it is not allowed. | |
| 9325 @end display | |
| 9326 | |
| 9327 @unnumberedsec Preamble | |
| 9328 | |
| 9329 The licenses for most software are designed to take away your | |
| 9330 freedom to share and change it. By contrast, the GNU General Public | |
| 9331 License is intended to guarantee your freedom to share and change free | |
| 9332 software---to make sure the software is free for all its users. This | |
| 9333 General Public License applies to most of the Free Software | |
| 9334 Foundation's software and to any other program whose authors commit to | |
| 9335 using it. (Some other Free Software Foundation software is covered by | |
| 9336 the GNU Lesser General Public License instead.) You can apply it to | |
| 9337 your programs, too. | |
| 9338 | |
| 9339 When we speak of free software, we are referring to freedom, not | |
| 9340 price. Our General Public Licenses are designed to make sure that you | |
| 9341 have the freedom to distribute copies of free software (and charge for | |
| 9342 this service if you wish), that you receive source code or can get it | |
| 9343 if you want it, that you can change the software or use pieces of it | |
| 9344 in new free programs; and that you know you can do these things. | |
| 9345 | |
| 9346 To protect your rights, we need to make restrictions that forbid | |
| 9347 anyone to deny you these rights or to ask you to surrender the rights. | |
| 9348 These restrictions translate to certain responsibilities for you if you | |
| 9349 distribute copies of the software, or if you modify it. | |
| 9350 | |
| 9351 For example, if you distribute copies of such a program, whether | |
| 9352 gratis or for a fee, you must give the recipients all the rights that | |
| 9353 you have. You must make sure that they, too, receive or can get the | |
| 9354 source code. And you must show them these terms so they know their | |
| 9355 rights. | |
| 9356 | |
| 9357 We protect your rights with two steps: (1) copyright the software, and | |
| 9358 (2) offer you this license which gives you legal permission to copy, | |
| 9359 distribute and/or modify the software. | |
| 9360 | |
| 9361 Also, for each author's protection and ours, we want to make certain | |
| 9362 that everyone understands that there is no warranty for this free | |
| 9363 software. If the software is modified by someone else and passed on, we | |
| 9364 want its recipients to know that what they have is not the original, so | |
| 9365 that any problems introduced by others will not reflect on the original | |
| 9366 authors' reputations. | |
| 9367 | |
| 9368 Finally, any free program is threatened constantly by software | |
| 9369 patents. We wish to avoid the danger that redistributors of a free | |
| 9370 program will individually obtain patent licenses, in effect making the | |
| 9371 program proprietary. To prevent this, we have made it clear that any | |
| 9372 patent must be licensed for everyone's free use or not licensed at all. | |
| 9373 | |
| 9374 The precise terms and conditions for copying, distribution and | |
| 9375 modification follow. | |
| 9376 | |
| 9377 @iftex | |
| 9378 @unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | |
| 9379 @end iftex | |
| 9380 @ifinfo | |
| 9381 @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | |
| 9382 @end ifinfo | |
| 9383 | |
| 9384 @enumerate 0 | |
| 9385 @item | |
| 9386 This License applies to any program or other work which contains | |
| 9387 a notice placed by the copyright holder saying it may be distributed | |
| 9388 under the terms of this General Public License. The ``Program,'' below, | |
| 9389 refers to any such program or work, and a ``work based on the Program'' | |
| 9390 means either the Program or any derivative work under copyright law: | |
| 9391 that is to say, a work containing the Program or a portion of it, | |
| 9392 either verbatim or with modifications and/or translated into another | |
| 9393 language. (Hereinafter, translation is included without limitation in | |
| 9394 the term ``modification.'') Each licensee is addressed as ``you.'' | |
| 9395 | |
| 9396 Activities other than copying, distribution and modification are not | |
| 9397 covered by this License; they are outside its scope. The act of | |
| 9398 running the Program is not restricted, and the output from the Program | |
| 9399 is covered only if its contents constitute a work based on the | |
| 9400 Program (independent of having been made by running the Program). | |
| 9401 Whether that is true depends on what the Program does. | |
| 9402 | |
| 9403 @item | |
| 9404 You may copy and distribute verbatim copies of the Program's | |
| 9405 source code as you receive it, in any medium, provided that you | |
| 9406 conspicuously and appropriately publish on each copy an appropriate | |
| 9407 copyright notice and disclaimer of warranty; keep intact all the | |
| 9408 notices that refer to this License and to the absence of any warranty; | |
| 9409 and give any other recipients of the Program a copy of this License | |
| 9410 along with the Program. | |
| 9411 | |
| 9412 You may charge a fee for the physical act of transferring a copy, and | |
| 9413 you may at your option offer warranty protection in exchange for a fee. | |
| 9414 | |
| 9415 @item | |
| 9416 You may modify your copy or copies of the Program or any portion | |
| 9417 of it, thus forming a work based on the Program, and copy and | |
| 9418 distribute such modifications or work under the terms of Section 1 | |
| 9419 above, provided that you also meet all of these conditions: | |
| 9420 | |
| 9421 @enumerate a | |
| 9422 @item | |
| 9423 You must cause the modified files to carry prominent notices | |
| 9424 stating that you changed the files and the date of any change. | |
| 9425 | |
| 9426 @item | |
| 9427 You must cause any work that you distribute or publish, that in | |
| 9428 whole or in part contains or is derived from the Program or any | |
| 9429 part thereof, to be licensed as a whole at no charge to all third | |
| 9430 parties under the terms of this License. | |
| 9431 | |
| 9432 @item | |
| 9433 If the modified program normally reads commands interactively | |
| 9434 when run, you must cause it, when started running for such | |
| 9435 interactive use in the most ordinary way, to print or display an | |
| 9436 announcement including an appropriate copyright notice and a | |
| 9437 notice that there is no warranty (or else, saying that you provide | |
| 9438 a warranty) and that users may redistribute the program under | |
| 9439 these conditions, and telling the user how to view a copy of this | |
| 9440 License. (Exception: if the Program itself is interactive but | |
| 9441 does not normally print such an announcement, your work based on | |
| 9442 the Program is not required to print an announcement.) | |
| 9443 @end enumerate | |
| 9444 | |
| 9445 These requirements apply to the modified work as a whole. If | |
| 9446 identifiable sections of that work are not derived from the Program, | |
| 9447 and can be reasonably considered independent and separate works in | |
| 9448 themselves, then this License, and its terms, do not apply to those | |
| 9449 sections when you distribute them as separate works. But when you | |
| 9450 distribute the same sections as part of a whole which is a work based | |
| 9451 on the Program, the distribution of the whole must be on the terms of | |
| 9452 this License, whose permissions for other licensees extend to the | |
| 9453 entire whole, and thus to each and every part regardless of who wrote it. | |
| 9454 | |
| 9455 Thus, it is not the intent of this section to claim rights or contest | |
| 9456 your rights to work written entirely by you; rather, the intent is to | |
| 9457 exercise the right to control the distribution of derivative or | |
| 9458 collective works based on the Program. | |
| 9459 | |
| 9460 In addition, mere aggregation of another work not based on the Program | |
| 9461 with the Program (or with a work based on the Program) on a volume of | |
| 9462 a storage or distribution medium does not bring the other work under | |
| 9463 the scope of this License. | |
| 9464 | |
| 9465 @item | |
| 9466 You may copy and distribute the Program (or a work based on it, | |
| 9467 under Section 2) in object code or executable form under the terms of | |
| 9468 Sections 1 and 2 above provided that you also do one of the following: | |
| 9469 | |
| 9470 @enumerate a | |
| 9471 @item | |
| 9472 Accompany it with the complete corresponding machine-readable | |
| 9473 source code, which must be distributed under the terms of Sections | |
| 9474 1 and 2 above on a medium customarily used for software interchange; or, | |
| 9475 | |
| 9476 @item | |
| 9477 Accompany it with a written offer, valid for at least three | |
| 9478 years, to give any third party, for a charge no more than your | |
| 9479 cost of physically performing source distribution, a complete | |
| 9480 machine-readable copy of the corresponding source code, to be | |
| 9481 distributed under the terms of Sections 1 and 2 above on a medium | |
| 9482 customarily used for software interchange; or, | |
| 9483 | |
| 9484 @item | |
| 9485 Accompany it with the information you received as to the offer | |
| 9486 to distribute corresponding source code. (This alternative is | |
| 9487 allowed only for noncommercial distribution and only if you | |
| 9488 received the program in object code or executable form with such | |
| 9489 an offer, in accord with Subsection b above.) | |
| 9490 @end enumerate | |
| 9491 | |
| 9492 The source code for a work means the preferred form of the work for | |
| 9493 making modifications to it. For an executable work, complete source | |
| 9494 code means all the source code for all modules it contains, plus any | |
| 9495 associated interface definition files, plus the scripts used to | |
| 9496 control compilation and installation of the executable. However, as a | |
| 9497 special exception, the source code distributed need not include | |
| 9498 anything that is normally distributed (in either source or binary | |
| 9499 form) with the major components (compiler, kernel, and so on) of the | |
| 9500 operating system on which the executable runs, unless that component | |
| 9501 itself accompanies the executable. | |
| 9502 | |
| 9503 If distribution of executable or object code is made by offering | |
| 9504 access to copy from a designated place, then offering equivalent | |
| 9505 access to copy the source code from the same place counts as | |
| 9506 distribution of the source code, even though third parties are not | |
| 9507 compelled to copy the source along with the object code. | |
| 9508 | |
| 9509 @item | |
| 9510 You may not copy, modify, sublicense, or distribute the Program | |
| 9511 except as expressly provided under this License. Any attempt | |
| 9512 otherwise to copy, modify, sublicense or distribute the Program is | |
| 9513 void, and will automatically terminate your rights under this License. | |
| 9514 However, parties who have received copies, or rights, from you under | |
| 9515 this License will not have their licenses terminated so long as such | |
| 9516 parties remain in full compliance. | |
| 9517 | |
| 9518 @item | |
| 9519 You are not required to accept this License, since you have not | |
| 9520 signed it. However, nothing else grants you permission to modify or | |
| 9521 distribute the Program or its derivative works. These actions are | |
| 9522 prohibited by law if you do not accept this License. Therefore, by | |
| 9523 modifying or distributing the Program (or any work based on the | |
| 9524 Program), you indicate your acceptance of this License to do so, and | |
| 9525 all its terms and conditions for copying, distributing or modifying | |
| 9526 the Program or works based on it. | |
| 9527 | |
| 9528 @item | |
| 9529 Each time you redistribute the Program (or any work based on the | |
| 9530 Program), the recipient automatically receives a license from the | |
| 9531 original licensor to copy, distribute or modify the Program subject to | |
| 9532 these terms and conditions. You may not impose any further | |
| 9533 restrictions on the recipients' exercise of the rights granted herein. | |
| 9534 You are not responsible for enforcing compliance by third parties to | |
| 9535 this License. | |
| 9536 | |
| 9537 @item | |
| 9538 If, as a consequence of a court judgment or allegation of patent | |
| 9539 infringement or for any other reason (not limited to patent issues), | |
| 9540 conditions are imposed on you (whether by court order, agreement or | |
| 9541 otherwise) that contradict the conditions of this License, they do not | |
| 9542 excuse you from the conditions of this License. If you cannot | |
| 9543 distribute so as to satisfy simultaneously your obligations under this | |
| 9544 License and any other pertinent obligations, then as a consequence you | |
| 9545 may not distribute the Program at all. For example, if a patent | |
| 9546 license would not permit royalty-free redistribution of the Program by | |
| 9547 all those who receive copies directly or indirectly through you, then | |
| 9548 the only way you could satisfy both it and this License would be to | |
| 9549 refrain entirely from distribution of the Program. | |
| 9550 | |
| 9551 If any portion of this section is held invalid or unenforceable under | |
| 9552 any particular circumstance, the balance of the section is intended to | |
| 9553 apply and the section as a whole is intended to apply in other | |
| 9554 circumstances. | |
| 9555 | |
| 9556 It is not the purpose of this section to induce you to infringe any | |
| 9557 patents or other property right claims or to contest validity of any | |
| 9558 such claims; this section has the sole purpose of protecting the | |
| 9559 integrity of the free software distribution system, which is | |
| 9560 implemented by public license practices. Many people have made | |
| 9561 generous contributions to the wide range of software distributed | |
| 9562 through that system in reliance on consistent application of that | |
| 9563 system; it is up to the author/donor to decide if he or she is willing | |
| 9564 to distribute software through any other system and a licensee cannot | |
| 9565 impose that choice. | |
| 9566 | |
| 9567 This section is intended to make thoroughly clear what is believed to | |
| 9568 be a consequence of the rest of this License. | |
| 9569 | |
| 9570 @item | |
| 9571 If the distribution and/or use of the Program is restricted in | |
| 9572 certain countries either by patents or by copyrighted interfaces, the | |
| 9573 original copyright holder who places the Program under this License | |
| 9574 may add an explicit geographical distribution limitation excluding | |
| 9575 those countries, so that distribution is permitted only in or among | |
| 9576 countries not thus excluded. In such case, this License incorporates | |
| 9577 the limitation as if written in the body of this License. | |
| 9578 | |
| 9579 @item | |
| 9580 The Free Software Foundation may publish revised and/or new versions | |
| 9581 of the General Public License from time to time. Such new versions will | |
| 9582 be similar in spirit to the present version, but may differ in detail to | |
| 9583 address new problems or concerns. | |
| 9584 | |
| 9585 Each version is given a distinguishing version number. If the Program | |
| 9586 specifies a version number of this License which applies to it and ``any | |
| 9587 later version,'' you have the option of following the terms and conditions | |
| 9588 either of that version or of any later version published by the Free | |
| 9589 Software Foundation. If the Program does not specify a version number of | |
| 9590 this License, you may choose any version ever published by the Free Software | |
| 9591 Foundation. | |
| 9592 | |
| 9593 @item | |
| 9594 If you wish to incorporate parts of the Program into other free | |
| 9595 programs whose distribution conditions are different, write to the author | |
| 9596 to ask for permission. For software which is copyrighted by the Free | |
| 9597 Software Foundation, write to the Free Software Foundation; we sometimes | |
| 9598 make exceptions for this. Our decision will be guided by the two goals | |
| 9599 of preserving the free status of all derivatives of our free software and | |
| 9600 of promoting the sharing and reuse of software generally. | |
| 9601 | |
| 9602 @iftex | |
| 9603 @heading NO WARRANTY | |
| 9604 @end iftex | |
| 9605 @ifinfo | |
| 9606 @center NO WARRANTY | |
| 9607 @end ifinfo | |
| 9608 | |
| 9609 @item | |
| 9610 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | |
| 9611 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW@. EXCEPT WHEN | |
| 9612 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | |
| 9613 PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | |
| 9614 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |
| 9615 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE@. THE ENTIRE RISK AS | |
| 9616 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU@. SHOULD THE | |
| 9617 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | |
| 9618 REPAIR OR CORRECTION. | |
| 9619 | |
| 9620 @item | |
| 9621 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | |
| 9622 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | |
| 9623 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | |
| 9624 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | |
| 9625 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | |
| 9626 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | |
| 9627 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | |
| 9628 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | |
| 9629 POSSIBILITY OF SUCH DAMAGES. | |
| 9630 @end enumerate | |
| 9631 | |
| 9632 @iftex | |
| 9633 @heading END OF TERMS AND CONDITIONS | |
| 9634 @end iftex | |
| 9635 @ifinfo | |
| 9636 @center END OF TERMS AND CONDITIONS | |
| 9637 @end ifinfo | |
| 9638 | |
| 9639 @page | |
| 9640 @unnumberedsec How to Apply These Terms to Your New Programs | |
| 9641 | |
| 9642 If you develop a new program, and you want it to be of the greatest | |
| 9643 possible use to the public, the best way to achieve this is to make it | |
| 9644 free software which everyone can redistribute and change under these terms. | |
| 9645 | |
| 9646 To do so, attach the following notices to the program. It is safest | |
| 9647 to attach them to the start of each source file to most effectively | |
| 9648 convey the exclusion of warranty; and each file should have at least | |
| 9649 the ``copyright'' line and a pointer to where the full notice is found. | |
| 9650 | |
| 9651 @smallexample | |
| 9652 @var{one line to give the program's name and an idea of what it does.} | |
| 9653 Copyright (C) @var{yyyy} @var{name of author} | |
| 9654 | |
| 9655 This program is free software; you can redistribute it and/or | |
| 9656 modify it under the terms of the GNU General Public License | |
| 9657 as published by the Free Software Foundation; either version 3 | |
| 9658 of the License, or (at your option) any later version. | |
| 9659 | |
| 9660 This program is distributed in the hope that it will be useful, | |
| 9661 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 9662 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE@. See the | |
| 9663 GNU General Public License for more details. | |
| 9664 | |
| 9665 You should have received a copy of the GNU General Public License along | |
| 9666 with this program; if not, write to the Free Software Foundation, Inc., | |
| 9667 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
| 9668 @end smallexample | |
| 9669 | |
| 9670 Also add information on how to contact you by electronic and paper mail. | |
| 9671 | |
| 9672 If the program is interactive, make it output a short notice like this | |
| 9673 when it starts in an interactive mode: | |
| 9674 | |
| 9675 @smallexample | |
| 9676 Gnomovision version 69, Copyright (C) @var{yyyy} @var{name of author} | |
| 9677 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details | |
| 9678 type `show w'. This is free software, and you are welcome | |
| 9679 to redistribute it under certain conditions; type `show c' | |
| 9680 for details. | |
| 9681 @end smallexample | |
| 9682 | |
| 9683 The hypothetical commands @samp{show w} and @samp{show c} should show | |
| 9684 the appropriate parts of the General Public License. Of course, the | |
| 9685 commands you use may be called something other than @samp{show w} and | |
| 9686 @samp{show c}; they could even be mouse-clicks or menu items---whatever | |
| 9687 suits your program. | |
| 9688 | |
| 9689 You should also get your employer (if you work as a programmer) or your | |
| 9690 school, if any, to sign a ``copyright disclaimer'' for the program, if | |
| 9691 necessary. Here is a sample; alter the names: | |
| 9692 | |
| 9693 @smallexample | |
| 9694 @group | |
| 9695 Yoyodyne, Inc., hereby disclaims all copyright | |
| 9696 interest in the program `Gnomovision' | |
| 9697 (which makes passes at compilers) written | |
| 9698 by James Hacker. | |
| 9699 | |
| 9700 @var{signature of Ty Coon}, 1 April 1989 | |
| 9701 Ty Coon, President of Vice | |
| 9702 @end group | |
| 9703 @end smallexample | |
| 9704 | |
| 9705 This General Public License does not permit incorporating your program into | |
| 9706 proprietary programs. If your program is a subroutine library, you may | |
| 9707 consider it more useful to permit linking proprietary applications with the | |
| 9708 library. If this is what you want to do, use the GNU Lesser General | |
| 9709 Public License instead of this License. | |
| 9710 | |
| 9711 @node Key Index, Command Index, GPL, Top | |
| 9712 @unnumbered Key (Character) Index | |
| 9713 @printindex ky | |
| 9714 | |
| 9715 @node Command Index, Option Index, Key Index, Top | |
| 9716 @unnumbered Command Index | |
| 9717 @printindex fn | |
| 9718 | |
| 9719 @node Option Index, Concept Index, Command Index, Top | |
| 9720 @unnumbered Option (Variable) Index | |
| 9721 @printindex vr | |
| 9722 | |
| 9723 @node Concept Index, , Option Index, Top | |
| 9724 @unnumbered Concept Index | |
| 9725 @printindex cp | |
| 9726 | |
| 9727 @bye | |
| 9728 | |
| 9729 @c Ispell Helpers | |
| 9730 @c | |
| 9731 @c The following are words that ispell should ignore that would not | |
| 9732 @c normally be in a dictionary (global or personal). Be careful not to | |
| 9733 @c include words here that could potentially be typos of other words | |
| 9734 @c (such as url, elisp, or MHE). | |
| 9735 @c | |
| 9736 @c LocalWords: CTRL ESC SPC f's | |
| 9737 @c LocalWords: addr Aliasfile alist | |
| 9738 @c LocalWords: Baushke Bcc BBN Beranek bogofilter bogofilter's | |
| 9739 @c LocalWords: cmd CMU contrib cron | |
| 9740 @c LocalWords: DesBrisay Dcc devel dir dired docstring filll forw | |
| 9741 @c LocalWords: GECOS Gildea Gildea's Ginnean GnuCash goto gnuserv htm | |
| 9742 @c LocalWords: ImageMagick inbox ispell keychain | |
| 9743 @c LocalWords: Larus licensor LocalWords lookup lpr | |
| 9744 @c LocalWords: makeinfo mairix mbox mh mhbuild mhl mhpath mlisp | |
| 9745 @c LocalWords: MML msg multipart | |
| 9746 @c LocalWords: Namazu NIS nenscript nnml num | |
| 9747 @c LocalWords: packmbox passphrase pathname prev procmail prog repl | |
| 9748 @c LocalWords: slocal sortm SpamAssassin spammers SpamProbe SpamProbe's | |
| 9749 @c LocalWords: sublicense supercite speedbar | |
| 9750 @c LocalWords: Tennex texi texinfo Thelen thelenm | |
| 9751 @c LocalWords: UCI undeleted whatnow wohler xmh ypcat | |
| 9752 @c | |
| 9753 @c See http://www.oreilly.com/oreilly/author/stylesheet.html. | |
| 9754 @c See http://en.wikipedia.org/. | |
| 9755 @c | |
| 9756 @c Note the lowercase mh which is needed to avoid hits in the | |
| 9757 @c functions and variables. Occasionally, check for accidental | |
| 9758 @c inclusion of mh in text by uncommenting the following and executing | |
| 9759 @c it with C-x C-e. You want to see "Search failed" | |
| 9760 @c (let ((case-fold-search nil)) | |
| 9761 @c (goto-char (point-min)) | |
| 9762 @c (search-forward-regexp "^mh\\( \\|$\\)")) | |
| 9763 @c | |
| 9764 @c An extremely useful setting for texinfo-mode-hook is: | |
| 9765 @c (add-to-list | |
| 9766 @c 'ispell-skip-region-alist | |
| 9767 @c (list | |
| 9768 @c (concat "\\(@\\(small\\)?\\(example\\|lisp\\)" | |
| 9769 @c "\\(@\\([irw]\\|code\\|var\\){[^}]+}\\|" | |
| 9770 @c "@[@{}.]\\|" | |
| 9771 @c "[^@]\\|" | |
| 9772 @c "@\\(end \\)?group\\|" | |
| 9773 @c "@\\(end \\)?cartouche\\)+" | |
| 9774 @c "@end \\(small\\)?\\(example\\|lisp\\)\\|" | |
| 9775 @c "@\\(code\\|command\\|file\\|kbd\\|sc\\){[^}]+}\\|" | |
| 9776 @c "^@end [a-z]+$\\|" | |
| 9777 @c "^@\\([fv]\\|print\\)index .*$\\|" | |
| 9778 @c "@uref{[^,]+,\\|" | |
| 9779 @c "@[a-z]+\\|" | |
| 9780 @c "/[a-z.]+[/}]\\)"))))) | |
| 9781 @c | |
| 9782 @c Cross References | |
| 9783 @c | |
| 9784 @c See existing cross-references to the Emacs manual and the Emacs | |
| 9785 @c Lisp manual (search for ``GNU Emacs Manual'' and ``GNU | |
| 9786 @c Emacs Lisp Reference Manual'' respectively). | |
| 9787 | |
| 9788 @c @ftable Sorting | |
| 9789 @c | |
| 9790 @c As per index (sort of): Punctuation, keyboard characters (such as | |
| 9791 @c RET and BS) upper and lowercase mixed (lower comes before | |
| 9792 @c uppercase), control characters go with uppercase C, meta characters | |
| 9793 @c go with uppercase M. | |
| 9794 @c In some cases, the sort isn't strictly ASCII. | |
| 9795 @c For example, SPC (mh-page-msg) reads better before BS | |
| 9796 @c (mh-previous-page) and . (mh-show) is better before , | |
| 9797 @c (mh-header-display). | |
| 9798 | |
| 9799 @c @vtable Sorting | |
| 9800 @c | |
| 9801 @c Alphabetical, pull hooks into their own table. | |
| 9802 | |
| 9803 @c Local Variables: | |
| 9804 @c sentence-end-double-space: nil | |
| 9805 @c End: | |
| 9806 | |
| 9807 @ignore | |
| 9808 arch-tag: b778477d-1a10-4a99-84de-f877a2ea6bef | |
| 9809 @end ignore |
