*** empty log message ***
[gnus] / texi / message.texi
1 \input texinfo                  @c -*-texinfo-*-
2
3 @setfilename message
4 @settitle Message 5.4.44 Manual
5 @synindex fn cp
6 @synindex vr cp
7 @synindex pg cp
8 @iftex
9 @finalout
10 @end iftex
11 @setchapternewpage odd
12
13 @ifinfo
14
15 This file documents Message, the Emacs message composition mode.
16
17 Copyright (C) 1996 Free Software Foundation, Inc.
18
19 Permission is granted to make and distribute verbatim copies of
20 this manual provided the copyright notice and this permission notice
21 are preserved on all copies.
22
23 @ignore
24 Permission is granted to process this file through Tex and print the
25 results, provided the printed document carries copying permission
26 notice identical to this one except for the removal of this paragraph
27 (this paragraph not being relevant to the printed manual).
28
29 @end ignore
30 Permission is granted to copy and distribute modified versions of this
31 manual under the conditions for verbatim copying, provided also that the
32 entire resulting derived work is distributed under the terms of a
33 permission notice identical to this one.
34
35 Permission is granted to copy and distribute translations of this manual
36 into another language, under the above conditions for modified versions.
37 @end ifinfo
38
39 @tex
40
41 @titlepage
42 @title Message 5.4.44 Manual
43
44 @author by Lars Magne Ingebrigtsen
45 @page
46
47 @vskip 0pt plus 1filll
48 Copyright @copyright{} 1996 Free Software Foundation, Inc. 
49
50 Permission is granted to make and distribute verbatim copies of
51 this manual provided the copyright notice and this permission notice
52 are preserved on all copies.
53
54 Permission is granted to copy and distribute modified versions of this
55 manual under the conditions for verbatim copying, provided that the
56 entire resulting derived work is distributed under the terms of a
57 permission notice identical to this one.
58
59 Permission is granted to copy and distribute translations of this manual
60 into another language, under the above conditions for modified versions.
61
62 @end titlepage
63 @page
64
65 @end tex
66
67 @node Top
68 @top Message
69
70 All message composition (both mail and news) takes place in Message mode
71 buffers.
72
73 @menu
74 * Interface::         Setting up message buffers.
75 * Commands::          Commands you can execute in message mode buffers.
76 * Variables::         Customizing the message buffers.
77 * Compatibility::     Making Message backwards compatible.
78 * Index::             Variable, function and concept index.
79 * Key Index::         List of Message mode keys.
80 @end menu
81
82 This manual corresponds to Message 5.4.44.  Message is distributed with
83 the Gnus distribution bearing the same version number as this manual
84 has. 
85
86
87 @node Interface
88 @chapter Interface
89
90 When a program (or a person) wants to respond to a message -- reply,
91 follow up, forward, cancel -- the program (or person) should just put
92 point in the buffer where the message is and call the required command.
93 @code{Message} will then pop up a new @code{message} mode buffer with
94 appropriate headers filled out, and the user can edit the message before
95 sending it.
96
97 @menu
98 * New Mail Message::     Editing a brand new mail message.
99 * New News Message::     Editing a brand new news message.
100 * Reply::                Replying via mail.
101 * Wide Reply::           Responding to all people via mail.
102 * Followup::             Following up via news.
103 * Canceling News::       Canceling a news article.
104 * Superseding::          Superseding a message.
105 * Forwarding::           Forwarding a message via news or mail.
106 * Resending::            Resending a mail message.
107 * Bouncing::             Bouncing a mail message.
108 @end menu
109
110
111 @node New Mail Message
112 @section New Mail Message
113
114 @findex message-mail
115 The @code{message-mail} command pops up a new message buffer.  
116
117 Two optional parameters are accepted: The first will be used as the
118 @code{To} header and the second as the @code{Subject} header.  If these
119 aren't present, those two headers will be empty.
120
121
122 @node New News Message
123 @section New News Message
124
125 @findex message-news
126 The @code{message-news} command pops up a new message buffer.  
127
128 This function accepts two optional parameters.  The first will be used
129 as the @code{Newsgroups} header and the second as the @code{Subject}
130 header.  If these aren't present, those two headers will be empty.
131
132
133 @node Reply
134 @section Reply
135
136 @findex message-reply
137 The @code{message-reply} function pops up a message buffer that's a
138 reply to the message in the current buffer.
139
140 @vindex message-reply-to-function
141 Message uses the normal methods to determine where replies are to go,
142 but you can change the behavior to suit your needs by fiddling with the
143 @code{message-reply-to-function} variable.
144
145 If you want the replies to go to the @code{Sender} instead of the
146 @code{From}, you could do something like this:
147
148 @lisp
149 (setq message-reply-to-function
150       (lambda ()
151        (cond ((equal (mail-fetch-field "from") "somebody")
152                (mail-fetch-field "sender"))     
153              (t 
154               nil))))
155 @end lisp
156
157 This function will be called narrowed to the head of the article that is
158 being replied to.
159
160 As you can see, this function should return a string if it has an
161 opinion as to what the To header should be.  If it does not, it should
162 just return @code{nil}, and the normal methods for determining the To
163 header will be used.
164
165 This function can also return a list.  In that case, each list element
166 should be a cons, where the car should be the name of an header
167 (eg. @code{Cc}) and the cdr should be the header value
168 (eg. @samp{larsi@@ifi.uio.no}).  All these headers will be inserted into
169 the head of the outgoing mail. 
170
171
172 @node Wide Reply
173 @section Wide Reply
174
175 @findex message-wide-reply
176 The @code{message-wide-reply} pops up a message buffer that's a wide
177 reply to the message in the current buffer.  A @dfn{wide reply} is a
178 reply that goes out to all people listed in the @code{To}, @code{From}
179 and @code{Cc} headers.
180
181 @vindex message-wide-reply-to-function
182 Message uses the normal methods to determine where wide replies are to go,
183 but you can change the behavior to suit your needs by fiddling with the
184 @code{message-wide-reply-to-function}.  It is used in the same way as
185 @code{message-reply-to-function} (@pxref{Reply}). 
186
187 @findex rmail-dont-reply-to-names
188 Addresses that match the @code{rmail-dont-reply-to-names} regular
189 expression will be removed from the @code{Cc} header.
190
191
192 @node Followup
193 @section Followup
194
195 @findex message-followup
196 The @code{message-followup} command pops up a message buffer that's a
197 followup to the message in the current buffer.
198
199 @vindex message-followup-to-function
200 Message uses the normal methods to determine where followups are to go,
201 but you can change the behavior to suit your needs by fiddling with the
202 @code{message-followup-to-function}.  It is used in the same way as
203 @code{message-reply-to-function} (@pxref{Reply}).
204
205 @vindex message-use-followup-to
206 The @code{message-use-followup-to} variable says what to do about
207 @code{Followup-To} headers.  If it is @code{use}, always use the value.
208 If it is @code{ask} (which is the default), ask whether to use the
209 value.  If it is @code{t}, use the value unless it is @samp{poster}.  If
210 it is @code{nil}, don't use the value.
211
212
213 @node Canceling News
214 @section Canceling News
215
216 @findex message-cancel-news
217 The @code{message-cancel-news} command cancels the article in the
218 current buffer.
219
220
221 @node Superseding
222 @section Superseding
223
224 @findex message-supersede
225 The @code{message-supersede} command pops up a message buffer that will
226 supersede the message in the current buffer.
227
228 @vindex message-ignored-supersedes-headers
229 Headers matching the @code{message-ignored-supersedes-headers} are
230 removed before popping up the new message buffer.  The default is@*
231 @samp{^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|@*
232 ^Received:\\|^X-From-Line:\\|Return-Path:}.
233
234
235
236 @node Forwarding
237 @section Forwarding
238
239 @findex message-forward
240 The @code{message-forward} command pops up a message buffer to forward
241 the message in the current buffer.  If given a prefix, forward using
242 news.
243
244 @table @code
245 @item message-forward-start-separator
246 @vindex message-forward-start-separator
247 Delimiter inserted before forwarded messages.  The default is@*
248 @samp{------- Start of forwarded message -------\n}. 
249
250 @vindex message-forward-end-separator
251 @item message-forward-end-separator
252 @vindex message-forward-end-separator
253 Delimiter inserted after forwarded messages.  The default is@*
254 @samp{------- End of forwarded message -------\n}. 
255
256 @item message-signature-before-forwarded-message
257 @vindex message-signature-before-forwarded-message
258 If this variable is @code{t}, which it is by default, your personal
259 signature will be inserted before the forwarded message.  If not, the
260 forwarded message will be inserted first in the new mail.
261
262 @item message-included-forward-headers
263 @vindex message-included-forward-headers
264 Regexp matching header lines to be included in forwarded messages.  
265
266 @end table
267
268
269 @node Resending
270 @section Resending
271
272 @findex message-resend
273 The @code{message-resend} command will prompt the user for an address
274 and resend the message in the current buffer to that address.
275
276 @vindex message-ignored-resent-headers
277 Headers that match the @code{message-ignored-resent-headers} regexp will
278 be removed before sending the message.  The default is
279 @samp{^Return-receipt}. 
280
281
282 @node Bouncing
283 @section Bouncing
284
285 @findex message-bounce
286 The @code{message-bounce} command will, if the current buffer contains a
287 bounced mail message, pop up a message buffer stripped of the bounce
288 information.  A @dfn{bounced message} is typically a mail you've sent
289 out that has been returned by some @code{mailer-daemon} as
290 undeliverable. 
291
292 @vindex message-ignored-bounced-headers
293 Headers that match the @code{message-ignored-bounced-headers} regexp
294 will be removed before popping up the buffer.  The default is
295 @samp{^Received:}. 
296
297
298 @node Commands
299 @chapter Commands
300
301 @menu
302 * Header Commands::     Commands for moving to headers.
303 * Movement::            Moving around in message buffers.
304 * Insertion::           Inserting things into message buffers.
305 * Various Commands::    Various things.
306 * Sending::             Actually sending the message.
307 * Mail Aliases::        How to use mail aliases.
308 @end menu
309
310
311 @node Header Commands
312 @section Header Commands
313
314 All these commands move to the header in question.  If it doesn't exist,
315 it will be inserted.
316
317 @table @kbd
318
319 @item C-c ?
320 @kindex C-c ?
321 @findex message-goto-to
322 Describe the message mode.
323
324 @item C-c C-f C-t
325 @kindex C-c C-f C-t 
326 @findex message-goto-to
327 Go to the @code{To} header (@code{message-goto-to}).
328
329 @item C-c C-f C-b
330 @kindex C-c C-f C-b 
331 @findex message-goto-bcc
332 Go to the @code{Bcc} header (@code{message-goto-bcc}).
333
334 @item C-c C-f C-f
335 @kindex C-c C-f C-f 
336 @findex message-goto-fcc
337 Go to the @code{Fcc} header (@code{message-goto-fcc}).
338
339 @item C-c C-f C-c
340 @kindex C-c C-f C-c 
341 @findex message-goto-cc
342 Go to the @code{Cc} header (@code{message-goto-cc}).
343
344 @item C-c C-f C-s
345 @kindex C-c C-f C-s 
346 @findex message-goto-subject
347 Go to the @code{Subject} header (@code{message-goto-subject}).
348
349 @item C-c C-f C-r
350 @kindex C-c C-f C-r 
351 @findex message-goto-reply-to
352 Go to the @code{Reply-To} header (@code{message-goto-reply-to}).
353
354 @item C-c C-f C-n
355 @kindex C-c C-f C-n 
356 @findex message-goto-newsgroups
357 Go to the @code{Newsgroups} header (@code{message-goto-newsgroups}).
358
359 @item C-c C-f C-d
360 @kindex C-c C-f C-d 
361 @findex message-goto-distribution
362 Go to the @code{Distribution} header (@code{message-goto-distribution}).
363
364 @item C-c C-f C-o
365 @kindex C-c C-f C-o 
366 @findex message-goto-followup-to
367 Go to the @code{Followup-To} header (@code{message-goto-followup-to}).
368
369 @item C-c C-f C-k
370 @kindex C-c C-f C-k 
371 @findex message-goto-keywords
372 Go to the @code{Keywords} header (@code{message-goto-keywords}).
373
374 @item C-c C-f C-u
375 @kindex C-c C-f C-u 
376 @findex message-goto-summary
377 Go to the @code{Summary} header (@code{message-goto-summary}).
378
379 @end table
380
381
382 @node Movement
383 @section Movement
384
385 @table @kbd
386 @item C-c C-b
387 @kindex C-c C-b 
388 @findex message-goto-body
389 Move to the beginning of the body of the message
390 (@code{message-goto-body}). 
391
392 @item C-c C-i
393 @kindex C-c C-i 
394 @findex message-goto-signature
395 Move to the signature of the message (@code{message-goto-signature}).
396
397 @end table
398
399
400 @node Insertion
401 @section Insertion
402
403 @table @kbd
404
405 @item C-c C-y
406 @kindex C-c C-y 
407 @findex message-yank-original
408 Yank the message that's being replied to into the message buffer
409 (@code{message-yank-original}). 
410
411 @item C-c C-q
412 @kindex C-c C-q 
413 @findex message-fill-yanked-message
414 Fill the yanked message (@code{message-fill-yanked-message}). 
415
416 @item C-c C-w
417 @kindex C-c C-w 
418 @findex message-insert-signature
419 Insert a signature at the end of the buffer
420 (@code{message-insert-signature}).  
421
422 @end table
423
424 @table @code
425 @item message-ignored-cited-headers
426 @vindex message-ignored-cited-headers
427 All headers that match this regexp will be removed from yanked
428 messages.  The default is @samp{.}, which means that all headers will be
429 removed.
430
431 @item message-citation-line-function
432 @vindex message-citation-line-function
433 Function called to insert the citation line.  The default is
434 @code{message-insert-citation-line}. 
435
436 @item message-yank-prefix
437 @vindex message-yank-prefix
438 @cindex yanking
439 @cindex quoting
440 When you are replying to or following up an article, you normally want
441 to quote the person you are answering.  Inserting quoted text is done by
442 @dfn{yanking}, and each quoted line you yank will have
443 @code{message-yank-prefix} prepended to it.  The default is @samp{> }.
444 If it is @code{nil}, just indent the message.
445
446 @item message-indentation-spaces
447 @vindex message-indentation-spaces
448 Number of spaces to indent yanked messages.
449
450 @item message-cite-function
451 @vindex message-cite-function
452 @findex message-cite-original
453 @findex sc-cite-original
454 @cindex Supercite
455 Function for citing an original message.  The default is
456 @code{message-cite-original}.  You can also set it to
457 @code{sc-cite-original} to use Supercite.
458
459 @item message-indent-citation-function
460 @vindex message-indent-citation-function
461 Function for modifying a citation just inserted in the mail buffer.
462 This can also be a list of functions.  Each function can find the
463 citation between @code{(point)} and @code{(mark t)}.  And each function
464 should leave point and mark around the citation text as modified.
465
466 @item message-signature
467 @vindex message-signature
468 String to be inserted at the end of the message buffer.  If @code{t}
469 (which is the default), the @code{message-signature-file} file will be
470 inserted instead.  If a function, the result from the function will be
471 used instead.  If a form, the result from the form will be used instead.
472 If this variable is @code{nil}, no signature will be inserted at all.
473
474 @item message-signature-file
475 @vindex message-signature-file
476 File containing the signature to be inserted at the end of the buffer.
477 The default is @samp{~/.signature}.
478
479 @end table
480
481 Note that RFC1036 says that a signature should be preceded by the three
482 characters @samp{-- } on a line by themselves.  This is to make it
483 easier for the recipient to automatically recognize and process the
484 signature.  So don't remove those characters, even though you might feel
485 that they ruin your beautiful design, like, totally.
486
487 Also note that no signature should be more than four lines long.
488 Including ASCII graphics is an efficient way to get everybody to believe
489 that you are silly and have nothing important to say.
490
491
492
493 @node Various Commands
494 @section Various Commands
495
496 @table @kbd
497
498 @item C-c C-r
499 @kindex C-c C-r 
500 @findex message-caesar-buffer-body
501 Caesar rotate (aka. rot13) the current message
502 (@code{message-caesar-buffer-body}).  If narrowing is in effect, just
503 rotate the visible portion of the buffer.  A numerical prefix says how
504 many places to rotate the text.  The default is 13.
505
506 @item C-c C-e
507 @kindex C-c C-e
508 @findex message-elide-region
509 Elide the text between point and mark (@code{message-elide-region}).
510 The text is killed and an ellipsis (@samp{[...]}) will be inserted in
511 its place.
512
513 @item C-c C-t
514 @kindex C-c C-t 
515 @findex message-insert-to
516 Insert a @code{To} header that contains the @code{Reply-To} or
517 @code{From} header of the message you're following up
518 (@code{message-insert-to}). 
519
520 @item C-c C-n
521 @kindex C-c C-n 
522 @findex message-insert-newsgroups
523 Insert a @code{Newsgroups} header that reflects the @code{Followup-To}
524 or @code{Newsgroups} header of the article you're replying to
525 (@code{message-insert-newsgroups}).
526
527 @item C-c M-r
528 @kindex C-c M-r
529 @findex message-rename-buffer
530 Rename the buffer (@code{message-rename-buffer}).  If given a prefix,
531 prompt for a new buffer name.
532
533 @end table
534
535
536 @node Sending
537 @section Sending
538
539 @table @kbd
540 @item C-c C-c
541 @kindex C-c C-c 
542 @findex message-send-and-exit
543 Send the message and bury the current buffer
544 (@code{message-send-and-exit}). 
545
546 @item C-c C-s
547 @kindex C-c C-s 
548 @findex message-send
549 Send the message (@code{message-send}). 
550
551 @item C-c C-d
552 @kindex C-c C-d
553 @findex message-dont-send
554 Bury the message buffer and exit (@code{message-dont-send}).
555
556 @item C-c C-k
557 @kindex C-c C-k
558 @findex message-kill-buffer
559 Kill the message buffer and exit (@code{message-kill-buffer}).
560
561 @end table
562
563
564
565 @node Mail Aliases
566 @section Mail Aliases
567 @cindex mail aliases
568 @cindex aliases
569
570 Message uses @code{mailabbrev} to handle mail aliases.  
571 @code{mailabbrev} works by parsing the @file{/etc/mailrc} and
572 @file{~/.mailrc} files.  These files look like:
573
574 @example
575 alias lmi "Lars Magne Ingebrigtsen <larsi@@ifi.uio.no>"
576 alias ding "ding@@ifi.uio.no (ding mailing list)"
577 @end example
578
579 After adding lines like this to your @file{~/.mailrc} file, you should
580 be able to just write @samp{lmi} in the @code{To} or @code{Cc} (and so
581 on) headers and press @kbd{SPC} to expand the alias.
582
583 No expansion will be performed upon sending of the message---all
584 expansions have to be done explicitly.
585
586
587
588 @node Variables
589 @chapter Variables
590
591 @menu
592 * Message Headers::             General message header stuff.
593 * Mail Headers::                Customizing mail headers.
594 * Mail Variables::              Other mail variables.
595 * News Headers::                Customizing news headers.
596 * News Variables::              Other news variables.
597 * Various Message Variables::   Other message variables.
598 * Sending Variables::           Variables for sending.
599 * Message Buffers::             How Message names its buffers.
600 * Message Actions::             Actions to be performed when exiting.
601 @end menu
602
603
604 @node Message Headers
605 @section Message Headers
606
607 Message is quite aggressive on the message generation front.  It has
608 to be -- it's a combined news and mail agent.  To be able to send
609 combined messages, it has to generate all headers itself to ensure that
610 mail and news copies of messages look sufficiently similar.
611
612 @table @code
613
614 @item message-generate-headers-first
615 @vindex message-generate-headers-first
616 If non-@code{nil}, generate all headers before starting to compose the
617 message.  
618
619 @item message-from-style
620 @vindex message-from-style
621 Specifies how @code{From} headers should look.  There are four legal
622 values:
623
624 @table @code
625 @item nil
626 Just the address -- @samp{king@@grassland.com}.
627
628 @item parens
629 @samp{king@@grassland.com (Elvis Parsley)}.
630
631 @item angles
632 @samp{Elvis Parsley <king@@grassland.com>}.
633
634 @item default
635 Look like @code{angles} if that doesn't require quoting, and
636 @code{parens} if it does.  If even @code{parens} requires quoting, use
637 @code{angles} anyway.
638
639 @end table
640
641 @item message-deletable-headers
642 @vindex message-deletable-headers
643 Headers in this list that were previously generated by Message will be
644 deleted before posting.  Let's say you post an article.  Then you decide
645 to post it again to some other group, you naughty boy, so you jump back
646 to the @code{*post-buf*} buffer, edit the @code{Newsgroups} line, and
647 ship it off again.  By default, this variable makes sure that the old
648 generated @code{Message-ID} is deleted, and a new one generated.  If
649 this isn't done, the entire empire would probably crumble, anarchy would
650 prevail, and cats would start walking on two legs and rule the world.
651 Allegedly.  
652
653 @item message-default-headers
654 @vindex message-default-headers
655 This string is inserted at the end of the headers in all message
656 buffers.
657
658 @end table
659
660
661 @node Mail Headers
662 @section Mail Headers
663
664 @table @code
665 @item message-required-mail-headers
666 @vindex message-required-mail-headers
667 @xref{News Headers}, for the syntax of this variable.  It is
668 @code{(From Date Subject (optional . In-Reply-To) Message-ID Lines
669 (optional . X-Mailer))} by default.
670
671 @item message-ignored-mail-headers
672 @vindex message-ignored-mail-headers
673 Regexp of headers to be removed before mailing.  The default is
674 @samp{^Gcc:\\|^Fcc:}. 
675
676 @item message-default-mail-headers
677 @vindex message-default-mail-headers
678 This string is inserted at the end of the headers in all message
679 buffers that are initialized as mail.
680
681 @end table
682
683
684 @node Mail Variables
685 @section Mail Variables 
686
687 @table @code
688 @item message-send-mail-function
689 @vindex message-send-mail-function
690 Function used to send the current buffer as mail.  The default is
691 @code{message-send-mail-with-sendmail}.   If you prefer using MH
692 instead, set this variable to @code{message-send-mail-with-mh}.
693
694 @item message-mh-deletable-headers
695 @vindex message-mh-deletable-headers
696 Most versions of MH doesn't like being fed messages that contain the
697 headers in this variable.  If this variable is non-@code{nil} (which is
698 the default), these headers will be removed before mailing.  Set it to
699 @code{nil} if your MH can handle these headers.
700
701 @end table
702
703
704 @node News Headers
705 @section News Headers
706
707 @vindex message-required-news-headers
708 @code{message-required-news-headers} a list of header symbols.  These
709 headers will either be automatically generated, or, if that's
710 impossible, they will be prompted for.  The following symbols are legal:
711
712 @table @code
713
714 @item From
715 @cindex From
716 @findex user-full-name
717 @findex user-mail-address
718 This required header will be filled out with the result of the
719 @code{message-make-from} function, which depends on the
720 @code{message-from-style}, @code{user-full-name},
721 @code{user-mail-address} variables.
722
723 @item Subject
724 @cindex Subject
725 This required header will be prompted for if not present already. 
726
727 @item Newsgroups
728 @cindex Newsgroups
729 This required header says which newsgroups the article is to be posted
730 to.  If it isn't present already, it will be prompted for.
731
732 @item Organization
733 @cindex organization
734 This optional header will be filled out depending on the
735 @code{message-user-organization} variable.
736 @code{message-user-organization-file} will be used if this variable is
737 @code{t}.  This variable can also be a string (in which case this string
738 will be used), or it can be a function (which will be called with no
739 parameters and should return a string to be used).
740
741 @item Lines
742 @cindex Lines
743 This optional header will be computed by Message.
744
745 @item Message-ID
746 @cindex Message-ID
747 @vindex mail-host-address
748 @findex system-name
749 @cindex Sun
750 This required header will be generated by Message.  A unique ID will be
751 created based on the date, time, user name and system name.  Message will
752 use @code{mail-host-address} as the fully qualified domain name (FQDN)
753 of the machine if that variable is defined.  If not, it will use
754 @code{system-name}, which doesn't report a FQDN on some machines --
755 notably Suns.
756
757 @item X-Newsreader
758 @cindex X-Newsreader
759 This optional header will be filled out according to the
760 @code{message-newsreader} local variable.
761
762 @item X-Mailer
763 This optional header will be filled out according to the
764 @code{message-mailer} local variable, unless there already is an
765 @code{X-Newsreader} header present.
766
767 @item In-Reply-To
768 This optional header is filled out using the @code{Date} and @code{From}
769 header of the article being replied to.
770
771 @item Expires
772 @cindex Expires
773 This extremely optional header will be inserted according to the
774 @code{message-expires} variable.  It is highly deprecated and shouldn't
775 be used unless you know what you're doing.
776
777 @item Distribution
778 @cindex Distribution
779 This optional header is filled out according to the
780 @code{message-distribution-function} variable.  It is a deprecated and
781 much misunderstood header.
782
783 @item Path
784 @cindex path
785 This extremely optional header should probably never be used.
786 However, some @emph{very} old servers require that this header is
787 present.  @code{message-user-path} further controls how this
788 @code{Path} header is to look.  If it is @code{nil}, use the server name
789 as the leaf node.  If it is a string, use the string.  If it is neither
790 a string nor @code{nil}, use the user name only.  However, it is highly
791 unlikely that you should need to fiddle with this variable at all.
792 @end table
793
794 @findex yow
795 @cindex Mime-Version
796 In addition, you can enter conses into this list.  The car of this cons
797 should be a symbol.  This symbol's name is the name of the header, and
798 the cdr can either be a string to be entered verbatim as the value of
799 this header, or it can be a function to be called.  This function should
800 return a string to be inserted.  For instance, if you want to insert
801 @code{Mime-Version: 1.0}, you should enter @code{(Mime-Version . "1.0")}
802 into the list.  If you want to insert a funny quote, you could enter
803 something like @code{(X-Yow . yow)} into the list.  The function
804 @code{yow} will then be called without any arguments.
805
806 If the list contains a cons where the car of the cons is
807 @code{optional}, the cdr of this cons will only be inserted if it is
808 non-@code{nil}.
809
810 Other variables for customizing outgoing news articles:
811
812 @table @code
813
814 @item message-syntax-checks
815 @vindex message-syntax-checks
816 If non-@code{nil}, Message will attempt to check the legality of the
817 headers, as well as some other stuff, before posting.  You can control
818 the granularity of the check by adding or removing elements from this
819 list.  Legal elements are:
820
821 @table @code
822 @item subject-cmsg 
823 Check the subject for commands.
824 @item sender
825 @cindex Sender
826 Insert a new @code{Sender} header if the @code{From} header looks odd. 
827 @item multiple-headers 
828 Check for the existence of multiple equal headers.
829 @item sendsys 
830 @cindex sendsys
831 Check for the existence of version and sendsys commands.
832 @item message-id
833 Check whether the @code{Message-ID} looks ok.
834 @item from
835 Check whether the @code{From} header seems nice.
836 @item long-lines 
837 @cindex long lines
838 Check for too long lines.
839 @item control-chars
840 Check for illegal characters.
841 @item size
842 Check for excessive size.
843 @item new-text
844 Check whether there is any new text in the messages.
845 @item signature
846 Check the length of the signature.
847 @item approved
848 @cindex approved
849 Check whether the article has an @code{Approved} header, which is
850 something only moderators should include.
851 @item empty
852 Check whether the article is empty.
853 @item empty-headers
854 Check whether any of the headers are empty.
855 @item existing-newsgroups
856 Check whether the newsgroups mentioned in the @code{Newsgroups} and 
857 @code{Followup-To} headers exist.
858 @item valid-newsgroups
859 Check whether the @code{Newsgroups} and @code{Followup-to} headers
860 are valid syntactically.
861 @item shorten-followup-to
862 Check whether to add a @code{Followup-to} header to shorten the number
863 of groups to post to.
864 @end table
865
866 All these conditions are checked by default.
867
868 @item message-ignored-news-headers
869 @vindex message-ignored-news-headers
870 Regexp of headers to be removed before posting.  The default is@*
871 @samp{^NNTP-Posting-Host:\\|^Xref:\\|^Bcc:\\|^Gcc:\\|^Fcc:}.
872
873 @item message-default-news-headers
874 @vindex message-default-news-headers
875 This string is inserted at the end of the headers in all message
876 buffers that are initialized as news.
877
878 @end table
879
880
881 @node News Variables
882 @section News Variables
883
884 @table @code
885 @item message-send-news-function
886 @vindex message-send-news-function
887 Function used to send the current buffer as news.  The default is
888 @code{message-send-news}. 
889
890 @item message-post-method
891 @vindex message-post-method
892 Method used for posting a prepared news message.
893
894 @end table
895
896
897 @node Various Message Variables
898 @section Various Message Variables
899
900 @table @code
901 @item message-signature-separator
902 @vindex message-signature-separator
903 Regexp matching the signature separator.  It is @samp{^-- *$} by
904 default. 
905
906 @item mail-header-separator
907 @vindex mail-header-separator
908 String used to separate the headers from the body.  It is @samp{--text
909 follows this line--} by default.
910
911 @item message-directory
912 @vindex message-directory
913 Directory used by many mailey things.  The default is @file{~/Mail/}. 
914
915 @item message-autosave-directory
916 @vindex message-autosave-directory
917 Directory where message buffers will be autosaved to.
918
919 @item message-signature-setup-hook
920 @vindex message-signature-setup-hook
921 Hook run when initializing the message buffer.  It is run after the
922 headers have been inserted but before the signature has been inserted. 
923
924 @item message-setup-hook
925 @vindex message-setup-hook
926 Hook run as the last thing when the message buffer has been initialized.
927
928 @item message-header-setup-hook
929 @vindex message-header-setup-hook
930 Hook called narrowed to the headers after initializing the headers. 
931
932 For instance, if you're running Gnus and wish to insert a
933 @samp{Mail-Copies-To} header in all your news articles and all messages
934 you send to mailing lists, you could do something like the following:
935
936 @lisp
937 (defun my-message-header-setup-hook ()
938   (let ((group (or gnus-newsgroup-name "")))
939     (when (or (message-fetch-field "newsgroups")
940               (gnus-group-find-parameter group 'to-address)
941               (gnus-group-find-parameter group 'to-list))
942       (insert "Mail-Copies-To: never\n"))))
943
944 (add-hook 'message-header-setup-hook 'my-message-header-setup-hook)
945 @end lisp
946
947 @item message-send-hook
948 @vindex message-send-hook
949 Hook run before sending messages.
950
951 If you want to add certain headers before sending, you can use the
952 @code{message-add-header} function in this hook.  For instance:
953 @findex message-add-header
954
955 @lisp
956 (add-hook 'message-send-hook 'my-message-add-content)
957 (defun my-message-add-content ()
958   (message-add-header
959    "Mime-Version: 1.0"
960    "Content-Type: text/plain"
961    "Content-Transfer-Encoding: 7bit"))
962 @end lisp
963
964 This function won't add the header if the header is already present.
965
966 @item message-send-mail-hook
967 @vindex message-send-mail-hook
968 Hook run before sending mail messages.
969
970 @item message-send-news-hook
971 @vindex message-send-news-hook
972 Hook run before sending news messages.
973
974 @item message-sent-hook
975 @vindex message-sent-hook
976 Hook run after sending messages.
977
978 @item message-mode-syntax-table
979 @vindex message-mode-syntax-table
980 Syntax table used in message mode buffers.
981
982 @end table
983
984
985
986 @node Sending Variables
987 @section Sending Variables
988
989 @table @code
990
991 @item message-fcc-handler-function 
992 @vindex message-fcc-handler-function 
993 A function called to save outgoing articles.  This function will be
994 called with the name of the file to store the article in. The default
995 function is @code{rmail-output} which saves in Unix mailbox format.
996
997 @item message-courtesy-message
998 @vindex message-courtesy-message
999 When sending combined messages, this string is inserted at the start of
1000 the mailed copy.  If the string contains the format spec @samp{%s}, the
1001 newsgroups the article has been posted to will be inserted there.  If
1002 this variable is @code{nil}, no such courtesy message will be added.
1003 The default value is @samp{"The following message is a courtesy copy of
1004 an article\nthat has been posted to %s as well.\n\n"}. 
1005
1006 @end table
1007
1008
1009 @node Message Buffers
1010 @section Message Buffers
1011
1012 Message will generate new buffers with unique buffer names when you
1013 request a message buffer.  When you send the message, the buffer isn't
1014 normally killed off.  Its name is changed and a certain number of old
1015 message buffers are kept alive.
1016
1017 @table @code
1018 @item message-generate-new-buffers
1019 @vindex message-generate-new-buffers
1020 If non-@code{nil}, generate new buffers.  The default is @code{t}.  If
1021 this is a function, call that function with three parameters: The type,
1022 the to address and the group name.  (Any of these may be @code{nil}.)
1023 The function should return the new buffer name.
1024
1025 @item message-max-buffers
1026 @vindex message-max-buffers
1027 This variable says how many old message buffers to keep.  If there are
1028 more message buffers than this, the oldest buffer will be killed.  The
1029 default is 10.  If this variable is @code{nil}, no old message buffers
1030 will ever be killed.
1031
1032 @item message-send-rename-function
1033 @vindex message-send-rename-function
1034 After sending a message, the buffer is renamed from, for instance,
1035 @samp{*reply to Lars*} to @samp{*sent reply to Lars*}.  If you don't
1036 like this, set this variable to a function that renames the buffer in a
1037 manner you like.  If you don't want to rename the buffer at all, you can
1038 say:
1039
1040 @lisp
1041 (setq message-send-rename-function 'ignore)
1042 @end lisp
1043
1044 @item message-kill-buffer-on-exit
1045 @findex message-kill-buffer-on-exit
1046 If non-@code{nil}, kill the buffer immediately on exit.
1047
1048 @end table
1049
1050
1051 @node Message Actions
1052 @section Message Actions
1053
1054 When Message is being used from a news/mail reader, the reader is likely
1055 to want to perform some task after the message has been sent.  Perhaps
1056 return to the previous window configuration or mark an article as
1057 replied.  
1058
1059 @vindex message-kill-actions
1060 @vindex message-postpone-actions
1061 @vindex message-exit-actions
1062 @vindex message-send-actions
1063 The user may exit from the message buffer in various ways.  The most
1064 common is @kbd{C-c C-c}, which sends the message and exits.  Other
1065 possibilities are @kbd{C-c C-s} which just sends the message, @kbd{C-c
1066 C-d} which postpones the message editing and buries the message buffer,
1067 and @kbd{C-c C-k} which kills the message buffer.  Each of these actions
1068 have lists associated with them that contains actions to be executed:
1069 @code{message-send-actions}, @code{message-exit-actions},
1070 @code{message-postpone-actions}, and @code{message-kill-actions}.  
1071
1072 Message provides a function to interface with these lists:
1073 @code{message-add-action}.  The first parameter is the action to be
1074 added, and the rest of the arguments are which lists to add this action
1075 to.  Here's an example from Gnus:
1076
1077 @lisp
1078   (message-add-action
1079    `(set-window-configuration ,(current-window-configuration))
1080    'exit 'postpone 'kill)
1081 @end lisp
1082
1083 This restores the Gnus window configuration when the message buffer is
1084 killed, postponed or exited.
1085
1086 An @dfn{action} can be either: a normal function, or a list where the
1087 @code{car} is a function and the @code{cdr} is the list of arguments, or
1088 a form to be @code{eval}ed.
1089
1090
1091 @node Compatibility
1092 @chapter Compatibility
1093 @cindex compatibility
1094
1095 Message uses virtually only its own variables---older @code{mail-}
1096 variables aren't consulted.  To force Message to take those variables
1097 into account, you can put the following in your @code{.emacs} file:
1098
1099 @lisp
1100 (require 'messcompat)
1101 @end lisp
1102
1103 This will initialize many Message variables from the values in the
1104 corresponding mail variables.
1105
1106
1107
1108 @node Index
1109 @chapter Index
1110 @printindex cp
1111
1112 @node Key Index
1113 @chapter Key Index
1114 @printindex ky
1115
1116 @summarycontents
1117 @contents
1118 @bye
1119
1120 @c End: