[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/man/message.texi
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/man/message.texi |
Date: |
Sat, 04 Sep 2004 09:24:28 -0400 |
Index: emacs/man/message.texi
diff -c emacs/man/message.texi:1.18 emacs/man/message.texi:1.19
*** emacs/man/message.texi:1.18 Mon Sep 1 15:45:46 2003
--- emacs/man/message.texi Sat Sep 4 13:13:44 2004
***************
*** 1,15 ****
\input texinfo @c -*-texinfo-*-
@setfilename ../info/message
! @settitle Message 5.9.0 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@copying
This file documents Message, the Emacs message composition mode.
! Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
! Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
--- 1,15 ----
\input texinfo @c -*-texinfo-*-
@setfilename ../info/message
! @settitle Message Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@copying
This file documents Message, the Emacs message composition mode.
! Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
! Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
***************
*** 40,51 ****
@end iftex
@setchapternewpage odd
-
@titlepage
! @title Message 5.9.0 Manual
@author by Lars Magne Ingebrigtsen
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage
--- 40,51 ----
@end iftex
@setchapternewpage odd
@titlepage
! @title Message Manual
@author by Lars Magne Ingebrigtsen
@page
+
@vskip 0pt plus 1filll
@insertcopying
@end titlepage
***************
*** 67,74 ****
* Key Index:: List of Message mode keys.
@end menu
! This manual corresponds to Message 5.9.0. Message is distributed with
! the Gnus distribution bearing the same version number as this manual.
@node Interface
--- 67,75 ----
* Key Index:: List of Message mode keys.
@end menu
! This manual corresponds to Message v5.10.6. Message is distributed
! with the Gnus distribution bearing the same version number as this
! manual.
@node Interface
***************
*** 92,97 ****
--- 93,99 ----
* Forwarding:: Forwarding a message via news or mail.
* Resending:: Resending a mail message.
* Bouncing:: Bouncing a mail message.
+ * Mailing Lists:: Send mail to mailing lists.
@end menu
***************
*** 150,158 ****
header will be used.
This function can also return a list. In that case, each list element
! should be a cons, where the car should be the name of an header
! (eg. @code{Cc}) and the cdr should be the header value
! (eg. @samp{larsi@@ifi.uio.no}). All these headers will be inserted into
the head of the outgoing mail.
--- 152,160 ----
header will be used.
This function can also return a list. In that case, each list element
! should be a cons, where the @sc{car} should be the name of a header
! (e.g. @code{Cc}) and the @sc{cdr} should be the header value
! (e.g. @samp{larsi@@ifi.uio.no}). All these headers will be inserted into
the head of the outgoing mail.
***************
*** 171,180 ****
@code{message-wide-reply-to-function}. It is used in the same way as
@code{message-reply-to-function} (@pxref{Reply}).
! @findex message-dont-reply-to-names
Addresses that match the @code{message-dont-reply-to-names} regular
expression will be removed from the @code{Cc} header.
@node Followup
@section Followup
--- 173,186 ----
@code{message-wide-reply-to-function}. It is used in the same way as
@code{message-reply-to-function} (@pxref{Reply}).
! @vindex message-dont-reply-to-names
Addresses that match the @code{message-dont-reply-to-names} regular
expression will be removed from the @code{Cc} header.
+ @vindex message-wide-reply-confirm-recipients
+ If @code{message-wide-reply-confirm-recipients} is address@hidden you
+ will be asked to confirm that you want to reply to multiple
+ recipients. The default is @code{nil}.
@node Followup
@section Followup
***************
*** 204,209 ****
--- 210,237 ----
The @code{message-cancel-news} command cancels the article in the
current buffer.
+ @vindex message-cancel-message
+ The value of @code{message-cancel-message} is inserted in the body of
+ the cancel message. The default is @samp{I am canceling my own
+ article.}.
+
+ @cindex Cancel Locks
+ @vindex message-insert-canlock
+ @cindex canlock
+ When Message posts news messages, it inserts @code{Cancel-Lock}
+ headers by default. This is a cryptographic header that ensures that
+ only you can cancel your own messages, which is nice. The downside
+ is that if you lose your @file{.emacs} file (which is where Gnus
+ stores the secret cancel lock password (which is generated
+ automatically the first time you use this feature)), you won't be
+ able to cancel your message.
+
+ Whether to insert the header or not is controlled by the
+ @code{message-insert-canlock} variable.
+
+ Not many news servers respect the @code{Cancel-Lock} header yet, but
+ this is expected to change in the future.
+
@node Superseding
@section Superseding
***************
*** 261,269 ****
@item message-forward-as-mime
@vindex message-forward-as-mime
If this variable is @code{t} (the default), forwarded messages are
! included as inline MIME RFC822 parts. If it's @code{nil}, forwarded
messages will just be copied inline to the new message, like previous,
! non MIME-savvy versions of gnus would do.
@end table
--- 289,302 ----
@item message-forward-as-mime
@vindex message-forward-as-mime
If this variable is @code{t} (the default), forwarded messages are
! included as inline @acronym{MIME} RFC822 parts. If it's @code{nil}, forwarded
messages will just be copied inline to the new message, like previous,
! non @acronym{MIME}-savvy versions of Gnus would do.
!
! @item message-forward-before-signature
! @vindex message-forward-before-signature
! If address@hidden, put forwarded message before signature, else after.
!
@end table
***************
*** 296,310 ****
@samp{^\\(Received\\|Return-Path\\):}.
@node Commands
@chapter Commands
@menu
* Buffer Entry:: Commands after entering a Message buffer.
! * Header Commands:: Commands for moving to headers.
* Movement:: Moving around in message buffers.
* Insertion:: Inserting things into message buffers.
! * MIME:: @sc{mime} considerations.
* Various Commands:: Various things.
* Sending:: Actually sending the message.
* Mail Aliases:: How to use mail aliases.
--- 329,491 ----
@samp{^\\(Received\\|Return-Path\\):}.
+ @node Mailing Lists
+ @section Mailing Lists
+
+ @cindex Mail-Followup-To
+ Sometimes while posting to mailing lists, the poster needs to direct
+ followups to the post to specific places. The Mail-Followup-To (MFT)
+ was created to enable just this. Two example scenarios where this is
+ useful:
+
+ @itemize @bullet
+ @item
+ A mailing list poster can use MFT to express that responses should be
+ sent to just the list, and not the poster as well. This will happen
+ if the poster is already subscribed to the list.
+
+ @item
+ A mailing list poster can use MFT to express that responses should be
+ sent to the list and the poster as well. This will happen if the poster
+ is not subscribed to the list.
+
+ @item
+ If a message is posted to several mailing lists, MFT may also be used
+ to direct the following discussion to one list only, because
+ discussions that are spread over several lists tend to be fragmented
+ and very difficult to follow.
+
+ @end itemize
+
+ Gnus honors the MFT header in other's messages (i.e. while following
+ up to someone else's post) and also provides support for generating
+ sensible MFT headers for outgoing messages as well.
+
+ @c @menu
+ @c * Honoring an MFT post:: What to do when one already exists
+ @c * Composing with a MFT header:: Creating one from scratch.
+ @c @end menu
+
+ @c @node Composing with a MFT header
+ @subsection Composing a correct MFT header automagically
+
+ The first step in getting Gnus to automagically generate a MFT header
+ in posts you make is to give Gnus a list of the mailing lists
+ addresses you are subscribed to. You can do this in more than one
+ way. The following variables would come in handy.
+
+ @table @code
+
+ @vindex message-subscribed-addresses
+ @item message-subscribed-addresses
+ This should be a list of addresses the user is subscribed to. Its
+ default value is @code{nil}. Example:
+ @lisp
+ (setq message-subscribed-addresses
+ '("ding@@gnus.org" "bing@@noose.org"))
+ @end lisp
+
+ @vindex message-subscribed-regexps
+ @item message-subscribed-regexps
+ This should be a list of regexps denoting the addresses of mailing
+ lists subscribed to. Default value is @code{nil}. Example: If you
+ want to achieve the same result as above:
+ @lisp
+ (setq message-subscribed-regexps
+ '("\\(ding@@gnus\\)\\|\\(bing@@noose\\)\\.org")
+ @end lisp
+
+ @vindex message-subscribed-address-functions
+ @item message-subscribed-address-functions
+ This can be a list of functions to be called (one at a time!!) to
+ determine the value of MFT headers. It is advisable that these
+ functions not take any arguments. Default value is @code{nil}.
+
+ There is a pre-defined function in Gnus that is a good candidate for
+ this variable. @code{gnus-find-subscribed-addresses} is a function
+ that returns a list of addresses corresponding to the groups that have
+ the @code{subscribed} (@pxref{Group Parameters, ,Group Parameters,
+ gnus, The Gnus Manual}) group parameter set to a address@hidden value.
+ This is how you would do it.
+
+ @lisp
+ (setq message-subscribed-address-functions
+ '(gnus-find-subscribed-addresses))
+ @end lisp
+
+ @vindex message-subscribed-address-file
+ @item message-subscribed-address-file
+ You might be one organised human freak and have a list of addresses of
+ all subscribed mailing lists in a separate file! Then you can just
+ set this variable to the name of the file and life would be good.
+
+ @end table
+
+ You can use one or more of the above variables. All their values are
+ ``added'' in some way that works :-)
+
+ Now you are all set. Just start composing a message as you normally do.
+ And just send it; as always. Just before the message is sent out, Gnus'
+ MFT generation thingy kicks in and checks if the message already has a
+ MFT field. If there is one, it is left alone. (Except if it's empty -
+ in that case, the field is removed and is not replaced with an
+ automatically generated one. This lets you disable MFT generation on a
+ per-message basis.) If there is none, then the list of recipient
+ addresses (in the To: and Cc: headers) is checked to see if one of them
+ is a list address you are subscribed to. If none of them is a list
+ address, then no MFT is generated; otherwise, a MFT is added to the
+ other headers and set to the value of all addresses in To: and Cc:
+
+ @kindex C-c C-f C-a
+ @findex message-generate-unsubscribed-mail-followup-to
+ @kindex C-c C-f C-m
+ @findex message-goto-mail-followup-to
+ Hm. ``So'', you ask, ``what if I send an email to a list I am not
+ subscribed to? I want my MFT to say that I want an extra copy.'' (This
+ is supposed to be interpreted by others the same way as if there were no
+ MFT, but you can use an explicit MFT to override someone else's
+ to-address group parameter.) The function
+ @code{message-generate-unsubscribed-mail-followup-to} might come in
+ handy. It is bound to @kbd{C-c C-f C-a} by default. In any case, you
+ can insert a MFT of your own choice; @kbd{C-c C-f C-m}
+ (@code{message-goto-mail-followup-to}) will help you get started.
+
+ @c @node Honoring an MFT post
+ @subsection Honoring an MFT post
+
+ @vindex message-use-mail-followup-to
+ When you followup to a post on a mailing list, and the post has a MFT
+ header, Gnus' action will depend on the value of the variable
+ @code{message-use-mail-followup-to}. This variable can be one of:
+
+ @table @code
+ @item use
+ Always honor MFTs. The To: and Cc: headers in your followup will be
+ derived from the MFT header of the original post. This is the default.
+
+ @item nil
+ Always dishonor MFTs (just ignore the darned thing)
+
+ @item ask
+ Gnus will prompt you for an action.
+
+ @end table
+
+ It is considered good netiquette to honor MFT, as it is assumed the
+ fellow who posted a message knows where the followups need to go
+ better than you do.
+
@node Commands
@chapter Commands
@menu
* Buffer Entry:: Commands after entering a Message buffer.
! * Header Commands:: Commands for moving headers or changing headers.
* Movement:: Moving around in message buffers.
* Insertion:: Inserting things into message buffers.
! * MIME:: @acronym{MIME} considerations.
! * IDNA:: address@hidden domain name considerations.
! * Security:: Signing and encrypting messages.
* Various Commands:: Various things.
* Sending:: Actually sending the message.
* Mail Aliases:: How to use mail aliases.
***************
*** 330,343 ****
@node Header Commands
@section Header Commands
! All these commands move to the header in question. If it doesn't exist,
! it will be inserted.
@table @kbd
@item C-c ?
@kindex C-c ?
! @findex message-goto-to
Describe the message mode.
@item C-c C-f C-t
--- 511,526 ----
@node Header Commands
@section Header Commands
! @subsection Commands for moving to headers
!
! These following commands move to the header in question. If it doesn't
! exist, it will be inserted.
@table @kbd
@item C-c ?
@kindex C-c ?
! @findex describe-mode
Describe the message mode.
@item C-c C-f C-t
***************
*** 345,357 ****
@findex message-goto-to
Go to the @code{To} header (@code{message-goto-to}).
@item C-c C-f C-b
@kindex C-c C-f C-b
@findex message-goto-bcc
Go to the @code{Bcc} header (@code{message-goto-bcc}).
! @item C-c C-f C-w
! @kindex C-c C-f C-w
@findex message-goto-fcc
Go to the @code{Fcc} header (@code{message-goto-fcc}).
--- 528,546 ----
@findex message-goto-to
Go to the @code{To} header (@code{message-goto-to}).
+ @item C-c C-f C-o
+ @kindex C-c C-f C-o
+ @findex message-goto-from
+ Go to the @code{From} header (@code{message-goto-from}). (The ``o''
+ in the key binding is for Originator.)
+
@item C-c C-f C-b
@kindex C-c C-f C-b
@findex message-goto-bcc
Go to the @code{Bcc} header (@code{message-goto-bcc}).
! @item C-c C-f C-f
! @kindex C-c C-f C-f
@findex message-goto-fcc
Go to the @code{Fcc} header (@code{message-goto-fcc}).
***************
*** 380,387 ****
@findex message-goto-distribution
Go to the @code{Distribution} header (@code{message-goto-distribution}).
! @item C-c C-f C-f
! @kindex C-c C-f C-f
@findex message-goto-followup-to
Go to the @code{Followup-To} header (@code{message-goto-followup-to}).
--- 569,576 ----
@findex message-goto-distribution
Go to the @code{Distribution} header (@code{message-goto-distribution}).
! @item C-c C-f C-o
! @kindex C-c C-f C-o
@findex message-goto-followup-to
Go to the @code{Followup-To} header (@code{message-goto-followup-to}).
***************
*** 395,400 ****
--- 584,716 ----
@findex message-goto-summary
Go to the @code{Summary} header (@code{message-goto-summary}).
+ @item C-c C-f C-i
+ @kindex C-c C-f C-i
+ @findex message-insert-or-toggle-importance
+ This inserts the @samp{Importance:} header with a value of
+ @samp{high}. This header is used to signal the importance of the
+ message to the receiver. If the header is already present in the
+ buffer, it cycles between the three valid values according to RFC
+ 1376: @samp{low}, @samp{normal} and @samp{high}.
+
+ @item C-c C-f C-a
+ @kindex C-c C-f C-a
+ @findex message-generate-unsubscribed-mail-followup-to
+ Insert a reasonable @samp{Mail-Followup-To:} header
+ (@pxref{Mailing Lists}) in a post to an
+ unsubscribed list. When making original posts to a mailing list you are
+ not subscribed to, you have to type in a @samp{Mail-Followup-To:} header
+ by hand. The contents, usually, are the addresses of the list and your
+ own address. This function inserts such a header automatically. It
+ fetches the contents of the @samp{To:} header in the current mail
+ buffer, and appends the current @code{user-mail-address}.
+
+ If the optional argument @code{include-cc} is address@hidden, the
+ addresses in the @samp{Cc:} header are also put into the
+ @samp{Mail-Followup-To:} header.
+
+ @end table
+
+ @subsection Commands to change headers
+
+ @table @kbd
+
+ @item C-c C-o
+ @kindex C-c C-o
+ @findex message-sort-headers
+ @vindex message-header-format-alist
+ Sort headers according to @code{message-header-format-alist}
+ (@code{message-sort-headers}).
+
+ @item C-c C-t
+ @kindex C-c C-t
+ @findex message-insert-to
+ Insert a @code{To} header that contains the @code{Reply-To} or
+ @code{From} header of the message you're following up
+ (@code{message-insert-to}).
+
+ @item C-c C-n
+ @kindex C-c C-n
+ @findex message-insert-newsgroups
+ Insert a @code{Newsgroups} header that reflects the @code{Followup-To}
+ or @code{Newsgroups} header of the article you're replying to
+ (@code{message-insert-newsgroups}).
+
+ @item C-c C-l
+ @kindex C-c C-l
+ @findex message-to-list-only
+ Send a message to the list only. Remove all addresses but the list
+ address from @code{To:} and @code{Cc:} headers.
+
+ @item C-c M-n
+ @kindex C-c M-n
+ @findex message-insert-disposition-notification-to
+ Insert a request for a disposition
+ notification. (@code{message-insert-disposition-notification-to}).
+ This means that if the recipient support RFC 2298 she might send you a
+ notification that she received the message.
+
+ @item M-x message-insert-importance-high
+ @kindex M-x message-insert-importance-high
+ @findex message-insert-importance-high
+ @cindex Importance
+ Insert an @samp{Importance} header with a value of @samp{high},
+ deleting headers if necessary.
+
+ @item M-x message-insert-importance-low
+ @kindex M-x message-insert-importance-low
+ @findex message-insert-importance-low
+ @cindex Importance
+ Insert an @samp{Importance} header with a value of @samp{low}, deleting
+ headers if necessary.
+
+ @item C-c C-f s
+ @kindex C-c C-f s
+ @findex message-change-subject
+ @cindex Subject
+ Change the current @samp{Subject} header. Ask for new @samp{Subject}
+ header and append @samp{(was: <Old Subject>)}. The old subject can be
+ stripped on replying, see @code{message-subject-trailing-was-query}
+ (@pxref{Message Headers}).
+
+ @item C-c C-f x
+ @kindex C-c C-f x
+ @findex message-cross-post-followup-to
+ @vindex message-cross-post-default
+ @cindex X-Post
+ @cindex cross-post
+ Ask for an additional @samp{Newsgroups} and @samp{FollowUp-To} for a
+ cross-post. @code{message-cross-post-followup-to} mangles
+ @samp{FollowUp-To} and @samp{Newsgroups} header to point to group.
+ If @code{message-cross-post-default} is @code{nil} or if called with a
+ prefix-argument @samp{Follow-Up} is set, but the message is not
+ cross-posted.
+
+ @item C-c C-f t
+ @kindex C-c C-f t
+ @findex message-reduce-to-to-cc
+ Replace contents of @samp{To} header with contents of @samp{Cc} or
+ @samp{Bcc} header.
+
+ @item C-c C-f w
+ @kindex C-c C-f w
+ @findex message-insert-wide-reply
+ Insert @samp{To} and @samp{Cc} headers as if you were doing a wide
+ reply.
+
+ @item C-c C-f a
+ @kindex C-c C-f a
+ @findex message-add-archive-header
+ @vindex message-archive-header
+ @vindex message-archive-note
+ @cindex X-No-Archive
+ Insert @samp{X-No-Archive: Yes} in the header and a note in the body.
+ The header and the note can be customized using
+ @code{message-archive-header} and @code{message-archive-note}. When
+ called with a prefix argument, ask for a text to insert. If you don't
+ want the note in the body, set @code{message-archive-note} to
+ @code{nil}.
+
@end table
***************
*** 413,418 ****
--- 729,743 ----
@findex message-goto-signature
Move to the signature of the message (@code{message-goto-signature}).
+ @item C-a
+ @kindex C-a
+ @findex message-beginning-of-line
+ @vindex message-beginning-of-line
+ If at beginning of header value, go to beginning of line, else go to
+ beginning of header value. (The header value comes after the header
+ name and the colon.) This behaviour can be disabled by toggling
+ the variable @code{message-beginning-of-line}.
+
@end table
***************
*** 453,539 ****
@findex message-insert-headers
Insert the message headers (@code{message-insert-headers}).
! @end table
!
! @table @code
! @item message-ignored-cited-headers
! @vindex message-ignored-cited-headers
! All headers that match this regexp will be removed from yanked
! messages. The default is @samp{.}, which means that all headers will be
! removed.
!
! @item message-citation-line-function
! @vindex message-citation-line-function
! Function called to insert the citation line. The default is
! @code{message-insert-citation-line}, which will lead to citation lines
! that look like:
!
! @example
! Hallvard B Furuseth <h.b.furuseth@@usit.uio.no> writes:
! @end example
!
! Point will be at the beginning of the body of the message when this
! function is called.
!
! @item message-yank-prefix
! @vindex message-yank-prefix
! @cindex yanking
! @cindex quoting
! When you are replying to or following up an article, you normally want
! to quote the person you are answering. Inserting quoted text is done by
! @dfn{yanking}, and each quoted line you yank will have
! @code{message-yank-prefix} prepended to it. The default is @samp{> }.
!
! @item message-indentation-spaces
! @vindex message-indentation-spaces
! Number of spaces to indent yanked messages.
!
! @item message-cite-function
! @vindex message-cite-function
! @findex message-cite-original
! @findex sc-cite-original
! @findex message-cite-original-without-signature
! @cindex Supercite
! Function for citing an original message. The default is
! @code{message-cite-original}, which simply inserts the original message
! and prepends @samp{> } to each line.
! @code{message-cite-original-without-signature} does the same, but elides
! the signature. You can also set it to @code{sc-cite-original} to use
! Supercite.
!
! @item message-indent-citation-function
! @vindex message-indent-citation-function
! Function for modifying a citation just inserted in the mail buffer.
! This can also be a list of functions. Each function can find the
! citation between @code{(point)} and @code{(mark t)}. And each function
! should leave point and mark around the citation text as modified.
!
! @item message-signature
! @vindex message-signature
! String to be inserted at the end of the message buffer. If @code{t}
! (which is the default), the @code{message-signature-file} file will be
! inserted instead. If a function, the result from the function will be
! used instead. If a form, the result from the form will be used instead.
! If this variable is @code{nil}, no signature will be inserted at all.
!
! @item message-signature-file
! @vindex message-signature-file
! If address@hidden the name of a file containing the signature to be
! inserted at the end of the buffer. This is ignored if the file
! doesn't exist. The default is @samp{~/.signature}.
@end table
- Note that RFC1036bis says that a signature should be preceded by the three
- characters @samp{-- } on a line by themselves. This is to make it
- easier for the recipient to automatically recognize and process the
- signature. So don't remove those characters, even though you might feel
- that they ruin your beautiful design, like, totally.
-
- Also note that no signature should be more than four lines long.
- Including ASCII graphics is an efficient way to get everybody to believe
- that you are silly and have nothing important to say.
-
@node MIME
@section MIME
--- 778,797 ----
@findex message-insert-headers
Insert the message headers (@code{message-insert-headers}).
! @item C-c M-m
! @kindex C-c M-m
! @findex message-mark-inserted-region
! Mark some region in the current article with enclosing tags.
! See @code{message-mark-insert-begin} and @code{message-mark-insert-end}.
!
! @item C-c M-f
! @kindex C-c M-f
! @findex message-mark-insert-file
! Insert a file in the current article with enclosing tags.
! See @code{message-mark-insert-begin} and @code{message-mark-insert-end}.
@end table
@node MIME
@section MIME
***************
*** 542,561 ****
@cindex multipart
@cindex attachment
! Message is a @sc{mime}-compliant posting agent. The user generally
! doesn't have to do anything to make the @sc{mime} happen---Message will
automatically add the @code{Content-Type} and
@code{Content-Transfer-Encoding} headers.
The most typical thing users want to use the multipart things in
! @sc{mime} for is to add ``attachments'' to mail they send out. This can
! be done with the @code{C-c C-a} command, which will prompt for a file
! name and a @sc{mime} type.
! You can also create arbitrarily complex multiparts using the MML
language (@pxref{Composing, , Composing, emacs-mime, The Emacs MIME
Manual}).
@node Various Commands
@section Various Commands
--- 800,1057 ----
@cindex multipart
@cindex attachment
! Message is a @acronym{MIME}-compliant posting agent. The user generally
! doesn't have to do anything to make the @acronym{MIME} happen---Message will
automatically add the @code{Content-Type} and
@code{Content-Transfer-Encoding} headers.
The most typical thing users want to use the multipart things in
! @acronym{MIME} for is to add ``attachments'' to mail they send out. This can
! be done with the @kbd{C-c C-a} command, which will prompt for a file
! name and a @acronym{MIME} type.
! You can also create arbitrarily complex multiparts using the @acronym{MML}
language (@pxref{Composing, , Composing, emacs-mime, The Emacs MIME
Manual}).
+ @node IDNA
+ @section IDNA
+ @cindex IDNA
+ @cindex internationalized domain names
+ @cindex non-ascii domain names
+
+ Message is a @acronym{IDNA}-compliant posting agent. The user
+ generally doesn't have to do anything to make the @acronym{IDNA}
+ happen---Message will encode address@hidden domain names in @code{From},
+ @code{To}, and @code{Cc} headers automatically.
+
+ Until @acronym{IDNA} becomes more well known, Message queries you
+ whether @acronym{IDNA} encoding of the domain name really should
+ occur. Some users might not be aware that domain names can contain
+ address@hidden now, so this gives them a safety net if they accidently
+ typed a address@hidden domain name.
+
+ @vindex message-use-idna
+ The @code{message-use-idna} variable control whether @acronym{IDNA} is
+ used. If the variable is @code{nil} no @acronym{IDNA} encoding will
+ ever happen, if it is set to the symbol @code{ask} the user will be
+ queried (the default), and if set to @code{t} @acronym{IDNA} encoding
+ happens automatically.
+
+ @findex message-idna-to-ascii-rhs
+ If you want to experiment with the @acronym{IDNA} encoding, you can
+ invoke @kbd{M-x message-idna-to-ascii-rhs RET} in the message buffer
+ to have the address@hidden domain names encoded while you edit the message.
+
+ Note that you must have @uref{http://www.gnu.org/software/libidn/, GNU
+ Libidn} installed in order to use this functionality.
+
+ @node Security
+ @section Security
+ @cindex Security
+ @cindex S/MIME
+ @cindex PGP
+ @cindex PGP/MIME
+ @cindex sign
+ @cindex encrypt
+ @cindex secure
+
+ Using the @acronym{MML} language, Message is able to create digitally
+ signed and digitally encrypted messages. Message (or rather
+ @acronym{MML}) currently support @acronym{PGP} (RFC 1991),
+ @acronym{PGP/MIME} (RFC 2015/3156) and @acronym{S/MIME}. Instructing
+ @acronym{MML} to perform security operations on a @acronym{MIME} part is
+ done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c C-m
+ c} key map for encryption, as follows.
+
+ @table @kbd
+
+ @item C-c C-m s s
+ @kindex C-c C-m s s
+ @findex mml-secure-message-sign-smime
+
+ Digitally sign current message using @acronym{S/MIME}.
+
+ @item C-c C-m s o
+ @kindex C-c C-m s o
+ @findex mml-secure-message-sign-pgp
+
+ Digitally sign current message using @acronym{PGP}.
+
+ @item C-c C-m s p
+ @kindex C-c C-m s p
+ @findex mml-secure-message-sign-pgpmime
+
+ Digitally sign current message using @acronym{PGP/MIME}.
+
+ @item C-c C-m c s
+ @kindex C-c C-m c s
+ @findex mml-secure-message-encrypt-smime
+
+ Digitally encrypt current message using @acronym{S/MIME}.
+
+ @item C-c C-m c o
+ @kindex C-c C-m c o
+ @findex mml-secure-message-encrypt-pgp
+
+ Digitally encrypt current message using @acronym{PGP}.
+
+ @item C-c C-m c p
+ @kindex C-c C-m c p
+ @findex mml-secure-message-encrypt-pgpmime
+
+ Digitally encrypt current message using @acronym{PGP/MIME}.
+
+ @item C-c C-m C-n
+ @kindex C-c C-m C-n
+ @findex mml-unsecure-message
+ Remove security related @acronym{MML} tags from message.
+
+ @end table
+
+ These commands do not immediately sign or encrypt the message, they
+ merely insert the proper @acronym{MML} secure tag to instruct the
+ @acronym{MML} engine to perform that operation when the message is
+ actually sent. They may perform other operations too, such as locating
+ and retrieving a @acronym{S/MIME} certificate of the person you wish to
+ send encrypted mail to. When the mml parsing engine converts your
+ @acronym{MML} into a properly encoded @acronym{MIME} message, the secure
+ tag will be replaced with either a part or a multipart tag. If your
+ message contains other mml parts, a multipart tag will be used; if no
+ other parts are present in your message a single part tag will be used.
+ This way, message mode will do the Right Thing (TM) with
+ signed/encrypted multipart messages.
+
+ Since signing and especially encryption often is used when sensitive
+ information is sent, you may want to have some way to ensure that your
+ mail is actually signed or encrypted. After invoking the above
+ sign/encrypt commands, it is possible to preview the raw article by
+ using @kbd{C-u C-c RET P} (@code{mml-preview}). Then you can
+ verify that your long rant about what your ex-significant other or
+ whomever actually did with that funny looking person at that strange
+ party the other night, actually will be sent encrypted.
+
+ @emph{Note!} Neither @acronym{PGP/MIME} nor @acronym{S/MIME} encrypt/signs
+ RFC822 headers. They only operate on the @acronym{MIME} object. Keep this
+ in mind before sending mail with a sensitive Subject line.
+
+ By default, when encrypting a message, Gnus will use the
+ ``signencrypt'' mode, which means the message is both signed and
+ encrypted. If you would like to disable this for a particular
+ message, give the @code{mml-secure-message-encrypt-*} command a prefix
+ argument, e.g., @kbd{C-u C-c C-m c p}.
+
+ Actually using the security commands above is not very difficult. At
+ least not compared with making sure all involved programs talk with each
+ other properly. Thus, we now describe what external libraries or
+ programs are required to make things work, and some small general hints.
+
+ @subsection Using S/MIME
+
+ @emph{Note!} This section assume you have a basic familiarity with
+ modern cryptography, @acronym{S/MIME}, various PKCS standards, OpenSSL and
+ so on.
+
+ The @acronym{S/MIME} support in Message (and @acronym{MML}) require
+ OpenSSL. OpenSSL performs the actual @acronym{S/MIME} sign/encrypt
+ operations. OpenSSL can be found at @uref{http://www.openssl.org/}.
+ OpenSSL 0.9.6 and later should work. Version 0.9.5a cannot extract mail
+ addresses from certificates, and it insert a spurious CR character into
+ @acronym{MIME} separators so you may wish to avoid it if you would like
+ to avoid being regarded as someone who send strange mail. (Although by
+ sending @acronym{S/MIME} messages you've probably already lost that
+ contest.)
+
+ To be able to send encrypted mail, a personal certificate is not
+ required. Message (@acronym{MML}) need a certificate for the person to whom
you
+ wish to communicate with though. You're asked for this when you type
+ @kbd{C-c C-m c s}. Currently there are two ways to retrieve this
+ certificate, from a local file or from DNS. If you chose a local
+ file, it need to contain a X.509 certificate in @acronym{PEM} format.
+ If you chose DNS, you're asked for the domain name where the
+ certificate is stored, the default is a good guess. To my belief,
+ Message (@acronym{MML}) is the first mail agent in the world to support
+ retrieving @acronym{S/MIME} certificates from DNS, so you're not
+ likely to find very many certificates out there. At least there
+ should be one, stored at the domain @code{simon.josefsson.org}. LDAP
+ is a more popular method of distributing certificates, support for it
+ is planned. (Meanwhile, you can use @code{ldapsearch} from the
+ command line to retrieve a certificate into a file and use it.)
+
+ As for signing messages, OpenSSL can't perform signing operations
+ without some kind of configuration. Especially, you need to tell it
+ where your private key and your certificate is stored. @acronym{MML}
+ uses an Emacs interface to OpenSSL, aptly named @code{smime.el}, and it
+ contain a @code{custom} group used for this configuration. So, try
+ @kbd{M-x customize-group RET smime RET} and look around.
+
+ Currently there is no support for talking to a CA (or RA) to create
+ your own certificate. None is planned either. You need to do this
+ manually with OpenSSL or using some other program. I used Netscape
+ and got a free @acronym{S/MIME} certificate from one of the big CA's on the
+ net. Netscape is able to export your private key and certificate in
+ PKCS #12 format. Use OpenSSL to convert this into a plain X.509
+ certificate in PEM format as follows.
+
+ @example
+ $ openssl pkcs12 -in ns.p12 -clcerts -nodes > key+cert.pem
+ @end example
+
+ The @file{key+cert.pem} file should be pointed to from the
+ @code{smime-keys} variable. You should now be able to send signed mail.
+
+ @emph{Note!} Your private key is now stored unencrypted in the file,
+ so take care in handling it. Storing encrypted keys on the disk are
+ supported, and Gnus will ask you for a passphrase before invoking
+ OpenSSL. Read the OpenSSL documentation for how to achieve this. If
+ you use unencrypted keys (e.g., if they are on a secure storage, or if
+ you are on a secure single user machine) simply press @code{RET} at
+ the passphrase prompt.
+
+ @subsection Using PGP/MIME
+
+ @acronym{PGP/MIME} requires an external OpenPGP implementation, such
+ as @uref{http://www.gnupg.org/, GNU Privacy Guard}. Pre-OpenPGP
+ implementations such as PGP 2.x and PGP 5.x are also supported. One
+ Emacs interface to the PGP implementations, PGG (@pxref{Top, ,PGG,
+ pgg, PGG Manual}), is included, but Mailcrypt and Florian Weimer's
+ @code{gpg.el} are also supported.
+
+ @vindex gpg-temp-directory
+ Note, if you are using the @code{gpg.el} you must make sure that the
+ directory specified by @code{gpg-temp-directory} have permissions
+ 0700.
+
+ Creating your own key is described in detail in the documentation of
+ your PGP implementation, so we refer to it.
+
+ If you have imported your old PGP 2.x key into GnuPG, and want to send
+ signed and encrypted messages to your fellow PGP 2.x users, you'll
+ discover that the receiver cannot understand what you send. One
+ solution is to use PGP 2.x instead (i.e., if you use @code{pgg}, set
+ @code{pgg-default-scheme} to @code{pgp}). If you do want to use
+ GnuPG, you can use a compatibility script called @code{gpg-2comp}
+ available from
+ @uref{http://muppet.faveve.uni-stuttgart.de/~gero/gpg-2comp/}. You
+ could also convince your fellow PGP 2.x users to convert to GnuPG.
+ @vindex mml-signencrypt-style-alist
+ As a final workaround, you can make the sign and encryption work in
+ two steps; separately sign, then encrypt a message. If you would like
+ to change this behavior you can customize the
+ @code{mml-signencrypt-style-alist} variable. For example:
+
+ @lisp
+ (setq mml-signencrypt-style-alist '(("smime" separate)
+ ("pgp" separate)
+ ("pgpauto" separate)
+ ("pgpmime" separate)))
+ @end lisp
+
+ This causes to sign and encrypt in two passes, thus generating a
+ message that can be understood by PGP version 2.
+
+ (Refer to @uref{http://www.gnupg.org/gph/en/pgp2x.html} for more
+ information about the problem.)
@node Various Commands
@section Various Commands
***************
*** 573,581 ****
@item C-c C-e
@kindex C-c C-e
@findex message-elide-region
Elide the text between point and mark (@code{message-elide-region}).
The text is killed and replaced with the contents of the variable
! @code{message-elide-ellipsis}. The default value is to use an ellipsis
(@samp{[...]}).
@item C-c C-z
--- 1069,1078 ----
@item C-c C-e
@kindex C-c C-e
@findex message-elide-region
+ @vindex message-elide-ellipsis
Elide the text between point and mark (@code{message-elide-region}).
The text is killed and replaced with the contents of the variable
! @code{message-elide-ellipsis}. The default value is to use an ellipsis
(@samp{[...]}).
@item C-c C-z
***************
*** 592,598 ****
@item M-RET
@kindex M-RET
! @kindex message-newline-and-reformat
Insert four newlines, and then reformat if inside quoted text.
Here's an example:
--- 1089,1095 ----
@item M-RET
@kindex M-RET
! @findex message-newline-and-reformat
Insert four newlines, and then reformat if inside quoted text.
Here's an example:
***************
*** 613,638 ****
@samp{*} says where point will be placed.
- @item C-c C-t
- @kindex C-c C-t
- @findex message-insert-to
- Insert a @code{To} header that contains the @code{Reply-To} or
- @code{From} header of the message you're following up
- (@code{message-insert-to}).
-
- @item C-c C-n
- @kindex C-c C-n
- @findex message-insert-newsgroups
- Insert a @code{Newsgroups} header that reflects the @code{Followup-To}
- or @code{Newsgroups} header of the article you're replying to
- (@code{message-insert-newsgroups}).
-
@item C-c M-r
@kindex C-c M-r
@findex message-rename-buffer
Rename the buffer (@code{message-rename-buffer}). If given a prefix,
prompt for a new buffer name.
@end table
--- 1110,1129 ----
@samp{*} says where point will be placed.
@item C-c M-r
@kindex C-c M-r
@findex message-rename-buffer
Rename the buffer (@code{message-rename-buffer}). If given a prefix,
prompt for a new buffer name.
+ @item TAB
+ @kindex TAB
+ @findex message-tab
+ @vindex message-tab-body-function
+ If address@hidden execute the function specified in
+ @code{message-tab-body-function}. Otherwise use the function bound to
+ @kbd{TAB} in @code{text-mode-map} or @code{global-map}.
+
@end table
***************
*** 715,721 ****
@lisp
(setq ispell-message-dictionary-alist
'(("^Newsgroups:.*\\bde\\." . "deutsch8")
! (".*" . "default")))
@end lisp
@code{ispell} depends on having the external @samp{ispell} command
--- 1206,1212 ----
@lisp
(setq ispell-message-dictionary-alist
'(("^Newsgroups:.*\\bde\\." . "deutsch8")
! (".*" . "default")))
@end lisp
@code{ispell} depends on having the external @samp{ispell} command
***************
*** 747,752 ****
--- 1238,1244 ----
* Mail Variables:: Other mail variables.
* News Headers:: Customizing news headers.
* News Variables:: Other news variables.
+ * Insertion Variables:: Customizing how things are inserted.
* Various Message Variables:: Other message variables.
* Sending Variables:: Variables for sending.
* Message Buffers:: How Message names its buffers.
***************
*** 767,777 ****
@item message-generate-headers-first
@vindex message-generate-headers-first
! If address@hidden, generate all required headers before starting to
! compose the message.
! The variables @code{message-required-mail-headers} and
! @code{message-required-news-headers} specify which headers are required.
@item message-from-style
@vindex message-from-style
--- 1259,1286 ----
@item message-generate-headers-first
@vindex message-generate-headers-first
! If @code{t}, generate all required headers before starting to
! compose the message. This can also be a list of headers to generate:
!
! @lisp
! (setq message-generate-headers-first
! '(References))
! @end lisp
! @vindex message-required-headers
! The variables @code{message-required-headers},
! @code{message-required-mail-headers} and
! @code{message-required-news-headers} specify which headers are
! required.
!
! Note that some headers will be removed and re-generated before posting,
! because of the variable @code{message-deletable-headers} (see below).
!
! @item message-draft-headers
! @vindex message-draft-headers
! When running Message from Gnus, the message buffers are associated
! with a draft group. @code{message-draft-headers} says which headers
! should be generated when a draft is written to the draft group.
@item message-from-style
@vindex message-from-style
***************
*** 814,819 ****
--- 1323,1331 ----
@item message-subject-re-regexp
@vindex message-subject-re-regexp
+ @cindex Aw
+ @cindex Sv
+ @cindex Re
Responses to messages have subjects that start with @samp{Re: }. This
is @emph{not} an abbreviation of the English word ``response'', but is
Latin, and means ``in response to''. Some illiterate nincompoops have
***************
*** 824,834 ****
--- 1336,1407 ----
set this variable to a regexp that matches these prefixes. Myself, I
just throw away non-compliant mail.
+ Here's an example of a value to deal with these headers when
+ responding to a message:
+
+ @lisp
+ (setq message-subject-re-regexp
+ (concat
+ "^[ \t]*"
+ "\\("
+ "\\("
+ "[Aa][Nn][Tt][Ww]\\.?\\|" ; antw
+ "[Aa][Ww]\\|" ; aw
+ "[Ff][Ww][Dd]?\\|" ; fwd
+ "[Oo][Dd][Pp]\\|" ; odp
+ "[Rr][Ee]\\|" ; re
+ "[Rr][\311\351][Ff]\\.?\\|" ; ref
+ "[Ss][Vv]" ; sv
+ "\\)"
+ "\\(\\[[0-9]*\\]\\)"
+ "*:[ \t]*"
+ "\\)"
+ "*[ \t]*"
+ ))
+ @end lisp
+
+ @item message-subject-trailing-was-query
+ @vindex message-subject-trailing-was-query
+ @vindex message-subject-trailing-was-ask-regexp
+ @vindex message-subject-trailing-was-regexp
+ Controls what to do with trailing @samp{(was: <old subject>)} in subject
+ lines. If @code{nil}, leave the subject unchanged. If it is the symbol
+ @code{ask}, query the user what do do. In this case, the subject is
+ matched against @code{message-subject-trailing-was-ask-regexp}. If
+ @code{message-subject-trailing-was-query} is t, always strip the
+ trailing old subject. In this case,
+ @code{message-subject-trailing-was-regexp} is used.
+
@item message-alternative-emails
@vindex message-alternative-emails
A regexp to match the alternative email addresses. The first matched
address (not primary one) is used in the @code{From} field.
+ @item message-allow-no-recipients
+ @vindex message-allow-no-recipients
+ Specifies what to do when there are no recipients other than
+ @code{Gcc} or @code{Fcc}. If it is @code{always}, the posting is
+ allowed. If it is @code{never}, the posting is not allowed. If it is
+ @code{ask} (the default), you are prompted.
+
+ @item message-hidden-headers
+ @vindex message-hidden-headers
+ A regexp, a list of regexps, or a list where the first element is
+ @code{not} and the rest are regexps. It says which headers to keep
+ hidden when composing a message.
+
+ @lisp
+ (setq message-hidden-headers
+ '(not "From" "Subject" "To" "Cc" "Newsgroups"))
+ @end lisp
+
+ @item message-header-synonyms
+ @vindex message-header-synonyms
+ A list of lists of header synonyms. E.g., if this list contains a
+ member list with elements @code{Cc} and @code{To}, then
+ @code{message-carefully-insert-headers} will not insert a @code{To}
+ header when the message is already @code{Cc}ed to the recipient.
+
@end table
***************
*** 845,851 ****
@item message-ignored-mail-headers
@vindex message-ignored-mail-headers
Regexp of headers to be removed before mailing. The default is
! @samp{^[GF]cc:\|^Resent-Fcc:\|^Xref:}.
@item message-default-mail-headers
@vindex message-default-mail-headers
--- 1418,1424 ----
@item message-ignored-mail-headers
@vindex message-ignored-mail-headers
Regexp of headers to be removed before mailing. The default is
! @samp{^[GF]cc:\\|^Resent-Fcc:\\|^Xref:\\|^X-Draft-From:}.
@item message-default-mail-headers
@vindex message-default-mail-headers
***************
*** 861,869 ****
@table @code
@item message-send-mail-function
@vindex message-send-mail-function
Function used to send the current buffer as mail. The default is
! @code{message-send-mail-with-sendmail}. If you prefer using MH
! instead, set this variable to @code{message-send-mail-with-mh}.
@item message-mh-deletable-headers
@vindex message-mh-deletable-headers
--- 1434,1450 ----
@table @code
@item message-send-mail-function
@vindex message-send-mail-function
+ @findex message-send-mail-with-sendmail
+ @findex message-send-mail-with-mh
+ @findex message-send-mail-with-qmail
+ @findex message-smtpmail-send-it
+ @findex smtpmail-send-it
+ @findex feedmail-send-it
Function used to send the current buffer as mail. The default is
! @code{message-send-mail-with-sendmail}. Other valid values include
! @code{message-send-mail-with-mh}, @code{message-send-mail-with-qmail},
! @code{message-smtpmail-send-it}, @code{smtpmail-send-it} and
! @code{feedmail-send-it}.
@item message-mh-deletable-headers
@vindex message-mh-deletable-headers
***************
*** 873,884 ****
messages via MH. Set it to @code{nil} if your MH can handle these
headers.
@item message-send-mail-partially-limit
@vindex message-send-mail-partially-limit
! The limit on the size of messages sent as @samp{message/partial}.
! This is the minimum message size in characters beyond which the
! message should be sent in several parts. If it is @code{nil}, the
! size is unlimited.
@end table
--- 1454,1500 ----
messages via MH. Set it to @code{nil} if your MH can handle these
headers.
+ @item message-qmail-inject-program
+ @vindex message-qmail-inject-program
+ @cindex qmail
+ Location of the qmail-inject program.
+
+ @item message-qmail-inject-args
+ @vindex message-qmail-inject-args
+ Arguments passed to qmail-inject programs.
+ This should be a list of strings, one string for each argument. It
+ may also be a function.
+
+ For e.g., if you wish to set the envelope sender address so that bounces
+ go to the right place or to deal with listserv's usage of that address, you
+ might set this variable to @code{'("-f" "you@@some.where")}.
+
+ @item message-sendmail-f-is-evil
+ @vindex message-sendmail-f-is-evil
+ @cindex sendmail
+ address@hidden means don't add @samp{-f username} to the sendmail
+ command line. Doing so would be even more evil than leaving it out.
+
+ @item message-sendmail-envelope-from
+ @vindex message-sendmail-envelope-from
+ When @code{message-sendmail-f-is-evil} is @code{nil}, this specifies
+ the address to use in the @acronym{SMTP} envelope. If it is
+ @code{nil}, use @code{user-mail-address}. If it is the symbol
+ @code{header}, use the @samp{From} header of the message.
+
+ @item message-mailer-swallows-blank-line
+ @vindex message-mailer-swallows-blank-line
+ Set this to address@hidden if the system's mailer runs the header and
+ body together. (This problem exists on SunOS 4 when sendmail is run
+ in remote mode.) The value should be an expression to test whether
+ the problem will actually occur.
+
@item message-send-mail-partially-limit
@vindex message-send-mail-partially-limit
! @cindex split large message
! The limitation of messages sent as message/partial. The lower bound
! of message size in characters, beyond which the message should be sent
! in several parts. If it is @code{nil}, the size is unlimited.
@end table
***************
*** 913,918 ****
--- 1529,1536 ----
@item Organization
@cindex organization
+ @vindex message-user-organization
+ @vindex message-user-organization-file
This optional header will be filled out depending on the
@code{message-user-organization} variable.
@code{message-user-organization-file} will be used if this variable is
***************
*** 926,939 ****
@item Message-ID
@cindex Message-ID
@vindex mail-host-address
@findex system-name
@cindex Sun
This required header will be generated by Message. A unique ID will be
! created based on the date, time, user name and system name. Message
! will use @code{system-name} to determine the name of the system. If
! this isn't a fully qualified domain name (FQDN), Message will use
! @code{mail-host-address} as the FQDN of the machine.
@item User-Agent
@cindex User-Agent
--- 1544,1561 ----
@item Message-ID
@cindex Message-ID
+ @vindex message-user-fqdn
@vindex mail-host-address
+ @vindex user-mail-address
@findex system-name
@cindex Sun
+ @cindex i-did-not-set--mail-host-address--so-tickle-me
This required header will be generated by Message. A unique ID will be
! created based on the date, time, user name and system name. For the
! domain part, message will look (in this order) at
! @code{message-user-fqdn}, @code{system-name}, @code{mail-host-address}
! and @code{message-user-mail-address} (i.e. @code{user-mail-address})
! until a probably valid fully qualified domain name (FQDN) was found.
@item User-Agent
@cindex User-Agent
***************
*** 946,963 ****
--- 1568,1588 ----
@item Expires
@cindex Expires
+ @vindex message-expires
This extremely optional header will be inserted according to the
@code{message-expires} variable. It is highly deprecated and shouldn't
be used unless you know what you're doing.
@item Distribution
@cindex Distribution
+ @vindex message-distribution-function
This optional header is filled out according to the
@code{message-distribution-function} variable. It is a deprecated and
much misunderstood header.
@item Path
@cindex path
+ @vindex message-user-path
This extremely optional header should probably never be used.
However, some @emph{very} old servers require that this header is
present. @code{message-user-path} further controls how this
***************
*** 969,977 ****
@findex yow
@cindex Mime-Version
! In addition, you can enter conses into this list. The car of this cons
should be a symbol. This symbol's name is the name of the header, and
! the cdr can either be a string to be entered verbatim as the value of
this header, or it can be a function to be called. This function should
return a string to be inserted. For instance, if you want to insert
@code{Mime-Version: 1.0}, you should enter @code{(Mime-Version . "1.0")}
--- 1594,1602 ----
@findex yow
@cindex Mime-Version
! In addition, you can enter conses into this list. The @sc{car} of this cons
should be a symbol. This symbol's name is the name of the header, and
! the @sc{cdr} can either be a string to be entered verbatim as the value of
this header, or it can be a function to be called. This function should
return a string to be inserted. For instance, if you want to insert
@code{Mime-Version: 1.0}, you should enter @code{(Mime-Version . "1.0")}
***************
*** 979,988 ****
something like @code{(X-Yow . yow)} into the list. The function
@code{yow} will then be called without any arguments.
! If the list contains a cons where the car of the cons is
! @code{optional}, the cdr of this cons will only be inserted if it is
address@hidden
Other variables for customizing outgoing news articles:
@table @code
--- 1604,1622 ----
something like @code{(X-Yow . yow)} into the list. The function
@code{yow} will then be called without any arguments.
! If the list contains a cons where the @sc{car} of the cons is
! @code{optional}, the @sc{cdr} of this cons will only be inserted if it is
address@hidden
+ If you want to delete an entry from this list, the following Lisp
+ snippet might be useful. Adjust accordingly if you want to remove
+ another element.
+
+ @lisp
+ (setq message-required-news-headers
+ (delq 'Message-ID message-required-news-headers))
+ @end lisp
+
Other variables for customizing outgoing news articles:
@table @code
***************
*** 1055,1061 ****
@item message-ignored-news-headers
@vindex message-ignored-news-headers
Regexp of headers to be removed before posting. The default address@hidden
! @samp{^NNTP-Posting-Host:\\|^Xref:\\|^[BGF]cc:\\|^Resent-Fcc:}.
@item message-default-news-headers
@vindex message-default-news-headers
--- 1689,1695 ----
@item message-ignored-news-headers
@vindex message-ignored-news-headers
Regexp of headers to be removed before posting. The default address@hidden
!
@samp{^NNTP-Posting-Host:\\|^Xref:\\|^[BGF]cc:\\|^Resent-Fcc:\\|^X-Draft-From:}.
@item message-default-news-headers
@vindex message-default-news-headers
***************
*** 1082,1087 ****
--- 1716,1840 ----
@end table
+ @node Insertion Variables
+ @section Insertion Variables
+
+ @table @code
+ @item message-ignored-cited-headers
+ @vindex message-ignored-cited-headers
+ All headers that match this regexp will be removed from yanked
+ messages. The default is @samp{.}, which means that all headers will be
+ removed.
+
+ @item message-cite-prefix-regexp
+ @vindex message-cite-prefix-regexp
+ Regexp matching the longest possible citation prefix on a line.
+
+ @item message-citation-line-function
+ @vindex message-citation-line-function
+ @cindex attribution line
+ Function called to insert the citation line. The default is
+ @code{message-insert-citation-line}, which will lead to citation lines
+ that look like:
+
+ @example
+ Hallvard B Furuseth <h.b.furuseth@@usit.uio.no> writes:
+ @end example
+
+ Point will be at the beginning of the body of the message when this
+ function is called.
+
+ Note that Gnus provides a feature where clicking on `writes:' hides the
+ cited text. If you change the citation line too much, readers of your
+ messages will have to adjust their Gnus, too. See the variable
+ @code{gnus-cite-attribution-suffix}. @xref{Article Highlighting, ,
+ Article Highlighting, gnus, The Gnus Manual}, for details.
+
+ @item message-yank-prefix
+ @vindex message-yank-prefix
+ @cindex yanking
+ @cindex quoting
+ When you are replying to or following up an article, you normally want
+ to quote the person you are answering. Inserting quoted text is done
+ by @dfn{yanking}, and each line you yank will have
+ @code{message-yank-prefix} prepended to it (except for quoted and
+ empty lines which uses @code{message-yank-cited-prefix}). The default
+ is @samp{> }.
+
+ @item message-yank-cited-prefix
+ @vindex message-yank-cited-prefix
+ @cindex yanking
+ @cindex cited
+ @cindex quoting
+ When yanking text from an article which contains no text or already
+ cited text, each line will be prefixed with the contents of this
+ variable. The default is @samp{>}. See also
+ @code{message-yank-prefix}.
+
+ @item message-indentation-spaces
+ @vindex message-indentation-spaces
+ Number of spaces to indent yanked messages.
+
+ @item message-cite-function
+ @vindex message-cite-function
+ @findex message-cite-original
+ @findex sc-cite-original
+ @findex message-cite-original-without-signature
+ @cindex Supercite
+ Function for citing an original message. The default is
+ @code{message-cite-original}, which simply inserts the original message
+ and prepends @samp{> } to each line.
+ @code{message-cite-original-without-signature} does the same, but elides
+ the signature. You can also set it to @code{sc-cite-original} to use
+ Supercite.
+
+ @item message-indent-citation-function
+ @vindex message-indent-citation-function
+ Function for modifying a citation just inserted in the mail buffer.
+ This can also be a list of functions. Each function can find the
+ citation between @code{(point)} and @code{(mark t)}. And each function
+ should leave point and mark around the citation text as modified.
+
+ @item message-mark-insert-begin
+ @vindex message-mark-insert-begin
+ String to mark the beginning of some inserted text.
+
+ @item message-mark-insert-end
+ @vindex message-mark-insert-end
+ String to mark the end of some inserted text.
+
+ @item message-signature
+ @vindex message-signature
+ String to be inserted at the end of the message buffer. If @code{t}
+ (which is the default), the @code{message-signature-file} file will be
+ inserted instead. If a function, the result from the function will be
+ used instead. If a form, the result from the form will be used instead.
+ If this variable is @code{nil}, no signature will be inserted at all.
+
+ @item message-signature-file
+ @vindex message-signature-file
+ File containing the signature to be inserted at the end of the buffer.
+ The default is @file{~/.signature}.
+
+ @item message-signature-insert-empty-line
+ @vindex message-signature-insert-empty-line
+ If @code{t} (the default value) an empty line is inserted before the
+ signature separator.
+
+ @end table
+
+ Note that RFC1036bis says that a signature should be preceded by the three
+ characters @samp{-- } on a line by themselves. This is to make it
+ easier for the recipient to automatically recognize and process the
+ signature. So don't remove those characters, even though you might feel
+ that they ruin your beautiful design, like, totally.
+
+ Also note that no signature should be more than four lines long.
+ Including @acronym{ASCII} graphics is an efficient way to get
+ everybody to believe that you are silly and have nothing important to
+ say.
+
+
@node Various Message Variables
@section Various Message Variables
***************
*** 1089,1101 ****
@item message-default-charset
@vindex message-default-charset
@cindex charset
! Symbol naming a @sc{mime} charset. Non-ASCII characters in messages are
! assumed to be encoded using this charset. The default is @code{nil},
! which means ask the user. (This variable is used only on address@hidden
! Emacsen.
! @xref{Charset Translation, , Charset Translation, emacs-mime,
! Emacs MIME Manual}, for details on the @address@hidden
! translation process.
@item message-signature-separator
@vindex message-signature-separator
--- 1842,1853 ----
@item message-default-charset
@vindex message-default-charset
@cindex charset
! Symbol naming a @acronym{MIME} charset. address@hidden
! characters in messages are assumed to be encoded using this charset.
! The default is @code{nil}, which means ask the user. (This variable
! is used only on address@hidden Emacsen. @xref{Charset Translation, ,
! Charset Translation, emacs-mime, Emacs MIME Manual}, for details on
! the @address@hidden translation process.
@item message-signature-separator
@vindex message-signature-separator
***************
*** 1111,1116 ****
--- 1863,1873 ----
@vindex message-directory
Directory used by many mailey things. The default is @file{~/Mail/}.
+ @item message-auto-save-directory
+ @vindex message-auto-save-directory
+ Directory where Message auto-saves buffers if Gnus isn't running. If
+ @code{nil}, Message won't auto-save. The default is @file{~/Mail/drafts/}.
+
@item message-signature-setup-hook
@vindex message-signature-setup-hook
Hook run when initializing the message buffer. It is run after the
***************
*** 1160,1186 ****
@item message-send-mail-hook
@vindex message-send-mail-hook
! Hook run before sending mail messages.
@item message-send-news-hook
@vindex message-send-news-hook
! Hook run before sending news messages.
@item message-sent-hook
@vindex message-sent-hook
Hook run after sending messages.
@item message-mode-syntax-table
@vindex message-mode-syntax-table
Syntax table used in message mode buffers.
@item message-send-method-alist
@vindex message-send-method-alist
Alist of ways to send outgoing messages. Each element has the form
@lisp
! (TYPE PREDICATE FUNCTION)
@end lisp
@table @var
--- 1917,1958 ----
@item message-send-mail-hook
@vindex message-send-mail-hook
! Hook run before sending mail messages. This hook is run very late --
! just before the message is actually sent as mail.
@item message-send-news-hook
@vindex message-send-news-hook
! Hook run before sending news messages. This hook is run very late --
! just before the message is actually sent as news.
@item message-sent-hook
@vindex message-sent-hook
Hook run after sending messages.
+ @item message-cancel-hook
+ @vindex message-cancel-hook
+ Hook run when canceling news articles.
+
@item message-mode-syntax-table
@vindex message-mode-syntax-table
Syntax table used in message mode buffers.
+ @item message-strip-special-text-properties
+ @vindex message-strip-special-text-properties
+ Emacs has a number of special text properties which can break message
+ composing in various ways. If this option is set, message will strip
+ these properties from the message composition buffer. However, some
+ packages requires these properties to be present in order to work. If
+ you use one of these packages, turn this option off, and hope the
+ message composition doesn't break too bad.
+
@item message-send-method-alist
@vindex message-send-method-alist
Alist of ways to send outgoing messages. Each element has the form
@lisp
! (@var{type} @var{predicate} @var{function})
@end lisp
@table @var
***************
*** 1216,1222 ****
@vindex message-fcc-handler-function
A function called to save outgoing articles. This function will be
called with the name of the file to store the article in. The default
! function is @code{message-output} which saves in inbox format.
@item message-courtesy-message
@vindex message-courtesy-message
--- 1988,1994 ----
@vindex message-fcc-handler-function
A function called to save outgoing articles. This function will be
called with the name of the file to store the article in. The default
! function is @code{message-output} which saves in Unix mailbox format.
@item message-courtesy-message
@vindex message-courtesy-message
***************
*** 1225,1231 ****
newsgroups the article has been posted to will be inserted there. If
this variable is @code{nil}, no such courtesy message will be added.
The default value is @samp{"The following message is a courtesy copy of
! an article\nthat has been posted to %s as well.\n\n"}.
@end table
--- 1997,2013 ----
newsgroups the article has been posted to will be inserted there. If
this variable is @code{nil}, no such courtesy message will be added.
The default value is @samp{"The following message is a courtesy copy of
! an article\\nthat has been posted to %s as well.\\n\\n"}.
!
! @item message-fcc-externalize-attachments
! @vindex message-fcc-externalize-attachments
! If @code{nil}, attach files as normal parts in Fcc copies; if it is
! address@hidden, attach local files as external parts.
!
! @item message-interactive
! @vindex message-interactive
! If address@hidden wait for and display errors when sending a message;
! if @code{nil} let the mailer mail back a message to report errors.
@end table
***************
*** 1308,1314 ****
killed, postponed or exited.
An @dfn{action} can be either: a normal function, or a list where the
! @code{car} is a function and the @code{cdr} is the list of arguments, or
a form to be @code{eval}ed.
--- 2090,2096 ----
killed, postponed or exited.
An @dfn{action} can be either: a normal function, or a list where the
! @sc{car} is a function and the @sc{cdr} is the list of arguments, or
a form to be @code{eval}ed.
***************
*** 1318,1324 ****
Message uses virtually only its own variables---older @code{mail-}
variables aren't consulted. To force Message to take those variables
! into account, you can put the following in your @code{.emacs} file:
@lisp
(require 'messcompat)
--- 2100,2106 ----
Message uses virtually only its own variables---older @code{mail-}
variables aren't consulted. To force Message to take those variables
! into account, you can put the following in your @file{.emacs} file:
@lisp
(require 'messcompat)
- [Emacs-diffs] Changes to emacs/man/message.texi,
Miles Bader <=