*** empty log message ***
[gnus] / texi / gnus.texi
index 81f117b..a331fa6 100644 (file)
@@ -1,5 +1,5 @@
 \input texinfo                  @c -*-texinfo-*-
-@comment %**start of header (This is for running Texinfo on a region.)
+
 @setfilename gnus.info
 @settitle September Gnus Manual
 @synindex fn cp
 @finalout
 @end iftex
 @setchapternewpage odd
-@c      @smallbook
-@comment %**end of header (This is for running Texinfo on a region.)
-@tex
-\overfullrule=0pt
-%\global\baselineskip 30pt      % For printing in double spaces
-@end tex
+
+@iftex
+@iflatex
+\documentclass[twoside,a4paper,openright]{book}
+\usepackage[latin1]{inputenc}
+% \usepackage{fontenc}
+% \usepackage{babel}
+\usepackage{pagestyle}
+\usepackage{epsfig}
+% \usepackage{ifitricks}
+\fontfamily{bembo}\selectfont
+
+\makeindex
+\begin{document}
+
+\newcommand{\gnuschaptername}{}
+\newcommand{\gnussectionname}{}
+
+\newcommand{\gnusbackslash}{/}
+
+\newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}}
+\newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}}
+
+\newcommand{\gnuskindex}[1]{\index{#1}}
+\newcommand{\gnusindex}[1]{\index{#1}}
+
+\newcommand{\gnustt}[1]{{\textbf{\textsf{#1}}}}
+\newcommand{\gnuscode}[1]{\gnustt{#1}}
+\newcommand{\gnussamp}[1]{``\gnustt{#1}''}
+\newcommand{\gnuslisp}[1]{\gnustt{#1}}
+\newcommand{\gnuskbd}[1]{`\gnustt{#1}'}
+\newcommand{\gnusfile}[1]{`\gnustt{#1}'}
+\newcommand{\gnusdfn}[1]{\textit{#1}}
+\newcommand{\gnusi}[1]{\textit{#1}}
+\newcommand{\gnusstrong}[1]{\textbf{#1}}
+\newcommand{\gnusemph}[1]{\textit{#1}}
+\newcommand{\gnusvar}[1]{\textsl{\textsf{#1}}}
+\newcommand{\gnussc}[1]{\textsc{#1}}
+\newcommand{\gnustitle}[1]{{\huge\textbf{#1}}}
+\newcommand{\gnusauthor}[1]{{\large\textbf{#1}}}
+
+\newcommand{\gnusbullet}{{${\bullet}$}}
+\newcommand{\gnusdollar}{\$}
+\newcommand{\gnusampersand}{\&}
+\newcommand{\gnuspercent}{\%}
+\newcommand{\gnushash}{\#}
+\newcommand{\gnushat}{\symbol{"5E}}
+\newcommand{\gnusunderline}{\symbol{"5F}}
+\newcommand{\gnustilde}{\symbol{"7E}}
+\newcommand{\gnusless}{{$<$}}
+\newcommand{\gnusgreater}{{$>$}}
+
+\newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}}
+\newcommand{\gnusinteresting}{
+\marginpar[\hspace{2.5cm}\gnushead]{\gnushead}
+}
+
+\newcommand{\gnuschapter}[1]{
+\renewcommand{\gnussectionname}{}
+\chapter{#1}
+\renewcommand{\gnuschaptername}{#1}
+\thispagestyle{empty}
+% \epsfig{figure=gnus-herd-\arabic{chapter}.eps,height=15cm}
+\clearpage
+}
+
+\newcommand{\gnusitemx}[1]{\vspace{-\itemsep}\item#1}
+
+\newcommand{\gnussection}[1]{
+\renewcommand{\gnussectionname}{#1}
+\section{#1}
+}
+
+\newenvironment{codelist}%
+{\begin{list}{}{
+}
+}{\end{list}}
+
+\newenvironment{kbdlist}%
+{\begin{list}{}{
+\labelwidth=0cm
+}
+}{\end{list}}
+
+\newenvironment{dfnlist}%
+{\begin{list}{}{
+}
+}{\end{list}}
+
+\newenvironment{stronglist}%
+{\begin{list}{}{
+}
+}{\end{list}}
+
+\newenvironment{samplist}%
+{\begin{list}{}{
+}
+}{\end{list}}
+
+\newenvironment{varlist}%
+{\begin{list}{}{
+}
+}{\end{list}}
+
+\newenvironment{emphlist}%
+{\begin{list}{}{
+}
+}{\end{list}}
+
+\newpagestyle{gnus}%
+{
+{
+\ifodd\count0
+{
+\hspace*{-2ex}
+\underline{
+\makebox[\headtextwidth]{
+\hspace*{-2.3ex}
+\textbf{\arabic{chapter}.\arabic{section}}
+\textbf{\gnussectionname\hfill\arabic{page}}
+}}
+}
+\else
+{
+\hspace*{-2.25cm}
+\underline{
+\hspace*{-2.3ex}
+\makebox[\headtextwidth]{
+\textbf{\arabic{page}\hfill\gnuschaptername}
+}}
+}
+\fi
+}
+}
+{
+\ifodd\count0
+\mbox{} \hfill 
+\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
+\else
+\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
+\hfill \mbox{}
+\fi
+}
+\pagestyle{gnus}
+
+@end iflatex
+@end iftex
+
+@iftex
+@iflatex
+\begin{titlepage}
+{
+
+%\addtolength{\oddsidemargin}{-5cm}
+%\addtolength{\evensidemargin}{-5cm}
+\parindent=0cm
+\addtolength{\textheight}{2cm}
+
+\gnustitle{\gnustitlename}\\
+\rule{15cm}{1mm}\\
+\vfill
+\hspace*{-1cm}\epsfig{figure=gnus-big-logo.eps,height=15cm}
+\vfill
+\rule{15cm}{1mm}\\
+\gnusauthor{by Lars Magne Ingebrigtsen}
+\newpage
+}
+
+\mbox{}
+\vfill
+
+\thispagestyle{empty}
+
+Copyright \copyright{} 1995 Free Software Foundation, Inc. 
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions.
+
+\newpage
+\end{titlepage}
+@end iflatex
+@end iftex
 
 @ifinfo
 
@@ -42,13 +227,14 @@ Permission is granted to copy and distribute translations of this manual
 into another language, under the above conditions for modified versions.
 @end ifinfo
 
-@iftex
+@tex
 
 @titlepage
 @title September Gnus Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
+
 @vskip 0pt plus 1filll
 Copyright @copyright{} 1995 Free Software Foundation, Inc. 
 
@@ -64,1177 +250,806 @@ permission notice identical to this one.
 Permission is granted to copy and distribute translations of this manual
 into another language, under the above conditions for modified versions.
 
-Cover art by Etienne Suvasa.
 @end titlepage
 @page
 
-@end iftex
+@end tex
+
 
 @node Top
 @top The Gnus Newsreader
 
+@ifinfo
+
 You can read news (and mail) from within Emacs by using Gnus.  The news
 can be gotten by any nefarious means you can think of---@sc{nntp}, local
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-@menu
-* History::                 How Gnus got where it is today.
-* Terminology::             We use really difficult, like, words here.
-* Starting Up::             Finding news can be a pain.
-* The Group Buffer::        Selecting, subscribing and killing groups.
-* The Summary Buffer::      Reading, saving and posting articles.
-* The Article Buffer::      Displaying and handling articles.
-* The Server Buffer::       Making and editing virtual servers.
-* Scoring::                 Assigning values to articles.
-* Various::                 General purpose settings.
-* Customization::           Tailoring Gnus to your needs.
-* Troubleshooting::         What you might try if things do not work.
-* The End::                 Farewell and goodbye.
-* Appendices::              Technical stuff, Emacs intro, FAQ
-* Index::                   Variable, function and concept index.
-* Key Index::               Key Index.
-@end menu
+@end ifinfo
 
-@node History
-@chapter History
+@iftex
 
-@cindex history
-@sc{gnus} was written by Masanobu UMEDA.  When autumn crept up in '94,
-Lars Magne Ingebrigtsen grew bored and decided to rewrite Gnus.
+@iflatex
+\thispagestyle{empty}
+@end iflatex
 
-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
-distribution point for the new and spiffy versions of Gnus, also know as
-The Site That Destroys Newsrcs And Drives People Mad.
+Gnus is the advanced, self-documenting, customizable, extensible
+unreal-time newsreader for GNU Emacs.  
 
-During the first extended alpha period of develpment, the new Gnus was
-called "(ding) Gnus".  @dfn{(ding)}, is, of course, short for @dfn{ding
-is not Gnus}, which is a total and utter lie, but who cares? (Besides,
-the "Gnus" in this abbreviation should probably be pronounced "news" as
-UMEDA intended, which makes it a more appropriate name, don't you
-think?)
+Oops.  That sounds oddly familiar, so let's start over again to avoid
+being accused of plagiarism:
 
-In any case, after spending all that energy with coming up with a new
-and spiffy name, we decided that the name was @emph{too} spiffy, so we
-renamamed it back again to "Gnus".  But in mixed case.  "Gnus" vs.
-"@sc{gnus}".  New vs. old.
+Gnus is a message-reading laboratory.  It will let you look at just
+about anything as if it were a newsgroup.  You can read mail with it,
+you can browse directories with it, you can @code{ftp} with it---you can
+even read news with it!
+
+Gnus tries to empower people who read news the same way Emacs empowers
+people who edit text.  Gnus sets no limits to what the user should be
+allowed to do.  Users are encouraged to extend Gnus to make it behave
+like they want it to behave.  A program should not control people;
+people should be empowered to do what they want by using (or abusing)
+the program.
+
+@end iftex
 
-Incidentally, the next Gnus generation will be called "September Gnus",
-and won't be released until February.  Confused?  You will be.
 
 @menu
-* Why?::                What's the point of Gnus?
-* Compatibility::       Just how compatible is Gnus with @sc{gnus}?
-* Conformity::          Gnus tries to conform to all standards.
-* Emacsen::             Gnus can be run on a few modern Emacsen.
-* Contributors::        Oodles of people.  
-* New Features::        Pointers to some of the new stuff in Gnus.
-* Newest Features::     Features so new that they haven't been written yet.
+* Starting Up::           Finding news can be a pain.
+* The Group Buffer::      Selecting, subscribing and killing groups.
+* The Summary Buffer::    Reading, saving and posting articles.
+* The Article Buffer::    Displaying and handling articles.
+* Composing Messages::    Information on sending mail and news.
+* Select Methods::        Gnus reads all messages from various select methods.
+* Scoring::               Assigning values to articles.
+* Various::               General purpose settings.
+* The End::               Farewell and goodbye.
+* Appendices::            Terminology, Emacs intro, FAQ, History, Internals.
+* Index::                 Variable, function and concept index.
+* Key Index::             Key Index.
 @end menu
 
-@node Why?
-@section Why?
 
-What's the point of Gnus?  
+@node Starting Up
+@chapter Starting Gnus
+@cindex starting up
 
-I want to provide a "rad", "happening", "way cool" and "hep" newsreader,
-that lets you do anything you can think of.  That was my original
-motivation, but while working on Gnus, it has become clear to me that
-this generation of newsreaders really belong in the stone age.
-Newsreaders haven't developed much since the infancy of the net.  If the
-volume continues to rise with the current rate of increase, all current
-newsreaders will be pretty much useless.  How do you deal with
-newsgroups that have hundreds (or thousands) of new articles each day? 
+@kindex M-x gnus
+@findex gnus
+If your system administrator has set things up properly, starting Gnus
+and reading news is extremely easy---you just type @kbd{M-x gnus} in
+your Emacs. 
 
-Gnus offer no real solutions to these questions, but I would very much
-like to see Gnus being used as a testing ground for new methods of
-reading and fetching news.  Expanding on Umeda-san's wise decision to
-separate the newsreader from the backends, Gnus now offers a simple
-interface for anybody who wants to write new backends for fetching mail
-and news from different sources.  I have added hooks for customizations
-everywhere I can imagine useful.  By doing so, I'm inviting every one of
-you to explore and invent new ways of reading news.
+@findex gnus-other-frame
+@kindex M-x gnus-other-frame
+If you want to start Gnus in a different frame, you can use the command
+@kbd{M-x gnus-other-frame} instead.
 
-May Gnus never be complete. @kbd{C-u 100 M-x hail-emacs}. 
+If things do not go smoothly at startup, you have to twiddle some
+variables. 
 
-@node Compatibility
-@section Compatibility
+@menu
+* Finding the News::    Choosing a method for getting news.
+* 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.
+* The Active File::     Reading the active file over a slow line Takes Time.
+* Startup Variables::   Other variables you might change.
+@end menu
 
-@cindex compatibility
-Gnus was designed to be fully compatible with @sc{gnus}.  Almost all key
-bindings have been kept.  More key bindings have been added, of course,
-but only in one or two obscure cases have old bindings been changed.
 
-Our motto is:
-@quotation
-@cartouche
-@center In a cloud bones of steel.
-@end cartouche
-@end quotation
+@node Finding the News
+@section Finding the News
 
-All commands have kept their names.  Some internal functions have changed
-their names.
+@vindex gnus-select-method
+@c @head
+The @code{gnus-select-method} variable says where Gnus should look for
+news.  This variable should be a list where the first element says
+@dfn{how} and the second element says @dfn{where}.  This method is your
+native method.  All groups that are not fetched with this method are
+foreign groups.
 
-The @code{gnus-uu} package has changed drastically. @xref{Decoding
-Articles}. 
+For instance, if the @samp{news.somewhere.edu} @sc{nntp} server is where
+you want to get your daily dosage of news from, you'd say:
 
-One major compatibility question if the presence of several summary
-buffers.  All variables that are relevant while reading a group are
-buffer-local to the summary buffer they belong in.  Although most
-important variables have their values copied into their global
-counterparts whenever a command is executed in the summary buffer, this
-change might lead to incorrect values being used unless you are careful.
+@lisp
+(setq gnus-select-method '(nntp "news.somewhere.edu"))
+@end lisp
 
-All code that relies on knowledge of @sc{gnus} internals will probably
-fail.  To take two examples: Sorting @code{gnus-newsrc-assoc} (or
-changing it in any way, as a matter of fact) is strictly verboten.  Gnus
-maintains a hash table that points to the entries in this assoc (which
-speeds up many functions), and changing the assoc directly will lead to
-peculiar results.
+If you want to read directly from the local spool, say:
 
-@cindex hilit19
-@cindex highlighting
-Old hilit19 code does not work at all.  In fact, you should probably
-remove all hilit code from all Gnus hooks
-(@code{gnus-group-prepare-hook}, @code{gnus-summary-prepare-hook} and
-@code{gnus-summary-article-hook}).  (Well, at the very least the first
-two.)  Gnus provides various integrated functions for highlighting.
-These are faster and more accurate.  To make life easier for everybody,
-Gnus will by default remove all hilit calls from all hilit hooks.
-Uncleanliness!  Away!
+@lisp
+(setq gnus-select-method '(nnspool ""))
+@end lisp
 
-Packages like @code{expire-kill} will no longer work.  As a matter of
-fact, you should probably remove all old @sc{gnus} packages (and other
-code) when you start using Gnus.  More likely than not, Gnus already
-does what you have written code to make @sc{gnus} do.  (Snicker.)
+If you can use a local spool, you probably should, as it will almost
+certainly be much faster.
 
-Even though old methods of doing things are still supported, only the
-new methods are documented in this manual.  If you detect a new method of
-doing something while reading this manual, that does not mean you have
-to stop doing it the old way.
+@vindex gnus-nntpserver-file
+@cindex NNTPSERVER
+@cindex @sc{nntp} server
+If this variable is not set, Gnus will take a look at the
+@code{NNTPSERVER} environment variable.  If that variable isn't set,
+Gnus will see whether @code{gnus-nntpserver-file}
+(@file{/etc/nntpserver} by default) has any opinions on the matter.  If
+that fails as well, Gnus will will try to use the machine that is
+running Emacs as an @sc{nntp} server.  That's a long-shot, though.
 
-Gnus understands all @sc{gnus} startup files.
+@vindex gnus-nntp-server
+If @code{gnus-nntp-server} is set, this variable will override
+@code{gnus-select-method}.  You should therefore set
+@code{gnus-nntp-server} to @code{nil}, which is what it is by default.
 
-@kindex M-x gnus-bug
-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}).
+@vindex gnus-secondary-servers
+You can also make Gnus prompt you interactively for the name of an
+@sc{nntp} server.  If you give a non-numerical prefix to @code{gnus}
+(i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
+in the @code{gnus-secondary-servers} list (if any).  You can also just
+type in the name of any server you feel like visiting.
 
+@findex gnus-group-browse-foreign-server
+@kindex B (Group)
+However, if you use one @sc{nntp} server regularly and are just
+interested in a couple of groups from a different server, you would be
+better served by using the @kbd{B} command in the group buffer.  It will
+let you have a look at what groups are available, and you can subscribe
+to any of the groups you want to.  This also makes @file{.newsrc}
+maintenance much tidier.  @xref{Foreign Groups}.
 
-@node Conformity
-@section Conformity
+@vindex gnus-secondary-select-methods
+@c @head
+A slightly different approach to foreign groups is to set the
+@code{gnus-secondary-select-methods} variable.  The select methods
+listed in this variable are in many ways just as native as the
+@code{gnus-select-method} server.  They will also be queried for active
+files during startup (if that's required), and new newsgroups that
+appear on these servers will be subscribed (or not) just as native
+groups are.
 
-No rebels without a clue here, ma'am.  We conform to all standards known
-to (wo)man.  Except for those standards and/or conventions we disagree
-with, of course.
+For instance, if you use the @code{nnmbox} backend to read your mail, you
+would typically set this variable to
 
-@table @strong
+@lisp
+(setq gnus-secondary-select-methods '((nnmbox "")))
+@end lisp
 
-@item RFC 822
-There are no known breaches of this standard.
 
-@item RFC 1036
-There are no known breaches of this standard, either.
+@node The First Time
+@section The First Time
+@cindex first time usage
 
-@item Usenet Seal of Approval
-Gnus hasn't been formally through the Seal process, but I have read
-through the Seal text and I think Gnus would pass.
+If no startup files exist, Gnus will try to determine what groups should
+be subscribed by default.
 
-@item Son-of-RFC 1036
-We do have some breaches to this one.
+@vindex gnus-default-subscribed-newsgroups
+If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
+will subscribe you to just those groups in that list, leaving the rest
+killed.  Your system administrator should have set this variable to
+something useful.
 
-@table @emph
-@item MIME
-Gnus does no MIME handling, and this standard-to-be seems to think that
-MIME is the bees' knees, so we have major breakage here.
-@item X-Newsreader
-This is considered to be a "vanity header", while I consider it to be
-consumer information.  After seeing so many badly formatted articles
-coming from @code{tin} and @code{Netscape} I know not to use either of
-those for posting articles.  I would not have known that if it wasn't
-for the @code{X-Newsreader} header.
-@item References
-Gnus breaks lines if this header is long.  I infer from RFC1036 that
-being conservative in what you output is not creating 5000-character
-lines, so it seems like a good idea to me.  However, this standard-to-be
-says that whitespace in the @code{References} header is to be preserved,
-so...  It doesn't matter one way or the other to Gnus, so if somebody
-tells me what The Way is, I'll change it.  Or not.
-@end table
+Since she hasn't, Gnus will just subscribe you to a few randomly picked
+groups (i.e., @samp{*.newusers}).  (@dfn{Random} is here defined as
+@dfn{whatever Lars thinks you should read}.)
 
-@end table
+You'll also be subscribed to the Gnus documentation group, which should
+help you with most common problems.  
 
-If you ever see Gnus act noncompliantly to the texts mentioned above,
-don't hesitate to drop a note to Gnus Towers and let us know.
+If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
+use the normal functions for handling new groups, and not do anything
+special.
 
 
-@node Emacsen
-@section Emacsen
-@cindex Emacsen
-@cindex XEmacs
-@cindex Mule
-@cindex Emacs
+@node The Server is Down
+@section The Server is Down
+@cindex server errors
 
-Gnus should work on :
+If the default server is down, Gnus will understandably have some
+problems starting.  However, if you have some mail groups in addition to
+the news groups, you may want to start Gnus anyway.
 
-@itemize @bullet 
+Gnus, being the trusting sort of program, will ask whether to proceed
+without a native select method if that server can't be contacted.  This
+will happen whether the server doesn't actually exist (i.e., you have
+given the wrong address) or the server has just momentarily taken ill
+for some reason or other.  If you decide to continue and have no foreign
+groups, you'll find it difficult to actually do anything in the group
+buffer.  But, hey, that's your problem.  Blllrph!
 
-@item
-Emacs 19.26 and up.
+@findex gnus-no-server
+@c @head
+If you know that the server is definitely down, or you just want to read
+your mail without bothering with the server at all, you can use the
+@code{gnus-no-server} command to start Gnus.  That might come in handy
+if you're in a hurry as well.
 
-@item
-XEmacs 19.12 and up.
 
-@item 
-Mule versions based on Emacs 19.26 and up.
+@node Slave Gnusii
+@section Slave Gnusiï
+@cindex slave
 
-@end itemize
+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 Gnusiï to read from two different servers),
+that is no problem whatsoever.  You just do it.
 
-Gnus will absolutely not work on any Emacsen older than that.  Not
-reliably, at least. 
+The problem appears when you want to run two Gnusiï that use the same
+@code{.newsrc} file.
 
-There are some vague differences in what Gnus does, though:
+To work around that problem some, we here at the Think-Tank at the Gnus
+Towers have come up with a new concept: @dfn{Masters} 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 instance to
+me.  Usage of the patent (@dfn{Master/Slave Relationships In Computer
+Applications}) will be much more expensive, of course.)
 
-@itemize @bullet
+Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
+however you do it).  Each subsequent slave Gnusiï should be started with
+@kbd{M-x gnus-slave}.  These slaves won't save normal @file{.newsrc}
+files, but instead save @dfn{slave files} that contains information only
+on what groups have been read in the slave session.  When a master Gnus
+starts, it will read (and delete) these slave files, incorporating all
+information from them.  (The slave files will be read in the sequence
+they were created, so the latest changes will have precedence.)
 
-@item
-The mouse-face on Gnus lines under Emacs and Mule is delimited to
-certain parts of the lines while they cover the entire line under
-XEmacs. 
-
-@item 
-The same with current-article marking---XEmacs puts an underline under
-the entire summary line while Emacs and Mule are nicer and kinder.
+Information from the slave files has, of course, precedence over the
+information in the normal (i. e., master) @code{.newsrc} file.
 
-@item
-XEmacs features more graphics---a logo and a toolbar.
 
-@item
-Citation highlighting us better under Emacs and Mule than under XEmacs.
+@node Fetching a Group
+@section Fetching a Group
 
-@item
-Emacs 19.26-19.28 have tangible hidden headers, which can be a bit
-confusing. 
+@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 parameter.
 
-@end itemize
 
+@node New Groups
+@section New Groups
+@cindex new groups
 
-@node Contributors
-@section Contributors
-@cindex contributors
+@vindex gnus-subscribe-newsgroup-method
+What Gnus does when it encounters a new group is determined by the
+@code{gnus-subscribe-newsgroup-method} variable.
 
-The new Gnus version couldn't have been done without the help of all the
-people on the (ding) mailing list.  Every day for months I have gotten
-tens of nice bug reports from them, filling me with joy, every single
-one of them.  Smooches.  The people on the list have been tried beyond
-endurance, what with my "oh, that's a neat idea <type type>, yup, I'll
-release it right away <ship off> no wait, that doesn't work at all <type
-type>, yup, I'll ship that one off right away <ship off> no, wait, that
-absolutely does not work" policy for releases.  Micro$oft---bah.
-Amateurs.  I'm @emph{much} worse.  (Or is that "worser"? "much worser"?
-"worsest"?)
+This variable should contain a function.  Some handy pre-fab values
+are:
 
-I would like to take this opportunity to thank the Academy for...  oops,
-wrong show.
+@table @code
 
-@itemize @bullet
-@item
-Of course, GNUS was written by Masanobu UMEDA.
-@item 
-Many excellent functions, especially dealing with scoring and
-highlighting (as well as the @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
-I stole some pieces from the XGnus distribution by Felix Lee and JWZ.
-@item 
-@code{nnfolder} has been much enhanced by Scott Byer.
-@item
-The orphan scoring was written by Peter Mutsaers.
-@item 
-GNU XEmacs support has been added by Fabrice Popineau. 
-@item 
-POP mail support was written by Ken Raeburn.
-@item 
-Various bits and pieces, especially dealing with .newsrc files, were
-suggested and added by Hallvard B Furuseth.
-@item 
-Brian Edmonds has written @code{gnus-bbdb}.
-@item 
-Ricardo Nassif did the proof-reading.
-@item
-Kevin Davidson came up with the name @dfn{ding}, so blame him.
-@item 
-Peter Arius, 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
+@item gnus-subscribe-zombies
+@vindex gnus-subscribe-zombies
+Make all new groups zombies.  You can browse the zombies later (with
+@kbd{A z}) and either kill them all off properly, or subscribe to them.
+This is the default.
 
+@item gnus-subscribe-randomly
+@vindex gnus-subscribe-randomly
+Subscribe all new groups randomly.
 
-@node New Features
-@section New Features
-@cindex new features
+@item gnus-subscribe-alphabetically
+@vindex gnus-subscribe-alphabetically
+Subscribe all new groups alphabetically.
 
-@itemize @bullet
+@item gnus-subscribe-hierarchically
+@vindex gnus-subscribe-hierarchically
+Subscribe all new groups hierarchically.
 
-@item
-The look of all buffers can be changed by setting format-like variables
-(@pxref{Group Buffer Format} and @pxref{Summary Buffer Format}). 
-@item 
-Local spool and several @sc{nntp} servers can be used at once
-(@pxref{Foreign Groups}).  
+@item gnus-subscribe-interactively
+@vindex gnus-subscribe-interactively
+Subscribe new groups interactively.  This means that Gnus will ask
+you about @strong{all} new groups.
 
-@item 
-You can combine groups into virtual groups (@pxref{nnvirtual}). 
+@item gnus-subscribe-killed
+@vindex gnus-subscribe-killed
+Kill all new groups.
 
-@item 
-You can read a number of different mail formats (@pxref{Reading Mail}).
-All the mail backends implement a convenient mail expiry scheme
-(@pxref{Expiring Old Mail Articles}). 
+@end table
 
-@item
-Gnus can use various strategies for gathering threads that have lost
-their roots (thereby gathering loose sub-threads into one thread) or it
-can go back and retrieve enough headers to build a complete thread
-(@pxref{Customizing Threading}).
+@vindex gnus-subscribe-hierarchical-interactive
+A closely related variable is
+@code{gnus-subscribe-hierarchical-interactive}.  (That's quite a
+mouthful.)  If this variable is non-@code{nil}, Gnus will ask you in a
+hierarchical fashion whether to subscribe to new groups or not.  Gnus
+will ask you for each sub-hierarchy whether you want to descend the
+hierarchy or not.  
 
-@item 
-Killed groups can be displayed in the group buffer, and you can read
-them as well.
+One common mistake is to set the variable a few paragraphs above to
+@code{gnus-subscribe-hierarchical-interactive}.  This is an error.  This
+will not work.  This is ga-ga.  So don't do it.
 
-@item 
-Gnus can do partial group updates---you do not have to retrieve the
-entire active file just to check for new articles in a few groups
-(@pxref{The Active File}).
+A nice and portable way to control which new newsgroups should be
+subscribed (or ignored) is to put an @dfn{options} line at the start of
+the @file{.newsrc} file.  Here's an example:
 
-@item 
-Gnus implements a sliding scale of subscribedness to groups
-(@pxref{Group Levels}).
+@example
+options -n !alt.all !rec.all sci.all
+@end example
 
-@item 
-You can score articles according to any number of criteria
-(@pxref{Scoring}).  You can even get Gnus to find out how to score
-articles for you (@pxref{Adaptive Scoring}).
+@vindex gnus-subscribe-options-newsgroup-method
+This line obviously belongs to a serious-minded intellectual scientific
+person (or she may just be plain old boring), because it says that all
+groups that have names beginning with @samp{alt} and @samp{rec} should
+be ignored, and all groups with names beginning with @samp{sci} should
+be subscribed.  Gnus will not use the normal subscription method for
+subscribing these groups.
+@code{gnus-subscribe-options-newsgroup-method} is used instead.  This
+variable defaults to @code{gnus-subscribe-alphabetically}.
 
-@item 
-Gnus maintains a dribble buffer that is auto-saved the normal Emacs
-manner, so it should be difficult to lose much data on what you have
-read if your machine should go down (@pxref{Auto Save}). 
+@vindex gnus-options-not-subscribe
+@vindex gnus-options-subscribe
+If you don't want to mess with your @file{.newsrc} file, you can just
+set the two variables @code{gnus-options-subscribe} and
+@code{gnus-options-not-subscribe}.  These two variables do exactly the
+same as the @file{.newsrc} @samp{options -n} trick.  Both are regexps,
+and if the the new group matches the former, it will be unconditionally
+subscribed, and if it matches the latter, it will be ignored.
 
-@item 
-Gnus now has its own startup file to avoid cluttering up the
-@file{.emacs} file.
+@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 superfluous, 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}.
 
-@item 
-You can set the process mark on both groups and articles and perform
-operations on all the marked items (@pxref{Process/Prefix}).
+@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
+also save you some time at startup.  Even if this variable is
+@code{nil}, you can always subscribe to the new groups just by pressing
+@kbd{U} in the group buffer (@pxref{Group Maintenance}).  This variable
+is @code{t} by default.
 
-@item 
-You can grep through a subset of groups and create a group from the
-results (@pxref{nnkiboze}). 
+Gnus normally determines whether a group is new or not by comparing the
+list of groups from the active file(s) with the lists of subscribed and
+dead groups.  This isn't a particularly fast method.  If
+@code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
+server for new groups since the last time.  This is both faster &
+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 command. 
+
+I bet I know what you're thinking now: How do I find out whether my
+server supports @code{ask-server}?  No?  Good, because I don't have a
+fail-safe answer.  I would suggest just setting this variable to
+@code{ask-server} and see whether any new groups appear within the next
+few days.  If any do, then it works.  If any don't, then it doesn't
+work.  I could write a function to make Gnus guess whether the server
+supports @code{ask-server}, but it would just be a guess.  So I won't.
+You could @code{telnet} to the server and say @code{HELP} and see
+whether it lists @samp{NEWGROUPS} among the commands it understands.  If
+it does, then it might work.  (But there are servers that lists
+@samp{NEWGROUPS} without supporting the function properly.)
 
-@item 
-You can list subsets of groups according to, well, anything
-(@pxref{Listing Groups}). 
+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
+subscribe them (or not) using the normal methods.  This might be handy
+if you are monitoring a few servers for new groups.  A side effect is
+that startup will take much longer, so you can meditate while waiting.
+Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
 
-@item 
-You can browse foreign servers and subscribe to groups from those
-servers (@pxref{Browse Foreign Server}). 
 
-@item 
-Gnus can fetch articles asynchronously on a second connection to the
-server (@pxref{Asynchronous Fetching}).
+@node Startup Files
+@section Startup Files
+@cindex startup files
+@cindex .newsrc
 
-@item 
-You can cache articles locally (@pxref{Article Caching}). 
+Now, you all know about the @file{.newsrc} file.  All subscription
+information is traditionally stored in this file.
 
-@item 
-The uudecode functions have been expanded and generalized
-(@pxref{Decoding Articles}). 
+Things got a bit more complicated with @sc{gnus}.  In addition to
+keeping the @file{.newsrc} file updated, it also used a file called
+@file{.newsrc.el} for storing all the information that didn't fit into
+the @file{.newsrc} file.  (Actually, it also duplicated everything in
+the @file{.newsrc} file.)  @sc{gnus} would read whichever one of these
+files was the most recently saved, which enabled people to swap between
+@sc{gnus} and other newsreaders.
 
-@item
-You can still post uuencoded articles, which was a little-known feature
-of @sc{gnus} past (@pxref{Uuencoding & Posting}).
+That was kinda silly, so Gnus went one better: In addition to the
+@file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
+@file{.newsrc.eld}.  It will read whichever of these files that are most
+recent, but it will never write a @file{.newsrc.el} file.
 
-@item
-Fetching parents (and other articles) now actually works without
-glitches (@pxref{Finding the Parent}). 
+@vindex gnus-save-newsrc-file
+You can turn off writing the @file{.newsrc} file by setting
+@code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
+the file and save some space, as well as making exit from Gnus faster.
+However, this will make it impossible to use other newsreaders than
+Gnus.  But hey, who would want to, right?
 
-@item
-Gnus can fetch FAQs and group descriptions (@pxref{Group Information}).
+@vindex gnus-save-killed-list
+If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
+will not save the list of killed groups to the startup file.  This will
+save both time (when starting and quitting) and space (on disk).  It
+will also means that Gnus has no record of what groups are new or old,
+so the automatic new groups subscription methods become meaningless.
+You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
+@code{ask-server} if you set this variable to @code{nil} (@pxref{New
+Groups}).
 
-@item
-Digests (and other files) can be used as the basis for groups
-(@pxref{nndoc}).
+@vindex gnus-startup-file
+The @code{gnus-startup-file} variable says where the startup files are.
+The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
+file being whatever that one is with a @samp{.eld} appended.
 
-@item 
-Articles can be highlighted and customized (@pxref{Customizing
-Articles}). 
+@vindex gnus-save-newsrc-hook
+@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 turn version
+control on or off.  Version control is off by default when saving the
+startup files.
 
-@item 
-URLs and other external references can be buttonized (@pxref{Article
-Buttons}). 
 
-@item
-All Gnus buffers can be customized in a difficult fashion
-(@pxref{Windows Configuration}). 
+@node Auto Save
+@section Auto Save
+@cindex dribble file
+@cindex auto-save
 
-@item
-You can click on buttons instead of using the keyboard
-(@pxref{Buttons}). 
+Whenever you do something that changes the Gnus data (reading articles,
+catching up, killing/subscribing groups), the change is added to a
+special @dfn{dribble buffer}.  This buffer is auto-saved the normal
+Emacs way.  If your Emacs should crash before you have saved the
+@file{.newsrc} files, all changes you have made can be recovered from
+this file.
 
-@item 
-Gnus can use NoCeM files to weed out spam (@pxref{NoCeM}). 
+If Gnus detects this file at startup, it will ask the user whether to
+read it.  The auto save file is deleted whenever the real startup file is
+saved.
 
-@end itemize
+@vindex gnus-use-dribble-file
+If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
+maintain a dribble buffer.  The default is @code{t}.
 
-This is, of course, just a @emph{short} overview of the @emph{most}
-important new features.  No, really.  There are tons more.  Yes, we have
-feeping creaturism in full effect, but nothing too gratuitous, I would
-hope. 
+@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 directory where the @file{.newsrc} file is located.  (This is
+normally the user's home directory.)  The dribble file will get the same
+file permissions as the @code{.newsrc} file.
 
 
-@node Newest Features
-@section Newest Features
-@cindex todo
+@node The Active File
+@section The Active File
+@cindex active file
+@cindex ignored groups
 
-Also known as the @dfn{todo list}.  Sure to be implemented before the
-next millennium. 
+When Gnus starts, or indeed whenever it tries to determine whether new
+articles have arrived, it reads the active file.  This is a very large
+file that lists all the active groups and articles on the server.
 
-Be afraid.  Be very afraid.
+@vindex gnus-ignored-newsgroups
+Before examining the active file, Gnus deletes all lines that match the
+regexp @code{gnus-ignored-newsgroups}.  This is done primarily to reject
+any groups with bogus names, but you can use this variable to make Gnus
+ignore hierarchies you aren't ever interested in.  However, this is not
+recommended.  In fact, it's highly discouraged.  Instead, @pxref{New
+Groups} for an overview of other variables that can be used instead.
 
-@itemize @bullet
-@item
-Native @sc{mime} support is something that should be done.  
-@item
-@code{trn}-like trees.
-@item
-@code{nn}-like pick-and-read summary interface.
-@item 
-Frame configuration.
-@item 
-Automatic re-scan of incoming mail.
-@item
-Buttonize more stuff in the article buffer.
-@item
-A better and simpler method for specifying mail composing methods. 
-@item 
-Marks for saved, forwarded, etc articles.
-@item
-Gather thread by filling in missing Message-IDs.
-@item 
-PGP support.
-@item
-Allow posting through mail-to-news gateways.
-@item
-@code{jka-compr} isn't fully supported.
-@item
-Do better word-wrap on cited text.
-@item 
-Better X-Face support with X-Face databases and stuff. 
-@item
-Really do unbinhexing.
-@item
-XEmacs toolbar.
-@item
-Don't kill summary buffers upon exit from the groups.
-@item
-Allow adaption on secondary marks.
-@end itemize
+@c This variable is
+@c @code{nil} by default, and will slow down active file handling somewhat
+@c if you set it to anything else.
 
-And much, much, much more.  There is more to come than has already been
-implemented.  (But that's always true, isn't it?)
+@vindex gnus-read-active-file
+@c @head
+The active file can be rather Huge, so if you have a slow network, you
+can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
+reading the active file.  This variable is @code{t} by default.
 
-@code{<URL:http://www.ifi.uio.no/~larsi/sgnus/todo>} is where the actual
-up-to-the-second todo list is located, so if you're really curious, you
-could point your Web browser over that-a-way.
+Gnus will try to make do by getting information just on the groups that
+you actually subscribe to.
 
+Note that if you subscribe to lots and lots of groups, setting this
+variable to @code{nil} will probably make Gnus slower, not faster.  At
+present, having this variable @code{nil} will slow Gnus down
+considerably, unless you read news over a 2400 baud modem.  
 
-@node Terminology
-@chapter Terminology
+This variable can also have the value @code{some}.  Gnus will then
+attempt to read active info only on the subscribed groups.  On some
+servers this is quite fast (on sparkling, brand new INN servers that
+support the @code{LIST ACTIVE group} command), on others this isn't fast
+at all.  In any case, @code{some} should be faster than @code{nil}, and
+is certainly faster than @code{t} over slow lines.
 
-@cindex terminology
-@table @dfn
-@item news
-@cindex news
-This is what you are supposed to use this thing for---reading news.
-News is generally fetched from a nearby @sc{nntp} server, and is
-generally publicly available to everybody.  If you post news, the entire
-world is likely to read just what you have written, and they'll all
-snigger mischievously.  Behind your back.
-@item mail
-@cindex mail
-Everything that's delivered to you personally is mail.  Some news/mail
-readers (like Gnus) blur the distinction between mail and news, but
-there is a difference.  Mail is private.  News is public.  Mailing is
-not posting, and replying is not following up.
-@item reply
-Send a mail to the person who has written what you are reading.
-@item follow up
-Post an article to the current newsgroup responding to the article you
-are reading.
-@item backend
-Gnus gets fed articles from a number of backends, both news and mail
-backends.  Gnus does not handle the underlying media, so to speak---this
-is all done by the backends.
-@item native
-Gnus will always use one method (and backend) as the @dfn{native}, or
-default, way of getting news.
-@item foreign
-You can also have any number of foreign groups at the same time.  These
-are groups that use different backends for getting news.
-@item head
-@cindex head
-The top part of an article, where administration information (etc.) is
-put. 
-@item body
-@cindex body
-The rest of an article.  Everything that is not in the head is in the
-body. 
-@item header
-@cindex header
-A line from the head of an article. 
-@item headers
-@cindex headers
-A collection of such lines, or a collection of heads.  Or even a
-collection of @sc{nov} lines.
-@item @sc{nov}
-@cindex nov
-When Gnus enters a group, it asks the backend for the headers for all
-the unread articles in the group.  Most servers support the News OverView
-format, which is much smaller and much faster to read than the normal
-HEAD format. 
-@item level
-@cindex levels
-Each group is subscribed at some @dfn{level} or other (1-9).  The ones
-that have a lower level are "more" subscribed than the groups with a
-higher level.  In fact, groups on levels 1-5 are considered
-@dfn{subscribed}; 6-7 are @dfn{unsubscribed}; 8 are @dfn{zombies}; and 9
-are @dfn{killed}.  Commands for listing groups and scanning for new
-articles will all use the numeric prefix as @dfn{working level}.
-@item killed groups
-@cindex killed groups
-No information on killed groups is stored or updated, which makes killed
-groups much easier to handle than subscribed groups.
-@item zombie groups
-@cindex zombie groups
-Just like killed groups, only slightly less dead.
-@item active file
-@cindex active file
-The news server has to keep track of what articles it carries, and what
-groups exist.  All this information in stored in the active file, which
-is rather large, as you might surmise.
-@item bogus groups
-@cindex bogus groups
-A group that exists in the @file{.newsrc} file, but isn't known to the
-server (i. e.,  it isn't in the active file), is a @emph{bogus group}.
-This means that the group probably doesn't exist (any more).
-@end table
+If this variable is @code{nil}, Gnus will ask for group info in total
+lock-step, which isn't very fast.  If it is @code{some} and you use an
+@sc{nntp} server, Gnus will pump out commands as fast as it can, and
+read all the replies in one swoop.  This will normally result in better
+performance, but if the server does not support the aforementioned
+@code{LIST ACTIVE group} command, this isn't very nice to the server.
 
-@node Starting Up
-@chapter Starting Gnus
-@cindex starting up
+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.
 
-@kindex M-x gnus
-If your system administrator has set things up properly, starting Gnus
-and reading news is extremely easy---you just type @kbd{M-x gnus}.
 
-If things do not go smoothly at startup, you have to twiddle some
-variables. 
+@node Startup Variables
+@section Startup Variables
 
-@menu
-* Finding the News::    Choosing a method for getting news.
-* 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.
-* The Active File::     Reading the active file over a slow line Takes Time.
-* Startup Variables::   Other variables you might change.
-@end menu
+@table @code
 
-@node Finding the News
-@section Finding the News
+@item gnus-load-hook
+@vindex gnus-load-hook
+A hook that is run while Gnus is being loaded.  Note that this hook will
+normally be run just once in each Emacs session, no matter how many
+times you start Gnus.
 
-@vindex gnus-select-method
-The @code{gnus-select-method} variable controls how Gnus finds news.
-This variable should be a list where the first element says @dfn{how}
-and the second element says @dfn{where}.  This method is is your native
-method.  All groups that are not fetched with this method are foreign
-groups.
+@item gnus-startup-hook
+@vindex gnus-startup-hook
+A hook that is run after starting up Gnus successfully.
 
-For instance, if you want to get your daily dosage of news from the
-@samp{news.somewhere.edu} @sc{nntp} server, you'd say:
+@item gnus-check-bogus-newsgroups
+@vindex gnus-check-bogus-newsgroups
+If non-@code{nil}, Gnus will check for and delete all bogus groups at
+startup.  A @dfn{bogus group} is a group that you have in your
+@file{.newsrc} file, but doesn't exist on the news server.  Checking for
+bogus groups can take quite a while, so to save time and resources it's
+best to leave this option off, and do the checking for bogus groups once
+in a while from the group buffer instead (@pxref{Group Maintenance}).
 
-@lisp
-(setq gnus-select-method '(nntp "news.somewhere.edu"))
-@end lisp
+@item gnus-inhibit-startup-message
+@vindex gnus-inhibit-startup-message
+If non-@code{nil}, the startup message won't be displayed.  That way,
+your boss might not notice that you are reading news instead of doing
+your job as easily.
 
-If you want to read directly from the local spool, say:
+@item gnus-no-groups-message
+@vindex gnus-no-groups-message
+Message displayed by Gnus when no groups are available.
+@end table
 
-@lisp
-(setq gnus-select-method '(nnspool ""))
-@end lisp
 
-If you can use a local spool, you probably should, as it will almost
-certainly be much faster.
+@node The Group Buffer
+@chapter The Group Buffer
+@cindex group buffer
 
-@vindex gnus-nntpserver-file
-@cindex NNTPSERVER
-@cindex @sc{nntp} server
-If this variable is not set, Gnus will take a look at the
-@code{NNTPSERVER} environment variable.  If that variable isn't set,
-Gnus will see whether @code{gnus-nntpserver-file} (default
-@file{/etc/nntpserver}) has any opinions in the matter.  It that fails
-as well, Gnus will will try to use the machine that is running Emacs as
-an @sc{nntp} server.  That's a longshot, though.
+The @dfn{group buffer} lists all (or parts) of the available groups.  It
+is the first buffer shown when Gnus starts, and will never be killed as
+long as Gnus is active.
 
-@vindex gnus-nntp-server
-If @code{gnus-nntp-server} is set, this variable will override
-@code{gnus-select-method}.  You should therefore set
-@code{gnus-nntp-server} to @code{nil}, which is what it is by default.
+@menu
+* Group Buffer Format::    Information listed and how you can change it.
+* Group Maneuvering::      Commands for moving in the group buffer.
+* Selecting a Group::      Actually reading news.
+* Subscription Commands::  Unsubscribing, killing, subscribing.
+* Group Levels::           Levels? What are those, then?
+* Group Score::            A mechanism for finding out what groups you like.
+* Marking Groups::         You can mark groups for later processing.
+* Foreign Groups::         Creating and editing groups.
+* Group Parameters::       Each group may have different parameters set.
+* Listing Groups::         Gnus can list various subsets of the groups.
+* Sorting Groups::         Re-arrange the group order.
+* 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
 
-@vindex gnus-secondary-servers
-You can also make Gnus prompt you interactively for the name of an
-@sc{nntp} server.  If you give a non-numerical prefix to @code{gnus}
-(i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
-in the @code{gnus-secondary-servers} list (if any).  You can also just
-type in the name of any server you feel like visiting.
 
-However, if you use one @sc{nntp} server regularly, and are just
-interested in a couple of groups from a different server, you would be
-better served by using the @code{gnus-group-browse-foreign-server}
-command from the group buffer.  It will let you have a look at what
-groups are available, and you can subscribe to any of the groups you
-want to.  This also makes @file{.newsrc} maintenance much tidier.
-@xref{Foreign Groups}.
+@node Group Buffer Format
+@section Group Buffer Format
+@cindex group buffer format
 
-@vindex gnus-secondary-select-methods
-A slightly different approach to foreign groups is to set the
-@code{gnus-secondary-select-methods} variable.  The select methods
-listed in this variable are in many ways just as native as the
-@code{gnus-select-method} server.  They will also be queried for active
-files during startup (if that's required), and new newsgroups that
-appear on these servers will be subscribed (or not) just as native
-groups are.
+@menu 
+* Group Line Specification::       Deciding how the group buffer is to look.
+* Group Modeline Specification::   The group buffer modeline.
+* Group Highlighting::             Having nice colors in the group buffer.
+@end menu
 
-For instance, if you use the @code{nnmbox} backend to read you mail, you
-would typically set this variable to
 
-@lisp
-(setq gnus-secondary-select-methods '((nnmbox "")))
-@end lisp
+@node Group Line Specification
+@subsection Group Line Specification
 
-@node The First Time
-@section The First Time
-@cindex first time usage
+The default format of the group buffer is nice and dull, but you can
+make it as exciting and ugly as you feel like.
 
-If no startup files exist, Gnus will try to determine what groups should
-be subscribed by default.
+Here's a couple of example group lines:
 
-@vindex gnus-default-subscribed-newsgroups
-If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
-will subscribe you to just those groups in that list, leaving the rest
-killed.  Your system administrator should have set this variable to
-something useful.
+@example
+     25: news.announce.newusers
+ *    0: alt.fan.andrea-dworkin
+@end example
 
-Since she hasn't, Gnus will just subscribe you to a few randomly picked
-groups (i.e., @samp{*.newusers}).  (@dfn{Random} is here defined as
-"whatever Lars thinks you should read".)
+Quite simple, huh?
 
-You'll also be subscribed to the Gnus documentation group, which should
-help you with most common problems.  
+You can see that there are 25 unread articles in
+@samp{news.announce.newusers}.  There are no unread articles, but some
+ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
+asterisk at the beginning of the line?)
 
-If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
-use the normal functions for handling new groups, and not do anything
-special.
+@vindex gnus-group-line-format
+You can change that format to whatever you want by fiddling with the
+@code{gnus-group-line-format} variable.  This variable works along the
+lines of a @code{format} specification, which is pretty much the same as
+a @code{printf} specifications, for those of you who use (feh!) C.
+@xref{Formatting Variables}. 
 
-@node The Server is Down
-@section The Server is Down
-@cindex server errors
+The default value that produced those lines above is 
+@samp{%M%S%5y: %(%g%)\n}.
 
-If the default server is down, Gnus will understandably have some
-problems starting.  However, if you have some mail groups in addition to
-the news groups, you may want to start Gnus anyway.
+There should always be a colon on the line; the cursor always moves to
+the colon after performing an operation.  Nothing else is required---not
+even the group name.  All displayed text is just window dressing, and is
+never examined by Gnus.  Gnus stores all real information it needs using
+text properties.
 
-Gnus, being the trusting sort of program, will ask whether to proceed
-without a native select method if that server can't be contacted.  This
-will happen whether the server doesn't actually exist (i.e., you have
-given the wrong address) or the server has just momentarily taken ill
-for some reason or other.  
+(Note that if you make a really strange, wonderful, spreadsheet-like
+layout, everybody will believe you are hard at work with the accounting
+instead of wasting time reading news.)
 
-If Gnus says "nntp server on <your server> can't be opened.  Continue?",
-you do not want to continue unless you have some foreign groups that you
-want to read.  Even if you don't, Gnus will let you continue, but you'll
-find it difficult to actually do anything in the group buffer.  But,
-hey, that's your problem.  Blllrph!
+Here's a list of all available format characters:
 
-@findex gnus-no-server
-If you know that the server is definitely down, or you just want to read
-your mail without bothering with the server at all, you can use the
-@code{gnus-no-server} command to start Gnus.  That might come in handy
-if you're in a hurry as well.
+@table @samp
 
+@item M    
+Only marked articles.
 
-@node Slave Gnusii
-@section Slave Gnusiï
-@cindex slave
+@item S
+Whether the group is subscribed.
 
-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 Gnusiï to read from two different servers),
-that is no problem whatsoever.  You just do it.
+@item L    
+Level of subscribedness.
 
-The problem appears when you want to run two Gnusiï that use the same
-@code{.newsrc} file.
+@item N
+Number of unread articles.
 
-To work around that problem some, we here at the Think-Tank at the Gnus
-Towers have come up with a new concept: @dfn{Masters} 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 instance to
-me.  Usage of the patent (@dfn{Master/Slave Relationships In Computer
-Applications}) will be much more expensive, of course.)
+@item I
+Number of dormant articles.
 
-Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
-however you do it).  Each subsequent slave Gnusiï should be started with
-@kbd{M-x gnus-slave}.  These slaves won't save normal @file{.newsrc}
-files, but some slave files that contains information only on what
-groups have been read in the slave session.  When a master Gnus starts,
-it will read (and delete) these slave files, incorporating all
-information from all of them.  (The slave files will be read in the
-sequence they were created, so the latest changes will have precedence.)
+@item T
+Number of ticked articles.
 
-Information from the slave files has, of course, presedence over the
-information in the normal (i. e., master) @code{.newsrc} file.
+@item R
+Number of read articles.
 
+@item t
+Total number of articles.
 
-@node Fetching a Group
-@section Fetching a Group
+@item y
+Number of unread, unticked, non-dormant articles.
 
-@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.
+@item i
+Number of ticked and dormant articles.
 
+@item g
+Full group name.
 
-@node New Groups
-@section New Groups
-@cindex new groups
+@item G
+Group name.
 
-@vindex gnus-subscribe-newsgroup-method
-What Gnus does when it encounters a new group is determined by the
-@code{gnus-subscribe-newsgroup-method} variable.
+@item D
+Newsgroup description.
 
-This variable should contain a function.  Some handy pre-fab values
-are:
+@item o
+@samp{m} if moderated.
 
-@table @code
-@item gnus-subscribe-randomly
-@vindex gnus-subscribe-randomly
-Subscribe all new groups randomly.
-@item gnus-subscribe-alphabetically
-@vindex gnus-subscribe-alphabetically
-Subscribe all new groups alphabetically.
-@item gnus-subscribe-hierarchically
-@vindex gnus-subscribe-hierarchically
-Subscribe all new groups hierarchically.
-@item gnus-subscribe-interactively
-@vindex gnus-subscribe-interactively
-Subscribe new groups interactively.  This means that Gnus will ask
-you about @strong{all} new groups.
+@item O
+@samp{(m)} if moderated.
 
-@item gnus-subscribe-killed
-@vindex gnus-subscribe-killed
-Kill all new groups.
+@item s
+Select method.
 
-@item gnus-subscribe-zombies
-@vindex gnus-subscribe-zombies
-Make all new groups zombies.  You can browse the zombies later (with
-@kbd{A z}) and either kill them all off properly, or subscribe to them.
-This is the default.
+@item n
+Select from where.
+
+@item z
+A string that looks like @samp{<%s:%n>} if a foreign select method is
+used.
+
+@item P
+Indentation based on the level of the topic (@pxref{Group Topics}). 
+
+@item c
+@vindex gnus-group-uncollapsed-levels
+Short (collapsed) group name.  The @code{gnus-group-uncollapsed-levels}
+variable says how many levels to leave at the end of the group name.
+The default is @code{1}.
+
+@item u
+User defined specifier.  The next character in the format string should
+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 the current headers as
+argument.  The function should return a string, which will be inserted
+into the buffer just like information from any other specifier.
 @end table
 
-@vindex gnus-subscribe-hierarchical-interactive
-A closely related variable is
-@code{gnus-subscribe-hierarchical-interactive}.  (That's quite a
-mouthful.)  If this variable is non-@code{nil}, Gnus will ask you in a
-hierarchical fashion whether to subscribe to new groups or not.  Gnus
-will ask you for each sub-hierarchy whether you want to descend the
-hierarchy or not.
+@cindex *
+All the ``number-of'' specs will be filled with an asterisk (@samp{*})
+if no info is available---for instance, if it is a non-activated foreign
+group, or a bogus (or semi-bogus) native group.
 
-One common way to control which new newsgroups should be subscribed or
-ignored is to put an @dfn{options} line at the start of the
-@file{.newsrc} file.  Here's an example:
 
-@example
-options -n !alt.all !rec.all sci.all
-@end example
+@node Group Modeline Specification
+@subsection Group Modeline Specification
 
-@vindex gnus-subscribe-options-newsgroup-method
-This line obviously belongs to a serious-minded intellectual scientific
-person (or she may just be plain old boring), because it says that all
-groups that have names beginning with @samp{alt} and @samp{rec} should
-be ignored, and all groups with names beginning with @samp{sci} should
-be subscribed.  Gnus will not use the normal subscription method for
-subscribing these groups.
-@code{gnus-subscribe-options-newsgroup-method} is used instead.  This
-variable defaults to @code{gnus-subscribe-alphabetically}.
+@vindex gnus-group-mode-line-format
+The mode line can be changed by setting
+(@code{gnus-group-mode-line-format}).  It doesn't understand that many
+format specifiers:
 
-@vindex gnus-options-not-subscribe
-@vindex gnus-options-subscribe
-If you don't want to mess with your @file{.newsrc} file, you can just
-set the two variables @code{gnus-options-subscribe} and
-@code{gnus-options-not-subscribe}.  These two variables do exactly the
-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.
+@table @samp
+@item S
+The native news server.
+@item M
+The native select method.
+@end table
 
-@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
-also save you some time at startup.  Even if this variable is
-@code{nil}, you can always subscribe to the new groups just by pressing
-@kbd{U} in the group buffer (@pxref{Group Maintenance}).  This variable
-is @code{t} by default.
+@node Group Highlighting
+@subsection Group Highlighting
 
-Gnus normally determines whether a group is new or not by comparing the
-list of groups from the active file(s) with the lists of subscribed and
-dead groups.  This isn't a particularly fast method.  If
-@code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
-server for new groups since the last time.  This is both faster &
-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. 
+@vindex gnus-group-highlight
+Highlighting in the group buffer is controlled by the
+@code{gnus-group-highlight} variable.  This is an alist with elements
+that look like @var{(form . face)}.  If @var{form} evaluates to
+something non-@code{nil}, the @var{face} will be used on the line.
 
-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
-subscribe them (or not) using the normal methods.  This might be handy
-if you are monitoring a few servers for new groups.  A side effect is
-that startup will take much longer, so you can meditate while waiting.
-Use the mantra "dingnusdingnusdingnus" to achieve permanent happiness.
+Here's an example value for this variable that might look nice if the
+background is dark:
 
-@node Startup Files
-@section Startup Files
-@cindex startup files
-@cindex .newsrc
+@lisp
+(setq gnus-group-highlight
+    `(((> unread 200) . 
+       ,(custom-face-lookup "Red" nil nil t nil nil))
+      ((and (< level 3) (zerop unread)) . 
+       ,(custom-face-lookup "SeaGreen" nil nil t nil nil))
+      ((< level 3) . 
+       ,(custom-face-lookup "SpringGreen" nil nil t nil nil))
+      ((zerop unread) . 
+       ,(custom-face-lookup "SteelBlue" nil nil t nil nil))
+      (t . 
+       ,(custom-face-lookup "SkyBlue" nil nil t nil nil))
+      ))
+@end lisp
 
-Now, you all know about the @file{.newsrc} file.  All subscription
-information is traditionally stored in this file.
+Variables that are dynamically bound when the forms are evaluated
+include:
 
-Things got a bit more complicated with @sc{gnus}.  In addition to
-keeping the @file{.newsrc} file updated, it also used a file called
-@file{.newsrc.el} for storing all the information that didn't fit into
-the @file{.newsrc} file.  (Actually, it duplicated everything in the
-@file{.newsrc} file.)  @sc{gnus} would read whichever one of these files
-that were the most recently saved, which enabled people to swap between
-@sc{gnus} and other newsreaders.
+@table @code
+@item group
+The group name.
+@item unread
+The number of unread articles in the group.
+@item method
+The select method.
+@item mailp
+Whether the group is a mail group.
+@item level
+The level of the group.
+@item score
+The score of the group.
+@item ticked 
+The number of ticked articles in the group.
+@end table
 
-That was kinda silly, so Gnus went one better: In addition to the
-@file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
-@file{.newsrc.eld}.  It will read whichever of these files that are most
-recent, but it will never write a @file{.newsrc.el} file.
+When the forms are @code{eval}ed, point is at the beginning of the line
+of the group in question, so you can use many of the normal Gnus
+functions for snarfing info on the group.
 
-@vindex gnus-save-newsrc-file
-You can also turn off writing the @file{.newsrc} file by setting
-@code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
-the file and save some space, as well as making exit from Gnus faster.
-However, this will make it impossible to use other newsreaders than
-Gnus.  But hey, who would want to, right?
+@vindex gnus-group-update-hook
+@findex gnus-group-highlight-line
+@code{gnus-group-update-hook} is called when a group line is changed.
+It will not be called when @code{gnus-visual} is @code{nil}.  This hook
+calls @code{gnus-group-highlight-line} by default.
 
-@vindex gnus-save-killed-list
-If @code{gnus-save-killed-list} is @code{nil}, Gnus will not save the
-list of killed groups to the startup file.  This will save both time
-(when starting and quitting) and space (on disk).  It will also means
-that Gnus has no record of what groups are new or old, so the automatic
-new groups subscription methods become meaningless.  You should always
-set @code{gnus-check-new-newsgroups} to @code{nil} or @code{ask-server}
-if you set this variable to @code{nil} (@pxref{New Groups}).
-
-@vindex gnus-startup-file
-The @code{gnus-startup-file} variable says where the startup files are.
-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
-@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 turn version
-control on or off.  Version control is off by default when saving.
-
-@node Auto Save
-@section Auto Save
-@cindex dribble file
-@cindex auto-save
-
-Whenever you do something that changes the Gnus data (reading articles,
-catching up, killing/subscribing groups), the change is added to a
-special @dfn{dribble buffer}.  This buffer is auto-saved the normal
-Emacs way.  If your Emacs should crash before you have saved the
-@file{.newsrc} files, all changes you have made can be recovered from
-this file.
-
-If Gnus detects this file at startup, it will ask the user whether to
-read it.  The auto save file is deleted whenever the real startup file is
-saved.
-
-@vindex gnus-use-dribble-file
-If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
-maintain a dribble buffer.  The default is @code{t}.
-
-@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
-@cindex ignored groups
-
-When Gnus starts, or indeed whenever it tries to determine whether new
-articles have arrived, it reads the active file.  This is a very large
-file that lists all the active groups and articles on the @sc{nntp}
-server.
-
-@vindex gnus-ignored-newsgroups
-Before examining the active file, Gnus deletes all lines that match the
-regexp @code{gnus-ignored-newsgroups}.  This is done primarily to reject
-any groups with bogus names, but you can use this variable to make Gnus
-ignore hierarchies you aren't ever interested in.  
-@c This variable is
-@c @code{nil} by default, and will slow down active file handling somewhat
-@c if you set it to anything else.
-
-@vindex gnus-read-active-file
-The active file can be rather Huge, so if you have a slow network, you
-can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
-reading the active file.  This variable is @code{t} by default.
-
-Gnus will try to make do by just getting information on the groups
-that you actually subscribe to.
-
-Note that if you subscribe to lots and lots of groups, setting this
-variable to @code{nil} will probably make Gnus slower, not faster.  At
-present, having this variable @code{nil} will slow Gnus down
-considerably, unless you read news over a 2400 baud modem.  
-
-This variable can also have the value @code{some}.  Gnus will then
-attempt to read active info only on the subscribed groups.  On some
-servers this is quite fast (on sparkling, brand new INN servers that
-support the @samp{LIST ACTIVE group} command), on others this is not
-fast at all.  In any case, @code{some} should be faster than @code{nil},
-and is certainly faster than @code{t} over slow lines.
-
-If this variable is @code{nil}, Gnus will as for group info in total
-lock-step, which isn't very fast.  If it is @code{some} and you use an
-@sc{nntp} server, Gnus will pump out commands as fast as it can, and
-read all the replies in one swoop.  This will normally result in better
-performance, but if the server does not support the aforementioned
-@samp{LIST ACTIVE group} command, this isn't very nice to the server.
-
-In any case, if you use @code{some} or @code{nil}, you should kill all
-groups that you aren't interested in.
-
-@node Startup Variables
-@section Startup Variables
-
-@table @code
-@item gnus-load-hook
-@vindex gnus-load-hook
-A hook that is run while Gnus is being loaded.  Note that this hook will
-normally be run just once in each Emacs session, no matter how many
-times you start Gnus.
-
-@item gnus-startup-hook
-@vindex gnus-startup-hook
-A hook that is run 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
-startup.  A @dfn{bogus group} is a group that you have in your
-@file{.newsrc} file, but doesn't exist on the news server.  Checking for
-bogus groups isn't very quick, so to save time and resources, it's best
-to leave this option off, and instead do the checking for bogus groups
-once in a while from the group buffer (@pxref{Group Maintenance}).
-
-@item gnus-inhibit-startup-message
-@vindex gnus-inhibit-startup-message
-If non-@code{nil}, the startup message won't be displayed.  That way,
-your boss might not notice that you are reading news instead of doing
-your job.
-
-@item gnus-no-groups-message
-@vindex gnus-no-groups-message
-Message displayed by Gnus when no groups are available.
-@end table
-
-@node The Group Buffer
-@chapter The Group Buffer
-@cindex group buffer
-
-The @dfn{group buffer} lists all (or parts) of the available groups.  It
-is the first buffer shown when Gnus starts, and will never be killed as
-long as Gnus is active.
-
-@menu
-* Group Buffer Format::    Information listed and how you can change it.
-* Group Maneuvering::      Commands for moving in the group buffer.
-* Selecting a Group::      Actually reading news.
-* Subscription Commands::  Unsubscribing, killing, subscribing.
-* Group Levels::           Levels? What are those, then?
-* Group Score::            A mechanism for finding out what groups you like.
-* Marking Groups::         You can mark groups for later processing.
-* Foreign Groups::         How to create foreign groups.
-* Group Parameters::       Each group may have different parameters set.
-* Listing Groups::         Gnus can list various subsets of the groups.
-* Sorting Groups::         Re-arrange the group order.
-* 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
-
-@node Group Buffer Format
-@section Group Buffer Format
-@cindex group buffer format
-
-The default format of the group buffer is nice and dull, but you can
-make it as exciting and ugly as you feel like.
-
-Here's a couple of example group lines:
-
-@example
-     25: news.announce.newusers
- *    0: alt.fan.andrea-dworkin
-@end example
-
-Quite simple, huh?
-
-You can see that there are 25 unread articles in
-@samp{news.announce.newusers}.  There are no unread articles, but some
-ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
-asterisk at the beginning of the line?)
-
-@vindex gnus-group-line-format
-You can fuck that up to your heart's delight by fiddling with the
-@code{gnus-group-line-format} variable.  This variable works along the
-lines of a @code{format} specification, which is pretty much the same as
-a @code{printf} specifications, for those of you who use (feh!) C.
-@xref{Formatting Variables}. 
-
-The default value that produced those lines above is 
-@samp{"%M%S%5y: %(%g%)\n"}.
-
-There should always be a colon on the line; the cursor always moves to
-the colon after performing an operation.  Nothing else is required---not
-even the group name.  All displayed text is just window dressing, and is
-never examined by Gnus.  Gnus stores all real information it needs using
-text properties.
-
-(Note that if you make a really strange, wonderful, spreadsheet-like
-layout, everybody will believe you are hard at work with the accounting
-instead of wasting time reading news.)
-
-Here's a list of all available format characters:
-
-@table @samp
-@item M    
-Only marked articles.
-@item S
-Whether the group is subscribed.
-@item L    
-Level of subscribedness.
-@item N
-Number of unread articles.
-@item I
-Number of dormant articles.
-@item T
-Number of ticked articles.
-@item R
-Number of read articles.
-@item t
-Total number of articles.
-@item y
-Number of unread, unticked, non-dormant articles.
-@item i
-Number of ticked and dormant articles.
-@item g
-Full group name.
-@item G
-Group name.
-@item D
-Newsgroup description.
-@item o
-Moderated.
-@item O
-Moderated.
-@item s
-Select method.
-@item n
-Select from where.
-@item z
-A string that looks like @samp{<%s:%n>} if a foreign select method is
-used.
-@item c
-Short (collapsed) group name.
-@item u
-User defined specifier.  The next character in the format string should
-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 the current headers as
-argument.  The function should return a string, which will be inserted
-into the buffer just like information from any other specifier.
-@end table
-
-@cindex *
-All the "number-of" specs will be filled with an asterisk (@samp{*}) if
-no info is available---for instance, if it is a non-activated foreign
-group, or a bogus (or semi-bogus) native group.
-
-@vindex gnus-group-mode-line-format
-The mode line can be changed by setting
-(@code{gnus-group-mode-line-format}).  It doesn't understand that many
-format specifiers:
-
-@table @samp
-@item S
-The native news server.
-@item M
-The native select method.
-@end table
 
 @node Group Maneuvering
 @section Group Maneuvering
@@ -1244,31 +1059,38 @@ All movement commands understand the numeric prefix and will behave as
 expected, hopefully. 
 
 @table @kbd
+
 @item n
 @kindex n (Group)
 @findex gnus-group-next-unread-group
 Go to the next group that has unread articles
 (@code{gnus-group-next-unread-group}).
+
 @item p
+
 @itemx DEL
 @kindex DEL (Group)
 @kindex p (Group)
 @findex gnus-group-prev-unread-group
 Go to the previous group group that has unread articles
 (@code{gnus-group-prev-unread-group}).
+
 @item N
 @kindex N (Group)
 @findex gnus-group-next-group
 Go to the next group (@code{gnus-group-next-group}).
+
 @item P
 @kindex P (Group)
 @findex gnus-group-prev-group
 Go to the previous group (@code{gnus-group-prev-group}).
+
 @item M-p
 @kindex M-p (Group)
 @findex gnus-group-next-unread-group-same-level
 Go to the next unread group on the same level (or lower)
 (@code{gnus-group-next-unread-group-same-level}). 
+
 @item M-n
 @kindex M-n (Group)
 @findex gnus-group-prev-unread-group-same-level
@@ -1279,17 +1101,20 @@ Go to the previous unread group on the same level (or lower)
 Three commands for jumping to groups:
 
 @table @kbd
+
 @item j
 @kindex j (Group)
 @findex gnus-group-jump-to-group
 Jump to a group (and make it visible if it isn't already)
 (@code{gnus-group-jump-to-group}).  Killed groups can be jumped to, just
 like living groups.
+
 @item ,
 @kindex , (Group)
 @findex gnus-group-best-unread-group
 Jump to the unread group with the lowest level
 (@code{gnus-group-best-unread-group}). 
+
 @item .
 @kindex . (Group)
 @findex gnus-group-first-unread-group
@@ -1303,6 +1128,7 @@ commands will move to the next group, not the next unread group.  Even
 the commands that say they move to the next unread group.  The default
 is @code{t}.
 
+
 @node Selecting a Group
 @section Selecting a Group
 @cindex group selection
@@ -1349,14 +1175,17 @@ this one does it without expunging and hiding dormants
 @item c
 @kindex c (Group)
 @findex gnus-group-catchup-current
+@vindex gnus-group-catchup-group-hook
 Mark all unticked articles in this group as read
-(@code{gnus-group-catchup-current}). 
+(@code{gnus-group-catchup-current}).
+@code{gnus-group-catchup-group-hook} is when catching up a group from
+the group buffer.
 
 @item C
 @kindex C (Group)
 @findex gnus-group-catchup-current-all
 Mark all articles in this group, even the ticked ones, as read
-(@code{gnus-group-catchup-current-all}). 
+(@code{gnus-group-catchup-current-all}).   
 @end table
 
 @vindex gnus-large-newsgroup
@@ -1364,9 +1193,9 @@ The @code{gnus-large-newsgroup} variable says what Gnus should consider
 to be a big group.  This is 200 by default.  If the group has more
 unread articles than this, Gnus will query the user before entering the
 group.  The user can then specify how many articles should be fetched
-from the server.  If the user specifies a negative number (@samp{-n}),
-the @samp{n} oldest articles will be fetched.  If it is positive, the
-@samp{n} articles that have arrived most recently will be fetched.
+from the server.  If the user specifies a negative number (@code{-n}),
+the @code{n} oldest articles will be fetched.  If it is positive, the
+@code{n} articles that have arrived most recently will be fetched.
 
 @vindex gnus-select-group-hook
 @vindex gnus-auto-select-first
@@ -1374,6 +1203,7 @@ the @samp{n} oldest articles will be fetched.  If it is positive, the
 automatically when entering a group.  
 
 @table @code
+
 @item nil
 Don't select any articles when entering the group.  Just display the
 full summary buffer.
@@ -1401,30 +1231,52 @@ selected.
 If you are using a threaded summary display, you can sort the threads by
 setting @code{gnus-thread-sort-functions}, which is a list of functions.
 By default, sorting is done on article numbers.  Ready-made sorting
-functions include @code{gnus-thread-sort-by-number},
+predicate functions include @code{gnus-thread-sort-by-number},
 @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-subject},
 @code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-score}, and
 @code{gnus-thread-sort-by-total-score}.
 
 Each function takes two threads and return non-@code{nil} if the first
-thread should be sorted before the other.  If you use more than one
-function, the primary sort key should be the last function in the list.
+thread should be sorted before the other.  Note that sorting really is
+normally done by looking only at the roots of each thread.  If you use
+more than one function, the primary sort key should be the last function
+in the list.  You should probably always include
+@code{gnus-thread-sort-by-number} in the list of sorting
+functions---preferably first.  This will ensure that threads that are
+equal with respect to the other sort criteria will be displayed in
+ascending article order.
 
 If you would like to sort by score, then by subject, and finally by
-date, you could do something like:
+number, you could do something like:
 
 @lisp
 (setq gnus-thread-sort-functions 
-      '(gnus-thread-sort-by-date
+      '(gnus-thread-sort-by-number
         gnus-thread-sort-by-subject
         gnus-thread-sort-by-score))
 @end lisp
 
+The threads that have highest score will be displayed first in the
+summary buffer.  When threads have the same score, they will be sorted
+alphabetically.  The threads that have the same score and the same
+subject will be sorted by number, which is (normally) the sequence in
+which the articles arrived.
+
+If you want to sort by score and then reverse arrival order, you could
+say something like:
+
+@lisp
+(setq gnus-thread-sort-functions
+      '((lambda (t1 t2) 
+          (not (gnus-thread-sort-by-number t1 t2)))
+        gnus-thread-sort-by-score))
+@end lisp
+
 @vindex gnus-thread-score-function
 The function in the @code{gnus-thread-score-function} variable (default
 @code{+}) is used for calculating the total score of a thread.  Useful
 functions might be @code{max}, @code{min}, or squared means, or whatever
-tickles you fancy.
+tickles your fancy.
 
 @findex gnus-article-sort-functions
 @findex gnus-article-sort-by-date
@@ -1433,19 +1285,29 @@ tickles you fancy.
 @findex gnus-article-sort-by-author
 @findex gnus-article-sort-by-number
 If you are using an unthreaded display for some strange reason or other,
-you have to fiddle with the @code{gnus-article-sort-functions}
-variable.  It is very similar to the @code{gnus-thread-sort-functions},
-except that is uses slightly different functions for article
-comparison.  Available functions are @code{gnus-article-sort-by-number},
+you have to fiddle with the @code{gnus-article-sort-functions} variable.
+It is very similar to the @code{gnus-thread-sort-functions}, except that
+is uses slightly different functions for article comparison.  Available
+sorting predicate functions are @code{gnus-article-sort-by-number},
 @code{gnus-article-sort-by-author}, @code{gnus-article-sort-by-subject},
 @code{gnus-article-sort-by-date}, and @code{gnus-article-sort-by-score}.
 
+If you want to sort an unthreaded summary display by subject, you could
+say something like:
 
-@node Subscription Commands
-@section Subscription Commands
+@lisp
+(setq gnus-article-sort-functions 
+      '(gnus-article-sort-by-number
+        gnus-article-sort-by-subject))
+@end lisp
+
+
+@node Subscription Commands
+@section Subscription Commands
 @cindex subscribing
 
 @table @kbd
+
 @item S t
 @itemx u
 @kindex S t (Group)
@@ -1453,6 +1315,7 @@ comparison.  Available functions are @code{gnus-article-sort-by-number},
 @findex gnus-group-unsubscribe-current-group
 Toggle subscription to the current group
 (@code{gnus-group-unsubscribe-current-group}).  
+
 @item S s
 @itemx U
 @kindex S s (Group)
@@ -1461,28 +1324,40 @@ Toggle subscription to the current group
 Prompt for a group to subscribe, and then subscribe it.  If it was
 subscribed already, unsubscribe it instead
 (@code{gnus-group-unsubscribe-group}).
+
 @item S k
 @itemx C-k
 @kindex S k (Group)
 @kindex C-k (Group)
 @findex gnus-group-kill-group
 Kill the current group (@code{gnus-group-kill-group}).
+
 @item S y
 @itemx C-y
 @kindex S y (Group)
 @kindex C-y (Group)
 @findex gnus-group-yank-group
 Yank the last killed group (@code{gnus-group-yank-group}).
+
+@item C-x C-t
+@kindex C-x C-t (Group)
+@findex gnus-group-transpose-groups
+Transpose two groups (@code{gnus-group-transpose-groups}).  This isn't
+really a subscription command, but you can use it instead of a
+kill-and-yank sequence sometimes.
+
 @item S w
 @itemx C-w
 @kindex S w (Group)
 @kindex C-w (Group)
 @findex gnus-group-kill-region
 Kill all groups in the region (@code{gnus-group-kill-region}). 
+
 @item S z
 @kindex S z (Group)
 @findex gnus-group-kill-all-zombies
 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
+
 @item S C-k
 @kindex S C-k (Group)
 @findex gnus-group-kill-level
@@ -1496,7 +1371,8 @@ kill off all unsubscribed groups that do not have message numbers in the
 
 @end table
 
-Also @xref{Group Levels}.
+Also @pxref{Group Levels}.
+
 
 @node Group Levels
 @section Group Levels
@@ -1506,9 +1382,10 @@ All groups have a level of @dfn{subscribedness}.  For instance, if a
 group is on level 2, it is more subscribed than a group on level 5.  You
 can ask Gnus to just list groups on a given level or lower
 (@pxref{Listing Groups}), or to just check for new articles in groups on
-a given level or lower (@pxref{Misc Group Stuff}).
+a given level or lower (@pxref{Scanning New Messages}).
 
 @table @kbd
+
 @item S l
 @kindex S l (Group)
 @findex gnus-group-set-current-level
@@ -1561,16 +1438,22 @@ All groups with a level less than or equal to
 @code{gnus-group-default-list-level} will be listed in the group buffer
 by default.
 
-@vindex gnus-group-use-permament-levels
-If @code{gnus-group-use-permament-levels} is non-@code{nil}, once you
+@vindex gnus-group-list-inactive-groups
+If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
+groups will be listed along with the unread groups.  This variable is
+@code{t} by default.  If it is @code{nil}, inactive groups won't be
+listed. 
+
+@vindex gnus-group-use-permanent-levels
+If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
-use this level as the "work" level.
+use this level as the ``work'' level.
 
 @vindex gnus-activate-level
 Gnus will normally just activate groups that are on level
 @code{gnus-activate-level} or less.  If you don't want to activate
 unsubscribed groups, for instance, you might set this variable to
-@samp{5}. 
+@code{5}. 
 
 
 @node Group Score
@@ -1631,11 +1514,21 @@ Set the mark on the current group (@code{gnus-group-mark-group}).
 Remove the mark from the current group
 (@code{gnus-group-unmark-group}). 
 
+@item M U
+@kindex M U (Group)
+@findex gnus-group-unmark-all-groups
+Remove the mark from all groups (@code{gnus-group-unmark-all-groups}). 
+
 @item M w
 @kindex M w (Group)
 @findex gnus-group-mark-region
 Mark all groups between point and mark (@code{gnus-group-mark-region}). 
 
+@item M b
+@kindex M b (Group)
+@findex gnus-group-mark-buffer
+Mark all groups in the buffer (@code{gnus-group-mark-buffer}). 
+
 @item M r
 @kindex M r (Group)
 @findex gnus-group-mark-regexp
@@ -1643,50 +1536,33 @@ Mark all groups that match some regular expression
 (@code{gnus-group-mark-regexp}).  
 @end table
 
-Also @xref{Process/Prefix}.
+Also @pxref{Process/Prefix}.
+
+@findex gnus-group-universal-argument
+If you want to execute some command on all groups that have been marked
+with the process mark, you can use the @kbd{M-&}
+(@code{gnus-group-universal-argument}) command.  It will prompt you for
+the command to be executed.
 
 
 @node Foreign Groups
 @section Foreign Groups
-@cindex foreign groups
-
-A @dfn{foreign group} is a group that is not read by the usual (or
-default) means.  It could be, for instance, a group from a different
-@sc{nntp} server, it could be a virtual group, or it could be your own
-personal mail group.
-
-A foreign group (or any group, really) is specified by a @dfn{name} and
-a @dfn{select method}.  To take the latter first, a select method is a
-list where the first element says what backend to use (eg. @code{nntp},
-@code{nnspool}, @code{nnml}) and the second element is the @dfn{server
-name}.  There may be additional elements in the select method, where the
-value may have special meaning for the backend in question.
-
-One could say that a select method defines a @dfn{virtual server}---so
-we do just that (@pxref{The Server Buffer}).
-
-The @dfn{name} of the group is the name the backend will recognize the
-group as.
-
-For instance, the group @samp{soc.motss} on the @sc{nntp} server
-@samp{some.where.edu} will have the name @samp{soc.motss} and select
-method @code{(nntp "some.where.edu")}.  Gnus will call this group, in
-all circumstances, @samp{nntp+some.where.edu:soc.motss}, even though the
-@code{nntp} backend just knows this group as @samp{soc.motss}.
 
-Here are some commands for making and editing general foreign groups,
-and some commands to ease the creation of some special-purpose groups:
+Here are some group mode commands for making and editing general foreign
+groups, as well as commands to ease the creation of a few
+special-purpose groups:
 
 @table @kbd
+
 @item G m
 @kindex G m (Group)
 @findex gnus-group-make-group
 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}.
+to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
 
 @item G r
-@kindex G m (Group)
+@kindex G r (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 --
@@ -1729,14 +1605,14 @@ Make the Gnus help group (@code{gnus-group-make-help-group}).
 @vindex gnus-group-recent-archive-directory
 Make a Gnus archive group (@code{gnus-group-make-archive-group}).  By
 default a group pointing to the most recent articles will be created
-(@code{gnus-group-recent-archibe-directory}), but given a prefix, a full
+(@code{gnus-group-recent-archive-directory}), but given a prefix, a full
 group will be created from from @code{gnus-group-archive-directory}.
 
 @item G k
 @kindex G k (Group)
 @findex gnus-group-make-kiboze-group
 Make a kiboze group.  You will be prompted for a name, for a regexp to
-match groups to be "included" in the kiboze group, and a series of
+match groups to be ``included'' in the kiboze group, and a series of
 strings to match on headers (@code{gnus-group-make-kiboze-group}).
 
 @item G D
@@ -1748,12 +1624,14 @@ Read a random directory as if with were a newsgroup with the
 @item G f
 @kindex G f (Group)
 @findex gnus-group-make-doc-group
+@cindex ClariNet Briefs
 Make a group based on some file or other
 (@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}, and @code{forward}.  If you run
-this command without a prefix, Gnus will guess at the file type.
+@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.
 
 @item G DEL
 @kindex G DEL (Group)
@@ -1762,7 +1640,7 @@ This function will delete the current group
 (@code{gnus-group-delete-group}).  If given a prefix, this function will
 actually 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.  
+absolutely sure of what you are doing.
 
 @item G V
 @kindex G V (Group)
@@ -1777,19 +1655,8 @@ Add the current group to an @code{nnvirtual} group
 (@code{gnus-group-add-to-virtual}).  Uses the process/prefix convention.
 @end table
 
-The different methods all have their peculiarities, of course.
-
-@menu
-* nntp::             Reading news from a different @sc{nntp} server.
-* nnspool::          Reading news from the local spool.
-* nnvirtual::        Combining articles from many groups.
-* nnkiboze::         Looking through parts of the newsfeed for articles.
-* nndir::            You can read a directory as if it was a newsgroup.
-* nneething::        Dired?  Who needs dired?
-* nndoc::            Single files can be the basis of a group.
-* SOUP::             Reading @sc{SOUP} packets "offline".
-* Reading Mail::     Reading your personal mail with Gnus.
-@end menu
+@xref{Select Methods} for more information on the various select
+methods. 
 
 @vindex gnus-activate-foreign-newsgroups
 If the @code{gnus-activate-foreign-newsgroups} is a positive number,
@@ -1797,7501 +1664,10170 @@ Gnus will check all foreign groups with this level or lower at startup.
 This might take quite a while, especially if you subscribe to lots of
 groups from different @sc{nntp} servers.
 
-@node nntp
-@subsection nntp
-@cindex @sc{nntp}
-
-Subscribing to a foreign group from an @sc{nntp} server is rather easy.
-You just specify @code{nntp} as method and the address of the @sc{nntp}
-server as the, uhm, address.
 
-If the @sc{nntp} server is located at a non-standard port, setting the
-third element of the select method to this port number should allow you
-to connect to the right port.  You'll have to edit the group info for
-that (@pxref{Foreign Groups}).
+@node Group Parameters
+@section Group Parameters
+@cindex group parameters
 
-The name of the foreign group can be the same as a native group.  In
-fact, you can subscribe to the same group from as many different servers
-you feel like.  There will be no name collisions.
+Gnus stores all information on a group in a list that is usually known
+as the @dfn{group info}.  This list has from three to six elements.
+Here's an example info.
 
-The following variables can be used to create a virtual @code{nntp}
-server: 
+@lisp
+("nnml:mail.ding" 3 ((1 . 232) 244 (256 . 270)) ((tick 246 249))
+                  (nnml "private") ((to-address . "ding@@ifi.uio.no")))
+@end lisp
 
-@table @code
-@item nntp-server-opened-hook
-@vindex nntp-server-opened-hook
-@cindex @sc{mode reader}
-@cindex authinfo
-@cindex authentification
-@cindex nntp authentification
-@findex nntp-send-authinfo
-@findex nntp-send-mode-reader
-@code{nntp-server-opened-hook} is run after a connection has been made.
-It can be used to send commands to the @sc{nntp} server after it has
-been contacted.  By default is sends the command @samp{MODE READER} to
-the server with the @code{nntp-send-mode-reader} function.  Another
-popular function is @code{nntp-send-authinfo}, which will prompt you for
-an @sc{nntp} password and stuff.
+The first element is the @dfn{group name}, as Gnus knows the group,
+anyway.  The second element is the @dfn{subscription level}, which
+normally is a small integer.  The third element is a list of ranges of
+read articles.  The fourth element is a list of lists of article marks
+of various kinds.  The fifth element is the select method (or virtual
+server, if you like).  The sixth element is a list of @dfn{group
+parameters}, which is what this section is about.
 
-@item nntp-maximum-request
-@vindex nntp-maximum-request
-If the @sc{nntp} server doesn't support @sc{nov} headers, this backend
-will collect headers by sending a series of @code{head} commands.  To
-speed things up, the backend sends lots of these commands without
-waiting for reply, and then reads all the replies.  This is controlled
-by the @code{nntp-maximum-request} variable, and is 400 by default.  If
-your network is buggy, you should set this to 1.
+Any of the last three elements may be missing if they are not required.
+In fact, the vast majority of groups will normally only have the first
+three elements, which saves quite a lot of cons cells.
 
-@item nntp-connection-timeout
-@vindex nntp-connection-timeout
-If you have lots of foreign @code{nntp} groups that you connect to
-regularly, you're sure to have problems with @sc{nntp} servers not
-responding properly, or being too loaded to reply within reasonable
-time.  This is can lead to awkward problems, which can be helped
-somewhat by setting @code{nntp-connection-timeout}.  This is an integer
-that says how many seconds the @code{nntp} backend should wait for a
-connection before giving up.  If it is @code{nil}, which is the default,
-no timeouts are done.
+The group parameters store information local to a particular group:
 
-@item nntp-server-hook
-@vindex nntp-server-hook
-This hook is run as the last step when connecting to an @sc{nntp}
-server.
+@table @code
+@item to-address
+@cindex to-address
+If the group parameter list contains an element that looks like
+@code{(to-address .  "some@@where.com")}, that address will be used by
+the backend when doing followups and posts.  This is primarily useful in
+mail groups that represent closed mailing lists---mailing lists where
+it's expected that everybody that writes to the mailing list is
+subscribed to it.  Since using this parameter ensures that the mail only
+goes to the mailing list itself, it means that members won't receive two
+copies of your followups.
+
+Using @code{to-address} will actually work whether the group is foreign
+or not.  Let's say there's a group on the server that is called
+@samp{fa.4ad-l}.  This is a real newsgroup, but the server has gotten
+the articles from a mail-to-news gateway.  Posting directly to this
+group is therefore impossible---you have to send mail to the mailing
+list address instead. 
 
-@c @findex nntp-open-rlogin
-@c @findex nntp-open-network-stream
-@c @item nntp-open-server-function
-@c @vindex nntp-open-server-function
-@c This function is used to connect to the remote system.  Two pre-made
-@c functions are @code{nntp-open-network-stream}, which is the default, and
-@c simply connects to some port or other on the remote system.  The other
-@c is @code{nntp-open-rlogin}, which does an rlogin on the remote system,
-@c and then does a telnet to the @sc{nntp} server available there.
-@c 
-@c @item nntp-rlogin-parameters
-@c @vindex nntp-rlogin-parameters
-@c If you use @code{nntp-open-rlogin} as the
-@c @code{nntp-open-server-function}, this list will be used as the
-@c parameter list given to @code{rsh}.
-@c 
-@c @item nntp-rlogin-user-name
-@c @vindex nntp-rlogin-user-name
-@c User name on the remote system when using the @code{rlogin} connect
-@c function. 
+@item to-list
+@cindex to-list
+If the group parameter list has an element that looks like
+@code{(to-list . "some@@where.com")}, that address will be used when
+doing a @kbd{a} in any group.  It is totally ignored when doing a
+followup---except that if it is present in a news group, you'll get mail
+group semantics when doing @kbd{f}.
 
-@item nntp-address
-@vindex nntp-address
-The address of the remote system running the @sc{nntp} server.
+@item broken-reply-to
+@cindex broken-reply-to
+Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
+headers in this group are to be ignored.  This can be useful if you're
+reading a mailing list group where the listserv has inserted
+@code{Reply-To} headers that point back to the listserv itself.  This is
+broken behavior.  So there!
 
-@item nntp-port-number
-@vindex nntp-port-number
-Port number to connect to when using the @code{nntp-open-network-stream}
-connect function.
+@item to-group
+@cindex to-group
+If the group parameter list contains an element like @code{(to-group
+. "some.group.name")}, all posts will be sent to that group.
 
-@item nntp-buggy-select
-@vindex nntp-buggy-select
-Set this to non-@code{nil} if your select routine is buggy.
+@item auto-expire
+@cindex auto-expire
+If this symbol is present in the group parameter list, all articles that
+are read will be marked as expirable.  For an alternative approach,
+@pxref{Expiring Mail}.
 
-@item nntp-nov-is-evil 
-@vindex nntp-nov-is-evil 
-If the @sc{nntp} server does not support @sc{nov}, you could set this
-variable to @code{t}, but @code{nntp} usually checks whether @sc{nov}
-can be used automatically.
+@item total-expire
+@cindex total-expire
+If this symbol is present, all read articles will be put through the
+expiry process, even if they are not marked as expirable.  Use with
+caution. 
 
-@item nntp-xover-commands
-@vindex nntp-xover-commands
-List of strings that are used as commands to fetch @sc{nov} lines from a
-server.  The default value of this variable is @code{("XOVER"
-"XOVERVIEW")}. 
+@item expiry-wait
+@cindex expiry-wait
+@vindex nnmail-expiry-wait-function
+If the group parameter has an element that looks like @code{(expiry-wait
+. 10)}, this value will override any @code{nnmail-expiry-wait} and
+@code{nnmail-expiry-wait-function} when expiring expirable messages.
+The value can either be a number of days (not necessarily an integer) or
+the symbols @code{never} or @code{immediate}.
 
-@item nntp-nov-gap
-@vindex nntp-nov-gap
-@code{nntp} normally sends just one big request for @sc{nov} lines to
-the server.  The server responds with one huge list of lines.  However,
-if you have read articles 2-5000 in the group, and only want to read
-article 1 and 5001, that means that @code{nntp} will fetch 4999 @sc{nov}
-lines that you do not want, and will not use.  This variable says how
-big a gap between two consecutive articles is allowed to be before the
-@code{XOVER} request is split into several request.  Note that if your
-network is fast, setting this variable to a really small number means
-that fetching will probably be slower.  If this variable is @code{nil},
-@code{nntp} will never split requests.
+@item score-file
+Elements that look like @code{(score-file . "file")} will make
+@samp{file} into the current score file for the group in question.  This
+means that all score commands you issue will end up in that file. 
 
-@item nntp-prepare-server-hook
-@vindex nntp-prepare-server-hook
-A hook run before attempting to connect to an @sc{nntp} server.
+@item admin-address
+When unsubscribing to a mailing list you should never send the
+unsubscription notice to the mailing list itself.  Instead, you'd send
+messages to the administrative address.  This parameter allows you to
+put the admin address somewhere convenient.
 
-@item nntp-async-number
-@vindex nntp-async-number
-How many articles should be pre-fetched when in asynchronous mode.  If
-this variable is @code{t}, @code{nntp} will pre-fetch all the articles
-that it can without bound.  If it is @code{nil}, no pre-fetching will be
-made.
+@item comment
+This parameter allows you to enter a random comment on the group.
 
-@item nntp-warn-about-losing-connection
-@vindex nntp-warn-about-losing-connection
-If this variable is non-@code{nil}, some noise will be made when a
-server closes connection.
+@item @var{(variable form)}
+You can use the group parameters to set variables local to the group you
+are entering.  Say you want to turn threading off in
+@samp{news.answers}.  You'd then put @code{(gnus-show-threads nil)} in
+the group parameters of that group.  @code{gnus-show-threads} will be
+made into a local variable in the summary buffer you enter, and the form
+@code{nil} will be @code{eval}ed there.  
 
+This can also be used as a group-specific hook function, if you'd like.
+If you want to hear a beep when you enter the group
+@samp{alt.binaries.pictures.furniture}, you could put something like
+@code{(dummy-variable (ding))} in the parameters of that group.
+@code{dummy-variable} will be set to the result of the @code{(ding)}
+form, but who cares?
 
 @end table
 
-@node nnspool
-@subsection nnspool
-@cindex @code{nnspool}
-@cindex news spool
+If you want to change the group info you can use the @kbd{G E} command
+to enter a buffer where you can edit it.
 
-Subscribing to a foreign group from the local spool is extremely easy,
-and might be useful, for instance, to speed up reading groups like
-@samp{alt.binaries.pictures.furniture}.
+You usually don't want to edit the entire group info, so you'd be better
+off using the @kbd{G p} command to just edit the group parameters.
 
-Anyways, you just specify @code{nnspool} as the method and @samp{""} (or
-anything else) as the address.
 
-If you have access to a local spool, you should probably use that as the
-native select method (@pxref{Finding the News}).  It is normally faster
-than using an @code{nntp} select method, but might not be.  It depends.
-You just have to try to find out what's best at your site.
+@node Listing Groups
+@section Listing Groups
+@cindex group listing
 
-@table @code
-@item nnspool-inews-program
-@vindex nnspool-inews-program
-Program used to post an article.
+These commands all list various slices of the groups that are available.
 
-@item nnspool-inews-switches
-@vindex nnspool-inews-switches
-Parameters given to the inews program when posting an article. 
-
-@item nnspool-spool-directory
-@vindex nnspool-spool-directory
-Where @code{nnspool} looks for the articles.  This is normally
-@file{/usr/spool/news/}.
+@table @kbd
 
-@item nnspool-nov-directory 
-@vindex nnspool-nov-directory 
-Where @code{nnspool} will look for @sc{nov} files.  This is normally
-@file{/usr/spool/news/over.view/}.
+@item l
+@itemx A s
+@kindex A s (Group)
+@kindex l (Group)
+@findex gnus-group-list-groups
+List all groups that have unread articles
+(@code{gnus-group-list-groups}).  If the numeric prefix is used, this
+command will list only groups of level ARG and lower.  By default, it
+only lists groups of level five or lower (i.e., just subscribed groups).
 
-@item nnspool-lib-dir
-@vindex nnspool-lib-dir
-Where the news lib dir is (@file{/usr/lib/news/} by default).
+@item L
+@itemx A u