\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Red Gnus 0.83 Manual
+@settitle Gnus 5.4.29 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Red Gnus 0.83 Manual
+@title Gnus 5.4.29 Manual
@author by Lars Magne Ingebrigtsen
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995,96 Free Software Foundation, Inc.
+Copyright @copyright{} 1995,96,97 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@node Top
-@top The Red Gnus Newsreader
+@top The Gnus Newsreader
@ifinfo
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Red Gnus 0.83
+This manual corresponds to Gnus 5.4.29
@end ifinfo
@vindex gnus-init-file
When Gnus starts, it will read the @code{gnus-site-init-file}
-(@file{.../site-lisp/gnus.el} by default) and @code{gnus-init-file}
-(@file{~/.gnus.el} by default) files. These are normal Emacs Lisp files
-and can be used to avoid cluttering your @file{.emacs} and
-@file{site-init} files with Gnus stuff.
+(@file{.../site-lisp/gnus} by default) and @code{gnus-init-file}
+(@file{~/.gnus} by default) files. These are normal Emacs Lisp files
+and can be used to avoid cluttering your @file{~/.emacs} and
+@file{site-init} files with Gnus stuff. Gnus will also check for files
+with the same names as these, but with @file{.elc} and @file{.el}
+suffixes. In other words, if you have set @code{gnus-init-file} to
+@file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
+and finally @file{~/.gnus} (in this order).
+
@node Auto Save
In any case, if you use @code{some} or @code{nil}, you should definitely
kill all groups that you aren't interested in to speed things up.
+Note that this variable also affects active file retrieval from
+secondary select methods.
+
@node Startup Variables
@section Startup Variables
@vindex gnus-startup-hook
A hook that is run after starting up Gnus successfully.
+@item gnus-started-hook
+@vindex gnus-started-hook
+A hook that is run as the very last thing after starting up Gnus
+successfully.
+
@item gnus-check-bogus-newsgroups
@vindex gnus-check-bogus-newsgroups
If non-@code{nil}, Gnus will check for and delete all bogus groups at
be a letter. @sc{gnus} will call the function
@code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
following @samp{%u}. The function will be passed a single dummy
-paratere as argument. The function should return a string, which will
+parameter as argument. The function should return a string, which will
be inserted into the buffer just like information from any other
specifier.
@end table
(@code{gnus-group-make-doc-group}). If you give a prefix to this
command, you will be prompted for a file name and a file type.
Currently supported types are @code{babyl}, @code{mbox}, @code{digest},
-@code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs}, and
-@code{forward}. If you run this command without a prefix, Gnus will
-guess at the file type. @xref{Document Groups}.
+@code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs},
+@code{rfc934}, @code{rfc822-forward}, and @code{forward}. If you run
+this command without a prefix, Gnus will guess at the file type.
+@xref{Document Groups}.
@item G w
@kindex G w (Group)
followup---except that if it is present in a news group, you'll get mail
group semantics when doing @kbd{f}.
+If you do an @kbd{a} command in a mail group and you don't have a
+@code{to-list} group parameter, one will be added automatically upon
+sending the message.
+
@item broken-reply-to
@cindex broken-reply-to
Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
Also @pxref{Topic Parameters}.
+Here's an example group parameter list:
+
+@example
+((to-address . "ding@@ifi.uio.no")
+ (auto-expiry . t))
+@end example
+
@node Listing Groups
@section Listing Groups
@item H f
@kindex H f (Group)
-@itemx M-f
@findex gnus-group-fetch-faq
@vindex gnus-group-faq-directory
@cindex FAQ
to the @code{root} account, you may want to resend it to
@code{postmaster}. Ordnung muß sein!
+This command understands the process/prefix convention
+(@pxref{Process/Prefix}).
+
@item S O m
@kindex S O m (Summary)
@findex gnus-uu-digest-mail-forward
@cindex threading
@cindex article threading
-Gnus threads articles by default. @dfn{To thread} is to put replies to
-articles directly after the articles they reply to---in a hierarchical
-fashion.
+Gnus threads articles by default. @dfn{To thread} is to put responses
+to articles directly after the articles they respond to---in a
+hierarchical fashion.
@menu
* Customizing Threading:: Variables you can change to affect the threading.
@cindex fuzzy article gathering
If you set this variable to the special value @code{fuzzy}, Gnus will
-use a fuzzy string comparison algorithm on the subjects.
+use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
+Matching}).
@item gnus-simplify-subject-fuzzy-regexp
@vindex gnus-simplify-subject-fuzzy-regexp
when doing thread commands. If this variable is @code{nil}, articles in
the same thread with different subjects will not be included in the
operation in question. If this variable is @code{fuzzy}, only articles
-that have subjects that are fuzzily equal will be included.
+that have subjects that are fuzzily equal will be included (@pxref{Fuzzy
+Matching}).
@node Sorting
function in @code{gnus-article-display-hook}, it should be run fairly
late and certainly after any highlighting.
+You can give the command a numerical prefix to specify the width to use
+when filling.
+
@item W c
@kindex W c (Summary)
@findex gnus-article-remove-cr
Do all the three commands above
(@code{gnus-article-strip-blank-lines}).
+@item W E s
+@kindex W E s (Summary)
+@findex gnus-article-strip-leading-space
+Remove all white space from the beginning of all lines of the article
+body (@code{gnus-article-strip-leading-space}).
+
@end table
@cindex PostScript
@cindex printing
@kindex A P (Summary)
+@vindex gnus-ps-print-hook
@findex gnus-summary-print-article
Generate and print a PostScript image of the article buffer
-(@code{gnus-summary-print-article}).
+(@code{gnus-summary-print-article}). @code{gnus-ps-print-hook} will be
+run just before printing the buffer.
@end table
@cindex archived messages
@cindex sent messages
-Gnus provides a few different methods for storing the mail you send.
-The default method is to use the @dfn{archive virtual server} to store
-the mail. If you want to disable this completely, you should set
-@code{gnus-message-archive-group} to @code{nil}.
+Gnus provides a few different methods for storing the mail and news you
+send. The default method is to use the @dfn{archive virtual server} to
+store the messages. If you want to disable this completely, the
+@code{gnus-message-archive-group} variable should be @code{nil}, which
+is the default.
@vindex gnus-message-archive-method
@code{gnus-message-archive-method} says what virtual server Gnus is to
nice---@samp{misc-mail-september-1995}, or whatever. New messages will
continue to be stored in the old (now empty) group.
-That's the default method of archiving sent mail. Gnus also a different
-way for the people who don't like the default method. In that case you
-should set @code{gnus-message-archive-group} to @code{nil}; this will
-disable archiving.
+That's the default method of archiving sent messages. Gnus also a
+different way for the people who don't like the default method. In that
+case you should set @code{gnus-message-archive-group} to @code{nil};
+this will disable archiving.
XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to
use a different value for @code{gnus-message-archive-group} there.
message in, you can set this variable to a function that checks the
current newsgroup name and then returns a suitable group name (or list
of names).
+
+This variable can be used instead of @code{gnus-message-archive-group},
+but the latter is the preferred method.
@end table
* Server Commands:: Commands to manipulate servers.
* Example Methods:: Examples server specifications.
* Creating a Virtual Server:: An example session.
+* Server Variables:: Which variables to set.
* Servers and Methods:: You can use server names as select methods.
* Unavailable Servers:: Some servers you try to contact may be down.
@end menu
buffer, and you should be able to enter any of the groups displayed.
+@node Server Variables
+@subsection Server Variables
+
+One sticky point when defining variables (both on backends and in Emacs
+in general) is that some variables are typically initialized from other
+variables when the definition of the variables is being loaded. If you
+change the "base" variable after the variables have been loaded, you
+won't change the "derived" variables.
+
+This typically affects directory and file variables. For instance,
+@code{nnml-directory} is @file{~/Mail/} by default, and all @code{nnml}
+directory variables are initialized from that variable, so
+@code{nnml-active-file} will be @file{~/Mail/active}. If you define a
+new virtual @code{nnml} server, it will @emph{not} suffice to set just
+@code{nnml-directory}---you have to explicitly set all the file
+variables to be what you want them to be. For a complete list of
+variables for each backend, see each backend's section later in this
+manual, but here's an example @code{nnml} definition:
+
+@lisp
+(nnml "public"
+ (nnml-directory "~/my-mail/")
+ (nnml-active-file "~/my-mail/active")
+ (nnml-newsgroups-file "~/my-mail/newsgroups"))
+@end lisp
+
+
@node Servers and Methods
@subsection Servers and Methods
mail belongs in that group.
The last of these groups should always be a general one, and the regular
-expression should @emph{always} be @samp{} so that it matches any
-mails that haven't been matched by any of the other regexps.
+expression should @emph{always} be @samp{} so that it matches any mails
+that haven't been matched by any of the other regexps. (These rules are
+processed from the beginning of the alist toward the end. The first
+rule to make a match will "win", unless you have crossposting enabled.
+In that case, all matching rules will "win".)
If you like to tinker with this yourself, you can set this variable to a
function of your choice. This function will be called without any
@code{t} and be prompted for the password, or set
@code{nnmail-pop-password} to the password itself.
+@code{nnmail-spool-file} can also be a list of mailboxes.
+
Your Emacs has to have been configured with @samp{--with-pop} before
compilation. This is the default, but some installations have it
switched off.
@cindex incoming mail files
@cindex deleting incoming files
If non-@code{nil}, the mail backends will delete the temporary incoming
-file after splitting mail into the proper groups. This is @code{nil} by
-default for reasons of security.
+file after splitting mail into the proper groups. This is @code{t} by
+default.
+
+@c This is @code{nil} by
+@c default for reasons of security.
-Since Red Gnus is an alpha release, it is to be expected to lose mail.
+@c Since Red Gnus is an alpha release, it is to be expected to lose mail.
(No Gnus release since (ding) Gnus 0.10 (or something like that) have
lost mail, I think, but that's not the point. (Except certain versions
-of Red Gnus.)) By not deleting the
-Incoming* files, one can be sure to not lose mail -- if Gnus totally
-whacks out, one can always recover what was lost.
+of Red Gnus.)) By not deleting the Incoming* files, one can be sure to
+not lose mail -- if Gnus totally whacks out, one can always recover what
+was lost.
Delete the @file{Incoming*} files at will.
If you use @code{procmail} to split things directory into an @code{nnmh}
directory (which you shouldn't do), you should set
@code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from
-ever expiring the final article in a mail newsgroup. This is quite,
-quite important.
+ever expiring the final article (i. e., the article with the highest
+article number) in a mail newsgroup. This is quite, quite important.
Here's an example setup: The incoming spools are located in
@file{~/incoming/} and have @samp{""} as suffixes (i. e., the incoming
@vindex nnmail-expiry-wait
The @code{nnmail-expiry-wait} variable supplies the default time an
-expirable article has to live. The default is seven days.
+expirable article has to live. Gnus starts counting days from when the
+message @emph{arrived}, not from when it was sent. The default is seven
+days.
Gnus also supplies a function that lets you fine-tune how long articles
are to live, based on what group they are in. Let's say you want to
stored.) If all this sounds scary to you, you can set
@code{nnmail-treat-duplicates} to @code{warn} (which is what it is by
default), and @code{nnmail} won't delete duplicate mails. Instead it
-will generate a brand new @code{Message-ID} for the mail and insert a
-warning into the head of the mail saying that it thinks that this is a
-duplicate of a different message.
+will insert a warning into the head of the mail saying that it thinks
+that this is a duplicate of a different message.
This variable can also be a function. If that's the case, the function
will be called from a buffer narrowed to the message in question with
@item nndoc-article-type
@vindex nndoc-article-type
This should be one of @code{mbox}, @code{babyl}, @code{digest},
-@code{mmdf}, @code{forward}, @code{news}, @code{rnews},
-@code{mime-digest}, @code{clari-briefs}, or @code{guess}.
+@code{mmdf}, @code{forward}, @code{rfc934}, @code{rfc822-forward},
+@code{news}, @code{rnews}, @code{mime-digest}, @code{clari-briefs}, or
+@code{guess}.
@item nndoc-post-type
@vindex nndoc-post-type
Substring matching.
@item f
-Fuzzy matching.
+Fuzzy matching (@pxref{Fuzzy Matching}).
@item r
Regexp matching
element}. This date says when the last time this score entry matched,
which provides a mechanism for expiring the score entries. It this
element is not present, the score entry is permanent. The date is
-represented by the number of days since December 31, 1 ce.
+represented by the number of days since December 31, 1 BCE.
@item
If the fourth element is present, it should be a symbol---the @dfn{type
@lisp
("references"
- ("<x6[0-9a-z]+\\.fsf@.*eyesore.no>" 1000 nil r))
+ ("<x6[0-9a-z]+\\.fsf@@.*eyesore.no>" 1000 nil r))
@end lisp
Whether it's the first two or first three characters that are ``yours''
* Undo:: Some actions can be undone.
* Moderation:: What to do if you're a moderator.
* XEmacs Enhancements:: There are more pictures and stuff under XEmacs.
+* Fuzzy Matching:: What's the big fuzz?
* Various Various:: Things that are really various.
@end menu
@code{browse}, @code{message}, @code{pick}, @code{info},
@code{summary-faq}, @code{edit-group}, @code{edit-server},
@code{edit-score}, @code{post}, @code{reply}, @code{forward},
-@code{reply-yank}, @code{mail-bounce}, @code{draft},
-@code{pipe}, @code{bug}, @code{compose-bounce}.
+@code{reply-yank}, @code{mail-bounce}, @code{draft}, @code{pipe},
+@code{bug}, @code{compose-bounce}.
Note that the @code{message} key is used for both
@code{gnus-group-mail} and @code{gnus-summary-mail-other-window}. If
If this variable is @code{nil} (which is the default), the mode line
strings won't be chopped off, and they won't be padded either.
+Note that the default is unlikely to be desirable, as even the
+percentage complete in the buffer may be crowded off the mode line;
+the user should configure this variable appropriately for their
+configuration.
@node Highlighting and Menus
This is the face (i.e., font) used for mouse highlighting in Gnus. No
mouse highlights will be done if @code{gnus-visual} is @code{nil}.
-@item gnus-display-type
-@vindex gnus-display-type
-This variable is symbol indicating the display type Emacs is running
-under. The symbol should be one of @code{color}, @code{grayscale} or
-@code{mono}. If Gnus guesses this display attribute wrongly, either set
-this variable in your @file{~/.emacs} or set the resource
-@code{Emacs.displayType} in your @file{~/.Xdefaults}.
-
-@item gnus-background-mode
-@vindex gnus-background-mode
-This is a symbol indicating the Emacs background brightness. The symbol
-should be one of @code{light} or @code{dark}. If Gnus guesses this
-frame attribute wrongly, either set this variable in your @file{~/.emacs} or
-set the resource @code{Emacs.backgroundMode} in your @file{~/.Xdefaults}.
-`gnus-display-type'.
@end table
There are hooks associated with the creation of all the different menus:
@end table
+@node Fuzzy Matching
+@section Fuzzy Matching
+@cindex fuzzy matching
+
+Gnus provides @dfn{fuzzy matching} of @code{Subject} lines when doing
+things like scoring, thread gathering and thread comparison.
+
+As opposed to regular expression matching, fuzzy matching is very fuzzy.
+It's so fuzzy that there's not even a definition of what @dfn{fuzziness}
+means, and the implementation has changed over time.
+
+Basically, it tries to remove all noise from lines before comparing.
+@samp{Re: }, parenthetical remarks, white space, and so on, are filtered
+out of the strings before comparing the results. This often leads to
+adequate results---even when faced with strings generated by text
+manglers masquerading as newsreaders.
+
+
@node Various Various
@section Various Various
@cindex mode lines
@table @code
+@item gnus-home-directory
+All Gnus path variables will be initialized from this variable, which
+defaults to @file{~/}.
+
@item gnus-directory
@vindex gnus-directory
-All Gnus directories will be initialized from this variable, which
-defaults to the @samp{SAVEDIR} environment variable, or @file{~/News/}
-if that variable isn't set.
+Most Gnus storage path variables will be initialized from this variable,
+which defaults to the @samp{SAVEDIR} environment variable, or
+@file{~/News/} if that variable isn't set.
@item gnus-default-directory
@vindex gnus-default-directory
``@sc{gnus}''. New vs. old.
The first ``proper'' release of Gnus 5 was done in November 1995 when it
-was included in the Emacs 19.30 distribution.
+was included in the Emacs 19.30 distribution (132 (ding) Gnus releases
+plus 15 Gnus 5.0 releases).
-In May 1996 the next Gnus generation (aka. ``September Gnus'') was
-released under the name ``Gnus 5.2''.
+In May 1996 the next Gnus generation (aka. ``September Gnus'' (after 99
+releases)) was released under the name ``Gnus 5.2'' (40 releases).
-On July 28th 1996 work on Red Gnus was begun.
+On July 28th 1996 work on Red Gnus was begun, and it was released on
+January 25th 1997 (after 84 releases) as ``Gnus 5.4''.
If you happen upon a version of Gnus that has a name that is prefixed --
-``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Mamey Sapote Gnus''
--- don't panic. Don't let it know that you're frightened. Back away.
+``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' --
+don't panic. Don't let it know that you're frightened. Back away.
Slowly. Whatever you do, don't run. Walk away, calmly, until you're
out of its reach. Find a proper released version of Gnus and snuggle up
to that instead.
Also thanks to the following for patches and stuff:
+Adrian Aichner,
Peter Arius,
+Matt Armstrong,
Marc Auslander,
Chris Bone,
Mark Borges,
Kevin Buhr,
Alastair Burt,
Joao Cachopo,
+Zlatko Calusic,
Massimo Campostrini,
Michael R. Cook,
Glenn Coombs,
D. Hall,
Magnus Hammerin,
Raja R. Harinath,
+Hisashige Kenji, @c Hisashige
Marc Horowitz,
+François Felix Ingrand,
Ishikawa Ichiro, @c Ishikawa
-Francois Felix Ingrand,
Lee Iverson,
Rajappa Iyer,
Randell Jesup,
Fred Johansen,
+Greg Klanderman,
+Karl Kleinpaste,
Peter Skov Knudsen,
Shuhei Kobayashi, @c Kobayashi
Thor Kristoffersen,
Jens Lautenbacher,
Carsten Leonhardt,
+James LewisMoss,
Christian Limpach,
Markus Linnala,
Dave Love,
Tonny Madsen,
Shlomo Mahlab,
Nat Makarevitch,
+David Martin,
+Gordon Matzigkeit,
Timo Metzemakers,
Richard Mlynarik,
Lantz Moore,
Loren Schall,
Dan Schmidt,
Ralph Schleicher,
+Philippe Schnoebelen,
Randal L. Schwartz,
Danny Siu,
Paul D. Smith,
@menu
* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
* September Gnus:: The Thing Formally Known As Gnus 5.3/5.3.
-* Red Gnus:: The future---Gnus 5.4/5.5.
+* Red Gnus:: Third time best---Gnus 5.4/5.5.
@end menu
These lists are, of course, just @emph{short} overviews of the
A Gnus group info (@pxref{Group Info}) is handed to the backend for
alterations. This comes in handy if the backend really carries all the
-information (as is the case with virtual an imap groups). This function
-should destructively alter the info to suit its needs, and should return
-the (altered) group info.
+information (as is the case with virtual and imap groups). This
+function should destructively alter the info to suit its needs, and
+should return the (altered) group info.
There should be no result data from this function.