(MIME Commands): Default of gnus-article-loose-mime is t since 2004-08-06.
[gnus] / texi / gnus.texi
index fc29121..c6ad7fc 100644 (file)
@@ -10,7 +10,7 @@
 
 @copying
 Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -52,7 +52,7 @@ license to the document, as described in section 6 of the license.
 \begin{document}
 
 % Adjust ../Makefile.in if you change the following line:
-\newcommand{\gnusversionname}{No Gnus v0.4}
+\newcommand{\gnusversionname}{No Gnus v0.7}
 \newcommand{\gnuschaptername}{}
 \newcommand{\gnussectionname}{}
 
@@ -362,7 +362,7 @@ spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
 @c Adjust ../Makefile.in if you change the following line:
-This manual corresponds to No Gnus v0.4.
+This manual corresponds to No Gnus v0.7.
 
 @end ifinfo
 
@@ -404,6 +404,7 @@ the program.
 * Various::                  General purpose settings.
 * The End::                  Farewell and goodbye.
 * Appendices::               Terminology, Emacs intro, @acronym{FAQ}, History, Internals.
+* GNU Free Documentation License:: The license for this documentation.
 * Index::                    Variable, function and concept index.
 * Key Index::                Key Index.
 
@@ -456,6 +457,7 @@ Group Buffer
 * Browse Foreign Server::       You can browse a server.  See what it has to offer.
 * Exiting Gnus::                Stop reading news and get some work done.
 * Group Topics::                A folding group mode divided into topics.
+* Non-ASCII Group Names::       Accessing groups of non-English names.
 * Misc Group Stuff::            Other stuff that you can to do.
 
 Group Buffer Format
@@ -495,6 +497,7 @@ Summary Buffer
 * Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
 * Article Caching::             You may store articles in a cache.
 * Persistent Articles::         Making articles expiry-resistant.
+* Sticky Articles::             Article buffers that are not reused.
 * Article Backlog::             Having already read articles hang around.
 * Saving Articles::             Ways of customizing article saving.
 * Decoding Articles::           Gnus can treat series of (uu)encoded articles.
@@ -944,8 +947,8 @@ Emacs for Heathens
 @chapter Starting Gnus
 @cindex starting up
 
-If you are haven't used Emacs much before using Gnus, read @ref{Emacs
-for Heathens} first.
+If you haven't used Emacs much before using Gnus, read @ref{Emacs for
+Heathens} first.
 
 @kindex M-x gnus
 @findex gnus
@@ -1720,6 +1723,7 @@ long as Gnus is active.
 * Browse Foreign Server::       You can browse a server.  See what it has to offer.
 * Exiting Gnus::                Stop reading news and get some work done.
 * Group Topics::                A folding group mode divided into topics.
+* Non-ASCII Group Names::       Accessing groups of non-English names.
 * Misc Group Stuff::            Other stuff that you can to do.
 @end menu
 
@@ -1821,8 +1825,15 @@ the true unread message count is not possible efficiently.  For
 hysterical raisins, even the mail back ends, where the true number of
 unread messages might be available efficiently, use the same limited
 interface.  To remove this restriction from Gnus means that the back
-end interface has to be changed, which is not an easy job.  If you
-want to work on this, please contact the Gnus mailing list.
+end interface has to be changed, which is not an easy job.
+
+The nnml backend (@pxref{Mail Spool}) has a feature called ``group
+compaction'' which circumvents this deficiency: the idea is to
+renumber all articles from 1, removing all gaps between numbers, hence
+getting a correct total count.  Other backends may support this in the
+future.  In order to keep your total article count relatively up to
+date, you might want to compact your groups (or even directly your
+server) from time to time. @xref{Misc Group Stuff}, @xref{Server Commands}.
 
 @item y
 Number of unread, unticked, non-dormant articles.
@@ -2079,6 +2090,11 @@ commands will move to the next group, not the next unread group.  Even
 the commands that say they move to the next unread group.  The default
 is @code{t}.
 
+@vindex gnus-summary-next-group-on-exit
+If @code{gnus-summary-next-group-on-exit} is @code{t}, when a summary is
+exited, the point in the group buffer is moved to the next unread group.
+Otherwise, the point is set to the group just exited.  The default is
+@code{t}.
 
 @node Selecting a Group
 @section Selecting a Group
@@ -2161,6 +2177,24 @@ most recently will be fetched.
 @code{gnus-large-newsgroup}, but is only used for ephemeral
 newsgroups.
 
+@vindex gnus-newsgroup-maximum-articles
+In groups in some news servers, there might be a big gap between a few
+very old articles that will never be expired and the recent ones.  In
+such a case, the server will return the data like @code{(1 . 30000000)}
+for the @code{LIST ACTIVE group} command, for example.  Even if there
+are actually only the articles 1-10 and 29999900-30000000, Gnus doesn't
+know it at first and prepares for getting 30000000 articles.  However,
+it will consume hundreds megabytes of memories and might make Emacs get
+stuck as the case may be.  If you use such news servers, set the
+variable @code{gnus-newsgroup-maximum-articles} to a positive number.
+The value means that Gnus ignores articles other than this number of the
+latest ones in every group.  For instance, the value 10000 makes Gnus
+get only the articles 29990001-30000000 (if the latest article number is
+30000000 in a group).  Note that setting this variable to a number might
+prevent you from reading very old articles.  The default value of the
+variable @code{gnus-newsgroup-maximum-articles} is @code{nil}, which
+means Gnus never ignores old articles.
+
 @vindex gnus-select-group-hook
 @vindex gnus-auto-select-first
 @vindex gnus-auto-select-subject
@@ -2168,7 +2202,7 @@ If @code{gnus-auto-select-first} is non-@code{nil}, select an article
 automatically when entering a group with the @kbd{SPACE} command.
 Which article this is is controlled by the
 @code{gnus-auto-select-subject} variable.  Valid values for this
-variable is:
+variable are:
 
 @table @code
 
@@ -2839,6 +2873,7 @@ doesn't accept articles.
 
 @item auto-expire
 @cindex auto-expire
+@cindex expiring mail
 If the group parameter has an element that looks like @code{(auto-expire
 . t)}, all articles read will be marked as expirable.  For an
 alternative approach, @pxref{Expiring Mail}.
@@ -2847,6 +2882,7 @@ See also @code{gnus-auto-expirable-newsgroups}.
 
 @item total-expire
 @cindex total-expire
+@cindex expiring mail
 If the group parameter has an element that looks like
 @code{(total-expire . t)}, all read articles will be put through the
 expiry process, even if they are not marked as expirable.  Use with
@@ -2976,6 +3012,15 @@ like this in the group parameters:
   (signature "Funky Signature"))
 @end example
 
+If you're using topics to organize your group buffer
+(@pxref{Group Topics}), note that posting styles can also be set in
+the topics parameters. Posting styles in topic parameters apply to all
+groups in this topic. More precisely, the posting-style settings for a
+group result from the hierarchical merging of all posting-style
+entries in the parameters of this group and all the topics it belongs
+to.
+
+
 @item post-method
 @cindex post-method
 If it is set, the value is used as the method for posting message
@@ -3477,6 +3522,7 @@ zombies.
 @item C-c C-x
 @kindex C-c C-x (Group)
 @findex gnus-group-expire-articles
+@cindex expiring mail
 Run all expirable articles in the current group through the expiry
 process (if any) (@code{gnus-group-expire-articles}).  That is, delete
 all expirable articles in the group that have been around for a while.
@@ -3485,6 +3531,7 @@ all expirable articles in the group that have been around for a while.
 @item C-c C-M-x
 @kindex C-c C-M-x (Group)
 @findex gnus-group-expire-all-groups
+@cindex expiring mail
 Run all expirable articles in all groups through the expiry process
 (@code{gnus-group-expire-all-groups}).
 
@@ -3845,6 +3892,7 @@ sub-topics unless given a prefix.
 @item C-c C-x
 @kindex C-c C-x (Topic)
 @findex gnus-topic-expire-articles
+@cindex expiring mail
 Run all expirable articles in the current group or topic through the
 expiry process (if any)
 (@code{gnus-topic-expire-articles}).  (@pxref{Expiring Mail}).
@@ -4112,6 +4160,132 @@ happen.  In fact, I hereby declare that it is @dfn{undefined} what
 happens.  You just have to be careful if you do stuff like that.
 
 
+@node Non-ASCII Group Names
+@section Accessing groups of non-English names
+@cindex non-ascii group names
+
+There are some news servers that provide groups of which the names are
+expressed with their native languages in the world.  For instance, in a
+certain news server there are some newsgroups of which the names are
+spelled in Chinese, where people are talking in Chinese.  You can, of
+course, subscribe to such news groups using Gnus.  Currently Gnus
+supports non-@acronym{ASCII} group names not only with the @code{nntp}
+back end but also with the @code{nnml} back end and the @code{nnrss}
+back end.
+
+Every such group name is encoded by a certain charset in the server
+side (in an @acronym{NNTP} server its administrator determines the
+charset, but for groups in the other back ends it is determined by you).
+Gnus has to display the decoded ones for you in the group buffer and the
+article buffer, and needs to use the encoded ones when communicating
+with servers.  However, Gnus doesn't know what charset is used for each
+non-@acronym{ASCII} group name.  The following two variables are just
+the ones for telling Gnus what charset should be used for each group:
+
+@table @code
+@item gnus-group-name-charset-method-alist
+@vindex gnus-group-name-charset-method-alist
+An alist of select methods and charsets.  The default value is
+@code{nil}.  The names of groups in the server specified by that select
+method are all supposed to use the corresponding charset.  For example:
+
+@lisp
+(setq gnus-group-name-charset-method-alist
+      '(((nntp "news.com.cn") . cn-gb-2312)))
+@end lisp
+
+Charsets specified for groups with this variable are preferred to the
+ones specified for the same groups with the
+@code{gnus-group-name-charset-group-alist} variable (see below).
+
+A select method can be very long, like:
+
+@lisp
+(nntp "gmane"
+      (nntp-address "news.gmane.org")
+      (nntp-end-of-line "\n")
+      (nntp-open-connection-function
+       nntp-open-via-rlogin-and-telnet)
+      (nntp-via-rlogin-command "ssh")
+      (nntp-via-rlogin-command-switches
+       ("-C" "-t" "-e" "none"))
+      (nntp-via-address @dots{}))
+@end lisp
+
+In that case, you can truncate it into @code{(nntp "gmane")} in this
+variable.  That is, it is enough to contain only the back end name and
+the server name.
+
+@item gnus-group-name-charset-group-alist
+@cindex UTF-8 group names
+@vindex gnus-group-name-charset-group-alist
+An alist of regexp of group name and the charset for group names.
+@code{((".*" . utf-8))} is the default value if UTF-8 is supported,
+otherwise the default is @code{nil}.  For example:
+
+@lisp
+(setq gnus-group-name-charset-group-alist
+      '(("\\.com\\.cn:" . cn-gb-2312)
+        (".*" . utf-8)))
+@end lisp
+
+Note that this variable is ignored if the match is made with
+@code{gnus-group-name-charset-method-alist}.
+@end table
+
+Those two variables are used also to determine the charset for encoding
+and decoding non-@acronym{ASCII} group names that are in the back ends
+other than @code{nntp}.  It means that it is you who determine it.  If
+you do nothing, the charset used for group names in those back ends will
+all be @code{utf-8} because of the last element of
+@code{gnus-group-name-charset-group-alist}.
+
+There is one more important variable for non-@acronym{ASCII} group
+names.  @emph{XEmacs users must set this}.  Emacs users necessarily need
+not do:
+
+@table @code
+@item nnmail-pathname-coding-system
+The value of this variable should be a coding system or @code{nil}
+(which is the default).  The @code{nnml} back end, the @code{nnrss} back
+end, the @acronym{NNTP} marks feature (@pxref{NNTP marks}), the agent,
+and the cache use non-@acronym{ASCII} group names in those files and
+directories.  This variable overrides the value of
+@code{file-name-coding-system} which specifies the coding system used
+when encoding and decoding those file names and directory names.
+
+In XEmacs (with the @code{mule} feature), @code{file-name-coding-system}
+is the only means to specify the coding system used to encode and decode
+file names.  Therefore, @emph{you, XEmacs users, have to set it} to the
+coding system that is suitable to encode and decode non-@acronym{ASCII}
+group names.  On the other hand, Emacs uses the value of
+@code{default-file-name-coding-system} if @code{file-name-coding-system}
+is @code{nil}.  Normally the value of
+@code{default-file-name-coding-system} is initialized according to the
+locale, so you will need to do nothing if the value is suitable to
+encode and decode non-@acronym{ASCII} group names.
+
+The value of this variable (or @code{default-file-name-coding-system})
+does not necessarily need to be the same value that is determined by
+@code{gnus-group-name-charset-method-alist} and
+@code{gnus-group-name-charset-group-alist}.
+
+If you want to subscribe to the groups spelled in Chinese but
+@code{default-file-name-coding-system} is initialized by default to
+@code{iso-latin-1} for example, that is the most typical case where you
+have to set @code{nnmail-pathname-coding-system} even if you are an
+Emacs user.  The @code{utf-8} coding system is a good candidate for it.
+Otherwise, you may change the locale in your system so that
+@code{default-file-name-coding-system} may be initialized to an
+appropriate value, instead of specifying this variable.
+@end table
+
+Note that when you copy or move articles from a non-@acronym{ASCII}
+group to another group, the charset used to encode and decode group
+names should be the same in both groups.  Otherwise the Newsgroups
+header will be displayed incorrectly in the article buffer.
+
+
 @node Misc Group Stuff
 @section Misc Group Stuff
 
@@ -4128,8 +4302,8 @@ happens.  You just have to be careful if you do stuff like that.
 @item v
 @kindex v (Group)
 @cindex keys, reserved for users (Group)
-The key @kbd{v} is reserved for users.  You can bind it key to some
-function or better use it as a prefix key.  For example:
+The key @kbd{v} is reserved for users.  You can bind it to some
+command or better use it as a prefix key.  For example:
 
 @lisp
 (define-key gnus-group-mode-map (kbd "v j d")
@@ -4178,6 +4352,15 @@ sending them over the network: they're just saved directly to the group
 in question.  The corresponding back end must have a request-post method
 for this to work though.
 
+@item G z
+@kindex G z (Group)
+@findex gnus-group-compact-group
+
+Compact the group under point (@code{gnus-group-compact-group}).
+Currently implemented only in nnml (@pxref{Mail Spool}).  This removes
+gaps between article numbers, hence getting a correct total article
+count.
+
 @end table
 
 Variables for the group buffer:
@@ -4205,31 +4388,6 @@ generated.  It may be used to move point around, for instance.
 Groups matching this regexp will always be listed in the group buffer,
 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
-non-@acronym{ASCII} group names.
-
-For example:
-@lisp
-(setq gnus-group-name-charset-method-alist
-    '(((nntp "news.com.cn") . cn-gb-2312)))
-@end lisp
-
-@item gnus-group-name-charset-group-alist
-@cindex UTF-8 group names
-@vindex gnus-group-name-charset-group-alist
-An alist of regexp of group name and the charset for group names.  It
-is used to show non-@acronym{ASCII} group names.  @code{((".*"
-utf-8))} is the default value if UTF-8 is supported, otherwise the
-default is @code{nil}.
-
-For example:
-@lisp
-(setq gnus-group-name-charset-group-alist
-    '(("\\.com\\.cn:" . cn-gb-2312)))
-@end lisp
-
 @end table
 
 @node Scanning New Messages
@@ -4542,8 +4700,8 @@ available in Emacs.
 
 @kindex v (Summary)
 @cindex keys, reserved for users (Summary)
-The key @kbd{v} is reserved for users.  You can bind it key to some
-function or better use it as a prefix key.  For example:
+The key @kbd{v} is reserved for users.  You can bind it to some
+command or better use it as a prefix key.  For example:
 @lisp
 (define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
 @end lisp
@@ -4562,6 +4720,7 @@ function or better use it as a prefix key.  For example:
 * Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
 * Article Caching::             You may store articles in a cache.
 * Persistent Articles::         Making articles expiry-resistant.
+* Sticky Articles::             Article buffers that are not reused.
 * Article Backlog::             Having already read articles hang around.
 * Saving Articles::             Ways of customizing article saving.
 * Decoding Articles::           Gnus can treat series of (uu)encoded articles.
@@ -6246,7 +6405,7 @@ Process marks are displayed as @code{#} in the summary buffer, and are
 used for marking articles in such a way that other commands will
 process these articles.  For instance, if you process mark four
 articles and then use the @kbd{*} command, Gnus will enter these four
-commands into the cache.  For more information,
+articles into the cache.  For more information,
 @pxref{Process/Prefix}.
 
 @table @kbd
@@ -6402,6 +6561,20 @@ Limit the summary buffer to articles that match some recipient
 (@code{gnus-summary-limit-to-recipient}).  If given a prefix, exclude
 matching articles.
 
+@item / A
+@kindex / A (Summary)
+@findex gnus-summary-limit-to-address
+Limit the summary buffer to articles in which contents of From, To or Cc
+header match a given address (@code{gnus-summary-limit-to-address}).  If
+given a prefix, exclude matching articles.
+
+@item / S
+@kindex / S (Summary)
+@findex gnus-summary-limit-to-singletons
+Limit the summary buffer to articles that aren't part of any displayed
+threads (@code{gnus-summary-limit-to-singletons}).  If given a prefix,
+limit to articles that are part of displayed threads.
+
 @item / x
 @kindex / x (Summary)
 @findex gnus-summary-limit-to-extra
@@ -6543,6 +6716,12 @@ certain regexp (@code{gnus-summary-limit-to-bodies}).  If given a
 prefix, reverse the limit.  This command is quite slow since it
 requires selecting each article to find the matches.
 
+@item / h
+@kindex / h (Summary)
+@findex gnus-summary-limit-to-headers
+Like the previous command, only limit to headers instead
+(@code{gnus-summary-limit-to-headers}).
+
 @end table
 
 
@@ -7110,7 +7289,6 @@ Matching}).
 
 @findex gnus-thread-sort-by-total-score
 @findex gnus-thread-sort-by-date
-@findex gnus-thread-sort-by-date-reverse
 @findex gnus-thread-sort-by-score
 @findex gnus-thread-sort-by-subject
 @findex gnus-thread-sort-by-author
@@ -7129,7 +7307,7 @@ By default, sorting is done on article numbers.  Ready-made sorting
 predicate functions include @code{gnus-thread-sort-by-number},
 @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-recipient},
 @code{gnus-thread-sort-by-subject},
-@code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-date-reverse},
+@code{gnus-thread-sort-by-date},
 @code{gnus-thread-sort-by-score},
 @code{gnus-thread-sort-by-most-recent-number},
 @code{gnus-thread-sort-by-most-recent-date},
@@ -7257,12 +7435,12 @@ pre-fetch all the articles it can without bound.  If it is
 @code{nil}, no pre-fetching will be done.
 
 @vindex gnus-async-prefetch-article-p
-@findex gnus-async-read-p
+@findex gnus-async-unread-p
 There are probably some articles that you don't want to pre-fetch---read
 articles, for instance.  The @code{gnus-async-prefetch-article-p}
 variable controls whether an article is to be pre-fetched.  This
 function should return non-@code{nil} when the article in question is
-to be pre-fetched.  The default is @code{gnus-async-read-p}, which
+to be pre-fetched.  The default is @code{gnus-async-unread-p}, which
 returns @code{nil} on read articles.  The function is called with an
 article data structure as the only parameter.
 
@@ -7428,6 +7606,53 @@ interested in persistent articles:
 (setq gnus-use-cache 'passive)
 @end lisp
 
+@node Sticky Articles
+@section Sticky Articles
+@cindex sticky articles
+
+When you select an article the current article buffer will be reused
+according to the value of the variable
+@code{gnus-single-article-buffer}.  If its value is non-@code{nil} (the
+default) all articles reuse the same article buffer.  Else each group
+has its own article buffer.
+
+This implies that it's not possible to have more than one article buffer
+in a group at a time.  But sometimes you might want to display all the
+latest emails from your mother, your father, your aunt, your uncle and
+your 17 cousins to coordinate the next christmas party.
+
+That's where sticky articles come in handy.  A sticky article buffer
+basically is a normal article buffer, but it won't be reused when you
+select another article.  You can make an article sticky with:
+
+@table @kbd
+@item A S
+@kindex A S (Summary)
+@findex gnus-sticky-article
+Make the current article sticky.  If a prefix arg is given, ask for a
+name for this sticky article buffer.
+@end table
+
+To close a sticky article buffer you can use these commands:
+
+@table @kbd
+@item q
+@kindex q (Article)
+@findex bury-buffer
+Puts this sticky article buffer at the end of the list of all buffers.
+
+@item k
+@kindex k (Article)
+@findex gnus-kill-sticky-article-buffer
+Kills this sticky article buffer.
+@end table
+
+To kill all sticky article buffers you can use:
+
+@defun gnus-kill-sticky-article-buffers ARG
+Kill all sticky article buffers.
+If a prefix ARG is given, ask for confirmation.
+@end defun
 
 @node Article Backlog
 @section Article Backlog
@@ -8252,8 +8477,8 @@ Some variables to customize the citation highlights:
 @vindex gnus-cite-parse-max-size
 
 @item gnus-cite-parse-max-size
-If the article size if bigger than this variable (which is 25000 by
-default), no citation highlighting will be performed.
+If the article size in bytes is bigger than this variable (which is
+25000 by default), no citation highlighting will be performed.
 
 @item gnus-cite-max-prefix
 @vindex gnus-cite-max-prefix
@@ -9038,7 +9263,7 @@ This variable determines what to do when the button on a string as
 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
+@code{ask}, always query the user what to do.  If it is a function, this
 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
@@ -9515,7 +9740,7 @@ To have all Vcards be ignored, you'd say something like this:
 If non-@code{nil}, Gnus won't require the @samp{MIME-Version} header
 before interpreting the message as a @acronym{MIME} message.  This helps
 when reading messages from certain broken mail user agents.  The
-default is @code{nil}.
+default is @code{t}.
 
 @item gnus-article-emulate-mime
 @vindex gnus-article-emulate-mime
@@ -10208,6 +10433,7 @@ process/prefix convention (@pxref{Process/Prefix}).
 @item B e
 @kindex B e (Summary)
 @findex gnus-summary-expire-articles
+@cindex expiring mail
 Run all expirable articles in the current group through the expiry
 process (@code{gnus-summary-expire-articles}).  That is, delete all
 expirable articles in the group that have been around for a while.
@@ -10216,6 +10442,7 @@ expirable articles in the group that have been around for a while.
 @item B C-M-e
 @kindex B C-M-e (Summary)
 @findex gnus-summary-expire-articles-now
+@cindex expiring mail
 Delete all the expirable articles in the group
 (@code{gnus-summary-expire-articles-now}).  This means that @strong{all}
 articles eligible for expiry in the current group will
@@ -10556,6 +10783,12 @@ Pull all cached articles (for the current group) into the summary buffer
 Pull all dormant articles (for the current group) into the summary buffer
 (@code{gnus-summary-insert-dormant-articles}).
 
+@item Y t
+@kindex Y t (Summary)
+@findex gnus-summary-insert-ticked-articles
+Pull all ticked articles (for the current group) into the summary buffer
+(@code{gnus-summary-insert-ticked-articles}).
+
 @end table
 
 
@@ -10578,6 +10811,28 @@ whenever you see a message that is a collection of other messages of
 some format, you @kbd{C-d} and read these messages in a more convenient
 fashion.
 
+@vindex gnus-auto-select-on-ephemeral-exit
+The variable @code{gnus-auto-select-on-ephemeral-exit} controls what
+article should be selected after exiting a digest group.  Valid values
+include:
+
+@table @code
+@item next
+Select the next article.
+
+@item next-unread
+Select the next unread article.
+
+@item next-noselect
+Move the cursor to the next article.  This is the default.
+
+@item next-unread-noselect
+Move the cursor to the next unread article.
+@end table
+
+If it has any other value or there is no next (unread) article, the
+article selected before entering to the digest group will appear.
+
 @item C-M-d
 @kindex C-M-d (Summary)
 @findex gnus-summary-read-document
@@ -10796,10 +11051,9 @@ get does not read @samp{Xref:full}, then you should shout and whine at
 your news admin until she includes the @code{Xref} header in the
 overview files.
 
-@vindex gnus-nov-is-evil
 If you want Gnus to get the @code{Xref}s right all the time, you have to
-set @code{gnus-nov-is-evil} to @code{t}, which slows things down
-considerably.
+set @code{nntp-nov-is-evil} to @code{t}, which slows things down
+considerably.  Also @pxref{Slow/Expensive Connection}.
 
 C'est la vie.
 
@@ -11141,15 +11395,15 @@ the current group's @code{to-address} parameter.
 Remove the @code{To} header if it only contains the address identical to
 the current group's @code{to-list} parameter.
 @item cc-list
-Remove the @code{CC} header if it only contains the address identical to
+Remove the @code{Cc} header if it only contains the address identical to
 the current group's @code{to-list} parameter.
 @item date
 Remove the @code{Date} header if the article is less than three days
 old.
 @item long-to
-Remove the @code{To} header if it is very long.
+Remove the @code{To} and/or @code{Cc} header if it is very long.
 @item many-to
-Remove all @code{To} headers if there are more than one.
+Remove all @code{To} and/or @code{Cc} headers if there are more than one.
 @end table
 
 To include these three elements, you could say something like:
@@ -11394,6 +11648,58 @@ variable, which is a list of regular expressions that are matched to the
 type of the part.  This variable is ignored if the value of the
 controlling variable is a predicate list, as described above.
 
+@ifinfo
+@c Avoid sort of redundant entries in the same section for the printed
+@c manual, but add them in info to allow `i gnus-treat-foo-bar RET' or
+@c `i foo-bar'.
+@vindex gnus-treat-buttonize
+@vindex gnus-treat-buttonize-head
+@vindex gnus-treat-capitalize-sentences
+@vindex gnus-treat-overstrike
+@vindex gnus-treat-strip-cr
+@vindex gnus-treat-strip-headers-in-body
+@vindex gnus-treat-strip-leading-blank-lines
+@vindex gnus-treat-strip-multiple-blank-lines
+@vindex gnus-treat-strip-pem
+@vindex gnus-treat-strip-trailing-blank-lines
+@vindex gnus-treat-unsplit-urls
+@vindex gnus-treat-wash-html
+@vindex gnus-treat-date-english
+@vindex gnus-treat-date-iso8601
+@vindex gnus-treat-date-lapsed
+@vindex gnus-treat-date-local
+@vindex gnus-treat-date-original
+@vindex gnus-treat-date-user-defined
+@vindex gnus-treat-date-ut
+@vindex gnus-treat-from-picon
+@vindex gnus-treat-mail-picon
+@vindex gnus-treat-newsgroups-picon
+@vindex gnus-treat-display-smileys
+@vindex gnus-treat-body-boundary
+@vindex gnus-treat-display-x-face
+@vindex gnus-treat-display-face
+@vindex gnus-treat-emphasize
+@vindex gnus-treat-fill-article
+@vindex gnus-treat-fill-long-lines
+@vindex gnus-treat-hide-boring-headers
+@vindex gnus-treat-hide-citation
+@vindex gnus-treat-hide-citation-maybe
+@vindex gnus-treat-hide-headers
+@vindex gnus-treat-hide-signature
+@vindex gnus-treat-strip-banner
+@vindex gnus-treat-strip-list-identifiers
+@vindex gnus-treat-highlight-citation
+@vindex gnus-treat-highlight-headers
+@vindex gnus-treat-highlight-signature
+@vindex gnus-treat-play-sounds
+@vindex gnus-treat-translate
+@vindex gnus-treat-x-pgp-sig
+@vindex gnus-treat-unfold-headers
+@vindex gnus-treat-fold-headers
+@vindex gnus-treat-fold-newsgroups
+@vindex gnus-treat-leading-whitespace
+@end ifinfo
+
 The following treatment options are available.  The easiest way to
 customize this is to examine the @code{gnus-article-treat} customization
 group.  Values in parenthesis are suggested sensible values.  Others are
@@ -11444,41 +11750,63 @@ is controlled by @code{gnus-body-boundary-delimiter}.
 
 @xref{Smileys}.
 
+@vindex gnus-treat-display-x-face
 @item gnus-treat-display-x-face (head)
 
 @xref{X-Face}.
 
+@vindex gnus-treat-display-face
 @item gnus-treat-display-face (head)
 
 @xref{Face}.
 
+@vindex gnus-treat-emphasize
 @item gnus-treat-emphasize (t, head, integer)
+@vindex gnus-treat-fill-article
 @item gnus-treat-fill-article (t, integer)
+@vindex gnus-treat-fill-long-lines
 @item gnus-treat-fill-long-lines (t, integer)
+@vindex gnus-treat-hide-boring-headers
 @item gnus-treat-hide-boring-headers (head)
+@vindex gnus-treat-hide-citation
 @item gnus-treat-hide-citation (t, integer)
+@vindex gnus-treat-hide-citation-maybe
 @item gnus-treat-hide-citation-maybe (t, integer)
+@vindex gnus-treat-hide-headers
 @item gnus-treat-hide-headers (head)
+@vindex gnus-treat-hide-signature
 @item gnus-treat-hide-signature (t, last)
+@vindex gnus-treat-strip-banner
 @item gnus-treat-strip-banner (t, last)
+@vindex gnus-treat-strip-list-identifiers
 @item gnus-treat-strip-list-identifiers (head)
 
 @xref{Article Hiding}.
 
+@vindex gnus-treat-highlight-citation
 @item gnus-treat-highlight-citation (t, integer)
+@vindex gnus-treat-highlight-headers
 @item gnus-treat-highlight-headers (head)
+@vindex gnus-treat-highlight-signature
 @item gnus-treat-highlight-signature (t, last, integer)
 
 @xref{Article Highlighting}.
 
+@vindex gnus-treat-play-sounds
 @item gnus-treat-play-sounds
+@vindex gnus-treat-translate
 @item gnus-treat-translate
 @item gnus-treat-ansi-sequences (t)
+@vindex gnus-treat-x-pgp-sig
 @item gnus-treat-x-pgp-sig (head)
 
+@vindex gnus-treat-unfold-headers
 @item gnus-treat-unfold-headers (head)
+@vindex gnus-treat-fold-headers
 @item gnus-treat-fold-headers (head)
+@vindex gnus-treat-fold-newsgroups
 @item gnus-treat-fold-newsgroups (head)
+@vindex gnus-treat-leading-whitespace
 @item gnus-treat-leading-whitespace (head)
 
 @xref{Article Header}.
@@ -11505,8 +11833,8 @@ buffer.
 
 @kindex v (Article)
 @cindex keys, reserved for users (Article)
-The key @kbd{v} is reserved for users.  You can bind it key to some
-function or better use it as a prefix key.
+The key @kbd{v} is reserved for users.  You can bind it to some
+command or better use it as a prefix key.
 
 A few additional keystrokes are available:
 
@@ -11587,6 +11915,7 @@ region.
 
 @item gnus-single-article-buffer
 @vindex gnus-single-article-buffer
+@cindex article buffers, several
 If non-@code{nil}, use the same article buffer for all the groups.
 (This is the default.)  If @code{nil}, each group will have its own
 article buffer.
@@ -11904,12 +12233,12 @@ still a pain, though.
 @cindex User-Agent
 
 This variable controls which information should be exposed in the
-User-Agent header.  It can be one of the symbols @code{gnus} (show only
-Gnus version), @code{emacs-gnus} (show only Emacs and Gnus versions),
-@code{emacs-gnus-config} (same as @code{emacs-gnus} plus system
-configuration), @code{emacs-gnus-type} (same as @code{emacs-gnus} plus
-system type) or a custom string.  If you set it to a string, be sure to
-use a valid format, see RFC 2616.
+User-Agent header.  It can be a list of symbols or a string.  Valid
+symbols are @code{gnus} (show Gnus version) and @code{emacs} (show Emacs
+version).  In addition to the Emacs version, you can add @code{codename}
+(show (S)XEmacs codename) or either @code{config} (show system
+configuration) or @code{type} (show system type).  If you set it to a
+string, be sure to use a valid format, see RFC 2616.
 
 @end table
 
@@ -11939,6 +12268,10 @@ you're in, you could say something like the following:
 
 Modify to suit your needs.
 
+@vindex gnus-message-highlight-citation
+If @code{gnus-message-highlight-citation} is t, different levels of
+citations are highlighted like in Gnus article buffers also in message
+mode buffers.
 
 @node Archived Messages
 @section Archived Messages
@@ -11957,7 +12290,8 @@ Group Commands}).
 
 @vindex gnus-message-archive-method
 @code{gnus-message-archive-method} says what virtual server Gnus is to
-use to store sent messages.  The default is:
+use to store sent messages.  The default is @code{"archive"}, and when
+actually being used it is expanded into:
 
 @lisp
 (nnfolder "archive"
@@ -11967,6 +12301,22 @@ use to store sent messages.  The default is:
           (nnfolder-inhibit-expiry t))
 @end lisp
 
+@quotation
+@vindex gnus-update-message-archive-method
+Note: a server like this is saved in the @file{~/.newsrc.eld} file first
+so that it may be used as a real method of the server which is named
+@code{"archive"} (that is, for the case where
+@code{gnus-message-archive-method} is set to @code{"archive"}) ever
+since.  If it once has been saved, it will never be updated by default
+even if you change the value of @code{gnus-message-archive-method}
+afterward.  Therefore, the server @code{"archive"} doesn't necessarily
+mean the @code{nnfolder} server like this at all times.  If you want the
+saved method to reflect always the value of
+@code{gnus-message-archive-method}, set the
+@code{gnus-update-message-archive-method} variable to a non-@code{nil}
+value.  The default value of this variable is @code{nil}.
+@end quotation
+
 You can, however, use any mail select method (@code{nnml},
 @code{nnmbox}, etc.).  @code{nnfolder} is a quite likable select method
 for doing this sort of thing, though.  If you don't like the default
@@ -12170,6 +12520,9 @@ name can be one of:
 @item @code{body}
 @end itemize
 
+Note that the @code{signature-file} attribute honors the variable
+@code{message-signature-directory}.
+
 The attribute name can also be a string or a symbol.  In that case,
 this will be used as a header name, and the value will be inserted in
 the headers of the article; if the value is @code{nil}, the header
@@ -12544,8 +12897,8 @@ Also @pxref{Formatting Variables}.
 @item v
 @kindex v (Server)
 @cindex keys, reserved for users (Server)
-The key @kbd{v} is reserved for users.  You can bind it key to some
-function or better use it as a prefix key.
+The key @kbd{v} is reserved for users.  You can bind it to some
+command or better use it as a prefix key.
 
 @item a
 @kindex a (Server)
@@ -12601,6 +12954,15 @@ Request that the server regenerate all its data structures
 (@code{gnus-server-regenerate-server}).  This can be useful if you have
 a mail back end that has gotten out of sync.
 
+@item z
+@kindex z (Server)
+@findex gnus-server-compact-server
+
+Compact all groups in the server under point
+(@code{gnus-server-compact-server}).  Currently implemented only in
+nnml (@pxref{Mail Spool}).  This removes gaps between article numbers,
+hence getting a correct total article count.
+
 @end table
 
 
@@ -12687,7 +13049,7 @@ an indirect connection:
 @lisp
 (setq gnus-select-method
       '(nntp "indirect"
-            (nntp-address "news.server.example")
+             (nntp-address "news.server.example")
              (nntp-via-user-name "intermediate_user_name")
              (nntp-via-address "intermediate.host.example")
              (nntp-via-rlogin-command "ssh")
@@ -13040,6 +13402,34 @@ network is fast, setting this variable to a really small number means
 that fetching will probably be slower.  If this variable is @code{nil},
 @code{nntp} will never split requests.  The default is 5.
 
+@item nntp-xref-number-is-evil
+@vindex nntp-xref-number-is-evil
+When Gnus refers to an article having the @code{Message-ID} that a user
+specifies or having the @code{Message-ID} of the parent article of the
+current one (@pxref{Finding the Parent}), Gnus sends a @code{HEAD}
+command to the @acronym{NNTP} server to know where it is, and the server
+returns the data containing the pairs of a group and an article number
+in the @code{Xref} header.  Gnus normally uses the article number to
+refer to the article if the data shows that that article is in the
+current group, while it uses the @code{Message-ID} otherwise.  However,
+some news servers, e.g., ones running Diablo, run multiple engines
+having the same articles but article numbers are not kept synchronized
+between them.  In that case, the article number that appears in the
+@code{Xref} header varies by which engine is chosen, so you cannot refer
+to the parent article that is in the current group, for instance.  If
+you connect to such a server, set this variable to a non-@code{nil}
+value, and Gnus never uses article numbers.  For example:
+
+@lisp
+(setq gnus-select-method
+      '(nntp "newszilla"
+             (nntp-address "newszilla.example.com")
+             (nntp-xref-number-is-evil t)
+             @dots{}))
+@end lisp
+
+The default value of this server variable is @code{nil}.
+
 @item nntp-prepare-server-hook
 @vindex nntp-prepare-server-hook
 A hook run before attempting to connect to an @acronym{NNTP} server.
@@ -13060,6 +13450,24 @@ Seven pre-made functions are supplied.  These functions can be grouped
 in two categories: direct connection functions (four pre-made), and
 indirect ones (three pre-made).
 
+@item nntp-never-echoes-commands
+@vindex nntp-never-echoes-commands
+Non-@code{nil} means the nntp server never echoes commands.  It is
+reported that some nntps server doesn't echo commands.  So, you may want
+to set this to non-@code{nil} in the method for such a server setting
+@code{nntp-open-connection-function} to @code{nntp-open-ssl-stream} for
+example.  The default value is @code{nil}.  Note that the
+@code{nntp-open-connection-functions-never-echo-commands} variable
+overrides the @code{nil} value of this variable.
+
+@item nntp-open-connection-functions-never-echo-commands
+@vindex nntp-open-connection-functions-never-echo-commands
+List of functions that never echo commands.  Add or set a function which
+you set to @code{nntp-open-connection-function} to this list if it does
+not echo commands.  Note that a non-@code{nil} value of the
+@code{nntp-never-echoes-commands} variable overrides this variable.  The
+default value is @code{(nntp-open-network-stream)}.
+
 @item nntp-prepare-post-hook
 @vindex nntp-prepare-post-hook
 A hook run just before posting an article.  If there is no
@@ -13671,14 +14079,18 @@ Header lines longer than the value of
 @code{nnmail-split-header-length-limit} are excluded from the split
 function.
 
-@vindex nnmail-mail-splitting-charset
 @vindex nnmail-mail-splitting-decodes
-By default the splitting codes @acronym{MIME} decodes headers so you
-can match on non-@acronym{ASCII} strings.  The
-@code{nnmail-mail-splitting-charset} variable specifies the default
-charset for decoding.  The behavior can be turned off completely by
-binding @code{nnmail-mail-splitting-decodes} to @code{nil}, which is
-useful if you want to match articles based on the raw header data.
+@vindex nnmail-mail-splitting-charset
+By default, splitting does not decode headers, so you can not match on
+non-@acronym{ASCII} strings.  But it is useful if you want to match
+articles based on the raw header data.  To enable it, set the
+@code{nnmail-mail-splitting-decodes} variable to a non-@code{nil} value.
+In addition, the value of the @code{nnmail-mail-splitting-charset}
+variable is used for decoding non-@acronym{MIME} encoded string when
+@code{nnmail-mail-splitting-decodes} is non-@code{nil}.  The default
+value is @code{nil} which means not to decode non-@acronym{MIME} encoded
+string.  A suitable value for you will be @code{undecided} or be the
+charset used normally in mails you are interested in.
 
 @vindex nnmail-resplit-incoming
 By default, splitting is performed on all incoming messages.  If you
@@ -13791,7 +14203,8 @@ TMP=$HOME/Mail/tmp
 rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP
 @end example
 
-Alter this script to fit find the @samp{movemail} you want to use.
+Alter this script to fit the @samp{movemail} and temporary
+file you want to use.
 
 
 @item directory
@@ -14037,7 +14450,9 @@ mapped into the @code{imap-shell-program} variable.  This should be a
 ssh %s imapd
 @end example
 
-The valid format specifier characters are:
+Make sure nothing is interfering with the output of the program, e.g.,
+don't forget to redirect the error output to the void.  The valid format
+specifier characters are:
 
 @table @samp
 @item s
@@ -14195,7 +14610,7 @@ files.  If a positive number, delete files older than number of days
 
 @item mail-source-delete-old-incoming-confirm
 @vindex mail-source-delete-old-incoming-confirm
-If non-@code{nil}, ask for for confirmation before deleting old incoming
+If non-@code{nil}, ask for confirmation before deleting old incoming
 files.  This variable only applies when
 @code{mail-source-delete-incoming} is a positive number.
 
@@ -14234,14 +14649,12 @@ If non-@code{nil}, name of program for fetching new mail.  If
 @subsubsection Fetching Mail
 
 @vindex mail-sources
-@vindex nnmail-spool-file
 The way to actually tell Gnus where to get new mail from is to set
 @code{mail-sources} to a list of mail source specifiers
 (@pxref{Mail Source Specifiers}).
 
-If this variable (and the obsolescent @code{nnmail-spool-file}) is
-@code{nil}, the mail back ends will never attempt to fetch mail by
-themselves.
+If this variable is @code{nil}, the mail back ends will never attempt to
+fetch mail by themselves.
 
 If you want to fetch mail both from your local spool as well as a
 @acronym{POP} mail server, you'd say something like:
@@ -14450,9 +14863,9 @@ body of the messages:
         "string.group"))))
 @end lisp
 
-The buffer is narrowed to the message in question when @var{function}
-is run.  That's why @code{(widen)} needs to be called after
-@code{save-excursion} and @code{save-restriction} in the example
+The buffer is narrowed to the header of the message in question when
+@var{function} is run.  That's why @code{(widen)} needs to be called
+after @code{save-excursion} and @code{save-restriction} in the example
 above.  Also note that with the nnimap back end, message bodies will
 not be downloaded by default.  You need to set
 @code{nnimap-split-download-body} to @code{t} to do that
@@ -14794,6 +15207,7 @@ using the new mail back end.
 @node Expiring Mail
 @subsection Expiring Mail
 @cindex article expiry
+@cindex expiring mail
 
 Traditional mail readers have a tendency to remove mail articles when
 you mark them as read, in some way.  Gnus takes a fundamentally
@@ -15362,7 +15776,7 @@ If non-@code{nil}, @code{nnml} will allow using compressed message
 files.  This requires @code{auto-compression-mode} to be enabled
 (@pxref{Compressed Files, ,Compressed Files, emacs, The Emacs Manual}).
 If the value of @code{nnml-use-compressed-files} is a string, it is used
-as the file extension specifying the comression program.  You can set it
+as the file extension specifying the compression program.  You can set it
 to @samp{.bz2} if your Emacs supports it.  A value of @code{t} is
 equivalent to @samp{.gz}.
 
@@ -16363,6 +16777,15 @@ data files.  The default is the value of
 @code{mm-universal-coding-system} (which defaults to @code{emacs-mule}
 in Emacs or @code{escape-quoted} in XEmacs).
 
+@item nnrss-ignore-article-fields
+@vindex nnrss-ignore-article-fields
+Some feeds update constantly article fields during their publications,
+e.g. to indicate the number of comments.  However, if there is
+a difference between the local article and the distant one, the latter
+is considered to be new.  To avoid this and discard some fields, set this
+variable to the list of fields to be ignored.  The default is
+@code{'(slash:comments)}.
+
 @item nnrss-use-local
 @vindex nnrss-use-local
 @findex nnrss-generate-download-script
@@ -16400,7 +16823,7 @@ summary buffer.
 @lisp
 (require 'browse-url)
 
-(defun browse-nnrss-url( arg )
+(defun browse-nnrss-url (arg)
   (interactive "p")
   (let ((url (assq nnrss-url-field
                    (mail-header-extra
@@ -16654,8 +17077,10 @@ to OpenSSL/SSLeay.
 
 @vindex imap-shell-program
 @vindex imap-shell-host
-For @acronym{IMAP} connections using the @code{shell} stream, the variable
-@code{imap-shell-program} specify what program to call.
+For @acronym{IMAP} connections using the @code{shell} stream, the
+variable @code{imap-shell-program} specify what program to call.  Make
+sure nothing is interfering with the output of the program, e.g., don't
+forget to redirect the error output to the void.
 
 @item nnimap-authenticator
 @vindex nnimap-authenticator
@@ -16752,6 +17177,7 @@ as ticked for other users.
 @item nnimap-expunge-search-string
 @cindex expunging
 @vindex nnimap-expunge-search-string
+@cindex expiring @acronym{IMAP} mail
 
 This variable contain the @acronym{IMAP} search command sent to server when
 searching for articles eligible for expiring.  The default is
@@ -16763,6 +17189,10 @@ Probably the only useful value to change this to is
 messages instead of the internal article date.  See section 6.4.4 of
 RFC 2060 for more information on valid strings.
 
+However, if @code{nnimap-search-uids-not-since-is-evil}
+is true, this variable has no effect since the search logic
+is reversed, as described below.
+
 @item nnimap-authinfo-file
 @vindex nnimap-authinfo-file
 
@@ -16788,6 +17218,71 @@ Unselect mailboxes before looking for new mail in them.  Some servers
 seem to need this under some circumstances; it was reported that
 Courier 1.7.1 did.
 
+@item nnimap-nov-is-evil
+@vindex nnimap-nov-is-evil
+@cindex Courier @acronym{IMAP} server
+@cindex @acronym{NOV}
+
+Never generate or use a local @acronym{NOV} database. Defaults to the
+value of @code{gnus-agent}.
+
+Using a @acronym{NOV} database usually makes header fetching much
+faster, but it uses the @code{UID SEARCH UID} command, which is very
+slow on some servers (notably some versions of Courier). Since the Gnus
+Agent caches the information in the @acronym{NOV} database without using
+the slow command, this variable defaults to true if the Agent is in use,
+and false otherwise.
+
+@item nnimap-search-uids-not-since-is-evil
+@vindex nnimap-search-uids-not-since-is-evil
+@cindex Courier @acronym{IMAP} server
+@cindex expiring @acronym{IMAP} mail
+
+Avoid the @code{UID SEARCH UID @var{message numbers} NOT SINCE
+@var{date}} command, which is slow on some @acronym{IMAP} servers
+(notably, some versions of Courier). Instead, use @code{UID SEARCH SINCE
+@var{date}} and prune the list of expirable articles within Gnus.
+
+When Gnus expires your mail (@pxref{Expiring Mail}), it starts with a
+list of expirable articles and asks the IMAP server questions like ``Of
+these articles, which ones are older than a week?'' While this seems
+like a perfectly reasonable question, some IMAP servers take a long time
+to answer it, since they seemingly go looking into every old article to
+see if it is one of the expirable ones. Curiously, the question ``Of
+@emph{all} articles, which ones are newer than a week?'' seems to be
+much faster to answer, so setting this variable causes Gnus to ask this
+question and figure out the answer to the real question itself.
+
+This problem can really sneak up on you: when you first configure Gnus,
+everything works fine, but once you accumulate a couple thousand
+messages, you start cursing Gnus for being so slow. On the other hand,
+if you get a lot of email within a week, setting this variable will
+cause a lot of network traffic between Gnus and the IMAP server.
+
+@item nnimap-logout-timeout
+@vindex nnimap-logout-timeout
+
+There is a case where a connection to a @acronym{IMAP} server is unable
+to close, when connecting to the server via a certain kind of network,
+e.g. @acronym{VPN}.  In that case, it will be observed that a connection
+between Emacs and the local network looks alive even if the server has
+closed a connection for some reason (typically, a timeout).
+Consequently, Emacs continues waiting for a response from the server for
+the @code{LOGOUT} command that Emacs sent, or hangs in other words.  If
+you are in such a network, setting this variable to a number of seconds
+will be helpful.  If it is set, a hung connection will be closed
+forcibly, after this number of seconds from the time Emacs sends the
+@code{LOGOUT} command.  It should not be too small value but too large
+value will be inconvenient too.  Perhaps the value 1.0 will be a good
+candidate but it might be worth trying some other values.
+
+Example server specification:
+
+@lisp
+(nnimap "mail.server.com"
+        (nnimap-logout-timeout 1.0))
+@end lisp
+
 @end table
 
 @menu
@@ -16975,7 +17470,7 @@ splitting function that analyzes the body to split the article.
 
 @node Expiring in IMAP
 @subsection Expiring in IMAP
-@cindex expiring imap mail
+@cindex expiring @acronym{IMAP} mail
 
 Even though @code{nnimap} is not a proper @code{nnmail} derived back
 end, it supports most features in regular expiring (@pxref{Expiring
@@ -16994,6 +17489,9 @@ you to view client specific flags on the message.  It also means that
 your server must support permanent storage of client specific flags on
 messages.  Most do, fortunately.
 
+If expiring @acronym{IMAP} mail seems very slow, try setting the server
+variable @code{nnimap-search-uids-not-since-is-evil}.
+
 @table @code
 
 @item nnmail-expiry-wait
@@ -18175,7 +18673,7 @@ things to do:
 @itemize @bullet
 @item
 Allow @code{nndiary} to retrieve new mail by itself.  Put the following
-line in your @file{gnusrc} file:
+line in your @file{~/.gnus.el} file:
 
 @lisp
 (setq nndiary-get-new-mail t)
@@ -18233,7 +18731,7 @@ two variables are probably the only ones you will want to change:
 
 @defvar nndiary-reminders
 This is the list of times when you want to be reminded of your
-appointements (e.g. 3 weeks before, then 2 days before, then 1 hour
+appointments (e.g. 3 weeks before, then 2 days before, then 1 hour
 before and that's it).  Remember that ``being reminded'' means that the
 diary message will pop up as brand new and unread again when you get new
 mail.
@@ -18255,7 +18753,7 @@ so on) would be rather boring.  Fortunately, there is a library called
 @code{gnus-diary} written on top of @code{nndiary}, that does many
 useful things for you.
 
-  In order to use it, add the following line to your @file{gnusrc} file:
+  In order to use it, add the following line to your @file{~/.gnus.el} file:
 
 @lisp
 (require 'gnus-diary)
@@ -18384,14 +18882,14 @@ automatically (although not filled with proper values yet).
 @node Sending or Not Sending
 @subsection Sending or Not Sending
 
-Well, assuming you've read of of the above, here are two final notes on
+Well, assuming you've read all of the above, here are two final notes on
 mail sending with @code{nndiary}:
 
 @itemize @bullet
 @item
 @code{nndiary} is a @emph{real} mail back end.  You really send real diary
 messsages for real.  This means for instance that you can give
-appointements to anybody (provided they use Gnus and @code{nndiary}) by
+appointments to anybody (provided they use Gnus and @code{nndiary}) by
 sending the diary message to them as well.
 @item
 However, since @code{nndiary} also has a @code{request-post} method, you
@@ -18709,23 +19207,23 @@ predicate to individual groups.
 
 @table @code
 @item short
-True iff the article is shorter than @code{gnus-agent-short-article}
+True if the article is shorter than @code{gnus-agent-short-article}
 lines; default 100.
 
 @item long
-True iff the article is longer than @code{gnus-agent-long-article}
+True if the article is longer than @code{gnus-agent-long-article}
 lines; default 200.
 
 @item low
-True iff the article has a download score less than
+True if the article has a download score less than
 @code{gnus-agent-low-score}; default 0.
 
 @item high
-True iff the article has a download score greater than
+True if the article has a download score greater than
 @code{gnus-agent-high-score}; default 0.
 
 @item spam
-True iff the Gnus Agent guesses that the article is spam.  The
+True if the Gnus Agent guesses that the article is spam.  The
 heuristics may change over time, but at present it just computes a
 checksum and sees whether articles match.
 
@@ -19278,7 +19776,7 @@ sense if you are using a nntp or nnimap back end.
 @findex gnus-agent-expire-group
 @cindex agent expiry
 @cindex Gnus agent expiry
-@cindex expiry
+@cindex expiry, in Gnus agent
 
 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
@@ -19625,7 +20123,7 @@ following incantation:
 
 @example
 #!/bin/sh
-emacs -batch -l ~/.emacs -l ~/.gnus.el gnus-agent-batch >/dev/null 2>&1
+emacs -batch -l ~/.emacs -l ~/.gnus.el -f gnus-agent-batch >/dev/null 2>&1
 @end example
 
 
@@ -20834,6 +21332,13 @@ so: @kbd{I e s p To RET <your name> RET}.
 
 See?  Simple.
 
+@vindex gnus-inhibit-slow-scoring
+You can inhibit scoring the slow scoring on headers or body by setting
+the variable @code{gnus-inhibit-slow-scoring}.  If
+@code{gnus-inhibit-slow-scoring} is regexp, slow scoring is inhibited if
+the group matches the regexp.  If it is t, slow scoring on it is
+inhibited for all groups.
+
 
 @node Scoring Tips
 @section Scoring Tips
@@ -22669,8 +23174,8 @@ It takes the group name as a parameter.
 @section Image Enhancements
 
 XEmacs, as well as Emacs 21@footnote{Emacs 21 on MS Windows doesn't
-support images yet.}, is able to display pictures and stuff, so Gnus has
-taken advantage of that.
+support images, Emacs 22 does.} and up, are able to display pictures and
+stuff, so Gnus has taken advantage of that.
 
 @menu
 * X-Face::                      Display a funky, teensy black-and-white image.
@@ -22702,26 +23207,31 @@ readers.
 @c @anchor{X-Face}
 
 Viewing an @code{X-Face} header either requires an Emacs that has
-@samp{compface} support (which most XEmacs versions has), or that you
+@samp{compface} support (which most XEmacs versions have), or that you
 have suitable conversion or display programs installed.  If your Emacs
 has image support the default action is to display the face before the
 @code{From} header.  If there's no native @code{X-Face} support, Gnus
 will try to convert the @code{X-Face} header using external programs
-from the @code{pbmplus} package and friends.  For XEmacs it's faster if
-XEmacs has been compiled with @code{X-Face} support.  The default action
-under Emacs without image support is to fork off the @code{display}
-program.
+from the @code{pbmplus} package and friends, see below.  For XEmacs it's
+faster if XEmacs has been compiled with @code{X-Face} support.  The
+default action under Emacs without image support is to fork off the
+@code{display} program.
 
-On a GNU/Linux system, the @code{display} program is from the
+On a GNU/Linux system, the @code{display} program is included in the
 ImageMagick package.  For external conversion programs look for packages
 with names like @code{netpbm}, @code{libgr-progs} and @code{compface}.
-
-The variable that controls this is the
-@code{gnus-article-x-face-command} variable.  If this variable is a
+On Windows, you may use the packages @code{netpbm} and @code{compface}
+from @url{http://gnuwin32.sourceforge.net}.  You need to add the
+@code{bin} directory to your @code{PATH} environment variable.
+@c In fact only the following DLLs and binaries seem to be required:
+@c compface1.dll uncompface.exe libnetpbm10.dll icontopbm.exe
+
+The variable @code{gnus-article-x-face-command} controls which programs
+are used to display the @code{X-Face} header.  If this variable is a
 string, this string will be executed in a sub-shell.  If it is a
 function, this function will be called with the face as the argument.
-If @code{gnus-article-x-face-too-ugly} (which is a regexp) matches
-the @code{From} header, the face will not be shown.
+If @code{gnus-article-x-face-too-ugly} (which is a regexp) matches the
+@code{From} header, the face will not be shown.
 
 (Note: @code{x-face} is used in the variable/function names, not
 @code{xface}).
@@ -23891,9 +24401,6 @@ From Ted Zlatanov <tzz@@lifelogs.com>.
 (gnus-registry-initialize)
 (spam-initialize)
 
-;; @r{I like @kbd{C-s} for marking spam}
-(define-key gnus-summary-mode-map "\C-s" 'gnus-summary-mark-as-spam)
-
 (setq
  spam-log-to-registry t     ; @r{for spam autodetection}
  spam-use-BBDB t
@@ -24482,7 +24989,7 @@ You should not enable this if you use @code{spam-use-spamassassin}.
 
 @end defvar
 
-@defvar spam-spamassassin-path
+@defvar spam-spamassassin-program
 
 This variable points to the SpamAssassin executable.  If you have
 @code{spamd} running, you can set this variable to the @code{spamc}
@@ -24527,7 +25034,7 @@ The actual string used is irrelevant, but you probably want to leave
 the default value of @samp{spam}.
 @end defvar
 
-@defvar spam-ifile-database-path
+@defvar spam-ifile-database
 
 This is the filename for the ifile database.  It is not specified by
 default, so ifile will use its own default database name.
@@ -25137,7 +25644,7 @@ Save table: (spam-stat-save)
 @subsection Dired
 @cindex dired
 
-@code{gnus-dired-minor-mode} provided some useful functions for dired
+@code{gnus-dired-minor-mode} provides some useful functions for dired
 buffers.  It is enabled with
 @lisp
 (add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode)
@@ -25146,6 +25653,7 @@ buffers.  It is enabled with
 @table @kbd
 @item C-c C-m C-a
 @findex gnus-dired-attach
+@cindex attachments, selection via dired
 Send dired's marked files as an attachment (@code{gnus-dired-attach}).
 You will be prompted for a message buffer.
 
@@ -25206,6 +25714,17 @@ shut up, but will flash so many messages it will make your head swim.
 This variable works the same way as @code{gnus-verbose}, but it applies
 to the Gnus back ends instead of Gnus proper.
 
+@item gnus-add-timestamp-to-message
+@vindex gnus-add-timestamp-to-message
+This variable controls whether to add timestamps to messages that are
+controlled by @code{gnus-verbose} and @code{gnus-verbose-backends} and
+are issued.  The default value is @code{nil} which means never to add
+timestamp.  If it is @code{log}, add timestamps to only the messages
+that go into the @samp{*Messages*} buffer (in XEmacs, it is the
+@w{@samp{ *Message-Log*}} buffer).  If it is neither @code{nil} nor
+@code{log}, add timestamps not only to log messages but also to the ones
+displayed in the echo area.
+
 @item nnheader-max-head-length
 @vindex nnheader-max-head-length
 When the back ends read straight heads of articles, they all try to read
@@ -25870,6 +26389,7 @@ Yoshiki Hayashi, @c Hayashi
 P. E. Jareth Hein,
 Hisashige Kenji, @c Hisashige
 Scott Hofmann,
+Tassilo Horn,
 Marc Horowitz,
 Gunnar Horrigmo,
 Richard Hoskins,
@@ -26762,7 +27282,7 @@ New @file{make.bat} for compiling and installing Gnus under MS Windows
 
 Use @file{make.bat} if you want to install Gnus under MS Windows, the
 first argument to the batch-program should be the directory where
-@file{xemacs.exe} respectively @file{emacs.exe} is located, iff you want
+@file{xemacs.exe} respectively @file{emacs.exe} is located, if you want
 to install Gnus after compiling it, give @file{make.bat} @code{/copy} as
 the second parameter.
 
@@ -27119,7 +27639,7 @@ The envelope sender address can be customized when using Sendmail.
 @item
 Gnus no longer generate the Sender: header automatically.
 
-Earlier it was generated iff the user configurable email address was
+Earlier it was generated when the user configurable email address was
 different from the Gnus guessed default user address.  As the guessing
 algorithm is rarely correct these days, and (more controversially) the
 only use of the Sender: header was to check if you are entitled to
@@ -27472,8 +27992,8 @@ that's already there.  This is not how this manual is written.  When
 implementing something, I write the manual entry for that something
 straight away.  I then see that it's difficult to explain the
 functionality, so I write how it's supposed to be, and then I change the
-implementation.  Writing the documentation and writing the code goes
-hand in hand.
+implementation.  Writing the documentation and writing the code go hand
+in hand.
 
 This, of course, means that this manual has no, or little, flow.  It
 documents absolutely everything in Gnus, but often not where you're
@@ -27481,7 +28001,7 @@ looking for it.  It is a reference manual, and not a guide to how to get
 started with Gnus.
 
 That would be a totally different book, that should be written using the
-reference manual as source material.  It would look quite differently.
+reference manual as source material.  It would look quite different.
 
 
 @page
@@ -27593,11 +28113,32 @@ collection of @acronym{NOV} lines.
 
 @item @acronym{NOV}
 @cindex @acronym{NOV}
+@acronym{NOV} stands for News OverView, which is a type of news server
+header which provide datas containing the condensed header information
+of articles.  They are produced by the server itself; in the @code{nntp}
+back end Gnus uses the ones that the @acronym{NNTP} server makes, but
+Gnus makes them by itself for some backends (in particular, @code{nnml}).
+
 When Gnus enters a group, it asks the back end for the headers of all
 unread articles in the group.  Most servers support the News OverView
 format, which is more compact and much faster to read and parse than the
 normal @sc{head} format.
 
+The @acronym{NOV} data consist of one or more text lines (@pxref{Text
+Lines, ,Motion by Text Lines, elisp, The Emacs Lisp Reference Manual})
+where each line has the header information of one article.  The header
+information is a tab-separated series of the header's contents including
+an article number, a subject, an author, a date, a message-id,
+references, etc.
+
+Those data enable Gnus to generate summary lines quickly.  However, if
+the server does not support @acronym{NOV} or you disable it purposely or
+for some reason, Gnus will try to generate the header information by
+parsing each article's headers one by one.  It will take time.
+Therefore, it is not usually a good idea to set nn*-nov-is-evil
+(@pxref{Slow/Expensive Connection}) to a non-@code{nil} value unless you
+know that the server makes wrong @acronym{NOV} data.
+
 @item level
 @cindex levels
 Each group is subscribed at some @dfn{level} or other (1-9).  The ones
@@ -27730,11 +28271,11 @@ for some quite common situations.
 
 
 @node Slow/Expensive Connection
-@subsection Slow/Expensive NNTP Connection
+@subsection Slow/Expensive Connection
 
 If you run Emacs on a machine locally, and get your news from a machine
 over some very thin strings, you want to cut down on the amount of data
-Gnus has to get from the @acronym{NNTP} server.
+Gnus has to get from the server.
 
 @table @code
 
@@ -27746,9 +28287,25 @@ also have to set @code{gnus-check-new-newsgroups} and
 doesn't suddenly decide to fetch the active file anyway.
 
 @item gnus-nov-is-evil
-This one has to be @code{nil}.  If not, grabbing article headers from
-the @acronym{NNTP} server will not be very fast.  Not all @acronym{NNTP} servers
-support @sc{xover}; Gnus will detect this by itself.
+@vindex gnus-nov-is-evil
+Usually this one must @emph{always} be @code{nil} (which is the
+default).  If, for example, you wish to not use @acronym{NOV}
+(@pxref{Terminology}) with the @code{nntp} back end (@pxref{Crosspost
+Handling}), set @code{nntp-nov-is-evil} to a non-@code{nil} value
+instead of setting this.  But you normally do not need to set
+@code{nntp-nov-is-evil} since Gnus by itself will detect whether the
+@acronym{NNTP} server supports @acronym{NOV}.  Anyway, grabbing article
+headers from the @acronym{NNTP} server will not be very fast if you tell
+Gnus not to use @acronym{NOV}.
+
+As the variables for the other back ends, there are
+@code{nndiary-nov-is-evil}, @code{nndir-nov-is-evil},
+@code{nnfolder-nov-is-evil}, @code{nnimap-nov-is-evil},
+@code{nnml-nov-is-evil}, @code{nnspool-nov-is-evil}, and
+@code{nnwarchive-nov-is-evil}.  Note that a non-@code{nil} value for
+@code{gnus-nov-is-evil} overrides all those variables.@footnote{Although
+the back ends @code{nnkiboze}, @code{nnslashdot}, @code{nnultimate}, and
+@code{nnwfm} don't have their own nn*-nov-is-evil.}
 @end table
 
 
@@ -27839,7 +28396,7 @@ Set @code{gnus-check-new-newsgroups} and
 
 Set @code{gnus-show-threads}, @code{gnus-use-cross-reference} and
 @code{gnus-nov-is-evil} to @code{nil} to make entering and exiting the
-summary buffer faster.
+summary buffer faster.  Also @pxref{Slow/Expensive Connection}.
 
 
 @page
@@ -27864,8 +28421,11 @@ Gnus will work.
 
 @item
 Try doing an @kbd{M-x gnus-version}.  If you get something that looks
-like @samp{Gnus v5.10.6} you have the right files loaded.  Otherwise
-you have some old @file{.el} files lying around.  Delete these.
+like @c
+@samp{No Gnus v0.7} @c Adjust ../Makefile.in if you change this line!
+@c
+you have the right files loaded.  Otherwise you have some old @file{.el}
+files lying around.  Delete these.
 
 @item
 Read the help group (@kbd{G h} in the group buffer) for a
@@ -29552,6 +30112,10 @@ former).  The manual is unambiguous, but it can be confusing.
 @page
 @include gnus-faq.texi
 
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
+
 @node Index
 @chapter Index
 @printindex cp