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