(Splitting in IMAP): Typos, tiny patch from Matthias
[gnus] / texi / gnus.texi
index 7cb87c7..92d626e 100644 (file)
@@ -53,6 +53,7 @@
 
 \newcommand{\gnustt}[1]{{\gnusselectttfont{}#1}}
 \newcommand{\gnuscode}[1]{\gnustt{#1}}
+\newcommand{\gnuscommand}[1]{\gnustt{#1}}
 \newcommand{\gnusenv}[1]{\gnustt{#1}}
 \newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\gnusselectttfont{}#1}''}
 \newcommand{\gnuslisp}[1]{\gnustt{#1}}
@@ -558,16 +559,16 @@ Reply, Followup and Post
 * Summary Mail Commands::       Sending mail.
 * Summary Post Commands::       Sending news.
 * Summary Message Commands::    Other Message-related commands.
-* Canceling and Superseding::   
+* Canceling and Superseding::
 
 Marking Articles
 
 * Unread Articles::             Marks for unread articles.
 * Read Articles::               Marks for read articles.
 * Other Marks::                 Marks that do not affect readedness.
-* Setting Marks::               
-* Generic Marking Commands::    
-* Setting Process Marks::       
+* Setting Marks::
+* Generic Marking Commands::
+* Setting Process Marks::
 
 Marking Articles
 
@@ -625,7 +626,7 @@ Various Summary Stuff
 
 * Summary Group Information::   Information oriented commands.
 * Searching for Articles::      Multiple article commands.
-* Summary Generation Commands::  
+* Summary Generation Commands::
 * Really Various Summary Commands::  Those pesky non-conformant commands.
 
 Article Buffer
@@ -690,7 +691,7 @@ Getting Mail
 * Group Mail Splitting::        Use group customize to drive mail splitting.
 * Incorporating Old Mail::      What about the old mail you have?
 * Expiring Mail::               Getting rid of unwanted mail.
-* Washing Mail::                Removing gruft from the mail you get.
+* Washing Mail::                Removing cruft from the mail you get.
 * Duplicates::                  Dealing with duplicated mail.
 * Not Reading Mail::            Using mail back ends for reading other files.
 * Choosing a Mail Back End::    Gnus can read a variety of mail formats.
@@ -713,7 +714,7 @@ Choosing a Mail Back End
 
 Browsing the Web
 
-* Archiving Mail::              
+* Archiving Mail::
 * Web Searches::                Creating groups from articles that match a string.
 * Slashdot::                    Reading the Slashdot comments.
 * Ultimate::                    The Ultimate Bulletin Board systems.
@@ -859,8 +860,8 @@ Thwarting Email Spam
 * Anti-Spam Basics::            Simple steps to reduce the amount of spam.
 * SpamAssassin::                How to use external anti-spam tools.
 * Hashcash::                    Reduce spam by burning CPU time.
-* Filtering Spam Using The Spam ELisp Package::  
-* Filtering Spam Using Statistics with spam-stat::  
+* Filtering Spam Using The Spam ELisp Package::
+* Filtering Spam Using Statistics with spam-stat::
 
 Appendices
 
@@ -1755,7 +1756,7 @@ a @code{printf} specifications, for those of you who use (feh!) C.
 
 There should always be a colon on the line; the cursor always moves to
 the colon after performing an operation.  @xref{Positioning
-Point}. Nothing else is required---not even the group name.  All
+Point}.  Nothing else is required---not even the group name.  All
 displayed text is just window dressing, and is never examined by Gnus.
 Gnus stores all real information it needs using text properties.
 
@@ -1824,7 +1825,7 @@ comment element in the group parameters.
 Newsgroup description.  You need to read the group descriptions
 before these will appear, and to do that, you either have to set
 @code{gnus-read-active-file} or use the group buffer @kbd{M-d}
-command. 
+command.
 
 @item o
 @samp{m} if moderated.
@@ -1921,7 +1922,7 @@ background is dark:
        (defface my-group-face-1
          '((t (:foreground "Red" :bold t))) "First group face")
        (defface my-group-face-2
-         '((t (:foreground "DarkSeaGreen4" :bold t))) 
+         '((t (:foreground "DarkSeaGreen4" :bold t)))
          "Second group face")
        (defface my-group-face-3
          '((t (:foreground "Green4" :bold t))) "Third group face")
@@ -2122,7 +2123,7 @@ manner will have no permanent effects.
 @vindex gnus-large-newsgroup
 The @code{gnus-large-newsgroup} variable says what Gnus should
 consider to be a big group.  If it is @code{nil}, no groups are
-considered big.  The default vaule is 200.  If the group has more
+considered big.  The default value is 200.  If the group has more
 (unread and/or ticked) articles than this, Gnus will query the user
 before entering the group.  The user can then specify how many
 articles should be fetched from the server.  If the user specifies a
@@ -2506,7 +2507,7 @@ consulted.
 @cindex making groups
 Make a new group (@code{gnus-group-make-group}).  Gnus will prompt you
 for a name, a method and possibly an @dfn{address}.  For an easier way
-to subscribe to @acronym{NNTP} groups, @pxref{Browse Foreign Server}.
+to subscribe to @acronym{NNTP} groups (@pxref{Browse Foreign Server}).
 
 @item G r
 @kindex G r (Group)
@@ -2741,9 +2742,9 @@ If this parameter is set to @code{t}, Gnus will consider the
 to-address and to-list parameters for this group as addresses of
 mailing lists you are subscribed to.  Giving Gnus this information is
 (only) a first step in getting it to generate correct Mail-Followup-To
-headers for your posts to these lists.  Look here @pxref{Mailing
-Lists, , Mailing Lists, message, The Message Manual} for a complete
-treatment of available MFT support.
+headers for your posts to these lists.  @xref{Mailing Lists, ,Mailing
+Lists, message, The Message Manual}, for a complete treatment of
+available MFT support.
 
 See also @code{gnus-find-subscribed-addresses}, the function that
 directly uses this group parameter.
@@ -2929,7 +2930,7 @@ instead of @code{gnus-post-method}.
 @item banner
 @cindex banner
 An item like @code{(banner . @var{regexp})} causes any part of an article
-that matches the regular expression @var{regexp} to be stripped. Instead of
+that matches the regular expression @var{regexp} to be stripped.  Instead of
 @var{regexp}, you can also use the symbol @code{signature} which strips the
 last signature or any of the elements of the alist
 @code{gnus-article-banner-alist}.
@@ -2952,7 +2953,7 @@ if address \"sender\" \"sieve-admin@@extundo.com\" @{
 @}
 @end example
 
-The Sieve language is described in RFC 3028. @xref{Top, , Top, sieve,
+The Sieve language is described in RFC 3028.  @xref{Top, , Top, sieve,
 Emacs Sieve}.
 
 @item (@var{variable} @var{form})
@@ -2977,7 +2978,7 @@ parameters, then you may need the following statement elsewhere in your
 
 @vindex gnus-list-identifiers
 A use for this feature is to remove a mailing list identifier tag in
-the subject fields of articles.   E.g. if the news group
+the subject fields of articles.  E.g. if the news group
 @example
 nntp+news.gnus.org:gmane.text.docbook.apps
 @end example
@@ -3600,9 +3601,9 @@ Yank the previously killed group or topic
 before all groups.
 
 So, to move a topic to the beginning of the list of topics, just hit
-@kbd{C-k} on it.  This is like the `cut' part of cut and paste.  Then,
-move the cursor to the beginning of the buffer (just below the `Gnus'
-topic) and hit @kbd{C-y}.  This is like the `paste' part of cut and
+@kbd{C-k} on it.  This is like the ``cut'' part of cut and paste.  Then,
+move the cursor to the beginning of the buffer (just below the ``Gnus''
+topic) and hit @kbd{C-y}.  This is like the ``paste'' part of cut and
 paste.  Like I said -- E-Z.
 
 You can use @kbd{C-k} and @kbd{C-y} on groups as well as on topics.  So
@@ -3715,7 +3716,7 @@ sub-topics unless given a prefix.
 @findex gnus-topic-expire-articles
 Run all expirable articles in the current group or topic through the
 expiry process (if any)
-(@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}).
+(@code{gnus-topic-expire-articles}).  (@pxref{Expiring Mail}).
 
 @item T r
 @kindex T r (Topic)
@@ -4055,7 +4056,7 @@ whether they are empty or not.
 
 @item gnus-group-name-charset-method-alist
 @vindex gnus-group-name-charset-method-alist
-An alist of method and the charset for group names. It is used to show
+An alist of method and the charset for group names.  It is used to show
 non-@acronym{ASCII} group names.
 
 For example:
@@ -4175,7 +4176,7 @@ messages for the group, which in some cases includes the charter.
 @vindex gnus-group-fetch-control-use-browse-url
 @cindex control message
 Fetch the control messages for the group from the archive at
-@code{ftp.isc.org} (@code{gnus-group-fetch-control}). Query for a
+@code{ftp.isc.org} (@code{gnus-group-fetch-control}).  Query for a
 group if given a prefix argument.
 
 If @code{gnus-group-fetch-control-use-browse-url} is non-@code{nil},
@@ -4337,7 +4338,7 @@ placed in all groups that have matching rules, otherwise the article
 is only placed in the group with the first matching rule.  For
 example, the group parameter @samp{(sieve address "sender"
 "owner-ding@@hpc.uh.edu")} will generate the following piece of Sieve
-code if @code{gnus-sieve-crosspost} is @code{nil}. (When
+code if @code{gnus-sieve-crosspost} is @code{nil}.  (When
 @code{gnus-sieve-crosspost} is non-@code{nil}, it looks the same
 except that the line containing the call to @code{stop} is removed.)
 
@@ -4348,7 +4349,7 @@ if address "sender" "owner-ding@@hpc.uh.edu" @{
 @}
 @end example
 
-@xref{Top, ,Top, sieve, Emacs Sieve}.
+@xref{Top, Emacs Sieve, Top, sieve, Emacs Sieve}.
 
 @table @kbd
 
@@ -4512,7 +4513,7 @@ the @code{a} spec.
 @item L
 Number of lines in the article.
 @item c
-Number of characters in the article. This specifier is not supported
+Number of characters in the article.  This specifier is not supported
 in some methods (like nnfolder).
 @item k
 Pretty-printed version of the number of characters in the article;
@@ -4560,7 +4561,7 @@ Used for drawing a vertical line.  The default is @samp{| }.
 
 @item gnus-sum-thread-tree-indent
 @vindex gnus-sum-thread-tree-indent
-Used for indenting.  The default is @samp{  }. 
+Used for indenting.  The default is @samp{  }.
 
 @item gnus-sum-thread-tree-leaf-with-other
 @vindex gnus-sum-thread-tree-leaf-with-other
@@ -4586,7 +4587,7 @@ One space for each thread level.
 @item <
 Twenty minus thread level spaces.
 @item U
-Unread. @xref{Read Articles}.
+Unread.  @xref{Read Articles}.
 
 @item R
 This misleadingly named specifier is the @dfn{secondary mark}.  This
@@ -4950,7 +4951,7 @@ unread article (@code{gnus-summary-next-page}).
 
 If you have an article window open already and you press @kbd{SPACE}
 again, the article will be scrolled.  This lets you conveniently
-@kbd{SPACE} through an entire newsgroup.  @pxref{Paging the Article}.
+@kbd{SPACE} through an entire newsgroup.  @xref{Paging the Article}.
 
 @item G n
 @itemx n
@@ -5056,7 +5057,7 @@ the server and display it in the article buffer.
 @item gnus-select-article-hook
 @vindex gnus-select-article-hook
 This hook is called whenever an article is selected.  By default it
-exposes any threads hidden under the selected article.  If you would 
+exposes any threads hidden under the selected article.  If you would
 like each article to be saved in the Agent as you read it, putting
 @code{gnus-agent-fetch-selected-article} on this hook will do so.
 
@@ -5178,7 +5179,7 @@ Select the article buffer (@code{gnus-summary-select-article-buffer}).
 * Summary Mail Commands::       Sending mail.
 * Summary Post Commands::       Sending news.
 * Summary Message Commands::    Other Message-related commands.
-* Canceling and Superseding::   
+* Canceling and Superseding::
 @end menu
 
 
@@ -5217,7 +5218,8 @@ command uses the process/prefix convention.
 Mail a wide reply to the author of the current article
 (@code{gnus-summary-wide-reply}).  A @dfn{wide reply} is a reply that
 goes out to all people listed in the @code{To}, @code{From} (or
-@code{Reply-to}) and @code{Cc} headers.
+@code{Reply-to}) and @code{Cc} headers.  If @code{Mail-Followup-To} is
+present, that's used instead.
 
 @item S W
 @kindex S W (Summary)
@@ -5397,7 +5399,7 @@ Post a followup to the current article (@code{gnus-summary-followup}).
 @c @icon{gnus-summary-followup-with-original}
 @findex gnus-summary-followup-with-original
 Post a followup to the current article and include the original message
-(@code{gnus-summary-followup-with-original}).   This command uses the
+(@code{gnus-summary-followup-with-original}).  This command uses the
 process/prefix convention.
 
 @item S n
@@ -5548,7 +5550,7 @@ A time span.  Consists of an integer and a letter.  For example,
 (months) and @code{Y} (years).
 
 @item
-A specific date.  Looks like @code{YYYYY-MM-DD}.  The message will be
+A specific date.  Looks like @code{YYYY-MM-DD}.  The message will be
 delayed until that day, at a specific time (eight o'clock by default).
 See also @code{gnus-delay-default-hour}.
 
@@ -5805,7 +5807,7 @@ religiously) are marked with an @samp{S} in the second column
 Articles that according to the server haven't been shown to the user
 before are marked with a @samp{N} in the second column
 (@code{gnus-recent-mark}).  Note that not all servers support this
-mark, in which case it simply never appears. Compare with
+mark, in which case it simply never appears.  Compare with
 @code{gnus-unseen-mark}.
 
 @item
@@ -5816,7 +5818,7 @@ Compare with @code{gnus-recent-mark}.
 
 @item
 @vindex gnus-downloaded-mark
-When using the Gnus agent @pxref{Agent Basics}, articles may be
+When using the Gnus agent (@pxref{Agent Basics}), articles may be
 downloaded for unplugged (offline) viewing.  If you are using the
 @samp{%O} spec, these articles get the @samp{+} mark in that spec.
 (The variable @code{gnus-downloaded-mark} controls which character to
@@ -5824,7 +5826,7 @@ use.)
 
 @item
 @vindex gnus-undownloaded-mark
-When using the Gnus agent @pxref{Agent Basics}, some articles might
+When using the Gnus agent (@pxref{Agent Basics}), some articles might
 not have been downloaded.  Such articles cannot be viewed while you
 are unplugged (offline).  If you are using the @samp{%O} spec, these
 articles get the @samp{-} mark in that spec.  (The variable
@@ -5832,7 +5834,7 @@ articles get the @samp{-} mark in that spec.  (The variable
 
 @item
 @vindex gnus-downloadable-mark
-The Gnus agent @pxref{Agent Basics} downloads some articles
+The Gnus agent (@pxref{Agent Basics}) downloads some articles
 automatically, but it is also possible to explicitly mark articles for
 download, even if they would not be downloaded automatically.  Such
 explicitly-marked articles get the @samp{%} mark in the first column.
@@ -6179,7 +6181,7 @@ Push the current process mark set onto the stack
 
 @end table
 
-Also see the @kbd{&} command in @pxref{Searching for Articles} for how to
+Also see the @kbd{&} command in @ref{Searching for Articles}, for how to
 set process marks based on article body contents.
 
 
@@ -6203,14 +6205,14 @@ additional articles.
 @kindex / / (Summary)
 @findex gnus-summary-limit-to-subject
 Limit the summary buffer to articles that match some subject
-(@code{gnus-summary-limit-to-subject}). If given a prefix, exclude
+(@code{gnus-summary-limit-to-subject}).  If given a prefix, exclude
 matching articles.
 
 @item / a
 @kindex / a (Summary)
 @findex gnus-summary-limit-to-author
 Limit the summary buffer to articles that match some author
-(@code{gnus-summary-limit-to-author}). If given a prefix, exclude
+(@code{gnus-summary-limit-to-author}).  If given a prefix, exclude
 matching articles.
 
 @item / x
@@ -6218,7 +6220,7 @@ matching articles.
 @findex gnus-summary-limit-to-extra
 Limit the summary buffer to articles that match one of the ``extra''
 headers (@pxref{To From Newsgroups})
-(@code{gnus-summary-limit-to-extra}). If given a prefix, exclude
+(@code{gnus-summary-limit-to-extra}).  If given a prefix, exclude
 matching articles.
 
 @item / u
@@ -6275,8 +6277,8 @@ score (@code{gnus-summary-limit-to-score}).
 @findex gnus-summary-limit-to-display-predicate
 Limit the summary buffer to articles that satisfy the @code{display}
 group parameter predicate
-(@code{gnus-summary-limit-to-display-predicate}).  See @pxref{Group
-Parameters} for more on this predicate.
+(@code{gnus-summary-limit-to-display-predicate}).  @xref{Group
+Parameters}, for more on this predicate.
 
 @item / E
 @itemx M S
@@ -6324,19 +6326,19 @@ Exclude all dormant articles that have no children from the limit@*
 @kindex / C (Summary)
 @findex gnus-summary-limit-mark-excluded-as-read
 Mark all excluded unread articles as read
-(@code{gnus-summary-limit-mark-excluded-as-read}).   If given a prefix,
+(@code{gnus-summary-limit-mark-excluded-as-read}).  If given a prefix,
 also mark excluded ticked and dormant articles as read.
 
 @item / N
 @kindex / N (Summary)
 @findex gnus-summary-insert-new-articles
-Insert all new articles in the summary buffer. It scans for new emails
+Insert all new articles in the summary buffer.  It scans for new emails
 if @var{back-end}@code{-get-new-mail} is non-@code{nil}.
 
 @item / o
 @kindex / o (Summary)
 @findex gnus-summary-insert-old-articles
-Insert all old articles in the summary buffer. If given a numbered
+Insert all old articles in the summary buffer.  If given a numbered
 prefix, fetch this number of articles.
 
 @end table
@@ -6357,7 +6359,7 @@ trees, but unfortunately, the @code{References} header is often broken
 or simply missing.  Weird news propagation exacerbates the problem,
 so one has to employ other heuristics to get pleasing results.  A
 plethora of approaches exists, as detailed in horrible detail in
-@pxref{Customizing Threading}.
+@ref{Customizing Threading}.
 
 First, a quick overview of the concepts:
 
@@ -7165,7 +7167,7 @@ file.
 
 @findex gnus-cache-move-cache
 @code{gnus-cache-move-cache} will move your whole
-@code{gnus-cache-directory} to some other location. You get asked to
+@code{gnus-cache-directory} to some other location.  You get asked to
 where, isn't that cool?
 
 @node Persistent Articles
@@ -7329,9 +7331,9 @@ complete headers in the piped output.
 @kindex O P (Summary)
 @findex gnus-summary-muttprint
 @vindex gnus-summary-muttprint-program
-Save the current article into muttprint. That is, print it using the
+Save the current article into muttprint.  That is, print it using the
 external program @uref{http://muttprint.sourceforge.net/,
-Muttprint}. The program name and options to use is controlled by the
+Muttprint}.  The program name and options to use is controlled by the
 variable @code{gnus-summary-muttprint-program}.
 (@code{gnus-summary-muttprint}).
 
@@ -8171,7 +8173,7 @@ Signature}.
 Strip list identifiers specified in @code{gnus-list-identifiers}.  These
 are strings some mailing list servers add to the beginning of all
 @code{Subject} headers---for example, @samp{[zebra 4711]}.  Any leading
-@samp{Re: } is skipped before stripping. @code{gnus-list-identifiers}
+@samp{Re: } is skipped before stripping.  @code{gnus-list-identifiers}
 may not contain @code{\\(..\\)}.
 
 @table @code
@@ -8229,7 +8231,7 @@ banner something like @samp{Do You Yoo-hoo!?} in all articles he
 sends, you can use the following element to remove them:
 
 @lisp
-("@@yoo-hoo\\.co\\.jp\\'" . 
+("@@yoo-hoo\\.co\\.jp\\'" .
  "\n_+\nDo You Yoo-hoo!\\?\n.*\n.*\n")
 @end lisp
 
@@ -8266,7 +8268,7 @@ Number of lines of hidden text.
 @item gnus-cited-lines-visible
 @vindex gnus-cited-lines-visible
 The number of lines at the beginning of the cited text to leave
-shown. This can also be a cons cell with the number of lines at the top
+shown.  This can also be a cons cell with the number of lines at the top
 and bottom of the text, respectively, to remain visible.
 
 @end table
@@ -8761,17 +8763,17 @@ message ID or a mail address.  If it is one of the symbols @code{mid} or
 @code{mail}, Gnus will always assume that the string is a message ID or
 a mail address, respectively.  If this variable is set to the symbol
 @code{ask}, always query the user what do do.  If it is a function, this
-function will be called with the string as it's only argument.  The
+function will be called with the string as its only argument.  The
 function must return @code{mid}, @code{mail}, @code{invalid} or
 @code{ask}.  The default value is the function
 @code{gnus-button-mid-or-mail-heuristic}.
 
 @item gnus-button-mid-or-mail-heuristic
 @findex gnus-button-mid-or-mail-heuristic
-Function that guesses whether it's argument is a message ID or a mail
-address.  Returns @code{mid} it's a message IDs, @code{mail} if it's a
-mail address, @code{ask} if unsure and @code{invalid} if the string is
-invalid.
+Function that guesses whether its argument is a message ID or a mail
+address.  Returns @code{mid} if it's a message IDs, @code{mail} if
+it's a mail address, @code{ask} if unsure and @code{invalid} if the
+string is invalid.
 
 @item gnus-button-mid-or-mail-heuristic-alist
 @vindex gnus-button-mid-or-mail-heuristic-alist
@@ -8974,12 +8976,15 @@ buffer in Emacs versions that support them.
 @code{X-Face} headers are small black-and-white images supplied by the
 message headers (@pxref{X-Face}).
 
-Picons, on the other hand, reside on your own system, and Gnus will
-try to match the headers to what you have (@pxref{Picons}).
+@code{Face} headers are small colored images supplied by the message
+headers (@pxref{Face}).
 
 Smileys are those little @samp{:-)} symbols that people like to litter
 their messages with (@pxref{Smileys}).
 
+Picons, on the other hand, reside on your own system, and Gnus will
+try to match the headers to what you have (@pxref{Picons}).
+
 All these functions are toggles---if the elements already exist,
 they'll be removed.
 
@@ -9766,10 +9771,10 @@ Variables related to the display are:
 @item gnus-tree-brackets
 @vindex gnus-tree-brackets
 This is used for differentiating between ``real'' articles and
-``sparse'' articles.  The format is 
+``sparse'' articles.  The format is
 @example
-((@var{real-open} . @var{real-close}) 
- (@var{sparse-open} . @var{sparse-close}) 
+((@var{real-open} . @var{real-close})
+ (@var{sparse-open} . @var{sparse-close})
  (@var{dummy-open} . @var{dummy-close}))
 @end example
 and the default is @code{((?[ . ?]) (?( . ?)) (?@{ . ?@}) (?< . ?>))}.
@@ -10019,7 +10024,7 @@ suggestions you find reasonable.  (Note that
 @menu
 * Summary Group Information::   Information oriented commands.
 * Searching for Articles::      Multiple article commands.
-* Summary Generation Commands::  
+* Summary Generation Commands::
 * Really Various Summary Commands::  Those pesky non-conformant commands.
 @end menu
 
@@ -10093,7 +10098,7 @@ variables and their default values (when the default values are not
 @code{nil}), that should be made global while the summary buffer is
 active.  These variables can be used to set variables in the group
 parameters while still allowing them to affect operations done in
-other buffers. For example:
+other buffers.  For example:
 
 @lisp
 (setq gnus-newsgroup-variables
@@ -10545,13 +10550,13 @@ manual (@pxref{Security, ,Security, message, Message Manual}).
 @vindex mm-verify-option
 Option of verifying signed parts.  @code{never}, not verify;
 @code{always}, always verify; @code{known}, only verify known
-protocols. Otherwise, ask user.
+protocols.  Otherwise, ask user.
 
 @item mm-decrypt-option
 @vindex mm-decrypt-option
 Option of decrypting encrypted parts.  @code{never}, no decryption;
 @code{always}, always decrypt; @code{known}, only decrypt known
-protocols. Otherwise, ask user.
+protocols.  Otherwise, ask user.
 
 @item mml1991-use
 @vindex mml1991-use
@@ -10757,13 +10762,13 @@ Remove the @code{Newsgroups} header if it only contains the current group
 name.
 @item to-address
 Remove the @code{To} header if it only contains the address identical to
-the current groups's @code{to-address} parameter.
+the current group's @code{to-address} parameter.
 @item to-list
 Remove the @code{To} header if it only contains the address identical to
-the current groups's @code{to-list} parameter.
+the current group's @code{to-list} parameter.
 @item cc-list
 Remove the @code{CC} header if it only contains the address identical to
-the current groups's @code{to-list} parameter.
+the current group's @code{to-list} parameter.
 @item date
 Remove the @code{Date} header if the article is less than three days
 old.
@@ -10813,7 +10818,7 @@ The following commands are available when you have placed point over a
 @kindex RET (Article)
 @itemx BUTTON-2 (Article)
 Toggle displaying of the @acronym{MIME} object
-(@code{gnus-article-press-button}). If built-in viewers can not display
+(@code{gnus-article-press-button}).  If built-in viewers can not display
 the object, Gnus resorts to external viewers in the @file{mailcap}
 files.  If a viewer has the @samp{copiousoutput} specification, the
 object is displayed inline.
@@ -10883,7 +10888,7 @@ Insert the contents of the @acronym{MIME} object into the buffer
 (@code{gnus-mime-inline-part}) as text/plain.  If given a prefix, insert
 the raw contents without decoding.  If given a numerical prefix, you can
 do semi-manual charset stuff (see
-@code{gnus-summary-show-article-charset-alist} in @pxref{Paging the
+@code{gnus-summary-show-article-charset-alist} in @ref{Paging the
 Article}).
 
 @findex gnus-mime-view-part-internally
@@ -10928,7 +10933,7 @@ to look at you disdainfully, and you'll feel rather stupid.)
 
 Any similarity to real events and people is purely coincidental.  Ahem.
 
-Also see @pxref{MIME Commands}.
+Also @pxref{MIME Commands}.
 
 
 @node Customizing Articles
@@ -11051,6 +11056,10 @@ is controlled by @code{gnus-body-boundary-delimiter}.
 
 @xref{X-Face}.
 
+@item gnus-treat-display-face (head)
+
+@xref{Face}.
+
 @item gnus-treat-emphasize (t, head, integer)
 @item gnus-treat-fill-article (t, integer)
 @item gnus-treat-fill-long-lines (t, integer)
@@ -11311,7 +11320,7 @@ on your setup (@pxref{Posting Server}).
 * Signing and encrypting::      How to compose secure messages.
 @end menu
 
-Also see @pxref{Canceling and Superseding} for information on how to
+Also @pxref{Canceling and Superseding} for information on how to
 remove articles you shouldn't have posted.
 
 
@@ -11347,7 +11356,7 @@ press R anyway, this variable might be for you.
 If non-@code{nil}, Gnus also requests confirmation according to
 @code{gnus-confirm-mail-reply-to-news} when replying to mail.  This is
 useful for treating mailing lists like newsgroups.
+
 @end table
 
 
@@ -12760,7 +12769,7 @@ Password to use when logging in on the intermediate host.
 @vindex nntp-via-envuser
 If non-@code{nil}, the intermediate @code{telnet} session (client and
 server both) will support the @code{ENVIRON} option and not prompt for
-login name. This works for Solaris @code{telnet}, for instance.
+login name.  This works for Solaris @code{telnet}, for instance.
 
 @item nntp-via-shell-prompt
 @vindex nntp-via-shell-prompt
@@ -12792,7 +12801,7 @@ Address of the intermediate host to connect to.
 @subsubsection Common Variables
 
 The following variables affect the behavior of all, or several of the
-pre-made connection functions. When not specified, all functions are
+pre-made connection functions.  When not specified, all functions are
 affected.
 
 @table @code
@@ -12930,7 +12939,7 @@ course.
 * Group Mail Splitting::        Use group customize to drive mail splitting.
 * Incorporating Old Mail::      What about the old mail you have?
 * Expiring Mail::               Getting rid of unwanted mail.
-* Washing Mail::                Removing gruft from the mail you get.
+* Washing Mail::                Removing cruft from the mail you get.
 * Duplicates::                  Dealing with duplicated mail.
 * Not Reading Mail::            Using mail back ends for reading other files.
 * Choosing a Mail Back End::    Gnus can read a variety of mail formats.
@@ -12960,7 +12969,7 @@ deleted?  How awful!
 But, no, it means that old messages are @dfn{expired} according to some
 scheme or other.  For news messages, the expire process is controlled by
 the news administrator; for mail, the expire process is controlled by
-you.  The expire process for mail is covered in depth in @pxref{Expiring
+you.  The expire process for mail is covered in depth in @ref{Expiring
 Mail}.
 
 What many Gnus users find, after using it a while for both news and
@@ -13045,6 +13054,7 @@ Especially @pxref{Choosing a Mail Back End} and @pxref{Expiring Mail}.
 @subsection Splitting Mail
 @cindex splitting mail
 @cindex mail splitting
+@cindex mail filtering (splitting)
 
 @vindex nnmail-split-methods
 The @code{nnmail-split-methods} variable says how the incoming mail is
@@ -13132,7 +13142,7 @@ useful if you want to match articles based on the raw header data.
 @vindex nnmail-resplit-incoming
 By default, splitting is performed on all incoming messages.  If you
 specify a @code{directory} entry for the variable @code{mail-sources}
-@pxref{Mail Source Specifiers}, however, then splitting does
+(@pxref{Mail Source Specifiers}), however, then splitting does
 @emph{not} happen by default.  You can set the variable
 @code{nnmail-resplit-incoming} to a non-@code{nil} value to make
 splitting happen even in this case.  (This variable has no effect on
@@ -13530,7 +13540,7 @@ Get mail from a webmail server, such as @uref{www.hotmail.com},
 @uref{webmail.netscape.com}, @uref{www.netaddress.com},
 @uref{mail.yahoo.com}.
 
-NOTE: Webmail largely depends cookies. A "one-line-cookie" patch is
+NOTE: Webmail largely depends cookies.  A "one-line-cookie" patch is
 required for url "4.0pre.46".
 
 WARNING: Mails may be lost.  NO WARRANTY.
@@ -13904,11 +13914,22 @@ field names or words.  In other words, all @var{value}'s are wrapped in
 @samp{\<} and @samp{\>} pairs.
 
 @vindex nnmail-split-abbrev-alist
-@var{field} and @var{value} can also be Lisp symbols, in that case they
-are expanded as specified by the variable
-@code{nnmail-split-abbrev-alist}.  This is an alist of cons cells, where
-the @code{car} of a cell contains the key, and the @code{cdr} contains the associated
-value.
+@var{field} and @var{value} can also be Lisp symbols, in that case
+they are expanded as specified by the variable
+@code{nnmail-split-abbrev-alist}.  This is an alist of cons cells,
+where the @code{car} of a cell contains the key, and the @code{cdr}
+contains the associated value.  Predefined entries in
+@code{nnmail-split-abbrev-alist} include:
+
+@table @code
+@item from
+Matches the @samp{From}, @samp{Sender} and @samp{Resent-From} fields.
+@item to
+Matches the @samp{To}, @samp{Cc}, @samp{Apparently-To},
+@samp{Resent-To} and @samp{Resent-Cc} fields.
+@item any
+Is the union of the @code{from} and @code{to} entries.
+@end table
 
 @vindex nnmail-split-fancy-syntax-table
 @code{nnmail-split-fancy-syntax-table} is the syntax table in effect
@@ -13975,10 +13996,10 @@ messages goes into the new group.
 
 Also see the variable @code{nnmail-cache-ignore-groups} if you don't
 want certain groups to be recorded in the cache.  For example, if all
-outgoing messages are written to an `outgoing' group, you could set
+outgoing messages are written to an ``outgoing'' group, you could set
 @code{nnmail-cache-ignore-groups} to match that group name.
 Otherwise, answers to all your messages would end up in the
-`outgoing' group.
+``outgoing'' group.
 
 
 @node Group Mail Splitting
@@ -14188,9 +14209,9 @@ repeating one more time, with some spurious capitalizations: IF you do
 NOT mark articles as EXPIRABLE, Gnus will NEVER delete those ARTICLES.
 
 You do not have to mark articles as expirable by hand.  Gnus provides
-two features, called `auto-expire' and `total-expire', that can help you
-with this.  In a nutshell, `auto-expire' means that Gnus hits @kbd{E}
-for you when you select an article.  And `total-expire' means that Gnus
+two features, called ``auto-expire'' and ``total-expire'', that can help you
+with this.  In a nutshell, ``auto-expire'' means that Gnus hits @kbd{E}
+for you when you select an article.  And ``total-expire'' means that Gnus
 considers all articles as expirable that are read.  So, in addition to
 the articles marked @samp{E}, also the articles marked @samp{r},
 @samp{R}, @samp{O}, @samp{K}, @samp{Y} and so on are considered
@@ -14208,8 +14229,8 @@ advantage of auto-expire is that you get more marks to work with: for
 the articles that are supposed to stick around, you can still choose
 between tick and dormant and read marks.  But with total-expire, you
 only have dormant and ticked to choose from.  The advantage of
-total-expire is that it works well with adaptive scoring @pxref{Adaptive
-Scoring}.  Auto-expire works with normal scoring but not with adaptive
+total-expire is that it works well with adaptive scoring (@pxref{Adaptive
+Scoring}).  Auto-expire works with normal scoring but not with adaptive
 scoring.
 
 @vindex gnus-auto-expirable-newsgroups
@@ -14324,9 +14345,9 @@ expire mail to groups according to the variable
 
 With this setup, any mail that has @code{IMPORTANT} in its Subject
 header and was sent in the year @code{YYYY} and month @code{MMM}, will
-get expired to the group @code{nnfolder:IMPORTANT.YYYY.MMM}. If its
+get expired to the group @code{nnfolder:IMPORTANT.YYYY.MMM}.  If its
 From or To header contains the string @code{boss}, it will get expired
-to @code{nnfolder:Work}. All other mail will get expired to
+to @code{nnfolder:Work}.  All other mail will get expired to
 @code{nnfolder:Archive-YYYY}.
 
 @vindex nnmail-keep-last-article
@@ -14812,7 +14833,7 @@ maildirs or symlinks to maildirs (and nothing else; do not choose a
 directory already used for other purposes).  Each maildir will be
 represented in Gnus as a newsgroup on that server; the filename of the
 symlink will be the name of the group.  Any filenames in the directory
-starting with `.' are ignored.  The directory is scanned when you
+starting with @samp{.} are ignored.  The directory is scanned when you
 first start Gnus, and each time you type @kbd{g} in the group buffer;
 if any maildirs have been removed or added, nnmaildir notices at these
 times.
@@ -15272,13 +15293,13 @@ filename is unrelated to the article number in Gnus.  @code{nnmaildir}
 also stores the equivalent of @code{nnml}'s overview files in one file
 per article, so it uses about twice as many inodes as @code{nnml}.  (Use
 @code{df -i} to see how plentiful your inode supply is.)  If this slows
-you down or takes up very much space, consider switching to 
+you down or takes up very much space, consider switching to
 @uref{http://www.namesys.com/, ReiserFS} or another non-block-structured
 file system.
 
 Since maildirs don't require locking for delivery, the maildirs you use
 as groups can also be the maildirs your mail is directly delivered to.
-This means you can skip Gnus's mail splitting if your mail is already
+This means you can skip Gnus' mail splitting if your mail is already
 organized into different mailboxes during delivery.  A @code{directory}
 entry in @code{mail-sources} would have a similar effect, but would
 require one set of mailboxes for spooling deliveries (in mbox format,
@@ -15341,7 +15362,7 @@ Gnus has been getting a bit of a collection of back ends for providing
 interfaces to these sources.
 
 @menu
-* Archiving Mail::              
+* Archiving Mail::
 * Web Searches::                Creating groups from articles that match a string.
 * Slashdot::                    Reading the Slashdot comments.
 * Ultimate::                    The Ultimate Bulletin Board systems.
@@ -15382,7 +15403,7 @@ To archive an entire @code{nnml}, @code{nnfolder}, or @code{nnmaildir}
 server, take a recursive copy of the server directory.  There is no need
 to shut down Gnus, so archiving may be invoked by @code{cron} or
 similar.  You restore the data by restoring the directory tree, and
-adding a server definition pointing to that directory in Gnus. The
+adding a server definition pointing to that directory in Gnus.  The
 @ref{Article Backlog}, @ref{Asynchronous Fetching} and other things
 might interfere with overwriting data, so you may want to shut down Gnus
 before you restore the data.
@@ -15392,7 +15413,7 @@ It is also possible to archive individual @code{nnml},
 For @code{nnml} or @code{nnmaildir}, you copy all files in the group's
 directory.  For @code{nnfolder} you need to copy both the base folder
 file itself (@file{FOO}, say), and the marks file (@file{FOO.mrk} in
-this example). Restoring the group is done with @kbd{G m} from the Group
+this example).  Restoring the group is done with @kbd{G m} from the Group
 buffer.  The last step makes Gnus notice the new directory.
 @code{nnmaildir} notices the new directory automatically, so @kbd{G m}
 is unnecessary in that case.
@@ -15446,7 +15467,7 @@ Virtual server variables:
 @item nnweb-type
 @vindex nnweb-type
 What search engine type is being used.  The currently supported types
-are @code{google}, @code{dejanews}, and @code{gmane}. Note that
+are @code{google}, @code{dejanews}, and @code{gmane}.  Note that
 @code{dejanews} is an alias to @code{google}.
 
 @item nnweb-search
@@ -15760,9 +15781,10 @@ entry in @code{gnus-secondary-select-methods}.  With this, Gnus will
 manipulate mails stored on the @acronym{IMAP} server.  This is the kind of
 usage explained in this section.
 
-A server configuration in @file{~/.gnus.el} with a few @acronym{IMAP} servers
-might look something like the following. (Note that for @acronym{TLS}/@acronym{SSL}, you
-need external programs and libraries, see below.)
+A server configuration in @file{~/.gnus.el} with a few @acronym{IMAP}
+servers might look something like the following.  (Note that for
+@acronym{TLS}/@acronym{SSL}, you need external programs and libraries,
+see below.)
 
 @lisp
 (setq gnus-secondary-select-methods
@@ -15840,8 +15862,9 @@ Example server specification:
 @vindex nnimap-stream
 The type of stream used to connect to your server.  By default, nnimap
 will detect and automatically use all of the below, with the exception
-of @acronym{TLS}/@acronym{SSL}. (@acronym{IMAP} over @acronym{TLS}/@acronym{SSL} is being replaced by STARTTLS, which
-can be automatically detected, but it's not widely deployed yet.)
+of @acronym{TLS}/@acronym{SSL}.  (@acronym{IMAP} over
+@acronym{TLS}/@acronym{SSL} is being replaced by STARTTLS, which can
+be automatically detected, but it's not widely deployed yet.)
 
 Example server specification:
 
@@ -15854,10 +15877,10 @@ Please note that the value of @code{nnimap-stream} is a symbol!
 
 @itemize @bullet
 @item
-@dfn{gssapi:} Connect with GSSAPI (usually Kerberos 5). Requires the
+@dfn{gssapi:} Connect with GSSAPI (usually Kerberos 5).  Requires the
 @samp{gsasl} or @samp{imtest} program.
 @item
-@dfn{kerberos4:} Connect with Kerberos 4. Requires the @samp{imtest} program.
+@dfn{kerberos4:} Connect with Kerberos 4.  Requires the @samp{imtest} program.
 @item
 @dfn{starttls:} Connect via the STARTTLS extension (similar to
 @acronym{TLS}/@acronym{SSL}).  Requires the external library @samp{starttls.el} and program
@@ -15900,11 +15923,11 @@ tried.
 
 @vindex imap-ssl-program
 For @acronym{SSL} connections, the OpenSSL program is available from
-@uref{http://www.openssl.org/}. OpenSSL was formerly known as SSLeay,
+@uref{http://www.openssl.org/}.  OpenSSL was formerly known as SSLeay,
 and nnimap support it too---although the most recent versions of
 SSLeay, 0.9.x, are known to have serious bugs making it
-useless. Earlier versions, especially 0.8.x, of SSLeay are known to
-work. The variable @code{imap-ssl-program} contain parameters to pass
+useless.  Earlier versions, especially 0.8.x, of SSLeay are known to
+work.  The variable @code{imap-ssl-program} contain parameters to pass
 to OpenSSL/SSLeay.
 
 @vindex imap-shell-program
@@ -15929,27 +15952,27 @@ Please note that the value of @code{nnimap-authenticator} is a symbol!
 
 @itemize @bullet
 @item
-@dfn{gssapi:} GSSAPI (usually kerberos 5) authentication. Requires
+@dfn{gssapi:} GSSAPI (usually kerberos 5) authentication.  Requires
 external program @code{gsasl} or @code{imtest}.
 @item
-@dfn{kerberos4:} Kerberos 4 authentication. Requires external program
+@dfn{kerberos4:} Kerberos 4 authentication.  Requires external program
 @code{imtest}.
 @item
-@dfn{digest-md5:} Encrypted username/password via DIGEST-MD5. Requires
+@dfn{digest-md5:} Encrypted username/password via DIGEST-MD5.  Requires
 external library @code{digest-md5.el}.
 @item
 @dfn{cram-md5:} Encrypted username/password via CRAM-MD5.
 @item
 @dfn{login:} Plain-text username/password via LOGIN.
 @item
-@dfn{anonymous:} Login as `anonymous', supplying your email address as password.
+@dfn{anonymous:} Login as ``anonymous'', supplying your email address as password.
 @end itemize
 
 @item nnimap-expunge-on-close
 @cindex expunging
 @vindex nnimap-expunge-on-close
-Unlike Parmenides the @acronym{IMAP} designers has decided that things that
-doesn't exist actually does exist.  More specifically, @acronym{IMAP} has
+Unlike Parmenides the @acronym{IMAP} designers have decided things that
+don't exist actually do exist.  More specifically, @acronym{IMAP} has
 this concept of marking articles @code{Deleted} which doesn't actually
 delete them, and this (marking them @code{Deleted}, that is) is what
 nnimap does when you delete an article in Gnus (with @kbd{B DEL} or
@@ -15985,10 +16008,10 @@ articles or not.
 @vindex nnimap-importantize-dormant
 
 If non-@code{nil} (the default), marks dormant articles as ticked (as
-well), for other @acronym{IMAP} clients. Within Gnus, dormant articles will
+well), for other @acronym{IMAP} clients.  Within Gnus, dormant articles will
 naturally still (only) be marked as dormant.  This is to make dormant
 articles stand out, just like ticked articles, in other @acronym{IMAP}
-clients. (In other words, Gnus has two ``Tick'' marks and @acronym{IMAP}
+clients.  (In other words, Gnus has two ``Tick'' marks and @acronym{IMAP}
 has only one.)
 
 Probably the only reason for frobing this would be if you're trying
@@ -16015,7 +16038,7 @@ UID set and the second @code{%s} is replaced by a date.
 
 Probably the only useful value to change this to is
 @code{"UID %s NOT SENTSINCE %s"}, which makes nnimap use the Date: in
-messages instead of the internal article date. See section 6.4.4 of
+messages instead of the internal article date.  See section 6.4.4 of
 RFC 2060 for more information on valid strings.
 
 @item nnimap-authinfo-file
@@ -16049,14 +16072,18 @@ Courier 1.7.1 did.
 @subsection Splitting in IMAP
 @cindex splitting imap mail
 
-Splitting is something Gnus users has loved and used for years, and now
+Splitting is something Gnus users have loved and used for years, and now
 the rest of the world is catching up.  Yeah, dream on, not many
-@acronym{IMAP} server has server side splitting and those that have splitting
-seem to use some non-standard protocol.  This means that @acronym{IMAP}
-support for Gnus has to do it's own splitting.
+@acronym{IMAP} servers have server side splitting and those that have
+splitting seem to use some non-standard protocol.  This means that
+@acronym{IMAP} support for Gnus has to do its own splitting.
 
 And it does.
 
+(Incidentally, people seem to have been dreaming on, and Sieve has
+gaining a market share and is supported by several IMAP servers.
+Fortunately, Gnus support it too, @xref{Sieve Commands}.)
+
 Here are the variables of interest:
 
 @table @code
@@ -16112,7 +16139,7 @@ This will put all articles from the nnimap mailing list into mailbox
 INBOX.nnimap, all articles containing MAKE MONEY in the Subject: line
 into INBOX.junk and everything else in INBOX.private.
 
-The first string may contain `\\1' forms, like the ones used by
+The first string may contain @samp{\\1} forms, like the ones used by
 replace-match to insert sub-expressions from the matched text.  For
 instance:
 
@@ -16176,7 +16203,7 @@ split, it is a string and the default is @samp{UNSEEN UNDELETED}.
 
 This might be useful if you use another @acronym{IMAP} client to read mail in
 your inbox but would like Gnus to split all articles in the inbox
-regardless of readedness. Then you might change this to
+regardless of readedness.  Then you might change this to
 @samp{UNDELETED}.
 
 @item nnimap-split-fancy
@@ -16186,7 +16213,7 @@ regardless of readedness. Then you might change this to
 
 It's possible to set @code{nnimap-split-rule} to
 @code{nnmail-split-fancy} if you want to use fancy
-splitting. @xref{Fancy Mail Splitting}.
+splitting.  @xref{Fancy Mail Splitting}.
 
 However, to be able to have different fancy split rules for nnmail and
 nnimap back ends you can set @code{nnimap-split-rule} to
@@ -17090,7 +17117,7 @@ All marks in the virtual group will stick to the articles in the
 component groups.  So if you tick an article in a virtual group, the
 article will also be ticked in the component group from whence it
 came.  (And vice versa---marks from the component groups will also be
-shown in the virtual group.). To create an empty virtual group, run
+shown in the virtual group.).  To create an empty virtual group, run
 @kbd{G V} (@code{gnus-group-make-empty-virtual}) in the group buffer
 and edit the method regexp with @kbd{M-e}
 (@code{gnus-group-edit-group-method})
@@ -17307,15 +17334,15 @@ already fetched while in this mode.
 You then decide to see whether any new news has arrived.  You connect
 your machine to the net (using PPP or whatever), and then hit @kbd{J j}
 to make Gnus become @dfn{plugged} and use @kbd{g} to check for new mail
-as usual.  To check for new mail in unplugged mode, see (@pxref{Mail
+as usual.  To check for new mail in unplugged mode (@pxref{Mail
 Source Specifiers}).
 
 @item
-You can then read the new news immediately, or you can download the news
-onto your local machine.  If you want to do the latter, you press @kbd{g}
-to check if there are any new news and then @kbd{J
-s} to fetch all the eligible articles in all the groups.  (To let Gnus
-know which articles you want to download, @pxref{Agent Categories}.)
+You can then read the new news immediately, or you can download the
+news onto your local machine.  If you want to do the latter, you press
+@kbd{g} to check if there are any new news and then @kbd{J s} to fetch
+all the eligible articles in all the groups.  (To let Gnus know which
+articles you want to download, @pxref{Agent Categories}).
 
 @item
 After fetching the articles, you press @kbd{J j} to make Gnus become
@@ -17345,7 +17372,7 @@ all @code{nntp} and @code{nnimap} servers in @code{gnus-select-method} and
 Decide on download policy.  It's fairly simple once you decide whether
 you are going to use agent categories, topic parameters, and/or group
 parameters to implement your policy.  If you're new to gnus, it
-is probably best to start with a category @xref{Agent Categories}.
+is probably best to start with a category, @xref{Agent Categories}.
 
 Both topic parameters (@pxref{Topic Parameters}) and agent categories
 (@pxref{Agent Categories}) provide for setting a policy that applies
@@ -17388,7 +17415,7 @@ Since you can set agent parameters in several different places we have
 a rule to decide which source to believe.  This rule specifies that
 the parameter sources are checked in the following order: group
 parameters, topic parameters, agent category, and finally customizable
-variables. So you can mix all of these sources to produce a wide range
+variables.  So you can mix all of these sources to produce a wide range
 of behavior, just don't blame me if you don't remember where you put
 your settings.
 
@@ -17585,7 +17612,7 @@ just don't give a damn.
 The above predicates apply to @emph{all} the groups which belong to the
 category.  However, if you wish to have a specific predicate for an
 individual group within a category, or you're just too lazy to set up a
-new category, you can enter a group's individual predicate in it's group
+new category, you can enter a group's individual predicate in its group
 parameters like so:
 
 @lisp
@@ -17934,7 +17961,7 @@ Remove the downloading mark from the article
 @findex gnus-agent-toggle-mark
 Toggle whether to download the article
 (@code{gnus-agent-toggle-mark}).  The download mark is @samp{%} by
-default. 
+default.
 
 @item J c
 @kindex J c (Agent Summary)
@@ -17944,7 +17971,7 @@ Mark all articles as read (@code{gnus-agent-catchup}) that are neither cached, d
 @item J S
 @kindex J S (Agent Summary)
 @findex gnus-agent-fetch-group
-Download all eligible (See @pxref{Agent Categories}) articles in this group.
+Download all eligible (@pxref{Agent Categories}) articles in this group.
 (@code{gnus-agent-fetch-group}).
 
 @item J s
@@ -18005,8 +18032,8 @@ the download status of each article so that you always know which
 articles will be available when unplugged.
 
 The first visual effect is the @samp{%O} spec.  If you customize
-gnus-summary-line-format to include this specifier, you will add a
-single character field that indicates an article's download status.
+@code{gnus-summary-line-format} to include this specifier, you will add
+single character field that indicates an article's download status.
 Articles that have been fetched into either the Agent or the Cache,
 will display @code{gnus-downloaded-mark} (defaults to @samp{+}).  All
 other articles will display @code{gnus-undownloaded-mark} (defaults to
@@ -18036,8 +18063,8 @@ faces will be obscured by the undownloaded faces.  If this is your
 situation, you have two choices available.  First, you can completely
 disable the undownload faces by customizing
 @code{gnus-summary-highlight} to delete the three cons-cells that
-refer to the gnus-summary*-undownloaded-face faces.  Second, if you
-prefer to take a more fine-grained approach, you may set the
+refer to the @code{gnus-summary-*-undownloaded-face} faces.  Second, if
+you prefer to take a more fine-grained approach, you may set the
 @code{agent-disable-undownloaded-faces} group parameter to t.  This
 parameter, like all other agent parameters, may be set on an Agent
 Category (@pxref{Agent Categories}), a Group Topic (@pxref{Topic
@@ -18074,7 +18101,7 @@ sense if you are using a nntp or nnimap back end.
 @cindex Gnus agent expiry
 @cindex expiry
 
-The Agent back end, @code{nnagent}, doesn't handle expiry. Well, at
+The Agent back end, @code{nnagent}, doesn't handle expiry.  Well, at
 least it doesn't handle it like other back ends.  Instead, there are
 special @code{gnus-agent-expire} and @code{gnus-agent-expire-group}
 commands that will expire all read articles that are older than
@@ -18084,7 +18111,7 @@ efficient, and it's not a particularly good idea to interrupt them (with
 @kbd{C-g} or anything else) once you've started one of them.
 
 Note that other functions, e.g. @code{gnus-request-expire-articles},
-might run @code{gnus-agent-expire} for you to keep the agent 
+might run @code{gnus-agent-expire} for you to keep the agent
 synchronized with the group.
 
 The agent parameter @code{agent-enable-expiration} may be used to
@@ -18258,7 +18285,7 @@ read.  The default is t.
 @vindex gnus-agent-consider-all-articles
 If @code{gnus-agent-consider-all-articles} is non-@code{nil}, the
 agent will fetch all missing headers.  When @code{nil}, the agent will
-fetch only new headers. The default is @code{nil}.
+fetch only new headers.  The default is @code{nil}.
 
 @item gnus-agent-max-fetch-size
 @vindex gnus-agent-max-fetch-size
@@ -18377,7 +18404,7 @@ may ask:
 @code{gnus-agent-fetch-selected-article} to
 @code{gnus-select-article-hook}.
 
-@item If I read an article while plugged, and the article already exists in 
+@item If I read an article while plugged, and the article already exists in
 the Agent, will it get downloaded once more?
 
 @strong{No}, unless @code{gnus-agent-cache} is @code{nil}.
@@ -18920,8 +18947,8 @@ Anyway, if you'd like to dig into it yourself, here's an example:
  (eval (ding)))
 @end lisp
 
-This example demonstrates most score file elements.  For a different
-approach, see @pxref{Advanced Scoring}.
+This example demonstrates most score file elements.  @xref{Advanced
+Scoring}, for a different approach.
 
 Even though this looks much like Lisp code, nothing here is actually
 @code{eval}ed.  The Lisp reader is used to read this form, though, so it
@@ -19534,10 +19561,10 @@ that Gnus has to request every single article from the back end to find
 matches.  This takes a long time in big groups.
 
 Now, there's not much you can do about this for news groups, but for
-mail groups, you have greater control.  In the @pxref{To From
-Newsgroups} section of the manual, it's explained in greater detail what
-this mechanism does, but here's a cookbook example for @code{nnml} on
-how to allow scoring on the @samp{To} and @samp{Cc} headers.
+mail groups, you have greater control.  In @ref{To From Newsgroups},
+it's explained in greater detail what this mechanism does, but here's
+a cookbook example for @code{nnml} on how to allow scoring on the
+@samp{To} and @samp{Cc} headers.
 
 Put the following in your @file{~/.gnus.el} file.
 
@@ -21246,7 +21273,7 @@ Emacs is idle:
 (gnus-demon-scan-pgp 60 t)
 @end lisp
 
-This @var{time} parameter and than @var{idle} parameter work together
+This @var{time} parameter and that @var{idle} parameter work together
 in a strange, but wonderful fashion.  Basically, if @var{idle} is
 @code{nil}, then the function will be called every @var{time} minutes.
 
@@ -21338,7 +21365,7 @@ by default.
 @item gnus-nocem-groups
 @vindex gnus-nocem-groups
 Gnus will look for NoCeM messages in the groups in this list.  The
-default is 
+default is
 @lisp
 ("news.lists.filters" "news.admin.net-abuse.bulletins"
  "alt.nocem.misc" "news.admin.net-abuse.announce")
@@ -21557,139 +21584,14 @@ support images yet.}, is able to display pictures and stuff, so Gnus has
 taken advantage of that.
 
 @menu
-* Picons::                      How to display pictures of what you're reading.
-* Smileys::                     Show all those happy faces the way they were meant to be shown.
 * X-Face::                      Display a funky, teensy black-and-white image.
+* Face::                        Display a funkier, teensier colored image.
+* Smileys::                     Show all those happy faces the way they were meant to be shown.
+* Picons::                      How to display pictures of what you're reading.
 * XVarious::                    Other XEmacsy Gnusey variables.
 @end menu
 
 
-@node Picons
-@subsection Picons
-
-@iftex
-@iflatex
-\include{picons}
-@end iflatex
-@end iftex
-
-So@dots{}  You want to slow down your news reader even more!  This is a
-good way to do so.  Its also a great way to impress people staring
-over your shoulder as you read news.
-
-What are Picons?  To quote directly from the Picons Web site:
-
-@iftex
-@iflatex
-\margindex{}
-@end iflatex
-@end iftex
-
-@quotation
-@dfn{Picons} is short for ``personal icons''.  They're small,
-constrained images used to represent users and domains on the net,
-organized into databases so that the appropriate image for a given
-e-mail address can be found.  Besides users and domains, there are picon
-databases for Usenet newsgroups and weather forecasts.  The picons are
-in either monochrome @code{XBM} format or color @code{XPM} and
-@code{GIF} formats.
-@end quotation
-
-@vindex gnus-picon-databases
-For instructions on obtaining and installing the picons databases,
-point your Web browser at
-@uref{http://www.cs.indiana.edu/picons/ftp/index.html}.
-
-If you are using Debian GNU/Linux, saying @samp{apt-get install
-picons.*} will install the picons where Gnus can find them.
-
-To enable displaying picons, simply make sure that
-@code{gnus-picon-databases} points to the directory containing the
-Picons databases.
-
-The following variables offer control over where things are located.
-
-@table @code
-
-@item gnus-picon-databases
-@vindex gnus-picon-databases
-The location of the picons database.  This is a list of directories
-containing the @file{news}, @file{domains}, @file{users} (and so on)
-subdirectories.  Defaults to @code{("/usr/lib/picon"
-"/usr/local/faces")}.
-
-@item gnus-picon-news-directories
-@vindex gnus-picon-news-directories
-List of subdirectories to search in @code{gnus-picon-databases} for
-newsgroups faces.  @code{("news")} is the default.
-
-@item gnus-picon-user-directories
-@vindex gnus-picon-user-directories
-List of subdirectories to search in @code{gnus-picon-databases} for user
-faces.  @code{("users" "usenix" "local" "misc")} is the default.
-
-@item gnus-picon-domain-directories
-@vindex gnus-picon-domain-directories
-List of subdirectories to search in @code{gnus-picon-databases} for
-domain name faces.  Defaults to @code{("domains")}.  Some people may
-want to add @samp{"unknown"} to this list.
-
-@item gnus-picon-file-types
-@vindex gnus-picon-file-types
-Ordered list of suffixes on picon file names to try.  Defaults to
-@code{("xpm" "gif" "xbm")} minus those not built-in your Emacs.
-
-@end table
-
-@node Smileys
-@subsection Smileys
-@cindex smileys
-
-@iftex
-@iflatex
-\gnusfig{-3cm}{0.5cm}{\epsfig{figure=ps/BigFace,height=20cm}}
-\input{smiley}
-@end iflatex
-@end iftex
-
-@dfn{Smiley} is a package separate from Gnus, but since Gnus is
-currently the only package that uses Smiley, it is documented here.
-
-In short---to use Smiley in Gnus, put the following in your
-@file{~/.gnus.el} file:
-
-@lisp
-(setq gnus-treat-display-smileys t)
-@end lisp
-
-Smiley maps text smiley faces---@samp{:-)}, @samp{8-)}, @samp{:-(} and
-the like---to pictures and displays those instead of the text smiley
-faces.  The conversion is controlled by a list of regexps that matches
-text and maps that to file names.
-
-@vindex smiley-regexp-alist
-The alist used is specified by the @code{smiley-regexp-alist}
-variable.  The first item in each element is the regexp to be matched;
-the second element is the regexp match group that is to be replaced by
-the picture; and the third element is the name of the file to be
-displayed.
-
-The following variables customize where Smiley will look for these
-files:
-
-@table @code
-
-@item smiley-data-directory
-@vindex smiley-data-directory
-Where Smiley will look for smiley faces files.
-
-@item gnus-smiley-file-types
-@vindex gnus-smiley-file-types
-List of suffixes on smiley file names to try.
-
-@end table
-
-
 @node X-Face
 @subsection X-Face
 @cindex x-face
@@ -21701,7 +21603,6 @@ readers.
 
 @cindex x-face
 @findex gnus-article-display-x-face
-@findex gnus-article-x-face-command
 @vindex gnus-article-x-face-command
 @vindex gnus-article-x-face-too-ugly
 @iftex
@@ -21785,6 +21686,173 @@ Using the last function would be something like this:
 @end lisp
 
 
+@node Face
+@subsection Face
+@cindex face
+
+@c #### FIXME: faces and x-faces'implementations should really be harmonized.
+
+@code{Face} headers are essentially a funkier version of @code{X-Face}
+ones. They describe a 48x48 pixel colored image that's supposed to
+represent the author of the message.
+
+@cindex face
+@findex gnus-article-display-face
+The contents of a @code{Face} header must be a base64 encoded PNG image.
+See @uref{http://quimby.gnus.org/circus/face/} for the precise
+specifications.
+
+Gnus provides a few convenience functions and variables to allow
+easier insertion of Face headers in outgoing messages.
+
+@findex gnus-convert-png-to-face
+@code{gnus-convert-png-to-face} takes a 48x48 PNG image, no longer than
+726 bytes long, and converts it to a face.
+
+@findex gnus-face-from-file
+@vindex gnus-convert-image-to-face-command
+@code{gnus-face-from-file} takes a JPEG file as the parameter, and then
+converts the file to Face format by using the
+@code{gnus-convert-image-to-face-command} shell command.
+
+Here's how you would typically use this function. Put something like the
+following in your @file{~/.gnus.el} file:
+
+@lisp
+(setq message-required-news-headers
+      (nconc message-required-news-headers
+             (list '(Face . (lambda ()
+                              (gnus-face-from-file "~/face.jpg"))))))
+@end lisp
+
+
+@node Smileys
+@subsection Smileys
+@cindex smileys
+
+@iftex
+@iflatex
+\gnusfig{-3cm}{0.5cm}{\epsfig{figure=ps/BigFace,height=20cm}}
+\input{smiley}
+@end iflatex
+@end iftex
+
+@dfn{Smiley} is a package separate from Gnus, but since Gnus is
+currently the only package that uses Smiley, it is documented here.
+
+In short---to use Smiley in Gnus, put the following in your
+@file{~/.gnus.el} file:
+
+@lisp
+(setq gnus-treat-display-smileys t)
+@end lisp
+
+Smiley maps text smiley faces---@samp{:-)}, @samp{8-)}, @samp{:-(} and
+the like---to pictures and displays those instead of the text smiley
+faces.  The conversion is controlled by a list of regexps that matches
+text and maps that to file names.
+
+@vindex smiley-regexp-alist
+The alist used is specified by the @code{smiley-regexp-alist}
+variable.  The first item in each element is the regexp to be matched;
+the second element is the regexp match group that is to be replaced by
+the picture; and the third element is the name of the file to be
+displayed.
+
+The following variables customize where Smiley will look for these
+files:
+
+@table @code
+
+@item smiley-data-directory
+@vindex smiley-data-directory
+Where Smiley will look for smiley faces files.
+
+@item gnus-smiley-file-types
+@vindex gnus-smiley-file-types
+List of suffixes on smiley file names to try.
+
+@end table
+
+
+@node Picons
+@subsection Picons
+
+@iftex
+@iflatex
+\include{picons}
+@end iflatex
+@end iftex
+
+So@dots{}  You want to slow down your news reader even more!  This is a
+good way to do so.  It's also a great way to impress people staring
+over your shoulder as you read news.
+
+What are Picons?  To quote directly from the Picons Web site:
+
+@iftex
+@iflatex
+\margindex{}
+@end iflatex
+@end iftex
+
+@quotation
+@dfn{Picons} is short for ``personal icons''.  They're small,
+constrained images used to represent users and domains on the net,
+organized into databases so that the appropriate image for a given
+e-mail address can be found.  Besides users and domains, there are picon
+databases for Usenet newsgroups and weather forecasts.  The picons are
+in either monochrome @code{XBM} format or color @code{XPM} and
+@code{GIF} formats.
+@end quotation
+
+@vindex gnus-picon-databases
+For instructions on obtaining and installing the picons databases,
+point your Web browser at
+@uref{http://www.cs.indiana.edu/picons/ftp/index.html}.
+
+If you are using Debian GNU/Linux, saying @samp{apt-get install
+picons.*} will install the picons where Gnus can find them.
+
+To enable displaying picons, simply make sure that
+@code{gnus-picon-databases} points to the directory containing the
+Picons databases.
+
+The following variables offer control over where things are located.
+
+@table @code
+
+@item gnus-picon-databases
+@vindex gnus-picon-databases
+The location of the picons database.  This is a list of directories
+containing the @file{news}, @file{domains}, @file{users} (and so on)
+subdirectories.  Defaults to @code{("/usr/lib/picon"
+"/usr/local/faces")}.
+
+@item gnus-picon-news-directories
+@vindex gnus-picon-news-directories
+List of subdirectories to search in @code{gnus-picon-databases} for
+newsgroups faces.  @code{("news")} is the default.
+
+@item gnus-picon-user-directories
+@vindex gnus-picon-user-directories
+List of subdirectories to search in @code{gnus-picon-databases} for user
+faces.  @code{("users" "usenix" "local" "misc")} is the default.
+
+@item gnus-picon-domain-directories
+@vindex gnus-picon-domain-directories
+List of subdirectories to search in @code{gnus-picon-databases} for
+domain name faces.  Defaults to @code{("domains")}.  Some people may
+want to add @samp{"unknown"} to this list.
+
+@item gnus-picon-file-types
+@vindex gnus-picon-file-types
+Ordered list of suffixes on picon file names to try.  Defaults to
+@code{("xpm" "gif" "xbm")} minus those not built-in your Emacs.
+
+@end table
+
+
 @node XVarious
 @subsection Various XEmacs Variables
 
@@ -21894,8 +21962,8 @@ This is annoying.  Here's what you can do about it.
 * Anti-Spam Basics::            Simple steps to reduce the amount of spam.
 * SpamAssassin::                How to use external anti-spam tools.
 * Hashcash::                    Reduce spam by burning CPU time.
-* Filtering Spam Using The Spam ELisp Package::  
-* Filtering Spam Using Statistics with spam-stat::  
+* Filtering Spam Using The Spam ELisp Package::
+* Filtering Spam Using Statistics with spam-stat::
 @end menu
 
 @node The problem of spam
@@ -21941,13 +22009,13 @@ mail can be useful.
 
 Another approach to filtering e-mail is the distributed spam
 processing, for instance DCC implements such a system.  In essence,
-@code{N} systems around the world agree that a machine @samp{X} in
+@var{N} systems around the world agree that a machine @var{X} in
 China, Ghana, or California is sending out spam e-mail, and these
-@code{N} systems enter @samp{X} or the spam e-mail from @samp{X} into
+@var{N} systems enter @var{X} or the spam e-mail from @var{X} into
 a database.  The criteria for spam detection vary---it may be the
 number of messages sent, the content of the messages, and so on.  When
 a user of the distributed processing system wants to find out if a
-message is spam, he consults one of those @code{N} systems.
+message is spam, he consults one of those @var{N} systems.
 
 Distributed spam processing works very well against spammers that send
 a large number of messages at once, but it requires the user to set up
@@ -22041,7 +22109,7 @@ to non-existent domains is yucky, in my opinion.
 @cindex DCC
 
 The days where the hints in the previous section was sufficient in
-avoiding spam is coming to an end.  There are many tools out there
+avoiding spam are coming to an end.  There are many tools out there
 that claim to reduce the amount of spam you get.  This section could
 easily become outdated fast, as new products replace old, but
 fortunately most of these tools seem to have similar interfaces.  Even
@@ -22051,7 +22119,7 @@ easy to adapt it to most other tools.
 If the tool you are using is not installed on the mail server, you
 need to invoke it yourself.  Ideas on how to use the
 @code{:postscript} mail source parameter (@pxref{Mail Source
-Specifiers}) follows.
+Specifiers}) follow.
 
 @lisp
 (setq mail-sources
@@ -22061,8 +22129,8 @@ Specifiers}) follows.
              :postscript "mv %t /tmp/foo; formail -bs spamc < /tmp/foo > %t")))
 @end lisp
 
-Once you managed to process your incoming spool somehow, thus making
-the mail contain e.g. a header indicating it is spam, you are ready to
+Once you manage to process your incoming spool somehow, thus making
+the mail contain e.g.@: a header indicating it is spam, you are ready to
 filter it out.  Using normal split methods (@pxref{Splitting Mail}):
 
 @lisp
@@ -22117,7 +22185,7 @@ spam.  And here is the nifty function:
 
 A novel technique to fight spam is to require senders to do something
 costly for each message they send.  This has the obvious drawback that
-you cannot rely on that everyone in the world uses this technique,
+you cannot rely on everyone in the world using this technique,
 since it is not part of the Internet standards, but it may be useful
 in smaller communities.
 
@@ -22136,7 +22204,7 @@ one of them separately.
 The ``something costly'' is to burn CPU time, more specifically to
 compute a hash collision up to a certain number of bits.  The
 resulting hashcash cookie is inserted in a @samp{X-Hashcash:}
-header. For more details, and for the external application
+header.  For more details, and for the external application
 @code{hashcash} you need to install to use this feature, see
 @uref{http://www.cypherspace.org/~adam/hashcash/}.  Even more
 information can be found at @uref{http://www.camram.org/}.
@@ -22149,8 +22217,8 @@ like:
 (add-hook 'message-send-hook 'mail-add-payment)
 @end lisp
 
-The @code{hashcash.el} library can be found in the Gnus development
-contrib directory. or at
+The @file{hashcash.el} library can be found in the Gnus development
+contrib directory or at
 @uref{http://users.actrix.gen.nz/mycroft/hashcash.el}.
 
 You will need to set up some additional variables as well:
@@ -22189,13 +22257,13 @@ a useful contribution, however.
 @cindex spam filtering
 @cindex spam
 
-The idea behind @code{spam.el} is to have a control center for spam detection
-and filtering in Gnus.  To that end, @code{spam.el} does two things: it
+The idea behind @file{spam.el} is to have a control center for spam detection
+and filtering in Gnus.  To that end, @file{spam.el} does two things: it
 filters incoming mail, and it analyzes mail known to be spam or ham.
-@emph{Ham} is the name used throughout @code{spam.el} to indicate
+@dfn{Ham} is the name used throughout @file{spam.el} to indicate
 non-spam messages.
 
-So, what happens when you load @code{spam.el}?  First of all, you get
+So, what happens when you load @file{spam.el}?  First of all, you get
 the following keyboard commands:
 
 @table @kbd
@@ -22227,7 +22295,7 @@ You must have Bogofilter installed for that command to work properly.
 
 @end table
 
-Also, when you load @code{spam.el}, you will be able to customize its
+Also, when you load @file{spam.el}, you will be able to customize its
 variables.  Try @code{customize-group} on the @samp{spam} variable
 group.
 
@@ -22331,7 +22399,7 @@ gnus-spam-process-destinations}).  The ultimate location is a group
 name.  If the @code{spam-process-destination} parameter is not set,
 the spam articles are only expired.
 
-To use the @code{spam.el} facilities for incoming mail filtering, you
+To use the @file{spam.el} facilities for incoming mail filtering, you
 must add the following to your fancy split list
 @code{nnmail-split-fancy} or @code{nnimap-split-fancy}:
 
@@ -22391,9 +22459,9 @@ specify different spam checks for your nnmail split vs. your nnimap
 split.  Go crazy.
 
 You still have to have specific checks such as
-@code{spam-use-regex-headers} set to t, even if you specifically
+@code{spam-use-regex-headers} set to @code{t}, even if you specifically
 invoke @code{spam-split} with the check.  The reason is that when
-loading @code{spam.el}, some conditional loading is done depending on
+loading @file{spam.el}, some conditional loading is done depending on
 what @code{spam-use-xyz} variables you have set.
 
 @emph{Note for IMAP users}
@@ -22421,16 +22489,17 @@ The following are the methods you can use to control the behavior of
 @code{spam-split} and their corresponding spam and ham processors:
 
 @menu
-* Blacklists and Whitelists::   
-* BBDB Whitelists::             
-* Gmane Spam Reporting::        
-* Anti-spam Hashcash Payments::  
-* Blackholes::                  
-* Regular Expressions Header Matching::  
-* Bogofilter::                  
-* ifile spam filtering::        
-* spam-stat spam filtering::    
-* Extending the spam elisp package::  
+* Blacklists and Whitelists::
+* BBDB Whitelists::
+* Gmane Spam Reporting::
+* Anti-spam Hashcash Payments::
+* Blackholes::
+* Regular Expressions Header Matching::
+* Bogofilter::
+* ifile spam filtering::
+* spam-stat spam filtering::
+* SpamOracle::
+* Extending the spam elisp package::
 @end menu
 
 @node Blacklists and Whitelists
@@ -22601,7 +22670,7 @@ list is fairly comprehensive, but make sure to let us know if it
 contains outdated servers.
 
 The blackhole check uses the @code{dig.el} package, but you can tell
-@code{spam.el} to use @code{dns.el} instead for better performance if
+@file{spam.el} to use @code{dns.el} instead for better performance if
 you set @code{spam-use-dig} to @code{nil}.  It is not recommended at
 this time to set @code{spam-use-dig} to @code{nil} despite the
 possible performance improvements, because some users may be unable to
@@ -22684,9 +22753,9 @@ category, spam or not.  The command @kbd{S t} in summary mode, either
 for debugging or for curiosity, shows the @emph{spamicity} score of
 the current article (between 0.0 and 1.0).
 
-Bogofilter determines if a message is spam based on an internal
-threshold, set at compilation time.  That threshold can't be
-customized.
+Bogofilter determines if a message is spam based on a specific
+threshold.  That threshold can be customized, consult the Bogofilter
+documentation.
 
 If the @code{bogofilter} executable is not in your path, Bogofilter
 processing will be turned off.
@@ -22734,7 +22803,7 @@ database directory.
 
 @end defvar
 
-The Bogofilter mail classifier is similar to ifile in intent and
+The Bogofilter mail classifier is similar to @command{ifile} in intent and
 purpose.  A ham and a spam processor are provided, plus the
 @code{spam-use-bogofilter} and @code{spam-use-bogofilter-headers}
 variables to indicate to spam-split that Bogofilter should either be
@@ -22749,7 +22818,7 @@ Bogofilter was used to test this functionality.
 
 @defvar spam-use-ifile
 
-Enable this variable if you want @code{spam-split} to use ifile, a
+Enable this variable if you want @code{spam-split} to use @command{ifile}, a
 statistical analyzer similar to Bogofilter.
 
 @end defvar
@@ -22816,11 +22885,115 @@ of non-spam messages.  Note that this ham processor has no effect in
 @emph{spam} or @emph{unclassified} groups.
 @end defvar
 
-This enables spam.el to cooperate with spam-stat.el.  spam-stat.el
-provides an internal (Lisp-only) spam database, which unlike ifile or
-Bogofilter does not require external programs.  A spam and a ham
-processor, and the @code{spam-use-stat} variable for @code{spam-split}
-are provided.
+This enables @file{spam.el} to cooperate with @file{spam-stat.el}.
+@file{spam-stat.el} provides an internal (Lisp-only) spam database,
+which unlike ifile or Bogofilter does not require external programs.
+A spam and a ham processor, and the @code{spam-use-stat} variable for
+@code{spam-split} are provided.
+
+@node SpamOracle
+@subsubsection Using SpamOracle with Gnus
+@cindex spam filtering
+@cindex SpamOracle
+@cindex spam
+
+An easy way to filter out spam is to use SpamOracle.  SpamOracle is an
+statistical mail filtering tool written by Xavier Leroy and needs to be
+installed separately.
+
+There are several ways to use SpamOracle with Gnus.  In all cases, your
+mail is piped through SpamOracle in its @emph{mark} mode.  SpamOracle will
+then enter an @samp{X-Spam} header indicating whether it regards the
+mail as a spam mail or not.
+
+One possibility is to run SpamOracle as a @code{:prescript} from the
+@xref{Mail Source Specifiers}, (@pxref{SpamAssassin}).  This method has
+the advantage that the user can see the @emph{X-Spam} headers.
+
+The easiest method is to make @file{spam.el} (@pxref{Filtering Spam
+Using The Spam ELisp Package}) call SpamOracle.
+
+@vindex spam-use-spamoracle
+To enable SpamOracle usage by @file{spam.el}, set the variable
+@code{spam-use-spamoracle} to @code{t} and configure the
+@code{nnmail-split-fancy} or @code{nnimap-split-fancy} as described in
+the section @xref{Filtering Spam Using The Spam ELisp Package}.  In
+this example the @samp{INBOX} of an nnimap server is filtered using
+SpamOracle.  Mails recognized as spam mails will be moved to
+@code{spam-split-group}, @samp{Junk} in this case.  Ham messages stay
+in @samp{INBOX}:
+
+@example
+(setq spam-use-spamoracle t
+      spam-split-group "Junk"
+      nnimap-split-inbox '("INBOX")
+      nnimap-split-rule 'nnimap-split-fancy
+      nnimap-split-fancy '(| (: spam-split) "INBOX"))
+@end example
+
+@defvar spam-use-spamoracle
+Set to @code{t} if you want Gnus to enable spam filtering using
+SpamOracle.
+@end defvar
+
+@defvar spam-spamoracle-binary
+Gnus uses the SpamOracle binary called @file{spamoracle} found in the
+user's PATH.  Using the variable @code{spam-spamoracle-binary}, this
+can be customized.
+@end defvar
+
+@defvar spam-spamoracle-database
+By default, SpamOracle uses the file @file{~/.spamoracle.db} as a database to
+store its analyses.  This is controlled by the variable
+@code{spam-spamoracle-database} which defaults to @code{nil}.  That means
+the default SpamOracle database will be used.  In case you want your
+database to live somewhere special, set
+@code{spam-spamoracle-database} to this path.
+@end defvar
+
+SpamOracle employs a statistical algorithm to determine whether a
+message is spam or ham.  In order to get good results, meaning few
+false hits or misses, SpamOracle needs training.  SpamOracle learns the
+characteristics of your spam mails.  Using the @emph{add} mode
+(training mode) one has to feed good (ham) and spam mails to
+SpamOracle.  This can be done by pressing @kbd{|} in the Summary buffer
+and pipe the mail to a SpamOracle process or using @file{spam.el}'s
+spam- and ham-processors, which is much more convenient.  For a
+detailed description of spam- and ham-processors, @xref{Filtering Spam
+Using The Spam ELisp Package}.
+
+@defvar gnus-group-spam-exit-processor-spamoracle
+Add this symbol to a group's @code{spam-process} parameter by
+customizing the group parameter or the
+@code{gnus-spam-process-newsgroups} variable.  When this symbol is added
+to a group's @code{spam-process} parameter, spam-marked articles will be
+sent to SpamOracle as spam samples.
+@end defvar
+
+@defvar gnus-group-ham-exit-processor-spamoracle
+Add this symbol to a group's @code{spam-process} parameter by
+customizing the group parameter or the
+@code{gnus-spam-process-newsgroups} variable.  When this symbol is added
+to a grup's @code{spam-process} parameter, the ham-marked articles in
+@emph{ham} groups will be sent to the SpamOracle as samples of ham
+messages.  Note that this ham processor has no effect in @emph{spam} or
+@emph{unclassified} groups.
+@end defvar
+
+@emph{Example:} These are the Group Parameters of an group that has been
+classified as a ham group, meaning that it should only contain ham
+messages.
+@example
+ ((spam-contents gnus-group-spam-classification-ham)
+  (spam-process
+   (gnus-group-spam-exit-processor-spamoracle)))
+@end example
+For this group the @code{gnus-group-spam-exit-processor-spamoracle} is
+installed.  If the group contains spam message (e.g. because SpamOracle
+has not had enough sample messages yet) and the user marks some
+messages as spam messages, these messages will be processed by
+@code{gnus-group-spam-exit-processor-spamoracle}.  This processor sends
+the messages to SpamOracle as new samples for spam.
 
 @node Extending the spam elisp package
 @subsubsection Extending the spam elisp package
@@ -22865,7 +23038,7 @@ For processing spam and ham messages, provide the following:
 @enumerate
 
 @item
-code 
+code
 
 Note you don't have to provide a spam or a ham processor.  Only
 provide them if Blackbox supports spam or ham processing.
@@ -22951,9 +23124,9 @@ collections, and save it.  And last but not least, you need to use
 this dictionary in your fancy mail splitting rules.
 
 @menu
-* Creating a spam-stat dictionary::  
-* Splitting mail using spam-stat::  
-* Low-level interface to the spam-stat dictionary::  
+* Creating a spam-stat dictionary::
+* Splitting mail using spam-stat::
+* Low-level interface to the spam-stat dictionary::
 @end menu
 
 @node Creating a spam-stat dictionary
@@ -23618,8 +23791,8 @@ RFC 2633 describes the @acronym{S/MIME} format.
 @item IMAP - RFC 1730/2060, RFC 2195, RFC 2086, RFC 2359, RFC 2595, RFC 1731
 RFC 1730 is @acronym{IMAP} version 4, updated somewhat by RFC 2060
 (@acronym{IMAP} 4 revision 1).  RFC 2195 describes CRAM-MD5
-authentication for @acronym{IMAP}. RFC 2086 describes access control
-lists (ACLs) for @acronym{IMAP}. RFC 2359 describes a @acronym{IMAP}
+authentication for @acronym{IMAP}.  RFC 2086 describes access control
+lists (ACLs) for @acronym{IMAP}.  RFC 2359 describes a @acronym{IMAP}
 protocol enhancement.  RFC 2595 describes the proper @acronym{TLS}
 integration (STARTTLS) with @acronym{IMAP}.  RFC 1731 describes the
 GSSAPI/Kerberos4 mechanisms for @acronym{IMAP}.
@@ -23738,7 +23911,7 @@ Luis Fernandes---design and graphics.
 Joe Reiss---creator of the smiley faces.
 
 @item
-Justin Sheehy--the @acronym{FAQ} maintainer.
+Justin Sheehy---the @acronym{FAQ} maintainer.
 
 @item
 Erik Naggum---help, ideas, support, code and stuff.
@@ -24565,11 +24738,11 @@ New features in Gnus 5.6:
 
 @item
 New functionality for using Gnus as an offline newsreader has been
-added.  A plethora of new commands and modes have been added.  See
-@pxref{Gnus Unplugged} for the full story.
+added.  A plethora of new commands and modes have been added.
+@xref{Gnus Unplugged}, for the full story.
 
 @item
- The @code{nndraft} back end has returned, but works differently than
+The @code{nndraft} back end has returned, but works differently than
 before.  All Message buffers are now also articles in the @code{nndraft}
 group, which is created automatically.
 
@@ -24578,110 +24751,110 @@ group, which is created automatically.
 values.
 
 @item
- @code{gnus-summary-goto-article} now accept Message-ID's.
+@code{gnus-summary-goto-article} now accept Message-ID's.
 
 @item
- A new Message command for deleting text in the body of a message
+A new Message command for deleting text in the body of a message
 outside the region: @kbd{C-c C-v}.
 
 @item
- You can now post to component group in @code{nnvirtual} groups with
+You can now post to component group in @code{nnvirtual} groups with
 @kbd{C-u C-c C-c}.
 
 @item
  @code{nntp-rlogin-program}---new variable to ease customization.
 
 @item
- @code{C-u C-c C-c} in @code{gnus-article-edit-mode} will now inhibit
+@code{C-u C-c C-c} in @code{gnus-article-edit-mode} will now inhibit
 re-highlighting of the article buffer.
 
 @item
- New element in @code{gnus-boring-article-headers}---@code{long-to}.
+New element in @code{gnus-boring-article-headers}---@code{long-to}.
 
 @item
- @kbd{M-i} symbolic prefix command.  See the section ``Symbolic
-Prefixes'' in the Gnus manual for details.
+@kbd{M-i} symbolic prefix command.  @xref{Symbolic Prefixes}, for
+details.
 
 @item
- @kbd{L} and @kbd{I} in the summary buffer now take the symbolic prefix
+@kbd{L} and @kbd{I} in the summary buffer now take the symbolic prefix
 @kbd{a} to add the score rule to the @file{all.SCORE} file.
 
 @item
- @code{gnus-simplify-subject-functions} variable to allow greater
+@code{gnus-simplify-subject-functions} variable to allow greater
 control over simplification.
 
 @item
- @kbd{A T}---new command for fetching the current thread.
+@kbd{A T}---new command for fetching the current thread.
 
 @item
- @kbd{/ T}---new command for including the current thread in the
+@kbd{/ T}---new command for including the current thread in the
 limit.
 
 @item
- @kbd{M-RET} is a new Message command for breaking cited text.
+@kbd{M-RET} is a new Message command for breaking cited text.
 
 @item
- @samp{\\1}-expressions are now valid in @code{nnmail-split-methods}.
+@samp{\\1}-expressions are now valid in @code{nnmail-split-methods}.
 
 @item
- The @code{custom-face-lookup} function has been removed.
+The @code{custom-face-lookup} function has been removed.
 If you used this function in your initialization files, you must
 rewrite them to use @code{face-spec-set} instead.
 
 @item
- Canceling now uses the current select method.  Symbolic prefix
+Canceling now uses the current select method.  Symbolic prefix
 @kbd{a} forces normal posting method.
 
 @item
- New command to translate M******** sm*rtq**t*s into proper
+New command to translate M******** sm*rtq**t*s into proper
 text---@kbd{W d}.
 
 @item
- For easier debugging of @code{nntp}, you can set
+For easier debugging of @code{nntp}, you can set
 @code{nntp-record-commands} to a non-@code{nil} value.
 
 @item
- @code{nntp} now uses @file{~/.authinfo}, a @file{.netrc}-like file, for
+@code{nntp} now uses @file{~/.authinfo}, a @file{.netrc}-like file, for
 controlling where and how to send @sc{authinfo} to @acronym{NNTP} servers.
 
 @item
- A command for editing group parameters from the summary buffer
+A command for editing group parameters from the summary buffer
 has been added.
 
 @item
- A history of where mails have been split is available.
+A history of where mails have been split is available.
 
 @item
- A new article date command has been added---@code{article-date-iso8601}.
+A new article date command has been added---@code{article-date-iso8601}.
 
 @item
- Subjects can be simplified when threading by setting
+Subjects can be simplified when threading by setting
 @code{gnus-score-thread-simplify}.
 
 @item
- A new function for citing in Message has been
+A new function for citing in Message has been
 added---@code{message-cite-original-without-signature}.
 
 @item
- @code{article-strip-all-blank-lines}---new article command.
+@code{article-strip-all-blank-lines}---new article command.
 
 @item
- A new Message command to kill to the end of the article has
+A new Message command to kill to the end of the article has
 been added.
 
 @item
- A minimum adaptive score can be specified by using the
+A minimum adaptive score can be specified by using the
 @code{gnus-adaptive-word-minimum} variable.
 
 @item
- The ``lapsed date'' article header can be kept continually
+The ``lapsed date'' article header can be kept continually
 updated by the @code{gnus-start-date-timer} command.
 
 @item
- Web listserv archives can be read with the @code{nnlistserv} back end.
+Web listserv archives can be read with the @code{nnlistserv} back end.
 
 @item
- Old dejanews archives can now be read by @code{nnweb}.
+Old dejanews archives can now be read by @code{nnweb}.
 
 @end itemize
 
@@ -24787,7 +24960,7 @@ Dired integration
 @code{gnus-dired-minor-mode} installs key bindings in dired buffers to send
 a file as an attachment (@kbd{C-c C-a}), open a file using the appropriate
 mailcap entry (@kbd{C-c C-l}), and print a file using the mailcap entry
-(@kbd{C-c P}).  It is enabled with 
+(@kbd{C-c P}).  It is enabled with
 @lisp
 (add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode)
 @end lisp
@@ -24830,14 +25003,14 @@ If @code{auto-compression-mode} is enabled, attachments are automatically
 decompressed when activated.
 
 @item
-If the new option @code{nnml-use-compressed-files} is non-@code{nil}, 
+If the new option @code{nnml-use-compressed-files} is non-@code{nil},
 the nnml back end allows compressed message files.
 
 @item
 Signed article headers (X-PGP-Sig) can be verified with @kbd{W p}.
 
 @item
-The Summary Buffer uses an arrow in the fringe to indicate the current 
+The Summary Buffer uses an arrow in the fringe to indicate the current
 article.  Use @code{(setq gnus-summary-display-arrow nil)} to disable it.
 
 @item
@@ -24857,14 +25030,14 @@ The new @code{recent} mark @samp{.} indicates newly arrived messages (as
 opposed to old but unread messages).
 
 @item
-The new option @code{gnus-gcc-mark-as-read} automatically marks 
+The new option @code{gnus-gcc-mark-as-read} automatically marks
 Gcc articles as read.
 
 @item
 The nndoc back end now supports mailman digests and exim bounces.
 
 @item
-Gnus supports RFC 2369 mailing list headers, and adds a number of 
+Gnus supports RFC 2369 mailing list headers, and adds a number of
 related commands in mailing list groups.  @xref{Mailing List}.
 
 @item
@@ -24900,7 +25073,7 @@ the second parameter.
 automatic recognition of XEmacs and GNU Emacs, generates
 @file{gnus-load.el}, checks if errors occur while compilation and
 generation of info files and reports them at the end of the build
-process. It now uses @code{makeinfo} if it is available and falls
+process.  It now uses @code{makeinfo} if it is available and falls
 back to @file{infohack.el} otherwise.  @file{make.bat} should now
 install all files which are necessary to run Gnus and be generally a
 complete replacement for the @code{configure; make; make install}
@@ -24999,7 +25172,7 @@ composing messages and @code{message-generate-headers-first} is
 Improved anti-spam features.
 
 Gnus is now able to take out spam from your mail and news streams
-using a wide variety of programs and filter rules. Among the supported
+using a wide variety of programs and filter rules.  Among the supported
 methods are RBL blocklists, bogofilter and white/blacklists.  Hooks
 for easy use of external packages such as SpamAssassin and Hashcash
 are also new.  @xref{Thwarting Email Spam}.
@@ -25007,6 +25180,9 @@ are also new.  @xref{Thwarting Email Spam}.
 @item
 Easy inclusion of X-Faces headers.
 
+@item
+Face headers handling.
+
 @item
 In the summary buffer, the new command @kbd{/ N} inserts new messages
 and @kbd{/ o} inserts old messages.
@@ -25053,11 +25229,11 @@ hierarchy.
 
 The Gnus Agent has seen a major updated and is now enabled by default,
 and all nntp and nnimap servers from @code{gnus-select-method} and
-@code{gnus-secondary-select-method} are agentized by default. Earlier
+@code{gnus-secondary-select-method} are agentized by default.  Earlier
 only the server in @code{gnus-select-method} was agentized by the
 default, and the agent was disabled by default.  When the agent is
 enabled, headers are now also retrieved from the Agent cache instead
-of the back ends when possible. Earlier this only happened in the
+of the back ends when possible.  Earlier this only happened in the
 unplugged state.  You can enroll or remove servers with @kbd{J a} and
 @kbd{J r} in the server buffer.  Gnus will not download articles into
 the Agent cache, unless you instruct it to do so, though, by using
@@ -25124,7 +25300,7 @@ local files as external parts.
 The command @code{gnus-mime-save-part-and-strip} (bound to @kbd{C-o}
 on @acronym{MIME} buttons) saves a part and replaces the part with an
 external one.  @code{gnus-mime-delete-part} (bound to @kbd{d} on
-@acronym{MIME} buttons) removes a part. It works only on back ends
+@acronym{MIME} buttons) removes a part.  It works only on back ends
 that support editing.
 
 @item
@@ -25153,7 +25329,7 @@ The old format like the lines below is obsolete, but still accepted.
 @code{message-ignored-news-headers} and @code{message-ignored-mail-headers}
 
 @samp{X-Draft-From} and @samp{X-Gnus-Agent-Meta-Information} have been
-added into these two variables. If you customized those, perhaps you
+added into these two variables.  If you customized those, perhaps you
 need add those two headers too.
 
 @item
@@ -25227,7 +25403,7 @@ escape character, old user defined format @samp{%u&} is no longer supported.
 @kbd{/ *} (@code{gnus-summary-limit-include-cached}) is rewritten.
 
 It was aliased to @kbd{Y c}
-(@code{gnus-summary-insert-cached-articles}). The new function filters
+(@code{gnus-summary-insert-cached-articles}).  The new function filters
 out other articles.
 
 @item Some limiting commands accept a @kbd{C-u} prefix to negate the match.
@@ -25275,7 +25451,7 @@ message, Message Manual}).
 
 The regexps in these variables are compared with full group names
 instead of real group names in 5.8.  Users who customize these
-variables should change those regexps accordingly. For example:
+variables should change those regexps accordingly.  For example:
 @lisp
 ("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr)
 @end lisp
@@ -25421,10 +25597,10 @@ Gnus considers mail and news to be mostly the same, really.  The only
 difference is how to access the actual articles.  News articles are
 commonly fetched via the protocol @acronym{NNTP}, whereas mail
 messages could be read from a file on the local disk.  The internal
-architecture of Gnus thus comprises a `front end' and a number of
-`back ends'.  Internally, when you enter a group (by hitting
+architecture of Gnus thus comprises a ``front end'' and a number of
+``back ends''.  Internally, when you enter a group (by hitting
 @key{RET}, say), you thereby invoke a function in the front end in
-Gnus.  The front end then `talks' to a back end and says things like
+Gnus.  The front end then ``talks'' to a back end and says things like
 ``Give me the list of articles in the foo group'' or ``Show me article
 number 4711''.
 
@@ -25432,16 +25608,16 @@ So a back end mainly defines either a protocol (the @code{nntp} back
 end accesses news via @acronym{NNTP}, the @code{nnimap} back end
 accesses mail via @acronym{IMAP}) or a file format and directory
 layout (the @code{nnspool} back end accesses news via the common
-`spool directory' format, the @code{nnml} back end access mail via a
+``spool directory'' format, the @code{nnml} back end access mail via a
 file format and directory layout that's quite similar).
 
 Gnus does not handle the underlying media, so to speak---this is all
 done by the back ends.  A back end is a collection of functions to
 access the articles.
 
-However, sometimes the term `back end' is also used where `server'
-would have been more appropriate.  And then there is the term `select
-method' which can mean either.  The Gnus terminology can be quite
+However, sometimes the term ``back end'' is also used where ``server''
+would have been more appropriate.  And then there is the term ``select
+method'' which can mean either.  The Gnus terminology can be quite
 confusing.
 
 @item native
@@ -25596,6 +25772,13 @@ An article that responds to a different article---its parent.
 A collection of messages in one file.  The most common digest format is
 specified by RFC 1153.
 
+@item splitting
+@cindex splitting, terminolgy
+@cindex mail sorting
+@cindex mail filtering (splitting)
+The action of sorting your emails according to certain rules. Sometimes
+incorrectly called mail filtering.
+
 @end table
 
 
@@ -25824,7 +26007,7 @@ Sometimes, a problem do not directly generate an elisp error but
 manifests itself by causing Gnus to be very slow.  In these cases, you
 can use @kbd{M-x toggle-debug-on-quit} and press @kbd{C-g} when things are
 slow, and then try to analyze the backtrace (repeating the procedure
-helps isolating the real problem areas).  
+helps isolating the real problem areas).
 
 A fancier approach is to use the elisp profiler, ELP.  The profiler is
 (or should be) fully documented elsewhere, but to get you started
@@ -26053,7 +26236,7 @@ more.
 Gnus identifies each message by way of group name and article number.  A
 few remarks about these article numbers might be useful.  First of all,
 the numbers are positive integers.  Secondly, it is normally not
-possible for later articles to `re-use' older article numbers without
+possible for later articles to ``re-use'' older article numbers without
 confusing Gnus.  That is, if a group has ever contained a message
 numbered 42, then no other message may get that number, or Gnus will get
 mightily confused.@footnote{See the function
@@ -26061,15 +26244,15 @@ mightily confused.@footnote{See the function
 Third, article numbers must be assigned in order of arrival in the
 group; this is not necessarily the same as the date of the message.
 
-The previous paragraph already mentions all the `hard' restrictions that
+The previous paragraph already mentions all the ``hard'' restrictions that
 article numbers must fulfill.  But it seems that it might be useful to
 assign @emph{consecutive} article numbers, for Gnus gets quite confused
 if there are holes in the article numbering sequence.  However, due to
-the `no-reuse' restriction, holes cannot be avoided altogether.  It's
+the ``no-reuse'' restriction, holes cannot be avoided altogether.  It's
 also useful for the article numbers to start at 1 to avoid running out
 of numbers as long as possible.
 
-Note that by convention, backends are named @code{nnsomething}, but
+Note that by convention, back ends are named @code{nnsomething}, but
 Gnus also comes with some @code{nnnotbackends}, such as
 @file{nnheader.el}, @file{nnmail.el} and @file{nnoo.el}.
 
@@ -26197,7 +26380,7 @@ There should be no data returned.
 
 If @var{server} is the current virtual server, and the connection to the
 physical server is alive, then this function should return a
-non-@code{nil} vlue.  This function should under no circumstances
+non-@code{nil} value.  This function should under no circumstances
 attempt to reconnect to a server we have lost connection to.
 
 There should be no data returned.
@@ -26461,7 +26644,7 @@ created after @samp{date}, which is in normal human-readable date format
 the function @code{message-make-date} by default).  The data should be
 in the active buffer format.
 
-It is okay for this function to return `too many' groups; some back ends
+It is okay for this function to return ``too many'' groups; some back ends
 might find it cheaper to return the full list of groups, rather than
 just the new groups.  But don't do this for back ends with many groups.
 Normally, if the user creates the groups herself, there won't be too
@@ -26523,7 +26706,7 @@ this function in short order.
 The function should return a cons where the @code{car} is the group name and
 the @code{cdr} is the article number that the article was entered as.
 
-The group should exist before the backend is asked to accept the
+The group should exist before the back end is asked to accept the
 article for that group.
 
 There should be no data returned.
@@ -26857,7 +27040,7 @@ this:
 @subsection Score File Syntax
 
 Score files are meant to be easily parseable, but yet extremely
-mallable.   It was decided that something that had the same read syntax
+mallable.  It was decided that something that had the same read syntax
 as an Emacs Lisp list would fit that spec.
 
 Here's a typical score file: