*** empty log message ***
[gnus] / texi / gnus.texi
index 7394265..d1c5386 100644 (file)
@@ -103,13 +103,6 @@ luck.
 @sc{gnus} was written by Masanobu UMEDA.  When autumn crept up in '94,
 Lars Magne Ingebrigtsen grew bored and decided to rewrite Gnus.
 
-The recommended pronunciation of the name this program is "ding
-guh-noose", with "ding" being half-sung in a loud, high-pitched voice,
-and "guh-noose" being grumbled and a disaffected fashion.  Any
-irritation and/or damage this name may cause you is not the
-responsibility of the author, even though you might like to strangle him
-for the stupid idea.
-
 If you want to investigate the person responsible for this outrage, you
 can point your (feh!) web browser to
 @file{http://www.ifi.uio.no/~larsi/}.  This is also the primary
@@ -229,11 +222,6 @@ Overall, a casual user who hasn't written much code that depends on
 @sc{gnus} internals should suffer no problems.  If problems occur,
 please let me know (@kbd{M-x gnus-bug}).
 
-Problems specific to GNU XEmacs can be reported to popineau@@ese-metz.fr
-(Fabrice Popineau).  I will just forward any such questions to him,
-anyway, so you might have to wait longer if you mail XEmacs questions to
-me.
-
 
 @node Conformity
 @section Conformity
@@ -289,7 +277,24 @@ don't hesitate to drop a note to Gnus Towers and let us know.
 @cindex Mule
 @cindex Emacs
 
-Gnus should work on Emacs 19.26 and up, XEmacs 19.12 and up and Mule.
+Gnus should work on :
+
+@itemize @bullet 
+
+@item
+Emacs 19.26 and up.
+
+@item
+XEmacs 19.12 and up.
+
+@item 
+Mule versions based on Emacs 19.26 and up.
+
+@end itemize
+
+Gnus will absolutely not work on any Emacsen older than that.  Not
+reliably, at least. 
+
 There are some vague differences in what Gnus does, though:
 
 @itemize @bullet
@@ -342,6 +347,8 @@ highlighting (as well as the soon-to-come @sc{soup} support) was written
 by Per Abrahamsen.
 @item
 Innumerable bug fixes were written by Sudish Joseph.
+@item 
+@code{gnus-topic} was written by Ilja Weis.
 @item
 The refcard was written by Vladimir Alexiev.
 @item
@@ -363,9 +370,9 @@ Ricardo Nassif did the proof-reading.
 @item
 Kevin Davidson came up with the name @dfn{ding}, so blame him.
 @item 
-Stainless Steel Rat, Ulrik Dickow, Jack Vinson, Daniel Quinlan, Ilja
-Weis, Frank D. Cringle, Geoffrey T. Dairiki and Andrew Eskilsson have
-all contributed code and suggestions.
+Stainless Steel Rat, Ulrik Dickow, Jack Vinson, Daniel Quinlan, Frank
+D. Cringle, Geoffrey T. Dairiki and Andrew Eskilsson have all
+contributed code and suggestions.
 @end itemize
 
 
@@ -670,6 +677,7 @@ variables.
 * The First Time::      What does Gnus do the first time you start it?
 * The Server is Down::  How can I read my mail then?
 * Slave Gnusii::        You can have more than one Gnus active at a time.
+* Fetching a Group::    Starting Gnus just to read a group.
 * New Groups::          What is Gnus supposed to do with new groups?
 * Startup Files::       Those pesky startup files - @file{.newsrc}.
 * Auto Save::           Recovering from a crash.
@@ -804,7 +812,7 @@ if you're in a hurry as well.
 @section Slave Gnusii
 @cindex slave
 
-You might with to run more than one Emacs with more than one Gnus at the
+You might want to run more than one Emacs with more than one Gnus at the
 same time.  If you are using different @file{.newsrc} files (eg., if you
 are using the two different Gnusii to read from two different servers),
 that is no problem whatsoever.  You just do it.
@@ -813,12 +821,12 @@ The problem appears when you want to run two Gnusii that uses the same
 @code{.newsrc} file.  
 
 To work around that problem some, we here at the Think-Tank at the Gnus
-Towers have come up with a new concept: @dfn{Master} and
-@dfn{servants}.  (We have applied for a patent on this concept, and have
-taken out a copyright on those words.  If you wish to use those words in
-conjunction with each other, you have to send ¢1 per usage to me.  Usage
-of the patent (@dfn{Master/Slave Relationships In Computer
-Applications}), that will be much more expensive, of course.)
+Towers have come up with a new concept: @dfn{Master} and @dfn{servants}.
+(We have applied for a patent on this concept, and have taken out a
+copyright on those words.  If you wish to use those words in conjunction
+with each other, you have to send ¢1 per usage to me.  Usage of the
+patent (@dfn{Master/Slave Relationships In Computer Applications}) will
+be much more expensive, of course.)
 
 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
 however you do it).  Each subsequent slave Gnusii should be started with
@@ -833,6 +841,17 @@ Information from the slave files has, of course, presedence over the
 information in the normal (i. e., master) @code{.newsrc} file.
 
 
+@node Fetching a Group
+@section Fetching a Group
+
+@findex gnus-fetch-group
+It it sometime convenient to be able to just say "I want to read this
+group and I don't care whether Gnus has been started or not".  This is
+perhaps more useful for people who write code than for users, but the
+command @code{gnus-fetch-group} provides this functionality in any
+case.  It takes the group name as a paramenter.
+
+
 @node New Groups
 @section New Groups
 @cindex new groups
@@ -900,6 +919,17 @@ same as the @file{.newsrc} options -n trick.  Both are regexps, and if
 the the new group matches the first, it will be unconditionally
 subscribed, and if it matches the latter, it will be ignored.
 
+@vindex gnus-auto-subscribed-groups
+Yet another variable that meddles here is
+@code{gnus-auto-subscribed-groups}.  It works exactly like
+@code{gnus-options-subscribe}, and is therefore really superfluos, but I
+thought it would be nice to have two of these.  This variable is more
+meant for setting some ground rules, while the other variable is used
+more for user fiddling.  By default this variable makes all new groups
+that come from mail backends (@code{nnml}, @code{nnbabyl},
+@code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed.  If you
+don't like that, just set this variable to @code{nil}.
+
 @vindex gnus-check-new-newsgroups
 If you are satisfied that you really never want to see any new groups,
 you could set @code{gnus-check-new-newsgroups} to @code{nil}.  This will
@@ -916,7 +946,7 @@ cheaper.  This also means that you can get rid of the list of killed
 groups altogether, so you may set @code{gnus-save-killed-list} to
 @code{nil}, which will save time both at startup, at exit, and all over.
 Saves disk space, too.  Why isn't this the default, then?
-Unfortunately, not all servers support this function.
+Unfortunately, not all servers support this function. 
 
 This variable can also be a list of select methods.  If so, Gnus will
 issue an @code{ask-server} command to each of the select methods, and
@@ -968,8 +998,14 @@ The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
 file being whatever that one is with a @samp{.eld} appended.
 
 @vindex gnus-save-newsrc-hook
-@code{gnus-save-newsrc-hook} is called before saving the @file{.newsrc}
-file.
+@vindex gnus-save-quick-newsrc-hook
+@vindex gnus-save-standard-newsrc-hook
+@code{gnus-save-newsrc-hook} is called before saving any of the newsrc
+files, while @code{gnus-save-quick-newsrc-hook} is called just before
+saving the @file{.newsrc.eld} file, and
+@code{gnus-save-standard-newsrc-hook} is called just before saving the
+@file{.newsrc} file.  The latter two are commonly used to tern version
+control on or off.
 
 @node Auto Save
 @section Auto Save
@@ -991,6 +1027,12 @@ saved.
 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
 maintain a dribble buffer.
 
+@vindex gnus-dribble-directory
+Gnus will put the dribble file(s) in @code{gnus-dribble-directory}.  If
+this variable is @code{nil}, which it is by default, Gnus will dribble
+into the same directory as the @file{.newsrc} file is located.  (This is
+normally the user's home directory.)
+
 @node The Active File
 @section The Active File
 @cindex active file
@@ -1094,6 +1136,7 @@ long as Gnus is active.
 * Group Maintenance::      Maintaining a tidy @file{.newsrc} file.
 * Browse Foreign Server::  You can browse a server.  See what if has to offer.
 * Exiting Gnus::           Stop reading news and get some work done.
+* Group Topics::           A folding group mode divided into topics.
 * Misc Group Stuff::       Other stuff that you can to do.
 @end menu
 
@@ -1558,6 +1601,14 @@ Make a new group (@code{gnus-group-make-group}).  Gnus will prompt you
 for a name, a method and possibly an @dfn{address}.  For an easier way
 to subscribe to @sc{nntp} groups, @xref{Browse Foreign Server}.
 
+@item G r
+@kindex G m (Group)
+@findex gnus-group-rename-group
+Rename the current group to something else
+(@code{gnus-group-rename-group}).  This is legal only on some groups --
+mail groups mostly.  This command might very well be quite slow on some
+backends. 
+
 @item G e
 @kindex G e (Group)
 @findex gnus-group-edit-group-method
@@ -1618,6 +1669,15 @@ Make a group based on some file or other
 name and a file type.  Currently supported types are @code{babyl},
 @code{mbox} and @code{digest}.
 
+@item G DEL
+@kindex G DEL (Group)
+@findex gnus-group-delete-group
+This function will delete the current group
+(@code{gnus-group-delete-group}).  If given a prefix, this function will
+actuallt delete all the articles in the group, and forcibly remove the
+group itself from the face of the Earth.  Use a prefix only if you are
+sure of what you are doing.  
+
 @item G V
 @kindex G V (Group)
 @findex gnus-group-make-empty-virtual
@@ -2787,23 +2847,44 @@ Find new groups and process them (@code{gnus-find-new-newsgroups}).
 @findex gnus-group-expire-articles
 Run all expirable articles in the current group through the expiry
 process (if any) (@code{gnus-group-expire-articles}).
+
 @item C-c M-C-x
 @kindex C-c M-C-x (Group)
 @findex gnus-group-expire-all-groups
 Run all articles in all groups through the expiry process
 (@code{gnus-group-expire-all-groups}).
+
 @item C-c C-s
 @kindex C-c C-s (Group)
 @findex gnus-group-sort-groups
-@findex gnus-group-sort-by-level
-@findex gnus-group-sort-by-unread
-@findex gnus-group-sort-by-alphabet
 @vindex gnus-group-sort-function
 Sort the groups according to the function given by the
 @code{gnus-group-sort-function} variable
-(@code{gnus-group-sort-groups}).  Available sorting functions include
-@code{gnus-group-sort-by-alphabet} (the default),
-@code{gnus-group-sort-by-unread} and @code{gnus-group-sort-by-level}. 
+(@code{gnus-group-sort-groups}).  Available sorting functions include:
+
+@table @code
+
+@item gnus-group-sort-by-level
+@findex gnus-group-sort-by-level
+Sort by group level.
+
+@item gnus-group-sort-by-unread
+@findex gnus-group-sort-by-unread
+Sort by number of unread articles.
+
+@item gnus-group-sort-by-alphabet
+@findex gnus-group-sort-by-alphabet
+Sort the group names alphabetically.  This is the default.
+
+@item gnus-group-sort-by-method
+@findex gnus-group-sort-by-method
+Sort by alphabetically on the select method.
+
+@end table
+
+@code{gnus-group-sort-function} can also be a list of sorting
+functions.  In that case, the most significant sort key function must be
+the last one.
 @end table
 
 @node Browse Foreign Server
@@ -2920,6 +3001,64 @@ behind her drew repeated lines with his pencil across the back of her
 plastic chair.
 @end quotation
 
+
+@node Group Topics
+@section Group Topics
+@cindex topics
+
+If you read lots and lots of groups, it might be convenient to group
+them according to topics.  You put your Emacs groups over here, your sex
+groups over there, and the rest (what, two groups or so?) you put in
+some misc section that you never bother with anyway.
+
+To get this @emph{fab} functionality, you set
+@code{gnus-group-prepare-function} to @code{gnus-group-prepare-topics}.
+Go ahead, just try it.  I'll still be here when you get back.  La de
+dum...  Nice tune, that... la la la...  What, you're back? Yes, and now
+press @kbd{l}.  There.  All your groups are now listed under
+@samp{misc}.  Doesn't that make you feel all warm and fuzzy?  Hot and
+bothered?
+
+@vindex gnus-group-topics
+To get an even more exciting division, you have to fiddle with
+@code{gnus-group-topics}.  That is an alist where each entry looks like
+this: 
+
+@lisp
+(TOPIC REGEXP SHOW)
+@end lisp
+
+As you've already guessed (only geniouses read manuals anyway), all
+groups that match @var{regexp} gets put into a section called
+@var{topic}.  If @var{show} is non-@code{nil}, it overrides
+@code{gnus-group-topic-topics-only}.  In specific, if @var{show} is
+@code{t}, all groups with this topic are always shown, and if it is a
+number, these groups are never shown.
+
+@vindex gnus-group-topic-topics-only
+Whoo, this is complicated.  If @code{gnus-group-topic-topics-only} is
+@code{nil}, all groups and topics will be listed, as you would expect.
+If this variable is non-@code{nil}, only the topics will be listed, and
+the groups will not be listed. This makes the group buffer much shorter,
+I'm sure you'll agree.  This is all modified on a topic-by-topic basis
+by the @var{show} parameter.   It makes perfect sense, really.
+
+@vindex gnus-group-topic-face
+Topics are shown with @code{gnus-group-topic-face}.
+
+Now, if you select a topic, if will fold/unfold that topic, which is
+really neat, I think.
+
+Here's an example @code{gnus-group-topics}:
+
+@lisp
+(("Emacs - the Spice of Life" "^gnu.emacs\\|comp.emacs" t)
+ ("Alternativeness" "^alt" 0)
+ ("Hard Stuff" "^comp" nil)
+ ("The Rest" "." nil))
+@end lisp
+
+
 @node Misc Group Stuff
 @section Misc Group Stuff
 
@@ -3214,6 +3353,14 @@ Subject of the current article.
 Used-defined spec.
 @item s
 Name of the current score file.
+@item d
+Number of dormant articles.
+@item t
+Number of ticked articles.
+@item r
+Number of articles that have been marked as read in this session. 
+@item E
+Number of articles expunged by the score files.
 @end table
 
 
@@ -3258,7 +3405,9 @@ Gnus will exit summary mode and return to the group buffer.  If this
 variable is neither @code{t} nor @code{nil}, Gnus will select the next
 group, no matter whether it has any unread articles or not.  As a
 special case, if this variable is @code{quietly}, Gnus will select the
-next group without asking for confirmation.  Also @xref{Group Levels}.
+next group without asking for confirmation.  If this variable is
+@code{almost-quietly}, the same will happen only if you are located on
+the last article in the group.  Also @xref{Group Levels}.
 
 If Gnus asks you to press a key to confirm going to the next group, you
 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
@@ -3747,6 +3896,9 @@ you want to insert a funny quote, you could enter something like
 @code{(X-Yow . yow)} into the list.  The function @code{yow} will then
 be called without any arguments. 
 
+The list contains a cons where the car of the cons is @code{optional},
+the cdr of this cons will only be inserted if it is non-@code{nil}.
+
 Other variables for customizing outgoing articles:
 
 @table @code
@@ -3891,6 +4043,8 @@ list.  Legal elemetents are:
 @table @code
 @item subject-cmsg 
 Check the subject for commands.
+@item sender
+Insert a new @code{Sender} header if the @code{From} header looks odd. 
 @item multiple-headers 
 Check for the existence of multiple equal headers.
 @item sendsys 
@@ -4069,12 +4223,12 @@ day, and send it when you feel its finished.
 @kindex C-c C-d (Mail)
 @kindex C-c C-d (Post)
 @findex gnus-enter-into-draft-group
-@vindex gnus-group-draft-directory
+@vindex gnus-draft-group-directory
 What you then do is simply push @kbd{C-c C-d}
 (@code{gnus-enter-into-draft-group}).  This will put the current
 (unfinished) message in a special draft group (which is implemented as
 an @code{nndir} group, if you absolutely have to know) called
-@samp{nndir:drafts}.  The variable @code{gnus-group-draft-directory}
+@samp{nndir:drafts}.  The variable @code{gnus-draft-group-directory}
 controls both the name of the group and the location -- the leaf element
 in the path will be used as the name of the group.
 
@@ -4232,14 +4386,14 @@ all yet.
 All the following marks mark articles as read.
 
 @table @samp
-@item D
+@item r
 Articles that are marked as read.  They have a @samp{r}
 (@code{gnus-del-mark}) in the first column.  These are articles that the
 user has marked as read more or less manually.
-@item d
+@item R
 Articles that are actually read are marked with @samp{R}
 (@code{gnus-read-mark}). 
-@item A
+@item O
 Articles that were marked as read in previous sessions are now
 @dfn{old} and marked with @samp{O} (@code{gnus-ancient-mark}). 
 @item K
@@ -4346,11 +4500,13 @@ Mark all articles that have the same subject as the current one as read
 @item M C
 @kindex M C (Summary)
 @findex gnus-summary-catchup
-Catchup the current group (@code{gnus-summary-catchup}).
+Mark all unread articles in the group as read
+(@code{gnus-summary-catchup}).
 @item M C-c
 @kindex M C-c (Summary)
 @findex gnus-summary-catchup-all
-Catchup all articles in the current group (@code{gnus-summary-catchup-all}).
+Mark all articles in the group as read - even the ticked and dormant
+articles (@code{gnus-summary-catchup-all}).
 @item M H
 @kindex M H (Summary)
 @findex gnus-summary-catchup-to-here
@@ -4661,16 +4817,19 @@ Don't gather loose threads.
 @vindex gnus-thread-hide-subtree
 If non-@code{nil}, all threads will be hidden when the summary buffer is
 generated.
+
 @item gnus-thread-hide-killed
 @vindex gnus-thread-hide-killed
 if you kill a thread and this variable is non-@code{nil}, the subtree
 will be hidden.
+
 @item gnus-thread-ignore-subject
 @vindex gnus-thread-ignore-subject
 Sometimes somebody changes the subject in the middle of a thread.  If
 this variable is non-@code{nil}, the subject change is ignored.  If it
 is @code{nil}, which is the default, a change in the subject will result
 in a new thread.
+
 @item gnus-thread-indent-level
 @vindex gnus-thread-indent-level
 This is a number that says how much each sub-thread should be indented.
@@ -4682,6 +4841,7 @@ The default is @samp{4}.
 @cindex thread commands
 
 @table @kbd
+
 @item T k
 @itemx M-C-k
 @kindex T k (Summary)
@@ -4691,6 +4851,7 @@ Mark all articles in the current sub-thread as read
 (@code{gnus-summary-kill-thread}).  If the prefix argument is positive,
 remove all marks instead.  If the prefix argument is negative, tick
 articles instead.
+
 @item T l
 @itemx M-C-l
 @kindex T l (Summary)
@@ -4698,38 +4859,46 @@ articles instead.
 @findex gnus-summary-lower-thread
 Lower the score of the current thread
 (@code{gnus-summary-lower-thread}). 
+
 @item T i
 @kindex T i (Summary)
 @findex gnus-summary-raise-thread
 Increase the score of the current thread
 (@code{gnus-summary-raise-thread}).
+
 @item T #
 @kindex T # (Summary)
 @findex gnus-uu-mark-thread
 Set the process mark on the current thread
 (@code{gnus-uu-mark-thread}).
+
 @item T M-#
 @kindex T M-# (Summary)
 @findex gnus-uu-unmark-thread
 Remove the process mark from the current thread
 (@code{gnus-uu-unmark-thread}).
+
 @item T T
 @kindex T T (Summary)
 @findex gnus-summary-toggle-threads
 Toggle threading (@code{gnus-summary-toggle-threads}).
+
 @item T s
 @kindex T s (Summary)
 @findex gnus-summary-show-thread
 Expose the thread hidden under the current article, if any
 (@code{gnus-summary-show-thread}).
+
 @item T h
 @kindex T h (Summary)
 @findex gnus-summary-hide-thread
 Hide the current (sub)thread (@code{gnus-summary-hide-thread}).
+
 @item T S
 @kindex T S (Summary)
 @findex gnus-summary-show-all-threads
 Expose all hidden threads (@code{gnus-summary-show-all-threads}).
+
 @item T H
 @kindex T H (Summary)
 @findex gnus-summary-hide-all-threads
@@ -4758,6 +4927,20 @@ Descend the thread (@code{gnus-summary-down-thread}).
 Ascend the thread (@code{gnus-summary-up-thread}).
 @end table
 
+@vindex gnus-thread-operation-ignore-subject 
+If you ignore subject while threading, you'll naturally end up with
+threads that have several different subjects in them.  If you then issue
+a command like `T k' (@code{gnus-summary-kill-thread}) you might not
+wish to kill the entire thread, but just those parts of the thread that
+have the same subject as the current article.  If you like this idea,
+you can fiddle with @code{gnus-thread-operation-ignore-subject}.  If is
+is non-@code{nil} (which it is by default), subjects will be ignored
+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.
+
+
 @node Asynchronous Fetching
 @section Asynchronous Article Fetching
 @cindex asynchronous article fetching
@@ -4862,6 +5045,16 @@ the cache.  You should only ever, ever ever ever, use this command if 1)
 your connection to the @sc{nntp} server is really, really, really slow
 and 2) you have a really, really, really huge disk.  Seriously.
 
+@vindex gnus-uncacheable-groups
+It is likely that you do not want caching on some groups.  For instance,
+if your @code{nnml} mail is located under your home directory, it makes no
+sense to cache it somewhere else under your home directory.  Unless you
+feel that it's neat to use twice as much space.  To limit the caching,
+you could set the @code{gnus-uncacheable-groups} regexp to
+@samp{"^nnml"}, for instance.  This variable is @samp{"^nnvirtual"} by
+default, since caching doesn't really work in @code{nnvirtual} groups,
+since @code{nnvirtual} assigns random article numbers to its articles.
+
 
 @node Exiting the Summary Buffer
 @section Exiting the Summary Buffer
@@ -5018,6 +5211,7 @@ If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete
 unwanted headers before saving the article.
 
 @table @kbd
+
 @item O o
 @itemx o
 @kindex O o (Summary)
@@ -5025,26 +5219,37 @@ unwanted headers before saving the article.
 @findex gnus-summary-save-article
 Save the current article using the default article saver
 (@code{gnus-summary-save-article}). 
+
 @item O m
 @kindex O m (Summary)
 @findex gnus-summary-save-article-mail
 Save the current article in mail format
 (@code{gnus-summary-save-article-mail}). 
+
 @item O r
 @kindex O r (Summary)
 @findex gnus-summary-save-article-mail
 Save the current article in rmail format
 (@code{gnus-summary-save-article-rmail}). 
+
 @item O f
 @kindex O f (Summary)
 @findex gnus-summary-save-article-file
 Save the current article in plain file format
 (@code{gnus-summary-save-article-file}). 
+
+@item O b
+@kindex O b (Summary)
+@findex gnus-summary-save-article-body-file
+Save the current article body in plain file format
+(@code{gnus-summary-save-article-body-file}). 
+
 @item O h
 @kindex O h (Summary)
 @findex gnus-summary-save-article-folder
 Save the current article in mh folder format
 (@code{gnus-summary-save-article-folder}). 
+
 @item O p
 @kindex O p (Summary)
 @findex gnus-summary-pipe-output
@@ -5052,8 +5257,20 @@ Save the current article in a pipe.  Uhm, like, what I mean is - Pipe
 the current article to a process (@code{gnus-summary-pipe-output}).
 @end table
 
+@vindex gnus-prompt-before-saving
 All these commands use the process/prefix convention
-(@pxref{Process/Prefix}).
+(@pxref{Process/Prefix}).  If you save bunches of articles using these
+functions, you might get tired of being prompted for files to save each
+and every article in.  The prompting action is controlled by
+the @code{gnus-prompt-before-saving} variable, which is @code{always} by
+default, giving you that excessive prompting action you know and
+loathe.  If you set this variable to @code{t} instead, you'll be promted
+just once for each series of articles you save.  If you like to really
+have Gnus do all your thinking for you, you can even set this variable
+to @code{nil}, which means that you will never be prompted for files to
+save articles in.  Gnus will simply save all the articles in the default
+files. 
+
 
 @vindex gnus-default-article-saver
 You can customize the @code{gnus-default-article-saver} variable to make
@@ -5061,27 +5278,38 @@ Gnus do what you want it to.  You can use any of the four ready-made
 functions below, or you can create your own.
 
 @table @code
+
 @item gnus-summary-save-in-rmail
-@vindex gnus-summary-save-in-rmail
+@findex gnus-summary-save-in-rmail
 This is the default format, @dfn{babyl}.  Uses the function in the
 @code{gnus-rmail-save-name} variable to get a file name to save the
 article in.  The default is @code{gnus-plain-save-name}.
+
 @item gnus-summary-save-in-mail
-@vindex gnus-summary-save-in-mail
+@findex gnus-summary-save-in-mail
 Save in a Unix mail (mbox) file.  Uses the function in the
 @code{gnus-mail-save-name} variable to get a file name to save the
 article in.  The default is @code{gnus-plain-save-name}.
+
 @item gnus-summary-save-in-file
-@vindex gnus-summary-save-in-file
+@findex gnus-summary-save-in-file
 Append the article straight to an ordinary file.  Uses the function in
 the @code{gnus-file-save-name} variable to get a file name to save the
 article in.  The default is @code{gnus-numeric-save-name}.
+
+@item gnus-summary-save-body-in-file
+@findex gnus-summary-save-body-in-file
+Append the article body to an ordinary file.  Uses the function in the
+@code{gnus-file-save-name} variable to get a file name to save the
+article in.  The default is @code{gnus-numeric-save-name}.
+
 @item gnus-summary-save-in-folder
-@vindex gnus-summary-save-in-folder
+@findex gnus-summary-save-in-folder
 Save the article to an MH folder using @code{rcvstore} from the MH
 library.
+
 @item gnus-summary-save-in-vm
-@vindex gnus-summary-save-in-vm
+@findex gnus-summary-save-in-vm
 Save the article in a VM folder.  You have to have the VM mail
 reader to use this setting.
 @end table
@@ -5471,6 +5699,7 @@ these articles easier.
 * Article Highlighting::    You want to make the article look like fruit salad.
 * Article Hiding::          You also want to make certain info go away.
 * Article Washing::         Lots of way-neat functions to make life better.
+* Article Buttons::         Clcik on URLs, Message-IDs, addresses and the like.
 * Article Date::            Grumble, UT!
 @end menu
 
@@ -5480,7 +5709,7 @@ these articles easier.
 @cindex highlight
 
 Not only do you want your article buffer to look like fruit salad, but
-you want it to look like techicolor fruit salad.
+you want it to look like technicolor fruit salad.
 
 @table @kbd
 
@@ -5535,8 +5764,8 @@ Regexp matching mangled SuperCite attribution lines.
 Minimum number of identical prefixes we have to see before we believe
 that it's a citation.
 
-@item gnus-cire-attribution-prefix
-@vindex gnus-cire-attribution-prefix
+@item gnus-cite-attribution-prefix
+@vindex gnus-cite-attribution-prefix
 Regexp matching the beginning of an attribution line.
 
 @item gnus-cite-addtribution-suffix
@@ -5587,6 +5816,11 @@ Headers}.
 @findex gnus-article-hide-signature
 Hide signature (@code{gnus-article-hide-signature}).
 
+@item W W p
+@kindex W W p (Summary)
+@findex gnus-article-hide-pgp
+Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). 
+
 @item W W c
 @kindex W W c (Summary)
 @findex gnus-article-hide-citation
@@ -5694,8 +5928,96 @@ 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.
 
+@item W b
+@kindex W b (Summary)
+@findex gnus-article-add-buttons
+Add clickable buttons to the article (@code{gnus-article-add-buttons}). 
+
+@item W B
+@kindex W B (Summary)
+@findex gnus-article-add-buttons-to-head
+Add clickable buttons to the article headers
+(@code{gnus-article-add-buttons-to-head}).  
+
+@end table
+
+
+@node Article Buttons
+@subsection Article Buttons
+@cindex buttons
+
+People often include references to other stuff in articles, and it would
+be nice if Gnus could just fetch whatever it is that people talk about
+with the minimum of fuzz.
+
+Gnus adds @dfn{buttons} to certain standard references by default:
+Well-formed URLs, mail addresses and Message-IDs.  This is controlled by
+two variables, one that handles article bodies and one that handles
+article heads:
+
+@table @code
+
+@item gnus-button-alist
+@vindex gnus-header-button-alist
+This is an alist where each entry has this form:
+
+@lisp
+(REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR)
+@end lisp
+
+@table @var
+
+@item regexp
+All text that match this regular expression will be considered an
+external reference.  Here's a typical regexp that match embedded URLs:
+@samp{"<URL:\\([^\n\r>]*\\)>"}. 
+
+@item button-par
+Gnus has to know which parts of the match is to be highlighted.  This is
+a number that says what sub-expression of the regexp that is to be
+highlighted.  If you want it all highlighted, you use @samp{0} here.
+
+@item use-p
+This form will be @code{eval}ed, and if the result is non-@code{nil},
+this is considered a match.  This is useful if you want extra sifting to
+avoid false matches.
+
+@item function
+This function will be called when you click on this button.
+
+@item data-par
+As with @var{button-par}, this is a sub-expression number, but this one
+says which part of the match is to be sent as data to @var{function}. 
+
+@end table
+
+So the full entry for buttonizing URLs is then
+
+@lisp
+("<URL:\\([^\n\r>]*\\)>" 0 t gnus-button-url 1)
+@end lisp
+
+@item gnus-header-button-alist
+@vindex gnus-header-button-alist
+This is just like the other alist, except that it is applied to the
+article head only, and that each entry has an additional element that is
+used to say what headers to apply the buttonize coding to:
+
+@lisp
+(HEADER REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR)
+@end lisp
+
+@var{header} is a regular expression.
+
 @end table
 
+@vindex gnus-article-button-face
+@vindex gnus-article-mouse-face
+Buttons are highlighted with @code{gnus-article-button-face}, while
+@code{gnus-article-mouse-face} is used when the mouse cursor is over the
+button.
+
+
 @node Article Date
 @subsection Article Date
 
@@ -5894,9 +6216,10 @@ editing and make the changes permanent, type @kbd{C-c C-c}
 
 @item B q
 @kindex B q (Summary)
-@findex gnus-summary-fancy-query
-If you are using fancy splitting, this command will tell you where an
-article would go (@code{gnus-summary-fancy-query}). 
+@findex gnus-summary-respool-query
+If you want to respool an article, you might be curious as to what group
+the article will end up in before you do the respooling.  This command
+will tell you (@code{gnus-summary-fancy-query}). 
 @end table
 
 @node Various Summary Stuff
@@ -6112,6 +6435,7 @@ rather stupid.)
 
 Any similarity to real events and people is purely coincidental.  Ahem.
 
+
 @node Customizing Articles
 @section Customizing Articles
 @cindex article customization
@@ -6119,30 +6443,14 @@ Any similarity to real events and people is purely coincidental.  Ahem.
 @vindex gnus-article-display-hook
 The @code{gnus-article-display-hook} is called after the article has
 been inserted into the article buffer.  It is meant to handle all
-treatment of the article before it is displayed.  By default it contains
-@code{gnus-article-hide-headers}, which hides unwanted headers.
+treatment of the article before it is displayed. 
 
-@findex gnus-article-subcite
-@findex gnus-article-hide-signature
-@findex gnus-article-hide-citation
-Other useful functions you might add to this hook is:
-
-@table @code
-@item gnus-article-hide-citation
-Hide all cited text.
-@item gnus-article-hide-signature
-Umn, hides the signature.
-@item gnus-article-treat-overstrike
-Treat @samp{^H_} in a reasonable manner.
-@item gnus-article-maybe-highlight
-Do fancy article highlighting.
-@item gnus-article-remove-cr
-Removes trailing carriage returns.
-@item gnus-article-de-quoted-unreadable
-Do naive decoding of articles encoded with Quoted-Printable.
-@item gnus-article-display-x-face
-Displays any X-Face headers.
-@end table
+By default it contains @code{gnus-article-hide-headers},
+@code{gnus-article-treat-overstrike}, and
+@code{gnus-article-maybe-highlight}, but there are thousands, nay
+millions, of functions you can put in this hook.  For an overview of
+functions @xref{Article Highlighting}, @xref{Article Hiding},
+@xref{Article Washing}, @xref{Article Buttons} and @xref{Article Date}. 
 
 You can, of course, write your own functions.  The functions are called
 from the article buffer, and you can do anything you like, pretty much.
@@ -6150,6 +6458,7 @@ There is no information that you have to keep in the buffer - you can
 change everything.  However, you shouldn't delete any headers.  Instead
 make them invisible if you want to make them go away.
 
+
 @node Article Keymap
 @section Article Keymap
 
@@ -6248,6 +6557,9 @@ you had to specify that for each group that used this server, that would
 be too much work, so Gnus offers a way of putting names to methods,
 which is what you do in the server buffer.
 
+To enter the server buffer, user the @kbd{^}
+(@code{gnus-group-enter-server-mode}) command in the group buffer.
+
 @menu
 * Server Buffer Format::   You can customize the look of this buffer.
 * Server Commands::        Commands to manipulate servers.
@@ -6421,42 +6733,56 @@ General score commands that don't actually change the score file:
 @kindex V s (Summary)
 @findex gnus-summary-set-score
 Set the score of the current article (@code{gnus-summary-set-score}).  
+
 @item V S
 @kindex V S (Summary)
 @findex gnus-summary-current-score
 Display the score of the current article
 (@code{gnus-summary-current-score}).   
+
 @item V t
 @kindex V t (Summary)
 @findex gnus-score-find-trace
 Display all score rules that have been used on the current article
 (@code{gnus-score-find-trace}).   
+
 @item V a
 @kindex V a (Summary)
 @findex gnus-summary-score-entry
 Add a new score entry, and allow specifying all elements 
 (@code{gnus-summary-score-entry}).
+
 @item V c
 @kindex V c (Summary)
 @findex gnus-score-change-score-file
 Make a different score file the current
 (@code{gnus-score-change-score-file}). 
+
 @item V e
 @kindex V e (Summary)
 @findex gnus-score-edit-alist
 Edit the current score file (@code{gnus-score-edit-alist}).  You will be
 popped into a @code{gnus-score-mode} buffer (@pxref{Score File
 Editing}).
+
 @item V f
 @kindex V f (Summary)
 @findex gnus-score-edit-file
 Edit a score file and make this score file the current one
 (@code{gnus-score-edit-file}).
+
+@item V C
+@kindex V C (Summary)
+@findex gnus-score-customize
+Customize a score file in a visually pleasing manner
+(@code{gnus-score-customize}). 
+
 @item I C-i
 @kindex I C-i (Summary)
 @findex gnus-summary-raise-score
 Increase the score of the current article
 (@code{gnus-summary-raise-score}).
+
 @item L C-l
 @kindex L C-l (Summary)
 @findex gnus-summary-lower-score
@@ -6610,6 +6936,7 @@ all the time.  This command will flush the cache
 @vindex gnus-use-scoring
 If @code{nil}, Gnus will not check for score files, and will not, in
 general, do any score-related work.
+
 @item gnus-kill-killed
 @vindex gnus-kill-killed
 If this variable is @code{nil}, Gnus will never apply score files to
@@ -6618,14 +6945,29 @@ may save you lots of time, it also means that if you apply a kill file
 to a group, and then change the kill file and want to run it over you
 group again to kill more articles, it won't work.  You have to set this
 variable to @code{t} to do that.
+
 @item gnus-kill-files-directory
 @vindex gnus-kill-files-directory
 All kill and score files will be stored in this directory, which is
 initialized from the @samp{SAVEDIR} environment variable by default.
+
 @item gnus-score-file-suffix
 @vindex gnus-score-file-suffix
 Suffix to add to the group name to arrive at the score file name
 (@samp{SCORE} by default.)
+
+@item gnus-score-uncacheable-files
+@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 you Emacs grow big and
+bloated, so this regexp can be used to weed out score files that are
+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
+@file{comp.infosystems.www.authoring.misc.ADAPT}.  In fact, this
+variable is @samp{"ADAPT$"} by default, so no adaptive score files will
+be cached.
+
 @item gnus-score-interactive-default-score
 @vindex gnus-score-interactive-default-score
 Score used by all the interactive raise/lower commands to raise/lower
@@ -6633,17 +6975,21 @@ score with.  Default is 1000, which may seem excessive, but this is to
 ensure that the adaptive scoring scheme gets enough room to play with.
 We don't want the small changes from the adaptive scoring to overwrite
 manually entered data.
+
 @item gnus-summary-default-score
 @vindex gnus-summary-default-score
 Default score of an article, which is 0 by default.
+
 @item gnus-score-over-mark
 @vindex gnus-score-over-mark
 Mark (in the third column) used for articles with a score over the
 default.  Default is @samp{+}.
+
 @item gnus-score-below-mark
 @vindex gnus-score-below-mark
 Mark (in the third column) used for articles with a score below the
 default.  Default is @samp{-}.
+
 @item gnus-score-find-score-files-function
 @vindex gnus-score-find-score-files-function
 Function used to find score files for the current group.  This function
@@ -6737,7 +7083,10 @@ article and do the match on larger parts of the article: @samp{Body}
 will perform the match on the body of the article, @samp{Head} will
 perform the match on the head of the article, and @samp{All} will
 perform the match on the entire article.  Note that using any of these
-last three keys will slow down group entry @emph{considerably}.  
+last three keys will slow down group entry @emph{considerably}.  The
+final "header" you can score on is @samp{Followup}.  These score entries
+will result in new score entries being added for all follow-ups to
+articles that matches these score entries.
 
 Following this key is a random number of score entries, where each score
 entry has one to four elements.
@@ -7067,8 +7416,8 @@ holding our breath yet?
 @cindex kill files
 
 Gnus still supports those pesky old kill files.  In fact, the kill file
-entries can now be expiring, which is something I wrote before Per
-thought of doing score files, so I've left the code in there.
+entries can now be expiring, which is something I wrote before Daniel
+Quinlan thought of doing score files, so I've left the code in there.
 
 In short, kill processing is a lot slower (and I do mean @emph{a lot})
 than score processing, so it might be a good idea to rewrite your kill
@@ -7929,7 +8278,7 @@ non-@code{nil}, this is not a followup, but a totally new article.
 the subject of the message.  @var{article-buffer} is the buffer being
 followed up, if that is the case.  @var{info} is the group info.
 @var{follow-to} is the group that one is supposed to re-direct the
-article to.  If @var{respect-poster} is non-@code{nil}, the special
+article ot.  If @var{respect-poster} is non-@code{nil}, the special
 @samp{"poster"} value of a @code{Followup-To} header is to be respected.
 
 There should be no result data returned.
@@ -8082,6 +8431,24 @@ This function should remove @var{article} (which is a number) from
 
 There should be no data returned.
 
+
+@item (nnchoke-request-delete-group GROUP FORCE &optional SERVER)
+
+This function should delete @var{group}.  If @var{force}, it should
+really delete all the articles in the group, and then delete the group
+itself.  (If there is such a thing as "the group itself".)
+
+There should be no data returned.
+
+
+@item (nnchoke-request-rename-group GROUP NEW-NAME &optional SERVER)
+
+This function should rename @var{group} into @var{new-name}.  All
+articles that are in @var{group} should move to @var{new-name}.
+
+There should be no data returned.
+
+
 @end table
 
 
@@ -8136,7 +8503,7 @@ required-atom    = mark / expunge / mark-and-expunge / files /
                    exclude-files / read-only / touched
 optional-atom    = adapt / local / eval 
 mark             = "mark" space nil-or-number
-nil-or-t         = "nil" / <integer>
+nil-or-number    = "nil" / <integer>
 expunge          = "expunge" space nil-or-number
 mark-and-expunge = "mark-and-expunge" space nil-or-number
 files            = "files" *[ space <string> ]