Mercurial > hg > xemacs-beta
comparison man/vm.texi @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | 49a24b4fd526 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:376386a54a3c |
---|---|
1 \input texinfo @comment -*-Texinfo-*- | |
2 @setfilename ../info/vm.info | |
3 @settitle VM User's Manual | |
4 @iftex | |
5 @finalout | |
6 @end iftex | |
7 @c @setchapternewpage odd % For book style double sided manual. | |
8 @c @smallbook | |
9 @tex | |
10 \overfullrule=0pt | |
11 %\global\baselineskip 30pt % For printing in double spaces | |
12 @end tex | |
13 @ifinfo | |
14 This file documents the VM mail reader. | |
15 | |
16 Copyright (C) 1989, 1991 Kyle E. Jones | |
17 | |
18 Permission is granted to make and distribute verbatim copies of | |
19 this manual provided the copyright notice and this permission notice | |
20 are preserved on all copies. | |
21 | |
22 @ignore | |
23 Permission is granted to process this file through Tex and print the | |
24 results, provided the printed document carries copying permission | |
25 notice identical to this one except for the removal of this paragraph | |
26 (this paragraph not being relevant to the printed manual). | |
27 | |
28 @end ignore | |
29 @end ifinfo | |
30 @c | |
31 @titlepage | |
32 @sp 6 | |
33 @center @titlefont{VM User's Manual} | |
34 @sp 4 | |
35 @center Second Edition, VM Version 5 | |
36 @sp 1 | |
37 @center June 1991 | |
38 @sp 5 | |
39 @center Kyle E. Jones | |
40 @center @t{kyle@@uunet.uu.net} | |
41 @page | |
42 @vskip 0pt plus 1filll | |
43 Copyright @copyright{} 1989, 1991 Kyle E. Jones | |
44 | |
45 Permission is granted to make and distribute verbatim copies of | |
46 this manual provided the copyright notice and this permission notice | |
47 are preserved on all copies. | |
48 | |
49 @end titlepage | |
50 @page | |
51 @ifinfo | |
52 @node Top, Introduction, (dir), (dir) | |
53 | |
54 This manual documents the VM mail reader, a Lisp program which runs as a | |
55 subsystem under Emacs. The manual is divided into the following | |
56 chapters. | |
57 | |
58 @menu | |
59 * Introduction:: Overview of the VM interface. | |
60 * Starting Up:: What happens when your start VM. | |
61 * Selecting Messages:: How to select messages for reading. | |
62 * Reading Messages:: Previewing and paging through a message. | |
63 * Sending Messages:: How to send messages from within VM. | |
64 * Saving Messages:: How to save messages. | |
65 * Deleting Messages:: How to delete, undelete and expunge messages | |
66 * Editing Messages:: How to alter the text and headers of a message. | |
67 * Message Marks:: Running VM commands on arbitrary subsets of messages. | |
68 * Undoing:: How to undo changes to message attributes. | |
69 * Grouping Messages:: How to make VM present similar message together. | |
70 * Reading Digests:: How to read digests under VM. | |
71 * Summaries:: How to view and customize the summary of a folder. | |
72 * Miscellaneous:: Various customization variables undescribed elsewhere. | |
73 * License:: The GNU General Public License | |
74 | |
75 Indices: | |
76 | |
77 * Key Index:: Menus of command keys and their references. | |
78 * Command Index:: Menus of commands and their references. | |
79 * Variable Index:: Menus of variables and their references. | |
80 @end menu | |
81 @end ifinfo | |
82 | |
83 @node License, , , Top | |
84 @unnumbered License | |
85 | |
86 @unnumbered GNU GENERAL PUBLIC LICENSE | |
87 @center Version 1, February 1989 | |
88 @cindex license to copy Emacs | |
89 @cindex General Public License | |
90 | |
91 @display | |
92 Copyright @copyright{} 1989 Free Software Foundation, Inc. | |
93 675 Mass Ave, Cambridge, MA 02139, USA | |
94 | |
95 Everyone is permitted to copy and distribute verbatim copies | |
96 of this license document, but changing it is not allowed. | |
97 @end display | |
98 | |
99 @unnumberedsec Preamble | |
100 | |
101 The license agreements of most software companies try to keep users | |
102 at the mercy of those companies. By contrast, our General Public | |
103 License is intended to guarantee your freedom to share and change free | |
104 software---to make sure the software is free for all its users. The | |
105 General Public License applies to the Free Software Foundation's | |
106 software and to any other program whose authors commit to using it. | |
107 You can use it for your programs, too. | |
108 | |
109 When we speak of free software, we are referring to freedom, not | |
110 price. Specifically, the General Public License is designed to make | |
111 sure that you have the freedom to give away or sell copies of free | |
112 software, that you receive source code or can get it if you want it, | |
113 that you can change the software or use pieces of it in new free | |
114 programs; and that you know you can do these things. | |
115 | |
116 To protect your rights, we need to make restrictions that forbid | |
117 anyone to deny you these rights or to ask you to surrender the rights. | |
118 These restrictions translate to certain responsibilities for you if you | |
119 distribute copies of the software, or if you modify it. | |
120 | |
121 For example, if you distribute copies of a such a program, whether | |
122 gratis or for a fee, you must give the recipients all the rights that | |
123 you have. You must make sure that they, too, receive or can get the | |
124 source code. And you must tell them their rights. | |
125 | |
126 We protect your rights with two steps: (1) copyright the software, and | |
127 (2) offer you this license which gives you legal permission to copy, | |
128 distribute and/or modify the software. | |
129 | |
130 Also, for each author's protection and ours, we want to make certain | |
131 that everyone understands that there is no warranty for this free | |
132 software. If the software is modified by someone else and passed on, we | |
133 want its recipients to know that what they have is not the original, so | |
134 that any problems introduced by others will not reflect on the original | |
135 authors' reputations. | |
136 | |
137 The precise terms and conditions for copying, distribution and | |
138 modification follow. | |
139 | |
140 @iftex | |
141 @unnumberedsec TERMS AND CONDITIONS | |
142 @end iftex | |
143 @ifinfo | |
144 @center TERMS AND CONDITIONS | |
145 @end ifinfo | |
146 | |
147 @enumerate | |
148 @item | |
149 This License Agreement applies to any program or other work which | |
150 contains a notice placed by the copyright holder saying it may be | |
151 distributed under the terms of this General Public License. The | |
152 ``Program'', below, refers to any such program or work, and a ``work based | |
153 on the Program'' means either the Program or any work containing the | |
154 Program or a portion of it, either verbatim or with modifications. Each | |
155 licensee is addressed as ``you''. | |
156 | |
157 @item | |
158 @cindex Distribution | |
159 You may copy and distribute verbatim copies of the Program's source | |
160 code as you receive it, in any medium, provided that you conspicuously and | |
161 appropriately publish on each copy an appropriate copyright notice and | |
162 disclaimer of warranty; keep intact all the notices that refer to this | |
163 General Public License and to the absence of any warranty; and give any | |
164 other recipients of the Program a copy of this General Public License | |
165 along with the Program. You may charge a fee for the physical act of | |
166 transferring a copy. | |
167 | |
168 @item | |
169 You may modify your copy or copies of the Program or any portion of | |
170 it, and copy and distribute such modifications under the terms of Paragraph | |
171 1 above, provided that you also do the following: | |
172 | |
173 @itemize @bullet | |
174 @item | |
175 cause the modified files to carry prominent notices stating that | |
176 you changed the files and the date of any change; and | |
177 | |
178 @item | |
179 cause the whole of any work that you distribute or publish, that | |
180 in whole or in part contains the Program or any part thereof, either | |
181 with or without modifications, to be licensed at no charge to all | |
182 third parties under the terms of this General Public License (except | |
183 that you may choose to grant warranty protection to some or all | |
184 third parties, at your option). | |
185 | |
186 @item | |
187 If the modified program normally reads commands interactively when | |
188 run, you must cause it, when started running for such interactive use | |
189 in the simplest and most usual way, to print or display an | |
190 announcement including an appropriate copyright notice and a notice | |
191 that there is no warranty (or else, saying that you provide a | |
192 warranty) and that users may redistribute the program under these | |
193 conditions, and telling the user how to view a copy of this General | |
194 Public License. | |
195 | |
196 @item | |
197 You may charge a fee for the physical act of transferring a | |
198 copy, and you may at your option offer warranty protection in | |
199 exchange for a fee. | |
200 @end itemize | |
201 | |
202 Mere aggregation of another independent work with the Program (or its | |
203 derivative) on a volume of a storage or distribution medium does not bring | |
204 the other work under the scope of these terms. | |
205 | |
206 @item | |
207 You may copy and distribute the Program (or a portion or derivative of | |
208 it, under Paragraph 2) in object code or executable form under the terms of | |
209 Paragraphs 1 and 2 above provided that you also do one of the following: | |
210 | |
211 @itemize @bullet | |
212 @item | |
213 accompany it with the complete corresponding machine-readable | |
214 source code, which must be distributed under the terms of | |
215 Paragraphs 1 and 2 above; or, | |
216 | |
217 @item | |
218 accompany it with a written offer, valid for at least three | |
219 years, to give any third party free (except for a nominal charge | |
220 for the cost of distribution) a complete machine-readable copy of the | |
221 corresponding source code, to be distributed under the terms of | |
222 Paragraphs 1 and 2 above; or, | |
223 | |
224 @item | |
225 accompany it with the information you received as to where the | |
226 corresponding source code may be obtained. (This alternative is | |
227 allowed only for noncommercial distribution and only if you | |
228 received the program in object code or executable form alone.) | |
229 @end itemize | |
230 | |
231 Source code for a work means the preferred form of the work for making | |
232 modifications to it. For an executable file, complete source code means | |
233 all the source code for all modules it contains; but, as a special | |
234 exception, it need not include source code for modules which are standard | |
235 libraries that accompany the operating system on which the executable | |
236 file runs, or for standard header files or definitions files that | |
237 accompany that operating system. | |
238 | |
239 @item | |
240 You may not copy, modify, sublicense, distribute or transfer the | |
241 Program except as expressly provided under this General Public License. | |
242 Any attempt otherwise to copy, modify, sublicense, distribute or transfer | |
243 the Program is void, and will automatically terminate your rights to use | |
244 the Program under this License. However, parties who have received | |
245 copies, or rights to use copies, from you under this General Public | |
246 License will not have their licenses terminated so long as such parties | |
247 remain in full compliance. | |
248 | |
249 @item | |
250 By copying, distributing or modifying the Program (or any work based | |
251 on the Program) you indicate your acceptance of this license to do so, | |
252 and all its terms and conditions. | |
253 | |
254 @item | |
255 Each time you redistribute the Program (or any work based on the | |
256 Program), the recipient automatically receives a license from the original | |
257 licensor to copy, distribute or modify the Program subject to these | |
258 terms and conditions. You may not impose any further restrictions on the | |
259 recipients' exercise of the rights granted herein. | |
260 | |
261 @item | |
262 The Free Software Foundation may publish revised and/or new versions | |
263 of the General Public License from time to time. Such new versions will | |
264 be similar in spirit to the present version, but may differ in detail to | |
265 address new problems or concerns. | |
266 | |
267 Each version is given a distinguishing version number. If the Program | |
268 specifies a version number of the license which applies to it and ``any | |
269 later version'', you have the option of following the terms and conditions | |
270 either of that version or of any later version published by the Free | |
271 Software Foundation. If the Program does not specify a version number of | |
272 the license, you may choose any version ever published by the Free Software | |
273 Foundation. | |
274 | |
275 @item | |
276 If you wish to incorporate parts of the Program into other free | |
277 programs whose distribution conditions are different, write to the author | |
278 to ask for permission. For software which is copyrighted by the Free | |
279 Software Foundation, write to the Free Software Foundation; we sometimes | |
280 make exceptions for this. Our decision will be guided by the two goals | |
281 of preserving the free status of all derivatives of our free software and | |
282 of promoting the sharing and reuse of software generally. | |
283 | |
284 @iftex | |
285 @heading NO WARRANTY | |
286 @end iftex | |
287 @ifinfo | |
288 @center NO WARRANTY | |
289 @end ifinfo | |
290 | |
291 @item | |
292 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | |
293 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | |
294 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | |
295 PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | |
296 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |
297 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS | |
298 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE | |
299 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | |
300 REPAIR OR CORRECTION. | |
301 | |
302 @item | |
303 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL | |
304 ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | |
305 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | |
306 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES | |
307 ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT | |
308 LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES | |
309 SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE | |
310 WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN | |
311 ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. | |
312 @end enumerate | |
313 | |
314 @iftex | |
315 @heading END OF TERMS AND CONDITIONS | |
316 @end iftex | |
317 @ifinfo | |
318 @center END OF TERMS AND CONDITIONS | |
319 @end ifinfo | |
320 | |
321 @page | |
322 @unnumberedsec Appendix: How to Apply These Terms to Your New Programs | |
323 | |
324 If you develop a new program, and you want it to be of the greatest | |
325 possible use to humanity, the best way to achieve this is to make it | |
326 free software which everyone can redistribute and change under these | |
327 terms. | |
328 | |
329 To do so, attach the following notices to the program. It is safest to | |
330 attach them to the start of each source file to most effectively convey | |
331 the exclusion of warranty; and each file should have at least the | |
332 ``copyright'' line and a pointer to where the full notice is found. | |
333 | |
334 @smallexample | |
335 @var{one line to give the program's name and a brief idea of what it does.} | |
336 Copyright (C) 19@var{yy} @var{name of author} | |
337 | |
338 This program is free software; you can redistribute it and/or modify | |
339 it under the terms of the GNU General Public License as published by | |
340 the Free Software Foundation; either version 1, or (at your option) | |
341 any later version. | |
342 | |
343 This program is distributed in the hope that it will be useful, | |
344 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
345 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
346 GNU General Public License for more details. | |
347 | |
348 You should have received a copy of the GNU General Public License | |
349 along with this program; if not, write to the Free Software | |
350 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
351 @end smallexample | |
352 | |
353 Also add information on how to contact you by electronic and paper mail. | |
354 | |
355 If the program is interactive, make it output a short notice like this | |
356 when it starts in an interactive mode: | |
357 | |
358 @smallexample | |
359 Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author} | |
360 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | |
361 This is free software, and you are welcome to redistribute it | |
362 under certain conditions; type `show c' for details. | |
363 @end smallexample | |
364 | |
365 The hypothetical commands `show w' and `show c' should show the | |
366 appropriate parts of the General Public License. Of course, the | |
367 commands you use may be called something other than `show w' and `show | |
368 c'; they could even be mouse-clicks or menu items---whatever suits your | |
369 program. | |
370 | |
371 You should also get your employer (if you work as a programmer) or your | |
372 school, if any, to sign a ``copyright disclaimer'' for the program, if | |
373 necessary. Here a sample; alter the names: | |
374 | |
375 @example | |
376 Yoyodyne, Inc., hereby disclaims all copyright interest in the | |
377 program `Gnomovision' (a program to direct compilers to make passes | |
378 at assemblers) written by James Hacker. | |
379 | |
380 @var{signature of Ty Coon}, 1 April 1989 | |
381 Ty Coon, President of Vice | |
382 @end example | |
383 | |
384 That's all there is to it! | |
385 | |
386 @node Introduction, Starting Up, Top, Top | |
387 @unnumbered Introduction | |
388 | |
389 VM (View Mail) is an Emacs subsystem that allows UNIX mail to be read | |
390 and disposed of within Emacs. Commands exist to do the normal things | |
391 expected of a mail user agent, such as generating replies, saving | |
392 messages to folders, deleting messages and so on. There are other more | |
393 advanced commands that do tasks like bursting and creating digests, | |
394 message forwarding, and organizing message presentation according to | |
395 various criteria. | |
396 | |
397 To invoke VM simply type @kbd{M-x vm}. VM gathers any mail that has | |
398 arrived in your system mailbox and appends it to a file known as your | |
399 @dfn{primary inbox}, and visits that file for reading. @xref{Starting Up}. | |
400 A file visited for reading by VM is called the @dfn{current folder}.@refill | |
401 | |
402 @findex vm-scroll-forward | |
403 @findex vm-scroll-backward | |
404 @kindex SPC | |
405 @kindex b | |
406 @kindex DEL | |
407 If there are any messages in the primary inbox, VM selects the first new | |
408 or unread message, and previews it. @dfn{Previewing} is VM's way of | |
409 showing you part of message and allowing you to decide whether you want | |
410 to read it. @xref{Previewing}. By default VM shows you the message's | |
411 sender, recipient, subject and date headers. Typing @key{SPC} | |
412 (@code{vm-scroll-forward}) exposes the body of the message and flags the | |
413 message as read. Subsequent @key{SPC}'s scroll forward through the | |
414 message, @kbd{b} or @key{DEL} scrolls backward. When you reach the end | |
415 of a message, typing @key{SPC} or @kbd{n} moves you forward to preview | |
416 the next message. @xref{Paging}.@refill | |
417 | |
418 If you do not want to read a message that's being previewed, just type | |
419 @kbd{n} and VM will move on to the next message (if there is one). | |
420 @xref{Selecting Messages}.@refill | |
421 | |
422 To save a message to a mail folder use @kbd{s} (@code{vm-save-message}). | |
423 VM will prompt you for the folder name in the minibuffer. | |
424 @xref{Saving Messages}.@refill | |
425 | |
426 Messages are deleted by typing @kbd{d} (@code{vm-delete-message}) while | |
427 previewing or reading them. The message is not deleted right away; it | |
428 is simply flagged for deletion. If you change your mind about deleting a | |
429 message just select it and type @kbd{u} (@code{vm-undelete-message}), | |
430 and the message will be undeleted. @xref{Deleting Messages}. The | |
431 actual removal of deleted messages from the current folder is called | |
432 @dfn{expunging} and it is accomplished by typing @kbd{#} | |
433 (@code{vm-expunge-folder}). The message is still present in the on-disk | |
434 version of the folder until the folder is saved.@refill | |
435 | |
436 Typing @kbd{h} (@code{vm-summarize}) causes VM to pop up a window | |
437 containing a summary of the contents of the current folder. The summary is | |
438 presented one line per message, by message number, listing each message's | |
439 author, date sent, line and byte count, and subject. Also, various | |
440 letters appear beside the message number to indicate that a message is | |
441 new, unread, flagged for deletion, etc. An arrow @samp{->} appears to | |
442 the left of the line summarizing the current message. The summary | |
443 format is user configurable, @pxref{Summaries}.@refill | |
444 | |
445 @findex vm-save-folder | |
446 @kindex S | |
447 When you are finished reading mail the current folder must be saved, so | |
448 that the next time the folder is visited VM will know which messages have | |
449 been already read, replied to and so on. Typing @kbd{S} | |
450 (@code{vm-save-folder}) expunges all deleted messages and saves the | |
451 folder. @kbd{C-x C-s} saves the folder without expunging deleted | |
452 messages but the messages are still flagged deleted. The next time the | |
453 folder is visited these messages will still be flagged for deletion.@refill | |
454 | |
455 @findex vm-quit | |
456 @findex vm-quit-no-change | |
457 @kindex q | |
458 @kindex x | |
459 To quit VM you can type @kbd{q} (@code{vm-quit}) or @kbd{x} | |
460 (@code{vm-quit-no-change}). Typing @kbd{q} expunges and saves the | |
461 current folder before quitting. Also, any messages flagged new are | |
462 changed to be flagged unread, before saving. The @kbd{x} command quits | |
463 VM without expunging, saving or otherwise modifying the current folder. | |
464 Quitting is not required; you can simply switch to another Emacs buffer | |
465 when you've finished reading mail.@refill | |
466 | |
467 @findex vm-get-new-mail | |
468 @kindex g | |
469 At any time while reading mail in the primary inbox you can type @kbd{g} | |
470 (@code{vm-get-new-mail}) to check to see if new mail has arrived. If new | |
471 mail has arrived it will be moved from the system spool area and merged into | |
472 the primary inbox. If you are not in the middle of another message, VM | |
473 will also jump to the first new message. | |
474 | |
475 If @code{vm-get-new-mail} is given a prefix argument, it will prompt for | |
476 another file from which to gather messages instead of the usual spool | |
477 files. In this case the source folder is copied but not deleted. | |
478 | |
479 @node Starting Up, Selecting Messages, Introduction, Top | |
480 @chapter Starting Up | |
481 | |
482 @findex vm-load-rc | |
483 @kindex L | |
484 There are three ways to start VM: @kbd{M-x vm}, @kbd{M-x vm-visit-folder} | |
485 and @code{vm-mode}. The first time VM is started in an Emacs session (by | |
486 any of these methods), it attempts to load the file @file{~/.vm}. If | |
487 present this file should contain Lisp code, much like the @file{.emacs} | |
488 file. Since VM has in excess of forty configuration variables, use of | |
489 the @file{~/.vm} can considerably reduce clutter in the @file{.emacs} | |
490 file. You can force the reloading of this file on demand by typing | |
491 @kbd{L} (@code{vm-load-init-file}) from within VM.@refill | |
492 | |
493 @findex vm | |
494 @vindex vm-primary-inbox | |
495 @kbd{M-x vm} causes VM to gather any mail present in your system mailbox | |
496 and append it to a file known as your @dfn{primary inbox}, creating | |
497 this file if necessary. The default name of this file is | |
498 @file{~/INBOX}, but VM will use whatever file is named by the variable | |
499 @code{vm-primary-inbox}.@refill | |
500 | |
501 @vindex vm-crash-box | |
502 VM transfers the mail from the system mailbox to the primary inbox via a | |
503 temporary file known as the @dfn{crash box}. The variable | |
504 @code{vm-crash-box} names the crash box file. VM first copies the mail | |
505 to the crash box, deletes the system mailbox, merges the crash box | |
506 contents into the primary inbox, and then deletes the crash box. If the | |
507 system or Emacs should crash in the midst of this transfer, any message | |
508 not present in the primary inbox will be either in the system mailbox or | |
509 the crash box. Some messages may be duplicated but no mail will be | |
510 lost.@refill | |
511 | |
512 If the file named by @code{vm-crash-box} already exists when VM is | |
513 started up, VM will merge that with the primary inbox before getting any | |
514 new messages from the system mailbox.@refill | |
515 | |
516 @vindex vm-spool-files | |
517 By default, the location of the system mailbox is determined | |
518 heuristically based on what type of system you're using. VM can | |
519 be told explicitly where the system mailbox is through the variable | |
520 @code{vm-spool-files}. The value of this variable should be a list of | |
521 strings naming files VM should try when searching for newly arrived | |
522 mail. Multiple mailboxes can be specified if you receive mail in | |
523 more than one place. The value of @code{vm-spool-files} will be inherited | |
524 from the shell environmental variables MAILPATH or MAIL if either of | |
525 these variables are defined.@refill | |
526 | |
527 @findex vm-visit-folder | |
528 @kindex v | |
529 @kbd{M-x vm-visit-folder} (@kbd{v} from within VM) allows you to visit | |
530 some other mail folder than the primary inbox. The folder name will be | |
531 prompted for in the minibuffer.@refill | |
532 | |
533 Once VM has read the folder, the first new or unread message will be | |
534 selected. If there is no such message, the first message in the folder | |
535 is selected. | |
536 | |
537 @findex vm-mode | |
538 @kbd{M-x vm-mode} can be used on a buffer already loaded into Emacs to put | |
539 it into the VM major mode so that VM commands can be executed from within | |
540 it. This command is suitable for use in Lisp programs, and for inclusion in | |
541 @code{auto-mode-alist} to automatically start VM on a file based on a | |
542 particular filename suffix. @code{vm-mode} foregoes some of VM's startup | |
543 procedures (e.g. starting up a summary) to facilitate noninteractive use. | |
544 | |
545 @vindex vm-startup-with-summary | |
546 The variable @code{vm-startup-with-summary} controls whether VM | |
547 automatically displays a summary of the folder's contents at startup. A | |
548 value of @code{nil} gives no summary; a value of @code{t} gives a full | |
549 frame summary. A value that is neither @code{t} nor @code{nil} splits | |
550 the frame between the summary and the folder display. The latter only | |
551 works if the variable @code{pop-up-windows}'s value is non-@code{nil}, | |
552 and the value of @code{vm-mutable-windows} is non-@code{nil}. The | |
553 default value of @code{vm-startup-with-summary} is @code{nil}.@refill | |
554 | |
555 @vindex vm-mail-window-percentage | |
556 The variable @code{vm-mail-window-percentage} tells VM what percentage of | |
557 the frame should be given to the folder display when both it and the | |
558 folder summary are being displayed. Note that Emacs enforces a minimum | |
559 window size limit, so a very high or very low value for this variable | |
560 may squeeze out one of the displays entirely. This variable's default | |
561 value is 75, which works with Emacs' default minimum window size limit, | |
562 on a 24 line terminal. Note that the value of @code{vm-mutable-windows} | |
563 must be @code{t} or VM will not do window resizing regardless of the | |
564 value of @code{vm-mail-window-percentage}.@refill | |
565 | |
566 @vindex vm-inhibit-startup-message | |
567 A non-@code{nil} value for the variable @code{vm-inhibit-startup-message} | |
568 disables the display of the VM's copyright, copying and warranty | |
569 disclaimer. If you must, set this variable in your own @file{.emacs} file; | |
570 don't set it globally for everyone. Users should be told their rights. | |
571 The startup messages abort at the first keystroke after startup, so they do not | |
572 impede mail reading.@refill | |
573 | |
574 @node Selecting Messages, Reading Messages, Starting Up, Top | |
575 @chapter Selecting Messages | |
576 | |
577 @findex vm-next-message | |
578 @findex vm-previous-message | |
579 @kindex n | |
580 @kindex p | |
581 @vindex vm-skip-deleted-messages | |
582 @vindex vm-skip-read-messages | |
583 The primary commands for selecting messages in VM are @kbd{n} | |
584 (@code{vm-next-message}) and @kbd{p} (@code{vm-previous-message}). | |
585 These commands move forward and backward through the current folder. | |
586 When they go beyond the end or beginning of the folder they wrap to the | |
587 beginning and end respectively. By default, these commands skip messages | |
588 flagged for deletion. This behavior can be disabled by setting the value | |
589 of the variable @code{vm-skip-deleted-messages} to @code{nil}. These | |
590 commands can also be made to skip messages that have been read; set | |
591 @code{vm-skip-read-messages} to @code{t} to do this. | |
592 | |
593 The commands @kbd{n} and @kbd{p} also take prefix arguments that specify | |
594 the number of messages to move forward or backward. If the magnitude of | |
595 the prefix argument is greater than 1, no message skipping will be done | |
596 regardless of the settings of the previously mentioned skip control | |
597 variables.@refill | |
598 | |
599 @vindex vm-circular-folders | |
600 The variable @code{vm-circular-folders} determines whether VM folders | |
601 will be considered circular by various commands. @dfn{Circular} means VM | |
602 will wrap from the end of the folder to the start and vice versa when | |
603 moving the message pointer, deleting, undeleting or saving messages | |
604 before or after the current message.@refill | |
605 | |
606 A value of @code{t} causes all VM commands to consider folders circular. | |
607 A value of @code{nil} causes all of VM commands to signal an error if | |
608 the start or end of the folder would have to be passed to complete the | |
609 command. For movement commands, this occurs after the message pointer | |
610 has been moved as far it can go. For other commands the error occurs | |
611 before any part of the command has been executed, i.e. no deletions, saves, | |
612 etc. will be done unless they can be done in their entirety. A value | |
613 other than @code{nil} or @code{t} causes only VM's movement | |
614 commands to consider folders circular. Saves, deletes and undeletes | |
615 will behave as if the value is @code{nil}. The default value of | |
616 @code{vm-circular-folders} is @code{0}.@refill | |
617 | |
618 Other commands to select messages: | |
619 | |
620 @table @kbd | |
621 @findex vm-goto-message | |
622 @kindex RET | |
623 @item RET (@code{vm-goto-message}) | |
624 Go to message number @var{n}. @var{n} is the prefix argument, if | |
625 provided, otherwise it is prompted for in the minibuffer. | |
626 @findex vm-goto-message | |
627 @kindex TAB | |
628 @item TAB (@code{vm-goto-message-last-seen}) | |
629 Go to message last previewed or read. | |
630 @findex vm-Next-message | |
631 @findex vm-Previous-message | |
632 @kindex N | |
633 @kindex P | |
634 @item N (@code{vm-Next-message}) | |
635 @itemx P (@code{vm-Previous-message}) | |
636 Go to the next (previous) message, ignoring the settings of the skip | |
637 control variables. | |
638 @findex vm-next-unread-message | |
639 @findex vm-previous-unread-message | |
640 @kindex M-n | |
641 @kindex M-p | |
642 @item M-n (@code{vm-next-unread-message}) | |
643 @itemx M-p (@code{vm-previous-unread-message}) | |
644 Move forward (backward) to the nearest new or unread message. If no | |
645 such message exists then these commands work like @kbd{n} and @kbd{p}. | |
646 @findex vm-isearch-forward | |
647 @findex vm-isearch-backward | |
648 @kindex M-s | |
649 @comment @kindex M-r | |
650 @vindex vm-search-using-regexps | |
651 @item M-s (@code{vm-isearch-forward}) | |
652 @itemx M-x vm-isearch-backward | |
653 These work just like Emacs' normal forward and backward incremental | |
654 search commands, except that when the search ends, VM selects the | |
655 message containing point. If the value of the variable | |
656 @code{vm-search-using-regexps} is non-@code{nil}, a regular expression | |
657 may be used instead of a fixed string for the search pattern; VM | |
658 defaults to the fixed string search. If a prefix argument is given, | |
659 the value of @code{vm-search-using-regexps} is temporarily toggled for | |
660 the search. | |
661 @xref{Incremental Search,,,emacs, the GNU Emacs Manual}.@refill | |
662 @end table | |
663 | |
664 @node Reading Messages, Sending Messages, Selecting Messages, Top | |
665 @chapter Reading Messages | |
666 | |
667 Once a message has been selected, VM will present it to you. By default, | |
668 presentation is done in two stages: @dfn{previewing} and @dfn{paging}. | |
669 | |
670 @menu | |
671 * Previewing:: Customizing message previews. | |
672 * Paging:: Scrolling and paging through the current message. | |
673 @end menu | |
674 | |
675 @node Previewing, Paging, Reading Messages, Reading Messages | |
676 @section Previewing | |
677 | |
678 @dfn{Previewing} is VM's way of showing you a small portion of a message | |
679 and allowing you to decide whether you want to read it. Typing | |
680 @key{SPC} exposes the body of the message, and from there you can | |
681 repeatedly type @key{SPC} to page through the message. | |
682 | |
683 By default, the sender, recipient, subject and date headers are shown | |
684 when previewing; the rest of the message is hidden. This behavior may | |
685 be altered by changing the settings of three variables: | |
686 @code{vm-visible-headers}, @code{vm-invisible-header-regexp} and | |
687 @code{vm-preview-lines}.@refill | |
688 | |
689 @vindex vm-preview-lines | |
690 The value of @code{vm-preview-lines} should be a number that tells VM | |
691 how many lines of the text of the message should be visible. The default | |
692 value of this variable is 0. If @code{vm-preview-lines} is @code{nil}, | |
693 then previewing is not done at all; when a message is first presented it | |
694 is immediately exposed in its entirety and is flagged as read.@refill | |
695 | |
696 @vindex vm-visible-headers | |
697 The value of @code{vm-visible-headers} should be a list of regular | |
698 expressions matching the beginnings of headers that should be made | |
699 visible when a message is presented. The regexps should be listed in | |
700 the preferred presentation order of the headers they match.@refill | |
701 | |
702 @vindex vm-invisible-header-regexp | |
703 If non-@code{nil}, the variable @code{vm-invisible-header-regexp} | |
704 specifies what headers should @emph{not} be displayed. Its value should | |
705 be a string containing a regular expression that matches all headers you | |
706 do not want to see. Setting this variable non-@code{nil} implies that | |
707 you want to see all headers not matched by it; therefore the value of | |
708 @code{vm-visible-headers} is only used to determine the order of the | |
709 visible headers in this case. Headers not matched by | |
710 @code{vm-invisible-header-regexp} or @code{vm-visible-headers} are | |
711 displayed last.@refill | |
712 | |
713 If you change the value of either @code{vm-visible-headers} or | |
714 @code{vm-invisible-header-regexp} in the middle of a VM session the | |
715 effects will not be immediate. You will need to use the command | |
716 @code{vm-discard-cached-data} on each message (bound to @kbd{j} by | |
717 default) to force VM rearrange the message headers. A good way to do | |
718 this is to mark all the messages in the folder and apply | |
719 @code{vm-discard-cached-data} to the marked messages. @xref{Message | |
720 Marks}.@refill | |
721 | |
722 @vindex vm-highlighted-header-regexp | |
723 Another variable of interest is @code{vm-highlighted-header-regexp}. The | |
724 value of this variable should be a single regular expression that | |
725 matches the beginnings of any header that should be presented in inverse | |
726 video when previewing. For example, a value of @samp{"^From\\|^Subject"} | |
727 causes the From and Subject headers to be highlighted.@refill | |
728 | |
729 @vindex vm-preview-read-messages | |
730 By default, VM previews all messages, even if they have already been read. | |
731 To have VM preview only those messages that have not been read, set the | |
732 value of @code{vm-preview-read-messages} to @code{nil}. | |
733 | |
734 @findex vm-expose-hidden-headers | |
735 Typing @kbd{t} (@code{vm-expose-hidden-headers}) makes VM toggle | |
736 between exposing and hiding headers that would ordinarily be hidden.@refill | |
737 | |
738 @node Paging,, Previewing, Reading Messages | |
739 @section Paging | |
740 | |
741 @vindex vm-auto-next-message | |
742 Typing @key{SPC} during a message preview exposes the body of the | |
743 message. If the message was new or previously unread, it will be flagged | |
744 ``read''. At this point you can use @key{SPC} to scroll forward, and | |
745 @kbd{b} or @key{DEL} to scroll backward a windowful of text at a time. | |
746 Typing space at the end of a message moves you to the next message. If | |
747 the value of @code{vm-auto-next-message} is @code{nil}, @key{SPC} will | |
748 not move to the next message; you must type @kbd{n} explicitly. | |
749 | |
750 If the value of @code{vm-honor-page-delimiters} is non-@code{nil}, VM | |
751 will recognize and honor page delimiters. This means that when you | |
752 scroll through a document, VM will display text only up to the next page | |
753 delimiter. Text after the delimiter will be hidden until you type | |
754 another @key{SPC}, at which point the text preceding the delimiter will | |
755 become hidden. The Emacs variable @code{page-delimiter} determines what | |
756 VM will consider to be a page delimiter. | |
757 | |
758 You can ``unread'' a message (so to speak) by typing @kbd{U} | |
759 (@code{vm-unread-message}). The current message will be flagged unread. | |
760 | |
761 @node Sending Messages, Saving Messages, Reading Messages, Top | |
762 @chapter Sending Messages | |
763 | |
764 When sending messages from within VM, you will be using the standard | |
765 Mail major mode provided with GNU Emacs. @xref{Mail Mode,,,emacs, the | |
766 GNU Emacs Manual}. | |
767 However, @samp{*mail*} buffers created by VM have extra command keys: | |
768 | |
769 @table @kbd | |
770 @findex vm-yank-message | |
771 @kindex C-c C-y | |
772 @item C-c C-y (@code{vm-yank-message}) | |
773 Copies a message from the current folder into the @samp{*mail*} buffer. | |
774 The message number is read from the minibuffer. By default, each line of | |
775 the copy is prepended with the value of the variable | |
776 @code{vm-included-text-prefix}. All message headers are yanked along | |
777 with the text. Point is left before the inserted text, the mark after. | |
778 Any hook functions bound to mail-yank-hooks are run, after inserting | |
779 the text and setting point and mark. If a prefix argument is given, | |
780 this tells VM to ignore mail-yank-hooks, don't set the mark, don't prepend the | |
781 value of vm-included-text-prefix to every yanked line, and don't yank | |
782 any headers other than those specified in | |
783 vm-visible-headers/vm-invisible-headers.@refill | |
784 @kindex C-c y | |
785 @findex vm-yank-message-other-folder | |
786 @item C-c y (@code{vm-yank-message-other-folder}) | |
787 Work like @code{vm-yank-message}, but it first prompts for the name of a | |
788 folder from which to yank the message.@refill | |
789 @kindex C-c C-v | |
790 @item C-c C-v <Any VM command key> | |
791 All VM commands may be accessed in the @samp{*mail*} buffer by prefixing them | |
792 with C-c C-v. | |
793 @end table | |
794 | |
795 @findex vm-mail | |
796 @kindex m | |
797 The simplest command is @kbd{m} (@code{vm-mail}) which sends a mail | |
798 message much as @kbd{M-x mail} does but allows the added commands | |
799 described above. | |
800 | |
801 @code{vm-mail} can be invoked outside of VM by typing @kbd{M-x vm-mail}. | |
802 However, of the above commands, only @kbd{C-c y} | |
803 (@code{vm-yank-message-other-folder}) will work; all the other commands | |
804 require a parent folder.@refill | |
805 | |
806 If you send a message and it is returned by the mail system because it | |
807 was undeliverable, you can easily resend the message by typing @kbd{M-r} | |
808 (@code{vm-resend-bounced-message}). VM will extract the old message and | |
809 its pertinent headers from the returned message, and place you in a | |
810 @samp{*mail*} buffer. You can then change the recipient addresses or do | |
811 whatever is necessary to correct the original problem and resend the | |
812 message.@refill | |
813 | |
814 @menu | |
815 * Replying:: Describes the various ways to reply to a message. | |
816 * Forwarding Messages:: How to forward a message to a third party. | |
817 @end menu | |
818 | |
819 @node Replying, Forwarding Messages, Sending Messages, Sending Messages | |
820 @section Replying | |
821 | |
822 @vindex vm-reply-subject-prefix | |
823 VM has special commands that make it easy to reply to a message. When a | |
824 reply command is invoked, VM fills in the subject and recipient headers | |
825 for you, since it is apparent to whom the message should be sent and | |
826 what the subject should be. There is an old convention of prepending | |
827 the string @samp{"Re: "} to the subject of replies if the string isn't | |
828 present already. VM supports this indirectly by providing the variable | |
829 @code{vm-reply-subject-prefix}. Its value should be a string to prepend | |
830 to the subject of replies, if the said string isn't present already. A | |
831 @code{nil} value means don't prepend anything to the subject (this is | |
832 the default). In any case you can edit any of the message headers | |
833 manually, if you wish.@refill | |
834 | |
835 @vindex vm-included-text-prefix | |
836 VM also helps you quote material from a message to which you are | |
837 replying by providing @dfn{included text} as a feature of some of the | |
838 commands. @dfn{Included text} is a copy of the message being replied to with | |
839 some fixed string prepended to each line so that included text can be | |
840 distinguished from the text of the reply. The variable | |
841 @code{vm-included-text-prefix} specifies what the prepended string will | |
842 be.@refill | |
843 | |
844 @vindex vm-included-text-attribution-format | |
845 The variable @code{vm-included-text-attribution-format} specifies the | |
846 format for the attribution of included text. This attribution is a line | |
847 of text that tells who wrote the text that is to be included; it will be | |
848 inserted before the included text. If non-@code{nil}, the value of | |
849 @code{vm-included-text-attribution-format} should be a string format | |
850 specification similar to @code{vm-summary-format}. @xref{Summaries}. A | |
851 @code{nil} value causes the attribution to be omitted.@refill | |
852 | |
853 @vindex vm-in-reply-to-format | |
854 The variable @code{vm-in-reply-to-format} specifies the format of the | |
855 In-Reply-To header that is inserted into header section of the reply | |
856 buffer. Like @code{vm-included-text-attribution-format}, | |
857 @code{vm-in-reply-to-format} should be a string similar to that of | |
858 @code{vm-summary-format}. A @code{nil} value causes the In-Reply-To | |
859 header to be omitted.@refill | |
860 | |
861 @vindex vm-strip-reply-headers | |
862 The recipient headers generated for reply messages are created by | |
863 simply copying the appropriate headers for the message to which you are | |
864 replying. This includes any full name information, comments, etc. in | |
865 these headers. If the variable @code{vm-strip-reply-headers} is | |
866 non-@code{nil}, the reply headers will stripped of all information but | |
867 the actual addresses. | |
868 | |
869 The reply commands are: | |
870 | |
871 @table @kbd | |
872 @findex vm-reply | |
873 @kindex r | |
874 @item r (@code{vm-reply}) | |
875 Replies to the author of the current message. | |
876 @findex vm-reply-include-text | |
877 @kindex R | |
878 @item R (@code{vm-reply-include-text}) | |
879 Replies to the author of the current message and provides included text. | |
880 @findex vm-followup | |
881 @kindex f | |
882 @item f (@code{vm-followup}) | |
883 Replies to the all recipients of the current message. | |
884 @findex vm-followup-include-text | |
885 @kindex F | |
886 @item F (@code{vm-followup-include-text}) | |
887 Replies to the all recipients of the current message and provides | |
888 included text. | |
889 @end table | |
890 | |
891 These commands all accept a numeric prefix argument @var{n}, which if | |
892 present, causes VM to reply to the next (or previous if the argument is | |
893 negative) @var{n-1} message as well as the current message. Also all | |
894 the reply commands set the ``replied'' attribute of the messages to | |
895 which you are responding, but only when the reply is actually sent. The | |
896 reply commands can also be applied to marked messages, | |
897 @pxref{Message Marks}.@refill | |
898 | |
899 @vindex vm-reply-ignored-addresses | |
900 If you are one of multiple recipients of a message and you use @kbd{f} | |
901 and @kbd{F}, your address will be included in the recipients of the | |
902 reply. You can avoid this by judicious use of the variable | |
903 @code{vm-reply-ignored-addresses}. Its value should be a list of | |
904 regular expressions that match addresses that VM should automatically | |
905 remove from the recipient headers of replies. | |
906 | |
907 @node Forwarding Messages,, Replying, Sending Messages | |
908 @section Forwarding Messages | |
909 | |
910 VM has two commands to forward messages: @kbd{z} | |
911 (@code{vm-forward-message}) and @key{@@} (@code{vm-send-digest}).@refill | |
912 | |
913 @findex vm-forward-message | |
914 @kindex z | |
915 @vindex vm-rfc934-forwarding | |
916 @vindex vm-forwarding-subject-format | |
917 Typing @kbd{z} puts you into a @samp{*mail*} buffer just like @kbd{m}, | |
918 except the current message appears as the body of the message in the | |
919 @samp{*mail*} buffer. The forwarded message is surrounded by RFC 934 | |
920 compliant message delimiters. If the variable | |
921 @code{vm-rfc934-forwarding} is non-@code{nil}, "^-" to "- -" character | |
922 stuffing is done to the forwarded message (this is the default). This | |
923 behavior is required if the recipient of the forwarded message wants to | |
924 use a RFC 934 standard bursting agent to access the message. If the | |
925 variable @code{vm-forwarding-subject-format} is non-@code{nil} it should | |
926 specify the format of the Subject header of the forwarded message. This | |
927 subject will be used as the contents of the Subject header automatically | |
928 inserted into the @samp{*mail*} buffer. A @code{nil} value causes the | |
929 Subject header to be left blank. The forwarded message is flagged | |
930 ``forwarded''.@refill | |
931 @findex vm-send-digest | |
932 @vindex vm-digest-preamble-format | |
933 @vindex vm-digest-center-preamble | |
934 @kindex @@ | |
935 The command @key{@@} (@code{vm-send-digest}) works like @kbd{z} except | |
936 that a digest of all the messages in the current folder is made and | |
937 inserted into the @samp{*mail*} buffer. Also, @code{vm-send-digest} can | |
938 be applied to marked messages. @xref{Message Marks}. When applied to | |
939 marked messages, @code{vm-send-digest} will only bundle marked messages, | |
940 as opposed to the usual bundling of all messages in the current folder. | |
941 If you give @code{vm-send-digest} a prefix argument, VM will insert a | |
942 list of preamble lines at the beginning of the digest, one line per | |
943 digestified message. The variable @code{vm-digest-preamble-format} | |
944 determines the format of the preamble lines. If the value of | |
945 @code{vm-digest-center-preamble} is non-@code{nil}, the preamble lines | |
946 will be centered.@refill | |
947 | |
948 @node Saving Messages, Deleting Messages, Sending Messages, Top | |
949 @chapter Saving Messages | |
950 | |
951 Mail messages are normally saved to files that contain only mail | |
952 messages. Such files are called @dfn{folders}. | |
953 | |
954 @findex vm-save-message | |
955 @kindex s | |
956 The VM command to save a message to a folder is @kbd{s} | |
957 (@code{vm-save-message}); invoking this command causes the current | |
958 message to be saved to a folder whose name you specify in the | |
959 minibuffer. If @code{vm-save-message} is given a prefix argument | |
960 @var{n}, the current message plus the next @var{n-1} message are saved. | |
961 If @var{n} is negative, the current message and the previous @var{n-1} | |
962 messages are saved. Messages saved with @code{vm-save-message} are | |
963 flagged ``filed''.@refill | |
964 | |
965 @vindex vm-confirm-new-folders | |
966 If the value of the variable @code{vm-confirm-new-folders} is | |
967 non-@code{nil}, VM will ask for confirmation before creating a new | |
968 folder on interactive saves.@refill | |
969 | |
970 @vindex vm-folder-directory | |
971 If you have a directory where you keep all your mail folders, you should | |
972 set the variable @code{vm-folder-directory} to point to it. If this | |
973 variable is set, @code{vm-save-message} will insert this directory name | |
974 into the minibuffer before prompting you for a folder name; this will save | |
975 you some typing.@refill | |
976 | |
977 @vindex vm-auto-folder-alist | |
978 Another aid to selecting folders in which to save mail is the variable | |
979 @code{vm-auto-folder-alist}. The value of this variable should be a | |
980 list of the form,@refill | |
981 | |
982 @display | |
983 ((@var{header-name} | |
984 (@var{regexp} . @var{folder-name}) ...) | |
985 ...) | |
986 @end display | |
987 | |
988 where @var{header-name} and @var{regexp} are strings, and | |
989 @var{folder-name} is a string or an s-expression that evaluates to a | |
990 string.@refill | |
991 | |
992 If any part of the contents of the message header named by | |
993 @var{header-name} is matched by the regular expression @var{regexp}, VM | |
994 will evaluate the corresponding @var{folder-name} and use the result as | |
995 the default when prompting for a folder to save the message in. If | |
996 the resulting folder name is a relative pathname it resolves to the directory | |
997 named by @code{vm-folder-directory}, or the @code{default-directory} of | |
998 the currently visited folder if @code{vm-folder-directory} is @code{nil}.@refill | |
999 | |
1000 When @var{folder-name} is evaluated, the current buffer will contain only | |
1001 the contents of the header named by @var{header-name}. It is safe to | |
1002 modify this buffer. You can use the match data from any @samp{\( @dots{} | |
1003 \)} grouping constructs in @var{regexp} along with the function | |
1004 @code{buffer-substring} to build a folder name based on the header information. | |
1005 If the result of evaluating @var{folder-name} is a list, then the list will | |
1006 be treated as another auto-folder-alist and will be descended | |
1007 recursively.@refill | |
1008 | |
1009 @vindex vm-auto-folder-case-fold-search | |
1010 Whether matching is case sensitive depends on the value of the variable | |
1011 @code{vm-auto-folder-case-fold-search}. A non-@code{nil} value makes | |
1012 matching case insensitive. The default value is @code{t}, which means | |
1013 matching is case sensitive. Note that the matching of header names is | |
1014 always case insensitive because RFC 822 specifies that header names are | |
1015 case indistinct. | |
1016 | |
1017 @vindex vm-visit-when-saving | |
1018 VM can save messages to a folder in two distinct ways. The message can be | |
1019 appended directly to the folder on disk, or the folder can be visited as | |
1020 Emacs would visit any other file and the message be appended to that | |
1021 buffer. In the latter method you must save the buffer yourself to change | |
1022 the on-disk copy of the folder. The variable @code{vm-visit-when-saving} | |
1023 controls which method is used. A value of @code{t} causes VM to always | |
1024 visit a folder before saving message to it. A @code{nil} value causes VM | |
1025 to always append directly to the folder file. In this case VM will not | |
1026 save messages to the disk copy of a folder that is being visited. This | |
1027 restriction is necessary to insure that the buffer and on-disk copies of | |
1028 the folder are consistent. If the value of @var{vm-visit-when-saving} is | |
1029 not @code{nil} and not @code{t} (e.g. 0, the default), VM will append to | |
1030 the folder's buffer if the buffer is currently being visited, otherwise VM | |
1031 will append to the file itself.@refill | |
1032 | |
1033 @vindex vm-delete-after-saving | |
1034 After a message is saved to a folder, the usual thing to do next is to | |
1035 delete it. If the variable @code{vm-delete-after-saving} is | |
1036 non-@code{nil}, VM will flag messages for deletion automatically after | |
1037 saving them. This applies only to saves to folders, not for the @kbd{w} | |
1038 command (see below).@refill | |
1039 | |
1040 Other commands: | |
1041 | |
1042 @table @kbd | |
1043 @findex vm-save-message-sans-headers | |
1044 @kindex w | |
1045 @item w (@code{vm-save-message-sans-headers}) | |
1046 Saves a message or messages to a file without their headers. This | |
1047 command responds to a prefix argument exactly as @code{vm-save-message} | |
1048 does. Messages saved this way are flagged ``written''. | |
1049 @findex vm-auto-archive-messages | |
1050 @kindex A | |
1051 @item A (@code{vm-auto-archive-messages}) | |
1052 Save all unfiled messages that auto-match a folder via | |
1053 @code{vm-auto-folder-alist} to their appropriate folders. Messages that | |
1054 are flagged for deletion are not saved by this command. If invoked with a | |
1055 prefix argument, confirmation will be requested for each save. | |
1056 @findex vm-pipe-message-to-command | |
1057 @kindex | | |
1058 @item | (@code{vm-pipe-message-to-command}) | |
1059 Runs a shell command with some or all of the current message as input. | |
1060 By default, the entire message is used.@* | |
1061 @* | |
1062 If invoked with one @t{C-u} the text portion of the message is used.@* | |
1063 If invoked with two @t{C-u}'s the header portion of the message is used.@* | |
1064 @* | |
1065 If the shell command generates any output, it is displayed in a | |
1066 @samp{*Shell Command Output*} buffer. The message itself is not altered. | |
1067 @end table | |
1068 | |
1069 @node Deleting Messages, Editing Messages, Saving Messages, Top | |
1070 @chapter Deleting Messages | |
1071 | |
1072 In VM, messages are flagged for deletion, and then are subsequently | |
1073 @dfn{expunged} or removed from the folder. The messages are not removed | |
1074 from the on-disk copy of the folder until the folder is saved. | |
1075 | |
1076 @table @kbd | |
1077 @findex vm-delete-message | |
1078 @kindex d | |
1079 @item d (@code{vm-delete-message}) | |
1080 Flags the current message for deletion. A prefix argument @var{n} | |
1081 causes the current message and the next @var{n-1} messages to be flagged. | |
1082 A negative @var{n} causes the current message and the previous @var{n-1} | |
1083 messages to be flagged. | |
1084 @findex vm-undelete-message | |
1085 @kindex u | |
1086 @item u (@code{vm-undelete-message}) | |
1087 Removes the deletion flag from the current message. A prefix argument @var{n} | |
1088 causes the current message and the next @var{n-1} messages to be undeleted. | |
1089 A negative @var{n} causes the current message and the previous @var{n-1} | |
1090 messages to be undeleted. | |
1091 @findex vm-kill-subject | |
1092 @kindex k | |
1093 @item k (@code{vm-kill-subject}) | |
1094 Flags all messages with the same subject as the current message (ignoring | |
1095 ``Re:'') for deletion. | |
1096 @findex vm-expunge-folder | |
1097 @kindex # | |
1098 @item # (@code{vm-expunge-folder}) | |
1099 Does the actual removal of messages flagged for deletion in the current | |
1100 folder. | |
1101 @end table | |
1102 | |
1103 @vindex vm-move-after-deleting | |
1104 @vindex vm-move-after-undeleting | |
1105 Setting the variable @code{vm-move-after-deleting} non-@code{nil} causes | |
1106 VM to move past the messages after flagging them for deletion. Setting | |
1107 @code{vm-move-after-undeleting} non-@code{nil} causes similar movement after undeletes.@refill | |
1108 | |
1109 @node Editing Messages, Message Marks, Deleting Messages, Top | |
1110 @chapter Editing Messages | |
1111 | |
1112 To edit a message, type @kbd{e} (@code{vm-edit-message}). The current | |
1113 message is copied into a temporary buffer, and this buffer is selected | |
1114 for editing. The major mode of this buffer is controlled by the | |
1115 variable @code{vm-edit-message-mode}. The default is Text mode.@refill | |
1116 | |
1117 Use @kbd{C-c ESC} (@code{vm-edit-message-end}) when you have finished | |
1118 editing the message. The message will be inserted into its folder, | |
1119 replacing the old version of the message. If you want to quit the edit | |
1120 without your edited version replacing the original, use @kbd{C-c C-]} | |
1121 (@code{vm-edit-message-abort}), or you can just kill the edit buffer | |
1122 with @kbd{C-x k} (@code{kill-buffer}).@refill | |
1123 | |
1124 If you give a prefix argument to @code{vm-edit-message}, then the | |
1125 current message will be flagged unedited.@refill | |
1126 | |
1127 As with VM @samp{*mail*} buffers, all VM commands can be accessed from | |
1128 the edit buffer through the command prefix @kbd{C-c C-v}.@refill | |
1129 | |
1130 @node Message Marks, Undoing, Editing Messages, Top | |
1131 @chapter Message Marks | |
1132 | |
1133 VM provides general purpose @dfn{marks} that may be applied to any and | |
1134 all messages within a given folder. Certain VM commands can be | |
1135 subsequently invoked only on those message that are marked. | |
1136 | |
1137 To mark the current message, type @kbd{C-c C-@@} | |
1138 (@code{vm-mark-message}). If you give a numeric prefix argument | |
1139 @var{n}, the next @var{n-1} messages will be marked as well. A negative | |
1140 prefix argument means mark the previous @var{n-1}. An asterisk | |
1141 (@samp{*}) will appear to the right of the message numbers of all marked | |
1142 messages in the summary window.@refill | |
1143 | |
1144 To remove a mark from the current message, use @kbd{C-c SPC} | |
1145 (@code{vm-unmark-message}). Prefix arguments work as with | |
1146 @code{vm-mark-message}.@refill | |
1147 | |
1148 Use @kbd{C-c C-a} to mark all messages in the current folder; @kbd{C-c a} | |
1149 removes marks from all messages. | |
1150 | |
1151 To apply a VM command to all marked message you must prefix it with the | |
1152 key sequence @kbd{C-c RET} (@code{vm-next-command-uses-marks}). The | |
1153 next VM command will apply to all marked messages, provided the | |
1154 command can be applied to such messages in a meaningful and useful way. | |
1155 The current commands that can be applied to marked messages are: | |
1156 @code{vm-delete-message}, @code{vm-discard-cached-data}, | |
1157 @code{vm-followup}, @code{vm-followup-include-text}, @code{vm-reply}, | |
1158 @code{vm-reply-include-text}, @code{vm-save-message}, | |
1159 @code{vm-save-message-sans-headers}, @code{vm-send-digest}, | |
1160 @code{vm-undelete-message}, and @code{vm-unread-message}.@refill | |
1161 | |
1162 @node Undoing, Grouping Messages, Message Marks, Top | |
1163 @chapter Undoing | |
1164 | |
1165 VM provides a special form of undo which allows changes to message attributes | |
1166 to be undone. | |
1167 | |
1168 @findex vm-undo | |
1169 @kindex C-x u | |
1170 @kindex C-_ | |
1171 Typing @kbd{C-x u} or @key{C-_} (@code{vm-undo}) undoes the last | |
1172 attribute change. Consecutive @code{vm-undo}'s undo further and further | |
1173 back. Any intervening command breaks the undo chain, after which the | |
1174 undos themselves become undoable by subsequent invocations of | |
1175 @code{vm-undo}.@refill | |
1176 | |
1177 Note that expunges, saves and message edits are @emph{not} undoable. | |
1178 | |
1179 @node Grouping Messages, Reading Digests, Undoing, Top | |
1180 @chapter Grouping Messages | |
1181 | |
1182 @findex vm-group-messages | |
1183 @kindex G | |
1184 In order to make numerous related messages easier to cope with, VM | |
1185 provides the command @kbd{G} (@code{vm-group-messages}), which groups | |
1186 all messages in a folder according to some criterion. @dfn{Grouping} | |
1187 causes messages that are related in some way to be presented | |
1188 consecutively. The actual order of the folder is not altered; | |
1189 the messages are simply numbered and presented differently. Grouping | |
1190 should not be confused with sorting; grouping only moves messages that | |
1191 occur later in the folder backward to ``clump'' with other related | |
1192 messages.@refill | |
1193 | |
1194 The grouping criteria currently supported are: | |
1195 @table @samp | |
1196 @item subject | |
1197 Messages with the same subject (ignoring ``Re:'' prefixes) are grouped | |
1198 together. | |
1199 @item author | |
1200 Messages with the same author are grouped together. | |
1201 @item recipient | |
1202 Message with the same recipients are grouped together. | |
1203 @item date-sent | |
1204 Messages sent on the same day are grouped together. | |
1205 @item physical-order | |
1206 Message presentation reverts to physical message order of the folder (the | |
1207 default). | |
1208 @end table | |
1209 | |
1210 @vindex vm-group-by | |
1211 If the variable @code{vm-group-by} has a non-@code{nil} value it | |
1212 specifies the default grouping that will be used for all folders. So if | |
1213 you like having your mail presented to you grouped by subject, then put | |
1214 @code{(setq vm-group-by "subject")} in your @file{.vm} or @file{.emacs} | |
1215 file to get this behavior.@refill | |
1216 | |
1217 @node Reading Digests, Summaries, Grouping Messages, Top | |
1218 @chapter Reading Digests | |
1219 | |
1220 A @dfn{digest} is one or more mail messages encapsulated in a single message. | |
1221 | |
1222 VM supports digests by providing a command to ``burst'' them into their | |
1223 individual messages. These messages can then be handled like any other | |
1224 messages under VM. | |
1225 | |
1226 @findex vm-burst-digest | |
1227 @kindex * | |
1228 The command @kbd{*} (@code{vm-burst-digest}) bursts a digest into its | |
1229 individual messages and appends them to the current folder. These | |
1230 messages are then assimilated into the current folder using the default | |
1231 grouping. @xref{Grouping Messages}. The original digest message is not | |
1232 altered, and the messages extracted from it are not part of the on-disk copy | |
1233 of the folder until a save is done.@refill | |
1234 | |
1235 If you give a prefix argument to @code{vm-burst-digest}, it will attempt | |
1236 to cope with non-RFC 934 compliant digests. If @code{vm-burst-digest} | |
1237 seems to be breaking digests at inappropriate places, most likely the | |
1238 digest is not compliant with the standard. In this case try using the | |
1239 prefix arg. | |
1240 | |
1241 @node Summaries, Miscellaneous, Reading Digests, Top | |
1242 @chapter Summaries | |
1243 | |
1244 @findex vm-summarize | |
1245 @vindex vm-auto-center-summary | |
1246 @kindex h | |
1247 Typing @kbd{h} (@code{vm-summarize}) causes VM to display a summary of | |
1248 contents of the current folder. The information in the summary is | |
1249 automatically updated as changes are made to the current folder. An | |
1250 arrow @samp{->} appears to the left of the line summarizing the current | |
1251 message. The variable @code{vm-auto-center-summary} controls whether VM | |
1252 will keep the summary arrow vertically centered within the summary | |
1253 window. A value of @code{t} causes VM to always keep the arrow | |
1254 centered. A value of @code{nil} (the default) means VM will never | |
1255 bother centering the arrow. A value that is not @code{nil} and not | |
1256 @code{t} causes VM to center the arrow only if the summary window is not | |
1257 the only existing window.@refill | |
1258 | |
1259 @vindex vm-summary-format | |
1260 The variable @code{vm-summary-format} controls the format of each | |
1261 message's summary. Its value should be a string. This string should | |
1262 contain printf-like ``%'' conversion specifiers which substitute | |
1263 information about the message into the final summary. | |
1264 | |
1265 Recognized specifiers are: | |
1266 @display | |
1267 a - attribute indicators (always four characters wide) | |
1268 The first char is `D', `N', `U' or ` ' for deleted, new, unread | |
1269 and read messages respectively. | |
1270 The second char is `F', `W' or ` ' for filed (saved) or written | |
1271 messages. | |
1272 The third char is `R', `Z' or ` ' for messages replied to, | |
1273 and forwarded messages. | |
1274 The fourth char is `E' if the message has been edited, | |
1275 ` ' otherwise. | |
1276 A - longer version of attributes indicators (six characters wide) | |
1277 The first char is `D', `N', `U' or ` ' for deleted, new, unread | |
1278 and read messages respectively. | |
1279 The second is `r' or ` ', for message replied to. | |
1280 The third is `z' or ` ', for messages forwarded. | |
1281 The fourth is `f' or ` ', for messages filed. | |
1282 The fifth is `w' or ` ', for messages written. | |
1283 The sixth is `e' or ` ', for messages that have been edited. | |
1284 c - number of characters in message (ignoring headers) | |
1285 d - numeric day of month message sent | |
1286 f - author's address | |
1287 F - author's full name (same as f if full name not found) | |
1288 h - hour message sent | |
1289 i - message ID | |
1290 l - number of lines in message (ignoring headers) | |
1291 m - month message sent | |
1292 M - numeric month message sent (January = 1) | |
1293 n - message number | |
1294 s - message subject | |
1295 t - addresses of the recipients of the message, in a comma-separated list | |
1296 T - full names of the recipients of the message, in a comma-separated list | |
1297 If a full name cannot be found, the corresponding address is used | |
1298 instead. | |
1299 w - day of the week message sent | |
1300 y - year message sent | |
1301 z - timezone of date when the message was sent | |
1302 * - `*' if the current message is marked, ` ' otherwise | |
1303 @end display | |
1304 | |
1305 Use ``%%'' to get a single ``%''. | |
1306 | |
1307 A numeric field width may be specified between the ``%'' and the | |
1308 specifier; this causes right justification of the substituted string. A | |
1309 negative field width causes left justification. The field width may be | |
1310 followed by a ``.'' and a number specifying the maximum allowed length | |
1311 of the substituted string. If the string is longer than this value, it | |
1312 is truncated. | |
1313 | |
1314 The summary format need not be one line per message but it must end with | |
1315 a newline, otherwise the message pointer will not be displayed correctly | |
1316 in the summary window. | |
1317 | |
1318 You can have a summary generated automatically at startup, | |
1319 @pxref{Starting Up}.@refill | |
1320 | |
1321 @vindex vm-follow-summary-cursor | |
1322 All VM commands are available in the summary buffer just as they are in | |
1323 the folder buffer itself. If you set @code{vm-follow-summary-cursor} | |
1324 non-@code{nil}, VM will select the message under the cursor in the | |
1325 summary window before executing commands that operate on the current | |
1326 message. Note that this occurs @emph{only} when executing a command | |
1327 from the summary buffer window.@refill | |
1328 | |
1329 @node Miscellaneous,, Summaries, Top | |
1330 @chapter Miscellaneous | |
1331 | |
1332 Here are some VM customization variables that don't really fit into the | |
1333 other chapters. | |
1334 | |
1335 @table @code | |
1336 @vindex vm-confirm-quit | |
1337 @item vm-confirm-quit | |
1338 A value of @code{t} causes VM to always ask for confirmation before | |
1339 ending a VM visit of a folder. A @code{nil} value means VM will ask | |
1340 only when messages will be lost unwittingly by quitting, i.e. not | |
1341 removed by intentional delete and expunge. A value that is neither | |
1342 @code{nil} nor @code{t} causes VM to ask only when there are unsaved | |
1343 changes to message attributes or message will be lost. | |
1344 @vindex vm-berkeley-mail-compatibility | |
1345 @item vm-berkeley-mail-compatibility | |
1346 A non-@code{nil} value means to read and write BSD @i{Mail(1)} style Status: | |
1347 headers. This makes sense if you plan to use VM to read mail archives | |
1348 created by @i{Mail}. | |
1349 @vindex vm-gargle-uucp | |
1350 @item vm-gargle-uucp | |
1351 A non-@code{nil} value means to use a crufty regular expression that | |
1352 does surprisingly well at beautifying UUCP addresses that are substituted | |
1353 for %f and %t as part of summary and attribution formats. | |
1354 @vindex vm-mode-hooks | |
1355 @item vm-mode-hooks | |
1356 A non-@code{nil} value should be a list of hook functions to run when a | |
1357 buffer enters vm-mode. These hook functions should generally be used to | |
1358 set key bindings and local variables. Mucking about in the folder | |
1359 buffer is certainly possible, but it is not encouraged. | |
1360 @vindex vm-delete-empty-folders | |
1361 @item vm-delete-empty-folders | |
1362 A non-@code{nil} value for this variable causes VM to remove empty (zero | |
1363 length) folder files after saving them. | |
1364 @vindex vm-mutable-windows | |
1365 @item vm-mutable-windows | |
1366 This variable's value controls VM's window usage. A value of @code{t} gives VM | |
1367 free run of the Emacs display; it will commandeer the entire frame for | |
1368 its purposes. A value of @code{nil} restricts VM's window usage to the window | |
1369 from which it was invoked. VM will not create, delete, or use any other | |
1370 windows, nor will it resize its own window. A value that is neither @code{t} | |
1371 nor @code{nil} allows VM to use other windows, but it will not create new ones, | |
1372 or resize or delete the current ones.@refill | |
1373 @vindex mail-yank-hooks | |
1374 @item mail-yank-hooks | |
1375 Value should be a list of functions to be called after a message is | |
1376 yanked into a @samp{*mail*} buffer via @code{vm-yank-message}. When | |
1377 each hook function is called, point will be at the beginning of the | |
1378 yanked text and mark at the end. | |
1379 | |
1380 This is not a VM specific variable, but rather an external variable that | |
1381 VM honors so that citation packages such as @i{SUPERCITE} can be | |
1382 used with VM. | |
1383 @end table | |
1384 | |
1385 @node Key Index, Command Index, Top, Top | |
1386 @unnumbered Key Index | |
1387 @printindex ky | |
1388 | |
1389 @node Command Index, Variable Index, Key Index, Top | |
1390 @unnumbered Command Index | |
1391 @printindex fn | |
1392 | |
1393 @node Variable Index, , Command Index, Top | |
1394 @unnumbered Variable Index | |
1395 @printindex vr | |
1396 | |
1397 @summarycontents | |
1398 @contents | |
1399 @bye |