@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
\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}{}
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
* 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.
* 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
* 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.
@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
* 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
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.
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
@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
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
groups under point---@code{gnus-subscribe-newsgroup-method} is not
consulted.
+Changes from the group editing commands are stored in
+@file{~/.newsrc.eld} (@code{gnus-startup-file}). An alternative is the
+variable @code{gnus-parameters}, @xref{Group Parameters}.
+
@table @kbd
@item G m
@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}.
@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
(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
@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.
@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}).
@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}).
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
@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")
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:
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
@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
* 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.
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
(@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
@item / n
@kindex / n (Summary)
@findex gnus-summary-limit-to-articles
-Limit the summary buffer to the current article
-(@code{gnus-summary-limit-to-articles}). Uses the process/prefix
-convention (@pxref{Process/Prefix}).
+With prefix @samp{n}, limit the summary buffer to the next @samp{n}
+articles. If not given a prefix, use the process marked articles
+instead. (@code{gnus-summary-limit-to-articles}).
@item / w
@kindex / w (Summary)
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
@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
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},
@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.
(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
@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
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
@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.
@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
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
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
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.
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:
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
@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}.
@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:
@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.
@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
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
@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"
(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
@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
@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)
(@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
@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")
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.
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
@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
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
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
@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.
@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
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}.
@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
@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
@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
@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
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
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
@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
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
@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)
@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.
@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)
@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
@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
@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
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
@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.
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 the @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}).
(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
@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}
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.
@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)
@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.
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
P. E. Jareth Hein,
Hisashige Kenji, @c Hisashige
Scott Hofmann,
+Tassilo Horn,
Marc Horowitz,
Gunnar Horrigmo,
Richard Hoskins,
@item
The option @code{mm-fill-flowed} can be used to disable treatment of
``format=flowed'' messages. Also, flowed text is disabled when sending
-inline PGP signed messages. (New in Gnus 5.10.7)
+inline PGP signed messages. @xref{Flowed text, , Flowed text,
+emacs-mime, The Emacs MIME Manual}. (New in Gnus 5.10.7)
+@c This entry is also present in the node "No Gnus".
@item
Gnus supports the generation of RFC 2298 Disposition Notification requests.
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
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
@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
@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
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
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
@page
@include gnus-faq.texi
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
+
@node Index
@chapter Index
@printindex cp