@copying
Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+2002, 2003, 2004, 2005, 2006, 2007, 2008 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.5}
+\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.5.
+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
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
@cindex group parameters
The group parameters store information local to a particular group.
+
+Use the @kbd{G p} or the @kbd{G c} command to edit group parameters of a
+group. (@kbd{G p} presents you with a Lisp-based interface, @kbd{G c}
+presents you with a Customize-like interface. The latter helps avoid
+silly Lisp errors.) You might also be interested in reading about topic
+parameters (@pxref{Topic Parameters}).
+Additionally, you can set group parameters via the
+@code{gnus-parameters} variable, see below.
+
Here's an example group parameter list:
@example
@end table
-Use the @kbd{G p} or the @kbd{G c} command to edit group parameters of a
-group. (@kbd{G p} presents you with a Lisp-based interface, @kbd{G c}
-presents you with a Customize-like interface. The latter helps avoid
-silly Lisp errors.) You might also be interested in reading about topic
-parameters (@pxref{Topic Parameters}).
-
@vindex gnus-parameters
Group parameters can be set via the @code{gnus-parameters} variable too.
But some variables, such as @code{visible}, have no effect (For this
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")
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.
(@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
@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
@findex gnus-uu-decode-binhex
Unbinhex the current series (@code{gnus-uu-decode-binhex}). This
doesn't really work yet.
+
+@item X Y
+@kindex X Y (Summary)
+@findex gnus-uu-decode-yenc
+yEnc-decode the current series and save it (@code{gnus-uu-decode-yenc}).
@end table
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
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
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.
@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:
@kindex R (Article)
@findex gnus-article-reply-with-original
Send a reply to the current article and yank the current article
-(@code{gnus-article-reply-with-original}). If given a prefix, make a
-wide reply. If the region is active, only yank the text in the
-region.
+(@code{gnus-article-reply-with-original}). If the region is active,
+only yank the text in the region.
+
+@item S W
+@kindex S W (Article)
+@findex gnus-article-wide-reply-with-original
+Send a wide reply to the current article and yank the current article
+(@code{gnus-article-wide-reply-with-original}). If the region is
+active, only yank the text in the region.
@item F
@kindex F (Article)
@findex gnus-article-followup-with-original
Send a followup to the current article and yank the current article
-(@code{gnus-article-followup-with-original}). If given a prefix, make
-a wide reply. If the region is active, only yank the text in the
-region.
+(@code{gnus-article-followup-with-original}). If the region is active,
+only yank the text in the region.
@end table
@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.
Finally, if you want to always post using the native select method,
you can set this variable to @code{native}.
-When sending mail, Message invokes @code{message-send-mail-function}.
-The default function, @code{message-send-mail-with-sendmail}, pipes
-your article to the @code{sendmail} binary for further queuing and
-sending. When your local system is not configured for sending mail
-using @code{sendmail}, and you have access to a remote @acronym{SMTP}
-server, you can set @code{message-send-mail-function} to
-@code{smtpmail-send-it} and make sure to setup the @code{smtpmail}
-package correctly. An example:
-
-@lisp
-(setq message-send-mail-function 'smtpmail-send-it
- smtpmail-default-smtp-server "YOUR SMTP HOST")
-@end lisp
-
-To the thing similar to this, there is
-@code{message-smtpmail-send-it}. It is useful if your @acronym{ISP}
-requires the @acronym{POP}-before-@acronym{SMTP} authentication.
-@xref{POP before SMTP}.
-
-Other possible choices for @code{message-send-mail-function} includes
-@code{message-send-mail-with-mh}, @code{message-send-mail-with-qmail},
-and @code{feedmail-send-it}.
+@vindex message-send-mail-function
+When sending mail, Message invokes the function specified by the
+variable @code{message-send-mail-function}. Gnus tries to set it to a
+value suitable for your system.
+@xref{Mail Variables, ,Mail Variables,message,Message manual}, for more
+information.
@node POP before SMTP
@section POP before SMTP
@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 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)
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.
@code{nnmail-split-header-length-limit} are excluded from the split
function.
-@vindex nnmail-mail-splitting-charset
@vindex nnmail-mail-splitting-decodes
-By default, splitting @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
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.
@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:
"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
-above. Also note that with the nnimap back end, message bodies will
+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 backend, message bodies will
not be downloaded by default. You need to set
@code{nnimap-split-download-body} to @code{t} to do that
(@pxref{Splitting in IMAP}).
@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
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
@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
@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.
@vindex gnus-score-uncacheable-files
@cindex score cache
All score files are normally cached to avoid excessive re-loading of
-score files. However, if this might make your Emacs grow big and
+score files. However, this might make your Emacs grow big and
bloated, so this regexp can be used to weed out score files unlikely
to be needed again. It would be a bad idea to deny caching of
@file{all.SCORE}, while it might be a good idea to not cache
@item C-c C-c
@kindex C-c C-c (Score)
-@findex gnus-score-edit-done
+@findex gnus-score-edit-exit
Save the changes you have made and return to the summary buffer
-(@code{gnus-score-edit-done}).
+(@code{gnus-score-edit-exit}).
@item C-c C-d
@kindex C-c C-d (Score)
@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
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,
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.
@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
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
@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
@page
@include gnus-faq.texi
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
+
@node Index
@chapter Index
@printindex cp