* gnus.texi (Topic Parameters): Addition.
[gnus] / texi / gnus.texi
1 \input texinfo                  @c -*-texinfo-*-  -*- coding: iso-latin-1 -*-
2
3 @setfilename gnus
4 @settitle Pterodactyl Gnus  Manual
5 @synindex fn cp
6 @synindex vr cp
7 @synindex pg cp
8 @c @direntry
9 @c * Gnus: (gnus).         The newsreader Gnus.
10 @c @end direntry
11 @iftex
12 @finalout
13 @end iftex
14 @setchapternewpage odd
15
16 @iftex
17 @iflatex
18 \documentclass[twoside,a4paper,openright,11pt]{book}
19 \usepackage[latin1]{inputenc}
20 \usepackage{pagestyle}
21 \usepackage{epsfig}
22 \usepackage{bembo}
23 \usepackage{pixidx}
24
25 \makeindex
26 \begin{document}
27
28 \newcommand{\gnuschaptername}{}
29 \newcommand{\gnussectionname}{}
30
31 \newcommand{\gnusbackslash}{/}
32
33 \newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}}
34 \newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}}
35
36 \newcommand{\gnuskindex}[1]{\index{#1}}
37 \newcommand{\gnusindex}[1]{\index{#1}}
38
39 \newcommand{\gnustt}[1]{{\fontfamily{pfu}\fontsize{10pt}{10}\selectfont #1}}
40 \newcommand{\gnuscode}[1]{\gnustt{#1}}
41 \newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\fontfamily{pfu}\fontsize{10pt}{10}\selectfont #1}''}
42 \newcommand{\gnuslisp}[1]{\gnustt{#1}}
43 \newcommand{\gnuskbd}[1]{`\gnustt{#1}'}
44 \newcommand{\gnusfile}[1]{`\gnustt{#1}'}
45 \newcommand{\gnusdfn}[1]{\textit{#1}}
46 \newcommand{\gnusi}[1]{\textit{#1}}
47 \newcommand{\gnusstrong}[1]{\textbf{#1}}
48 \newcommand{\gnusemph}[1]{\textit{#1}}
49 \newcommand{\gnusvar}[1]{{\fontsize{10pt}{10}\selectfont\textsl{\textsf{#1}}}}
50 \newcommand{\gnussc}[1]{\textsc{#1}}
51 \newcommand{\gnustitle}[1]{{\huge\textbf{#1}}}
52 \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}}
53 \newcommand{\gnusresult}[1]{\gnustt{=> #1}}
54
55 \newcommand{\gnusbullet}{{${\bullet}$}}
56 \newcommand{\gnusdollar}{\$}
57 \newcommand{\gnusampersand}{\&}
58 \newcommand{\gnuspercent}{\%}
59 \newcommand{\gnushash}{\#}
60 \newcommand{\gnushat}{\symbol{"5E}}
61 \newcommand{\gnusunderline}{\symbol{"5F}}
62 \newcommand{\gnusnot}{$\neg$}
63 \newcommand{\gnustilde}{\symbol{"7E}}
64 \newcommand{\gnusless}{{$<$}}
65 \newcommand{\gnusgreater}{{$>$}}
66 \newcommand{\gnusbraceleft}{{$>$}}
67 \newcommand{\gnusbraceright}{{$>$}}
68
69 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=ps/gnus-head.eps,height=1cm}}}
70 \newcommand{\gnusinteresting}{
71 \marginpar[\mbox{}\hfill\gnushead]{\gnushead}
72 }
73
74 \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi}
75
76 \newcommand{\gnuspagechapter}[1]{
77 {\mbox{}}
78 }
79
80 \newdimen{\gnusdimen}
81 \gnusdimen 0pt
82
83 \newcommand{\gnuschapter}[2]{
84 \gnuscleardoublepage
85 \ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi
86 \chapter{#2}
87 \renewcommand{\gnussectionname}{}
88 \renewcommand{\gnuschaptername}{#2}
89 \thispagestyle{empty}
90 \hspace*{-2cm}
91 \begin{picture}(500,500)(0,0)
92 \put(480,350){\makebox(0,0)[tr]{#1}}
93 \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}}
94 \end{picture}
95 \clearpage
96 }
97
98 \newcommand{\gnusfigure}[3]{
99 \begin{figure}
100 \mbox{}\ifodd\count0\hspace*{-0.8cm}\else\hspace*{-3cm}\fi\begin{picture}(440,#2)
101 #3
102 \end{picture}
103 \caption{#1}
104 \end{figure}
105 }
106
107 \newcommand{\gnusicon}[1]{
108 \marginpar[\mbox{}\hfill\raisebox{-1.5cm}{\epsfig{figure=tmp/#1-up.ps,height=1.5cm}}]{\raisebox{-1cm}{\epsfig{figure=tmp/#1-up.ps,height=1cm}}}
109 }
110
111 \newcommand{\gnuspicon}[1]{
112 \margindex{\epsfig{figure=#1,width=2cm}}
113 }
114
115 \newcommand{\gnusxface}[2]{
116 \margindex{\epsfig{figure=#1,width=1cm}\epsfig{figure=#2,width=1cm}}
117 }
118
119 \newcommand{\gnussmiley}[2]{
120 \margindex{\makebox[2cm]{\hfill\epsfig{figure=#1,width=0.5cm}\hfill\epsfig{figure=#2,width=0.5cm}\hfill}}
121 }
122
123 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
124
125 \newcommand{\gnussection}[1]{
126 \renewcommand{\gnussectionname}{#1}
127 \section{#1}
128 }
129
130 \newenvironment{codelist}%
131 {\begin{list}{}{
132 }
133 }{\end{list}}
134
135 \newenvironment{kbdlist}%
136 {\begin{list}{}{
137 \labelwidth=0cm
138 }
139 }{\end{list}}
140
141 \newenvironment{dfnlist}%
142 {\begin{list}{}{
143 }
144 }{\end{list}}
145
146 \newenvironment{stronglist}%
147 {\begin{list}{}{
148 }
149 }{\end{list}}
150
151 \newenvironment{samplist}%
152 {\begin{list}{}{
153 }
154 }{\end{list}}
155
156 \newenvironment{varlist}%
157 {\begin{list}{}{
158 }
159 }{\end{list}}
160
161 \newenvironment{emphlist}%
162 {\begin{list}{}{
163 }
164 }{\end{list}}
165
166 \newlength\gnusheadtextwidth
167 \setlength{\gnusheadtextwidth}{\headtextwidth}
168 \addtolength{\gnusheadtextwidth}{1cm}
169
170 \newpagestyle{gnuspreamble}%
171 {
172 {
173 \ifodd\count0
174 {
175 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}}
176 }
177 \else
178 {
179 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}}
180 }
181 }
182 \fi
183 }
184 }
185 {
186 \ifodd\count0
187 \mbox{} \hfill
188 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
189 \else
190 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
191 \hfill \mbox{}
192 \fi
193 }
194
195 \newpagestyle{gnusindex}%
196 {
197 {
198 \ifodd\count0
199 {
200 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}}
201 }
202 \else
203 {
204 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
205 }
206 \fi
207 }
208 }
209 {
210 \ifodd\count0
211 \mbox{} \hfill
212 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
213 \else
214 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
215 \hfill \mbox{}
216 \fi
217 }
218
219 \newpagestyle{gnus}%
220 {
221 {
222 \ifodd\count0
223 {
224 \makebox[12cm]{\hspace*{3.1cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}}
225 }
226 \else
227 {
228 \makebox[12cm]{\hspace*{-2.95cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}}
229 }
230 \fi
231 }
232 }
233 {
234 \ifodd\count0
235 \mbox{} \hfill
236 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
237 \else
238 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
239 \hfill \mbox{}
240 \fi
241 }
242
243 \pagenumbering{roman}
244 \pagestyle{gnuspreamble}
245
246 @end iflatex
247 @end iftex
248
249 @iftex
250 @iflatex
251 \begin{titlepage}
252 {
253
254 %\addtolength{\oddsidemargin}{-5cm}
255 %\addtolength{\evensidemargin}{-5cm}
256 \parindent=0cm
257 \addtolength{\textheight}{2cm}
258
259 \gnustitle{\gnustitlename}\\
260 \rule{15cm}{1mm}\\
261 \vfill
262 \hspace*{0cm}\epsfig{figure=ps/gnus-big-logo.eps,height=15cm}
263 \vfill
264 \rule{15cm}{1mm}\\
265 \gnusauthor{by Lars Magne Ingebrigtsen}
266 \newpage
267 }
268
269 \mbox{}
270 \vfill
271
272 \thispagestyle{empty}
273
274 Copyright \copyright{} 1995,96,97,98,99 Free Software Foundation, Inc.
275
276 Permission is granted to make and distribute verbatim copies of
277 this manual provided the copyright notice and this permission notice
278 are preserved on all copies.
279
280 Permission is granted to copy and distribute modified versions of this
281 manual under the conditions for verbatim copying, provided that the
282 entire resulting derived work is distributed under the terms of a
283 permission notice identical to this one.
284
285 Permission is granted to copy and distribute translations of this manual
286 into another language, under the above conditions for modified versions.
287
288 \newpage
289 \end{titlepage}
290 @end iflatex
291 @end iftex
292
293 @ifinfo
294
295 This file documents Gnus, the GNU Emacs newsreader.
296
297 Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
298
299 Permission is granted to make and distribute verbatim copies of
300 this manual provided the copyright notice and this permission notice
301 are preserved on all copies.
302
303 @ignore
304 Permission is granted to process this file through Tex and print the
305 results, provided the printed document carries copying permission
306 notice identical to this one except for the removal of this paragraph
307 (this paragraph not being relevant to the printed manual).
308
309 @end ignore
310 Permission is granted to copy and distribute modified versions of this
311 manual under the conditions for verbatim copying, provided also that the
312 entire resulting derived work is distributed under the terms of a
313 permission notice identical to this one.
314
315 Permission is granted to copy and distribute translations of this manual
316 into another language, under the above conditions for modified versions.
317 @end ifinfo
318
319 @tex
320
321 @titlepage
322 @title Pterodactyl Gnus  Manual
323
324 @author by Lars Magne Ingebrigtsen
325 @page
326
327 @vskip 0pt plus 1filll
328 Copyright @copyright{} 1995,96,97,98,99 Free Software Foundation, Inc.
329
330 Permission is granted to make and distribute verbatim copies of
331 this manual provided the copyright notice and this permission notice
332 are preserved on all copies.
333
334 Permission is granted to copy and distribute modified versions of this
335 manual under the conditions for verbatim copying, provided that the
336 entire resulting derived work is distributed under the terms of a
337 permission notice identical to this one.
338
339 Permission is granted to copy and distribute translations of this manual
340 into another language, under the above conditions for modified versions.
341
342 @end titlepage
343 @page
344
345 @end tex
346
347
348 @node Top
349 @top The Gnus Newsreader
350
351 @ifinfo
352
353 You can read news (and mail) from within Emacs by using Gnus.  The news
354 can be gotten by any nefarious means you can think of---@sc{nntp}, local
355 spool or your mbox file.  All at the same time, if you want to push your
356 luck.
357
358 This manual corresponds to Pterodactyl Gnus .
359
360 @end ifinfo
361
362 @iftex
363
364 @iflatex
365 \tableofcontents
366 \gnuscleardoublepage
367 @end iflatex
368
369 Gnus is the advanced, self-documenting, customizable, extensible
370 unreal-time newsreader for GNU Emacs.
371
372 Oops.  That sounds oddly familiar, so let's start over again to avoid
373 being accused of plagiarism:
374
375 Gnus is a message-reading laboratory.  It will let you look at just
376 about anything as if it were a newsgroup.  You can read mail with it,
377 you can browse directories with it, you can @code{ftp} with it---you can
378 even read news with it!
379
380 Gnus tries to empower people who read news the same way Emacs empowers
381 people who edit text.  Gnus sets no limits to what the user should be
382 allowed to do.  Users are encouraged to extend Gnus to make it behave
383 like they want it to behave.  A program should not control people;
384 people should be empowered to do what they want by using (or abusing)
385 the program.
386
387 @end iftex
388
389
390 @menu
391 * Starting Up::           Finding news can be a pain.
392 * The Group Buffer::      Selecting, subscribing and killing groups.
393 * The Summary Buffer::    Reading, saving and posting articles.
394 * The Article Buffer::    Displaying and handling articles.
395 * Composing Messages::    Information on sending mail and news.
396 * Select Methods::        Gnus reads all messages from various select methods.
397 * Scoring::               Assigning values to articles.
398 * Various::               General purpose settings.
399 * The End::               Farewell and goodbye.
400 * Appendices::            Terminology, Emacs intro, FAQ, History, Internals.
401 * Index::                 Variable, function and concept index.
402 * Key Index::             Key Index.
403 @end menu
404
405 @node Starting Up
406 @chapter Starting Gnus
407 @cindex starting up
408
409 @kindex M-x gnus
410 @findex gnus
411 If your system administrator has set things up properly, starting Gnus
412 and reading news is extremely easy---you just type @kbd{M-x gnus} in
413 your Emacs.
414
415 @findex gnus-other-frame
416 @kindex M-x gnus-other-frame
417 If you want to start Gnus in a different frame, you can use the command
418 @kbd{M-x gnus-other-frame} instead.
419
420 If things do not go smoothly at startup, you have to twiddle some
421 variables in your @file{~/.gnus} file.  This file is similar to
422 @file{~/.emacs}, but is read when gnus starts.
423
424 If you puzzle at any terms used in this manual, please refer to the
425 terminology section (@pxref{Terminology}).
426
427 @menu
428 * Finding the News::    Choosing a method for getting news.
429 * The First Time::      What does Gnus do the first time you start it?
430 * The Server is Down::  How can I read my mail then?
431 * Slave Gnusae::        You can have more than one Gnus active at a time.
432 * Fetching a Group::    Starting Gnus just to read a group.
433 * New Groups::          What is Gnus supposed to do with new groups?
434 * Startup Files::       Those pesky startup files---@file{.newsrc}.
435 * Auto Save::           Recovering from a crash.
436 * The Active File::     Reading the active file over a slow line Takes Time.
437 * Changing Servers::    You may want to move from one server to another.
438 * Startup Variables::   Other variables you might change.
439 @end menu
440
441
442 @node Finding the News
443 @section Finding the News
444 @cindex finding news
445
446 @vindex gnus-select-method
447 @c @head
448 The @code{gnus-select-method} variable says where Gnus should look for
449 news.  This variable should be a list where the first element says
450 @dfn{how} and the second element says @dfn{where}.  This method is your
451 native method.  All groups not fetched with this method are
452 foreign groups.
453
454 For instance, if the @samp{news.somewhere.edu} @sc{nntp} server is where
455 you want to get your daily dosage of news from, you'd say:
456
457 @lisp
458 (setq gnus-select-method '(nntp "news.somewhere.edu"))
459 @end lisp
460
461 If you want to read directly from the local spool, say:
462
463 @lisp
464 (setq gnus-select-method '(nnspool ""))
465 @end lisp
466
467 If you can use a local spool, you probably should, as it will almost
468 certainly be much faster.
469
470 @vindex gnus-nntpserver-file
471 @cindex NNTPSERVER
472 @cindex @sc{nntp} server
473 If this variable is not set, Gnus will take a look at the
474 @code{NNTPSERVER} environment variable.  If that variable isn't set,
475 Gnus will see whether @code{gnus-nntpserver-file}
476 (@file{/etc/nntpserver} by default) has any opinions on the matter.  If
477 that fails as well, Gnus will try to use the machine running Emacs as an @sc{nntp} server.  That's a long shot, though.
478
479 @vindex gnus-nntp-server
480 If @code{gnus-nntp-server} is set, this variable will override
481 @code{gnus-select-method}.  You should therefore set
482 @code{gnus-nntp-server} to @code{nil}, which is what it is by default.
483
484 @vindex gnus-secondary-servers
485 @vindex gnus-nntp-server
486 You can also make Gnus prompt you interactively for the name of an
487 @sc{nntp} server.  If you give a non-numerical prefix to @code{gnus}
488 (i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
489 in the @code{gnus-secondary-servers} list (if any).  You can also just
490 type in the name of any server you feel like visiting.  (Note that this
491 will set @code{gnus-nntp-server}, which means that if you then @kbd{M-x
492 gnus} later in the same Emacs session, Gnus will contact the same
493 server.)
494
495 @findex gnus-group-browse-foreign-server
496 @kindex B (Group)
497 However, if you use one @sc{nntp} server regularly and are just
498 interested in a couple of groups from a different server, you would be
499 better served by using the @kbd{B} command in the group buffer.  It will
500 let you have a look at what groups are available, and you can subscribe
501 to any of the groups you want to.  This also makes @file{.newsrc}
502 maintenance much tidier.  @xref{Foreign Groups}.
503
504 @vindex gnus-secondary-select-methods
505 @c @head
506 A slightly different approach to foreign groups is to set the
507 @code{gnus-secondary-select-methods} variable.  The select methods
508 listed in this variable are in many ways just as native as the
509 @code{gnus-select-method} server.  They will also be queried for active
510 files during startup (if that's required), and new newsgroups that
511 appear on these servers will be subscribed (or not) just as native
512 groups are.
513
514 For instance, if you use the @code{nnmbox} backend to read your mail, you
515 would typically set this variable to
516
517 @lisp
518 (setq gnus-secondary-select-methods '((nnmbox "")))
519 @end lisp
520
521
522 @node The First Time
523 @section The First Time
524 @cindex first time usage
525
526 If no startup files exist, Gnus will try to determine what groups should
527 be subscribed by default.
528
529 @vindex gnus-default-subscribed-newsgroups
530 If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
531 will subscribe you to just those groups in that list, leaving the rest
532 killed.  Your system administrator should have set this variable to
533 something useful.
534
535 Since she hasn't, Gnus will just subscribe you to a few arbitrarily
536 picked groups (i.e., @samp{*.newusers}).  (@dfn{Arbitrary} is defined
537 here as @dfn{whatever Lars thinks you should read}.)
538
539 You'll also be subscribed to the Gnus documentation group, which should
540 help you with most common problems.
541
542 If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
543 use the normal functions for handling new groups, and not do anything
544 special.
545
546
547 @node The Server is Down
548 @section The Server is Down
549 @cindex server errors
550
551 If the default server is down, Gnus will understandably have some
552 problems starting.  However, if you have some mail groups in addition to
553 the news groups, you may want to start Gnus anyway.
554
555 Gnus, being the trusting sort of program, will ask whether to proceed
556 without a native select method if that server can't be contacted.  This
557 will happen whether the server doesn't actually exist (i.e., you have
558 given the wrong address) or the server has just momentarily taken ill
559 for some reason or other.  If you decide to continue and have no foreign
560 groups, you'll find it difficult to actually do anything in the group
561 buffer.  But, hey, that's your problem.  Blllrph!
562
563 @findex gnus-no-server
564 @kindex M-x gnus-no-server
565 @c @head
566 If you know that the server is definitely down, or you just want to read
567 your mail without bothering with the server at all, you can use the
568 @code{gnus-no-server} command to start Gnus.  That might come in handy
569 if you're in a hurry as well.  This command will not attempt to contact
570 your primary server---instead, it will just activate all groups on level
571 1 and 2.  (You should preferably keep no native groups on those two
572 levels.)
573
574
575 @node Slave Gnusae
576 @section Slave Gnusae
577 @cindex slave
578
579 You might want to run more than one Emacs with more than one Gnus at the
580 same time.  If you are using different @file{.newsrc} files (e.g., if you
581 are using the two different Gnusae to read from two different servers),
582 that is no problem whatsoever.  You just do it.
583
584 The problem appears when you want to run two Gnusae that use the same
585 @code{.newsrc} file.
586
587 To work around that problem some, we here at the Think-Tank at the Gnus
588 Towers have come up with a new concept: @dfn{Masters} and
589 @dfn{slaves}.  (We have applied for a patent on this concept, and have
590 taken out a copyright on those words.  If you wish to use those words in
591 conjunction with each other, you have to send $1 per usage instance to
592 me.  Usage of the patent (@dfn{Master/Slave Relationships In Computer
593 Applications}) will be much more expensive, of course.)
594
595 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
596 however you do it).  Each subsequent slave Gnusae should be started with
597 @kbd{M-x gnus-slave}.  These slaves won't save normal @file{.newsrc}
598 files, but instead save @dfn{slave files} that contain information only
599 on what groups have been read in the slave session.  When a master Gnus
600 starts, it will read (and delete) these slave files, incorporating all
601 information from them.  (The slave files will be read in the sequence
602 they were created, so the latest changes will have precedence.)
603
604 Information from the slave files has, of course, precedence over the
605 information in the normal (i.e., master) @code{.newsrc} file.
606
607
608 @node Fetching a Group
609 @section Fetching a Group
610 @cindex fetching a group
611
612 @findex gnus-fetch-group
613 It is sometimes convenient to be able to just say ``I want to read this
614 group and I don't care whether Gnus has been started or not''.  This is
615 perhaps more useful for people who write code than for users, but the
616 command @code{gnus-fetch-group} provides this functionality in any case.
617 It takes the group name as a parameter.
618
619
620 @node New Groups
621 @section New Groups
622 @cindex new groups
623 @cindex subscription
624
625 @vindex gnus-check-new-newsgroups
626 If you are satisfied that you really never want to see any new groups,
627 you can set @code{gnus-check-new-newsgroups} to @code{nil}.  This will
628 also save you some time at startup.  Even if this variable is
629 @code{nil}, you can always subscribe to the new groups just by pressing
630 @kbd{U} in the group buffer (@pxref{Group Maintenance}).  This variable
631 is @code{ask-server} by default.  If you set this variable to
632 @code{always}, then Gnus will query the backends for new groups even
633 when you do the @kbd{g} command (@pxref{Scanning New Messages}).
634
635 @menu
636 * Checking New Groups::      Determining what groups are new.
637 * Subscription Methods::     What Gnus should do with new groups.
638 * Filtering New Groups::     Making Gnus ignore certain new groups.
639 @end menu
640
641
642 @node Checking New Groups
643 @subsection Checking New Groups
644
645 Gnus normally determines whether a group is new or not by comparing the
646 list of groups from the active file(s) with the lists of subscribed and
647 dead groups.  This isn't a particularly fast method.  If
648 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
649 server for new groups since the last time.  This is both faster and
650 cheaper.  This also means that you can get rid of the list of killed
651 groups altogether, so you may set @code{gnus-save-killed-list} to
652 @code{nil}, which will save time both at startup, at exit, and all over.
653 Saves disk space, too.  Why isn't this the default, then?
654 Unfortunately, not all servers support this command.
655
656 I bet I know what you're thinking now: How do I find out whether my
657 server supports @code{ask-server}?  No?  Good, because I don't have a
658 fail-safe answer.  I would suggest just setting this variable to
659 @code{ask-server} and see whether any new groups appear within the next
660 few days.  If any do, then it works.  If none do, then it doesn't
661 work.  I could write a function to make Gnus guess whether the server
662 supports @code{ask-server}, but it would just be a guess.  So I won't.
663 You could @code{telnet} to the server and say @code{HELP} and see
664 whether it lists @samp{NEWGROUPS} among the commands it understands.  If
665 it does, then it might work.  (But there are servers that lists
666 @samp{NEWGROUPS} without supporting the function properly.)
667
668 This variable can also be a list of select methods.  If so, Gnus will
669 issue an @code{ask-server} command to each of the select methods, and
670 subscribe them (or not) using the normal methods.  This might be handy
671 if you are monitoring a few servers for new groups.  A side effect is
672 that startup will take much longer, so you can meditate while waiting.
673 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
674
675
676 @node Subscription Methods
677 @subsection Subscription Methods
678
679 @vindex gnus-subscribe-newsgroup-method
680 What Gnus does when it encounters a new group is determined by the
681 @code{gnus-subscribe-newsgroup-method} variable.
682
683 This variable should contain a function.  This function will be called
684 with the name of the new group as the only parameter.
685
686 Some handy pre-fab functions are:
687
688 @table @code
689
690 @item gnus-subscribe-zombies
691 @vindex gnus-subscribe-zombies
692 Make all new groups zombies.  This is the default.  You can browse the
693 zombies later (with @kbd{A z}) and either kill them all off properly
694 (with @kbd{S z}), or subscribe to them (with @kbd{u}).
695
696 @item gnus-subscribe-randomly
697 @vindex gnus-subscribe-randomly
698 Subscribe all new groups in arbitrary order.  This really means that all
699 new groups will be added at ``the top'' of the group buffer.
700
701 @item gnus-subscribe-alphabetically
702 @vindex gnus-subscribe-alphabetically
703 Subscribe all new groups in alphabetical order.
704
705 @item gnus-subscribe-hierarchically
706 @vindex gnus-subscribe-hierarchically
707 Subscribe all new groups hierarchically.  The difference between this
708 function and @code{gnus-subscribe-alphabetically} is slight.
709 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
710 alphabetical fashion, while this function will enter groups into its
711 hierarchy.  So if you want to have the @samp{rec} hierarchy before the
712 @samp{comp} hierarchy, this function will not mess that configuration
713 up.  Or something like that.
714
715 @item gnus-subscribe-interactively
716 @vindex gnus-subscribe-interactively
717 Subscribe new groups interactively.  This means that Gnus will ask
718 you about @strong{all} new groups.  The groups you choose to subscribe
719 to will be subscribed hierarchically.
720
721 @item gnus-subscribe-killed
722 @vindex gnus-subscribe-killed
723 Kill all new groups.
724
725 @item gnus-subscribe-topics
726 @vindex gnus-subscribe-topics
727 Put the groups into the topic that has a matching @code{subscribe} topic 
728 parameter (@pxref{Topic Parameters}).  For instance, a @code{subscribe}
729 topic parameter that looks like
730
731 @example
732 "nnslashdot"
733 @end example
734
735 will mean that all groups that match that regex will be subscribed under 
736 that topic.
737
738 If no topics match the groups, the groups will be subscribed in the
739 top-level topic.
740
741 @end table
742
743 @vindex gnus-subscribe-hierarchical-interactive
744 A closely related variable is
745 @code{gnus-subscribe-hierarchical-interactive}.  (That's quite a
746 mouthful.)  If this variable is non-@code{nil}, Gnus will ask you in a
747 hierarchical fashion whether to subscribe to new groups or not.  Gnus
748 will ask you for each sub-hierarchy whether you want to descend the
749 hierarchy or not.
750
751 One common mistake is to set the variable a few paragraphs above
752 (@code{gnus-subscribe-newsgroup-method}) to
753 @code{gnus-subscribe-hierarchical-interactive}.  This is an error.  This
754 will not work.  This is ga-ga.  So don't do it.
755
756
757 @node Filtering New Groups
758 @subsection Filtering New Groups
759
760 A nice and portable way to control which new newsgroups should be
761 subscribed (or ignored) is to put an @dfn{options} line at the start of
762 the @file{.newsrc} file.  Here's an example:
763
764 @example
765 options -n !alt.all !rec.all sci.all
766 @end example
767
768 @vindex gnus-subscribe-options-newsgroup-method
769 This line obviously belongs to a serious-minded intellectual scientific
770 person (or she may just be plain old boring), because it says that all
771 groups that have names beginning with @samp{alt} and @samp{rec} should
772 be ignored, and all groups with names beginning with @samp{sci} should
773 be subscribed.  Gnus will not use the normal subscription method for
774 subscribing these groups.
775 @code{gnus-subscribe-options-newsgroup-method} is used instead.  This
776 variable defaults to @code{gnus-subscribe-alphabetically}.
777
778 @vindex gnus-options-not-subscribe
779 @vindex gnus-options-subscribe
780 If you don't want to mess with your @file{.newsrc} file, you can just
781 set the two variables @code{gnus-options-subscribe} and
782 @code{gnus-options-not-subscribe}.  These two variables do exactly the
783 same as the @file{.newsrc} @samp{options -n} trick.  Both are regexps,
784 and if the new group matches the former, it will be unconditionally
785 subscribed, and if it matches the latter, it will be ignored.
786
787 @vindex gnus-auto-subscribed-groups
788 Yet another variable that meddles here is
789 @code{gnus-auto-subscribed-groups}.  It works exactly like
790 @code{gnus-options-subscribe}, and is therefore really superfluous, but I
791 thought it would be nice to have two of these.  This variable is more
792 meant for setting some ground rules, while the other variable is used
793 more for user fiddling.  By default this variable makes all new groups
794 that come from mail backends (@code{nnml}, @code{nnbabyl},
795 @code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed.  If you
796 don't like that, just set this variable to @code{nil}.
797
798 New groups that match this regexp are subscribed using
799 @code{gnus-subscribe-options-newsgroup-method}.
800
801
802 @node Changing Servers
803 @section Changing Servers
804 @cindex changing servers
805
806 Sometimes it is necessary to move from one @sc{nntp} server to another.
807 This happens very rarely, but perhaps you change jobs, or one server is
808 very flaky and you want to use another.
809
810 Changing the server is pretty easy, right?  You just change
811 @code{gnus-select-method} to point to the new server?
812
813 @emph{Wrong!}
814
815 Article numbers are not (in any way) kept synchronized between different
816 @sc{nntp} servers, and the only way Gnus keeps track of what articles
817 you have read is by keeping track of article numbers.  So when you
818 change @code{gnus-select-method}, your @file{.newsrc} file becomes
819 worthless.
820
821 Gnus provides a few functions to attempt to translate a @file{.newsrc}
822 file from one server to another.  They all have one thing in
823 common---they take a looong time to run.  You don't want to use these
824 functions more than absolutely necessary.
825
826 @kindex M-x gnus-change-server
827 @findex gnus-change-server
828 If you have access to both servers, Gnus can request the headers for all
829 the articles you have read and compare @code{Message-ID}s and map the
830 article numbers of the read articles and article marks.  The @kbd{M-x
831 gnus-change-server} command will do this for all your native groups.  It
832 will prompt for the method you want to move to.
833
834 @kindex M-x gnus-group-move-group-to-server
835 @findex gnus-group-move-group-to-server
836 You can also move individual groups with the @kbd{M-x
837 gnus-group-move-group-to-server} command.  This is useful if you want to
838 move a (foreign) group from one server to another.
839
840 @kindex M-x gnus-group-clear-data-on-native-groups
841 @findex gnus-group-clear-data-on-native-groups
842 If you don't have access to both the old and new server, all your marks
843 and read ranges have become worthless.  You can use the @kbd{M-x
844 gnus-group-clear-data-on-native-groups} command to clear out all data
845 that you have on your native groups.  Use with caution.
846
847 After changing servers, you @strong{must} move the cache hierarchy away,
848 since the cached articles will have wrong article numbers, which will
849 affect which articles Gnus thinks are read.
850
851
852 @node Startup Files
853 @section Startup Files
854 @cindex startup files
855 @cindex .newsrc
856 @cindex .newsrc.el
857 @cindex .newsrc.eld
858
859 Now, you all know about the @file{.newsrc} file.  All subscription
860 information is traditionally stored in this file.
861
862 Things got a bit more complicated with @sc{gnus}.  In addition to
863 keeping the @file{.newsrc} file updated, it also used a file called
864 @file{.newsrc.el} for storing all the information that didn't fit into
865 the @file{.newsrc} file.  (Actually, it also duplicated everything in
866 the @file{.newsrc} file.)  @sc{gnus} would read whichever one of these
867 files was the most recently saved, which enabled people to swap between
868 @sc{gnus} and other newsreaders.
869
870 That was kinda silly, so Gnus went one better: In addition to the
871 @file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
872 @file{.newsrc.eld}.  It will read whichever of these files that are most
873 recent, but it will never write a @file{.newsrc.el} file.  You should
874 never delete the @file{.newsrc.eld} file---it contains much information
875 not stored in the @file{.newsrc} file.
876
877 @vindex gnus-save-newsrc-file
878 @vindex gnus-read-newsrc-file
879 You can turn off writing the @file{.newsrc} file by setting
880 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
881 the file and save some space, as well as exiting from Gnus faster.
882 However, this will make it impossible to use other newsreaders than
883 Gnus.  But hey, who would want to, right?  Similarly, setting
884 @code{gnus-read-newsrc-file} to @code{nil} makes Gnus ignore the
885 @file{.newsrc} file and any @file{.newsrc-SERVER} files, which is
886 convenient if you have a tendency to use Netscape once in a while.
887
888 @vindex gnus-save-killed-list
889 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
890 will not save the list of killed groups to the startup file.  This will
891 save both time (when starting and quitting) and space (on disk).  It
892 will also mean that Gnus has no record of what groups are new or old,
893 so the automatic new groups subscription methods become meaningless.
894 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
895 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
896 Groups}).  This variable can also be a regular expression.  If that's
897 the case, remove all groups that do not match this regexp before
898 saving.  This can be useful in certain obscure situations that involve
899 several servers where not all servers support @code{ask-server}.
900
901 @vindex gnus-startup-file
902 The @code{gnus-startup-file} variable says where the startup files are.
903 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
904 file being whatever that one is, with a @samp{.eld} appended.
905
906 @vindex gnus-save-newsrc-hook
907 @vindex gnus-save-quick-newsrc-hook
908 @vindex gnus-save-standard-newsrc-hook
909 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc
910 files, while @code{gnus-save-quick-newsrc-hook} is called just before
911 saving the @file{.newsrc.eld} file, and
912 @code{gnus-save-standard-newsrc-hook} is called just before saving the
913 @file{.newsrc} file.  The latter two are commonly used to turn version
914 control on or off.  Version control is on by default when saving the
915 startup files.  If you want to turn backup creation off, say something like:
916
917 @lisp
918 (defun turn-off-backup ()
919   (set (make-local-variable 'backup-inhibited) t))
920
921 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
922 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
923 @end lisp
924
925 @vindex gnus-init-file
926 When Gnus starts, it will read the @code{gnus-site-init-file}
927 (@file{.../site-lisp/gnus} by default) and @code{gnus-init-file}
928 (@file{~/.gnus} by default) files.  These are normal Emacs Lisp files
929 and can be used to avoid cluttering your @file{~/.emacs} and
930 @file{site-init} files with Gnus stuff.  Gnus will also check for files
931 with the same names as these, but with @file{.elc} and @file{.el}
932 suffixes.  In other words, if you have set @code{gnus-init-file} to
933 @file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
934 and finally @file{~/.gnus} (in this order).
935
936
937
938 @node Auto Save
939 @section Auto Save
940 @cindex dribble file
941 @cindex auto-save
942
943 Whenever you do something that changes the Gnus data (reading articles,
944 catching up, killing/subscribing groups), the change is added to a
945 special @dfn{dribble buffer}.  This buffer is auto-saved the normal
946 Emacs way.  If your Emacs should crash before you have saved the
947 @file{.newsrc} files, all changes you have made can be recovered from
948 this file.
949
950 If Gnus detects this file at startup, it will ask the user whether to
951 read it.  The auto save file is deleted whenever the real startup file is
952 saved.
953
954 @vindex gnus-use-dribble-file
955 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
956 maintain a dribble buffer.  The default is @code{t}.
957
958 @vindex gnus-dribble-directory
959 Gnus will put the dribble file(s) in @code{gnus-dribble-directory}.  If
960 this variable is @code{nil}, which it is by default, Gnus will dribble
961 into the directory where the @file{.newsrc} file is located.  (This is
962 normally the user's home directory.)  The dribble file will get the same
963 file permissions as the @code{.newsrc} file.
964
965 @vindex gnus-always-read-dribble-file
966 If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will
967 read the dribble file on startup without querying the user.
968
969
970 @node The Active File
971 @section The Active File
972 @cindex active file
973 @cindex ignored groups
974
975 When Gnus starts, or indeed whenever it tries to determine whether new
976 articles have arrived, it reads the active file.  This is a very large
977 file that lists all the active groups and articles on the server.
978
979 @vindex gnus-ignored-newsgroups
980 Before examining the active file, Gnus deletes all lines that match the
981 regexp @code{gnus-ignored-newsgroups}.  This is done primarily to reject
982 any groups with bogus names, but you can use this variable to make Gnus
983 ignore hierarchies you aren't ever interested in.  However, this is not
984 recommended.  In fact, it's highly discouraged.  Instead, @pxref{New
985 Groups} for an overview of other variables that can be used instead.
986
987 @c This variable is
988 @c @code{nil} by default, and will slow down active file handling somewhat
989 @c if you set it to anything else.
990
991 @vindex gnus-read-active-file
992 @c @head
993 The active file can be rather Huge, so if you have a slow network, you
994 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
995 reading the active file.  This variable is @code{some} by default.
996
997 Gnus will try to make do by getting information just on the groups that
998 you actually subscribe to.
999
1000 Note that if you subscribe to lots and lots of groups, setting this
1001 variable to @code{nil} will probably make Gnus slower, not faster.  At
1002 present, having this variable @code{nil} will slow Gnus down
1003 considerably, unless you read news over a 2400 baud modem.
1004
1005 This variable can also have the value @code{some}.  Gnus will then
1006 attempt to read active info only on the subscribed groups.  On some
1007 servers this is quite fast (on sparkling, brand new INN servers that
1008 support the @code{LIST ACTIVE group} command), on others this isn't fast
1009 at all.  In any case, @code{some} should be faster than @code{nil}, and
1010 is certainly faster than @code{t} over slow lines.
1011
1012 Some news servers (Leafnode and old versions of INN, for instance) do
1013 not support the @code{LIST ACTIVE group}.  For these servers, @code{nil}
1014 is probably the most efficient value for this variable.
1015
1016 If this variable is @code{nil}, Gnus will ask for group info in total
1017 lock-step, which isn't very fast.  If it is @code{some} and you use an
1018 @sc{nntp} server, Gnus will pump out commands as fast as it can, and
1019 read all the replies in one swoop.  This will normally result in better
1020 performance, but if the server does not support the aforementioned
1021 @code{LIST ACTIVE group} command, this isn't very nice to the server.
1022
1023 If you think that starting up Gnus takes too long, try all the three
1024 different values for this variable and see what works best for you. 
1025
1026 In any case, if you use @code{some} or @code{nil}, you should definitely
1027 kill all groups that you aren't interested in to speed things up.
1028
1029 Note that this variable also affects active file retrieval from
1030 secondary select methods.
1031
1032
1033 @node Startup Variables
1034 @section Startup Variables
1035
1036 @table @code
1037
1038 @item gnus-load-hook
1039 @vindex gnus-load-hook
1040 A hook run while Gnus is being loaded.  Note that this hook will
1041 normally be run just once in each Emacs session, no matter how many
1042 times you start Gnus.
1043
1044 @item gnus-before-startup-hook
1045 @vindex gnus-before-startup-hook
1046 A hook run after starting up Gnus successfully.
1047
1048 @item gnus-startup-hook
1049 @vindex gnus-startup-hook
1050 A hook run as the very last thing after starting up Gnus
1051
1052 @item gnus-started-hook
1053 @vindex gnus-started-hook
1054 A hook that is run as the very last thing after starting up Gnus
1055 successfully.
1056
1057 @item gnus-setup-news-hook
1058 @vindex gnus-setup-news-hook
1059 A hook that is run after reading the @file{.newsrc} file(s), but before
1060 generating the group buffer.
1061
1062 @item gnus-check-bogus-newsgroups
1063 @vindex gnus-check-bogus-newsgroups
1064 If non-@code{nil}, Gnus will check for and delete all bogus groups at
1065 startup.  A @dfn{bogus group} is a group that you have in your
1066 @file{.newsrc} file, but doesn't exist on the news server.  Checking for
1067 bogus groups can take quite a while, so to save time and resources it's
1068 best to leave this option off, and do the checking for bogus groups once
1069 in a while from the group buffer instead (@pxref{Group Maintenance}).
1070
1071 @item gnus-inhibit-startup-message
1072 @vindex gnus-inhibit-startup-message
1073 If non-@code{nil}, the startup message won't be displayed.  That way,
1074 your boss might not notice as easily that you are reading news instead
1075 of doing your job.  Note that this variable is used before
1076 @file{.gnus.el} is loaded, so it should be set in @code{.emacs} instead.
1077
1078 @item gnus-no-groups-message
1079 @vindex gnus-no-groups-message
1080 Message displayed by Gnus when no groups are available.
1081
1082 @item gnus-play-startup-jingle
1083 @vindex gnus-play-startup-jingle
1084 If non-@code{nil}, play the Gnus jingle at startup.
1085
1086 @item gnus-startup-jingle
1087 @vindex gnus-startup-jingle
1088 Jingle to be played if the above variable is non-@code{nil}.  The
1089 default is @samp{Tuxedomoon.Jingle4.au}.
1090
1091 @end table
1092
1093
1094 @node The Group Buffer
1095 @chapter The Group Buffer
1096 @cindex group buffer
1097
1098 The @dfn{group buffer} lists all (or parts) of the available groups.  It
1099 is the first buffer shown when Gnus starts, and will never be killed as
1100 long as Gnus is active.
1101
1102 @iftex
1103 @iflatex
1104 \gnusfigure{The Group Buffer}{320}{
1105 \put(75,50){\epsfig{figure=tmp/group.ps,height=9cm}}
1106 \put(120,37){\makebox(0,0)[t]{Buffer name}}
1107 \put(120,38){\vector(1,2){10}}
1108 \put(40,60){\makebox(0,0)[r]{Mode line}}
1109 \put(40,58){\vector(1,0){30}}
1110 \put(200,28){\makebox(0,0)[t]{Native select method}}
1111 \put(200,26){\vector(-1,2){15}}
1112 }
1113 @end iflatex
1114 @end iftex
1115
1116 @menu
1117 * Group Buffer Format::    Information listed and how you can change it.
1118 * Group Maneuvering::      Commands for moving in the group buffer.
1119 * Selecting a Group::      Actually reading news.
1120 * Group Data::             Changing the info for a group.
1121 * Subscription Commands::  Unsubscribing, killing, subscribing.
1122 * Group Levels::           Levels? What are those, then?
1123 * Group Score::            A mechanism for finding out what groups you like.
1124 * Marking Groups::         You can mark groups for later processing.
1125 * Foreign Groups::         Creating and editing groups.
1126 * Group Parameters::       Each group may have different parameters set.
1127 * Listing Groups::         Gnus can list various subsets of the groups.
1128 * Sorting Groups::         Re-arrange the group order.
1129 * Group Maintenance::      Maintaining a tidy @file{.newsrc} file.
1130 * Browse Foreign Server::  You can browse a server.  See what it has to offer.
1131 * Exiting Gnus::           Stop reading news and get some work done.
1132 * Group Topics::           A folding group mode divided into topics.
1133 * Misc Group Stuff::       Other stuff that you can to do.
1134 @end menu
1135
1136
1137 @node Group Buffer Format
1138 @section Group Buffer Format
1139
1140 @menu
1141 * Group Line Specification::       Deciding how the group buffer is to look.
1142 * Group Modeline Specification::   The group buffer modeline.
1143 * Group Highlighting::             Having nice colors in the group buffer.
1144 @end menu
1145
1146
1147 @node Group Line Specification
1148 @subsection Group Line Specification
1149 @cindex group buffer format
1150
1151 The default format of the group buffer is nice and dull, but you can
1152 make it as exciting and ugly as you feel like.
1153
1154 Here's a couple of example group lines:
1155
1156 @example
1157      25: news.announce.newusers
1158  *    0: alt.fan.andrea-dworkin
1159 @end example
1160
1161 Quite simple, huh?
1162
1163 You can see that there are 25 unread articles in
1164 @samp{news.announce.newusers}.  There are no unread articles, but some
1165 ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
1166 asterisk at the beginning of the line?).
1167
1168 @vindex gnus-group-line-format
1169 You can change that format to whatever you want by fiddling with the
1170 @code{gnus-group-line-format} variable.  This variable works along the
1171 lines of a @code{format} specification, which is pretty much the same as
1172 a @code{printf} specifications, for those of you who use (feh!) C.
1173 @xref{Formatting Variables}.
1174
1175 @samp{%M%S%5y: %(%g%)\n} is the value that produced those lines above.
1176
1177 There should always be a colon on the line; the cursor always moves to
1178 the colon after performing an operation.  Nothing else is required---not
1179 even the group name.  All displayed text is just window dressing, and is
1180 never examined by Gnus.  Gnus stores all real information it needs using
1181 text properties.
1182
1183 (Note that if you make a really strange, wonderful, spreadsheet-like
1184 layout, everybody will believe you are hard at work with the accounting
1185 instead of wasting time reading news.)
1186
1187 Here's a list of all available format characters:
1188
1189 @table @samp
1190
1191 @item M
1192 An asterisk if the group only has marked articles.
1193
1194 @item S
1195 Whether the group is subscribed.
1196
1197 @item L
1198 Level of subscribedness.
1199
1200 @item N
1201 Number of unread articles.
1202
1203 @item I
1204 Number of dormant articles.
1205
1206 @item T
1207 Number of ticked articles.
1208
1209 @item R
1210 Number of read articles.
1211
1212 @item t
1213 Estimated total number of articles.  (This is really @var{max-number}
1214 minus @var{min-number} plus 1.)
1215
1216 @item y
1217 Number of unread, unticked, non-dormant articles.
1218
1219 @item i
1220 Number of ticked and dormant articles.
1221
1222 @item g
1223 Full group name.
1224
1225 @item G
1226 Group name.
1227
1228 @item D
1229 Newsgroup description.
1230
1231 @item o
1232 @samp{m} if moderated.
1233
1234 @item O
1235 @samp{(m)} if moderated.
1236
1237 @item s
1238 Select method.
1239
1240 @item n
1241 Select from where.
1242
1243 @item z
1244 A string that looks like @samp{<%s:%n>} if a foreign select method is
1245 used.
1246
1247 @item P
1248 Indentation based on the level of the topic (@pxref{Group Topics}).
1249
1250 @item c
1251 @vindex gnus-group-uncollapsed-levels
1252 Short (collapsed) group name.  The @code{gnus-group-uncollapsed-levels}
1253 variable says how many levels to leave at the end of the group name.
1254 The default is 1---this will mean that group names like
1255 @samp{gnu.emacs.gnus} will be shortened to @samp{g.e.gnus}.
1256
1257 @item m
1258 @vindex gnus-new-mail-mark
1259 @cindex %
1260 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1261 the group lately.
1262
1263 @item d
1264 A string that says when you last read the group (@pxref{Group
1265 Timestamp}).
1266
1267 @item u
1268 User defined specifier.  The next character in the format string should
1269 be a letter.  Gnus will call the function
1270 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
1271 following @samp{%u}.  The function will be passed a single dummy
1272 parameter as argument.  The function should return a string, which will
1273 be inserted into the buffer just like information from any other
1274 specifier.
1275 @end table
1276
1277 @cindex *
1278 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
1279 if no info is available---for instance, if it is a non-activated foreign
1280 group, or a bogus native group.
1281
1282
1283 @node Group Modeline Specification
1284 @subsection Group Modeline Specification
1285 @cindex group modeline
1286
1287 @vindex gnus-group-mode-line-format
1288 The mode line can be changed by setting
1289 @code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}).  It
1290 doesn't understand that many format specifiers:
1291
1292 @table @samp
1293 @item S
1294 The native news server.
1295 @item M
1296 The native select method.
1297 @end table
1298
1299
1300 @node Group Highlighting
1301 @subsection Group Highlighting
1302 @cindex highlighting
1303 @cindex group highlighting
1304
1305 @vindex gnus-group-highlight
1306 Highlighting in the group buffer is controlled by the
1307 @code{gnus-group-highlight} variable.  This is an alist with elements
1308 that look like @code{(@var{form} . @var{face})}.  If @var{form} evaluates to
1309 something non-@code{nil}, the @var{face} will be used on the line.
1310
1311 Here's an example value for this variable that might look nice if the
1312 background is dark:
1313
1314 @lisp
1315 (face-spec-set 'my-group-face-1
1316                '((t (:foreground "Red" :bold t))))
1317 (face-spec-set 'my-group-face-2
1318                '((t (:foreground "SeaGreen" :bold t))))
1319 (face-spec-set 'my-group-face-3
1320                '((t (:foreground "SpringGreen" :bold t))))
1321 (face-spec-set 'my-group-face-4
1322                '((t (:foreground "SteelBlue" :bold t))))
1323 (face-spec-set 'my-group-face-5
1324                '((t (:foreground "SkyBlue" :bold t))))
1325
1326 (setq gnus-group-highlight
1327       '(((> unread 200) . my-group-face-1)
1328         ((and (< level 3) (zerop unread)) . my-group-face-2)
1329         ((< level 3) . my-group-face-3)
1330         ((zerop unread) . my-group-face-4)
1331         (t . my-group-face-5)))
1332 @end lisp
1333
1334 Also @pxref{Faces and Fonts}.
1335
1336 Variables that are dynamically bound when the forms are evaluated
1337 include:
1338
1339 @table @code
1340 @item group
1341 The group name.
1342 @item unread
1343 The number of unread articles in the group.
1344 @item method
1345 The select method.
1346 @item mailp
1347 Whether the group is a mail group.
1348 @item level
1349 The level of the group.
1350 @item score
1351 The score of the group.
1352 @item ticked
1353 The number of ticked articles in the group.
1354 @item total
1355 The total number of articles in the group.  Or rather, MAX-NUMBER minus
1356 MIN-NUMBER plus one.
1357 @item topic
1358 When using the topic minor mode, this variable is bound to the current
1359 topic being inserted.
1360 @end table
1361
1362 When the forms are @code{eval}ed, point is at the beginning of the line
1363 of the group in question, so you can use many of the normal Gnus
1364 functions for snarfing info on the group.
1365
1366 @vindex gnus-group-update-hook
1367 @findex gnus-group-highlight-line
1368 @code{gnus-group-update-hook} is called when a group line is changed.
1369 It will not be called when @code{gnus-visual} is @code{nil}.  This hook
1370 calls @code{gnus-group-highlight-line} by default.
1371
1372
1373 @node Group Maneuvering
1374 @section Group Maneuvering
1375 @cindex group movement
1376
1377 All movement commands understand the numeric prefix and will behave as
1378 expected, hopefully.
1379
1380 @table @kbd
1381
1382 @item n
1383 @kindex n (Group)
1384 @findex gnus-group-next-unread-group
1385 Go to the next group that has unread articles
1386 (@code{gnus-group-next-unread-group}).
1387
1388 @item p
1389 @itemx DEL
1390 @kindex DEL (Group)
1391 @kindex p (Group)
1392 @findex gnus-group-prev-unread-group
1393 Go to the previous group that has unread articles
1394 (@code{gnus-group-prev-unread-group}).
1395
1396 @item N
1397 @kindex N (Group)
1398 @findex gnus-group-next-group
1399 Go to the next group (@code{gnus-group-next-group}).
1400
1401 @item P
1402 @kindex P (Group)
1403 @findex gnus-group-prev-group
1404 Go to the previous group (@code{gnus-group-prev-group}).
1405
1406 @item M-n
1407 @kindex M-n (Group)
1408 @findex gnus-group-next-unread-group-same-level
1409 Go to the next unread group on the same (or lower) level
1410 (@code{gnus-group-next-unread-group-same-level}).
1411
1412 @item M-p
1413 @kindex M-p (Group)
1414 @findex gnus-group-prev-unread-group-same-level
1415 Go to the previous unread group on the same (or lower) level
1416 (@code{gnus-group-prev-unread-group-same-level}).
1417 @end table
1418
1419 Three commands for jumping to groups:
1420
1421 @table @kbd
1422
1423 @item j
1424 @kindex j (Group)
1425 @findex gnus-group-jump-to-group
1426 Jump to a group (and make it visible if it isn't already)
1427 (@code{gnus-group-jump-to-group}).  Killed groups can be jumped to, just
1428 like living groups.
1429
1430 @item ,
1431 @kindex , (Group)
1432 @findex gnus-group-best-unread-group
1433 Jump to the unread group with the lowest level
1434 (@code{gnus-group-best-unread-group}).
1435
1436 @item .
1437 @kindex . (Group)
1438 @findex gnus-group-first-unread-group
1439 Jump to the first group with unread articles
1440 (@code{gnus-group-first-unread-group}).
1441 @end table
1442
1443 @vindex gnus-group-goto-unread
1444 If @code{gnus-group-goto-unread} is @code{nil}, all the movement
1445 commands will move to the next group, not the next unread group.  Even
1446 the commands that say they move to the next unread group.  The default
1447 is @code{t}.
1448
1449
1450 @node Selecting a Group
1451 @section Selecting a Group
1452 @cindex group selection
1453
1454 @table @kbd
1455
1456 @item SPACE
1457 @kindex SPACE (Group)
1458 @findex gnus-group-read-group
1459 Select the current group, switch to the summary buffer and display the
1460 first unread article (@code{gnus-group-read-group}).  If there are no
1461 unread articles in the group, or if you give a non-numerical prefix to
1462 this command, Gnus will offer to fetch all the old articles in this
1463 group from the server.  If you give a numerical prefix @var{N}, @var{N}
1464 determines the number of articles Gnus will fetch.  If @var{N} is
1465 positive, Gnus fetches the @var{N} newest articles, if @var{N} is
1466 negative, Gnus fetches the @code{abs(@var{N})} oldest articles.
1467
1468 @item RET
1469 @kindex RET (Group)
1470 @findex gnus-group-select-group
1471 Select the current group and switch to the summary buffer
1472 (@code{gnus-group-select-group}).  Takes the same arguments as
1473 @code{gnus-group-read-group}---the only difference is that this command
1474 does not display the first unread article automatically upon group
1475 entry.
1476
1477 @item M-RET
1478 @kindex M-RET (Group)
1479 @findex gnus-group-quick-select-group
1480 This does the same as the command above, but tries to do it with the
1481 minimum amount of fuzz (@code{gnus-group-quick-select-group}).  No
1482 scoring/killing will be performed, there will be no highlights and no
1483 expunging.  This might be useful if you're in a real hurry and have to
1484 enter some humongous group.  If you give a 0 prefix to this command
1485 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer,
1486 which is useful if you want to toggle threading before generating the
1487 summary buffer (@pxref{Summary Generation Commands}).
1488
1489 @item M-SPACE
1490 @kindex M-SPACE (Group)
1491 @findex gnus-group-visible-select-group
1492 This is yet one more command that does the same as the @kbd{RET}
1493 command, but this one does it without expunging and hiding dormants
1494 (@code{gnus-group-visible-select-group}).
1495
1496 @item M-C-RET
1497 @kindex M-C-RET (Group)
1498 @findex gnus-group-select-group-ephemerally
1499 Finally, this command selects the current group ephemerally without
1500 doing any processing of its contents
1501 (@code{gnus-group-select-group-ephemerally}).  Even threading has been
1502 turned off.  Everything you do in the group after selecting it in this
1503 manner will have no permanent effects.
1504
1505 @end table
1506
1507 @vindex gnus-large-newsgroup
1508 The @code{gnus-large-newsgroup} variable says what Gnus should consider
1509 to be a big group.  This is 200 by default.  If the group has more
1510 (unread and/or ticked) articles than this, Gnus will query the user
1511 before entering the group.  The user can then specify how many articles
1512 should be fetched from the server.  If the user specifies a negative
1513 number (@code{-n}), the @code{n} oldest articles will be fetched.  If it
1514 is positive, the @code{n} articles that have arrived most recently will
1515 be fetched.
1516
1517 @vindex gnus-select-group-hook
1518 @vindex gnus-auto-select-first
1519 @code{gnus-auto-select-first} control whether any articles are selected
1520 automatically when entering a group with the @kbd{SPACE} command.
1521
1522 @table @code
1523
1524 @item nil
1525 Don't select any articles when entering the group.  Just display the
1526 full summary buffer.
1527
1528 @item t
1529 Select the first unread article when entering the group.
1530
1531 @item best
1532 Select the highest scored article in the group when entering the
1533 group.
1534
1535 @end table
1536
1537 This variable can also be a function.  In that case, that function will
1538 be called to place point on a subject line, and/or select some article.
1539 Useful functions include:
1540
1541 @table @code
1542 @item gnus-summary-first-unread-subject
1543 Place point on the subject line of the first unread article, but
1544 don't select the article.
1545
1546 @item gnus-summary-first-unread-article
1547 Select the first unread article.
1548
1549 @item gnus-summary-best-unread-article
1550 Select the highest-scored unread article.
1551 @end table
1552
1553
1554 If you want to prevent automatic selection in some group (say, in a
1555 binary group with Huge articles) you can set this variable to @code{nil}
1556 in @code{gnus-select-group-hook}, which is called when a group is
1557 selected.
1558
1559
1560 @node Subscription Commands
1561 @section Subscription Commands
1562 @cindex subscription
1563
1564 @table @kbd
1565
1566 @item S t
1567 @itemx u
1568 @kindex S t (Group)
1569 @kindex u (Group)
1570 @findex gnus-group-unsubscribe-current-group
1571 @c @icon{gnus-group-unsubscribe}
1572 Toggle subscription to the current group
1573 (@code{gnus-group-unsubscribe-current-group}).
1574
1575 @item S s
1576 @itemx U
1577 @kindex S s (Group)
1578 @kindex U (Group)
1579 @findex gnus-group-unsubscribe-group
1580 Prompt for a group to subscribe, and then subscribe it.  If it was
1581 subscribed already, unsubscribe it instead
1582 (@code{gnus-group-unsubscribe-group}).
1583
1584 @item S k
1585 @itemx C-k
1586 @kindex S k (Group)
1587 @kindex C-k (Group)
1588 @findex gnus-group-kill-group
1589 @c @icon{gnus-group-kill-group}
1590 Kill the current group (@code{gnus-group-kill-group}).
1591
1592 @item S y
1593 @itemx C-y
1594 @kindex S y (Group)
1595 @kindex C-y (Group)
1596 @findex gnus-group-yank-group
1597 Yank the last killed group (@code{gnus-group-yank-group}).
1598
1599 @item C-x C-t
1600 @kindex C-x C-t (Group)
1601 @findex gnus-group-transpose-groups
1602 Transpose two groups (@code{gnus-group-transpose-groups}).  This isn't
1603 really a subscription command, but you can use it instead of a
1604 kill-and-yank sequence sometimes.
1605
1606 @item S w
1607 @itemx C-w
1608 @kindex S w (Group)
1609 @kindex C-w (Group)
1610 @findex gnus-group-kill-region
1611 Kill all groups in the region (@code{gnus-group-kill-region}).
1612
1613 @item S z
1614 @kindex S z (Group)
1615 @findex gnus-group-kill-all-zombies
1616 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
1617
1618 @item S C-k
1619 @kindex S C-k (Group)
1620 @findex gnus-group-kill-level
1621 Kill all groups on a certain level (@code{gnus-group-kill-level}).
1622 These groups can't be yanked back after killing, so this command should
1623 be used with some caution.  The only time where this command comes in
1624 really handy is when you have a @file{.newsrc} with lots of unsubscribed
1625 groups that you want to get rid off.  @kbd{S C-k} on level 7 will
1626 kill off all unsubscribed groups that do not have message numbers in the
1627 @file{.newsrc} file.
1628
1629 @end table
1630
1631 Also @pxref{Group Levels}.
1632
1633
1634 @node Group Data
1635 @section Group Data
1636
1637 @table @kbd
1638
1639 @item c
1640 @kindex c (Group)
1641 @findex gnus-group-catchup-current
1642 @vindex gnus-group-catchup-group-hook
1643 @c @icon{gnus-group-catchup-current}
1644 Mark all unticked articles in this group as read
1645 (@code{gnus-group-catchup-current}).
1646 @code{gnus-group-catchup-group-hook} is called when catching up a group from
1647 the group buffer.
1648
1649 @item C
1650 @kindex C (Group)
1651 @findex gnus-group-catchup-current-all
1652 Mark all articles in this group, even the ticked ones, as read
1653 (@code{gnus-group-catchup-current-all}).
1654
1655 @item M-c
1656 @kindex M-c (Group)
1657 @findex gnus-group-clear-data
1658 Clear the data from the current group---nix out marks and the list of
1659 read articles (@code{gnus-group-clear-data}).
1660
1661 @item M-x gnus-group-clear-data-on-native-groups
1662 @kindex M-x gnus-group-clear-data-on-native-groups
1663 @findex gnus-group-clear-data-on-native-groups
1664 If you have switched from one @sc{nntp} server to another, all your marks
1665 and read ranges have become worthless.  You can use this command to
1666 clear out all data that you have on your native groups.  Use with
1667 caution.
1668
1669 @end table
1670
1671
1672 @node Group Levels
1673 @section Group Levels
1674 @cindex group level
1675 @cindex level
1676
1677 All groups have a level of @dfn{subscribedness}.  For instance, if a
1678 group is on level 2, it is more subscribed than a group on level 5.  You
1679 can ask Gnus to just list groups on a given level or lower
1680 (@pxref{Listing Groups}), or to just check for new articles in groups on
1681 a given level or lower (@pxref{Scanning New Messages}).
1682
1683 Remember:  The higher the level of the group, the less important it is.
1684
1685 @table @kbd
1686
1687 @item S l
1688 @kindex S l (Group)
1689 @findex gnus-group-set-current-level
1690 Set the level of the current group.  If a numeric prefix is given, the
1691 next @var{n} groups will have their levels set.  The user will be
1692 prompted for a level.
1693 @end table
1694
1695 @vindex gnus-level-killed
1696 @vindex gnus-level-zombie
1697 @vindex gnus-level-unsubscribed
1698 @vindex gnus-level-subscribed
1699 Gnus considers groups from levels 1 to
1700 @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed,
1701 @code{gnus-level-subscribed} (exclusive) and
1702 @code{gnus-level-unsubscribed} (inclusive) (default 7) to be
1703 unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
1704 (default 8) and @code{gnus-level-killed} to be killed (completely dead)
1705 (default 9).  Gnus treats subscribed and unsubscribed groups exactly the
1706 same, but zombie and killed groups have no information on what articles
1707 you have read, etc, stored.  This distinction between dead and living
1708 groups isn't done because it is nice or clever, it is done purely for
1709 reasons of efficiency.
1710
1711 It is recommended that you keep all your mail groups (if any) on quite
1712 low levels (e.g. 1 or 2).
1713
1714 If you want to play with the level variables, you should show some care.
1715 Set them once, and don't touch them ever again.  Better yet, don't touch
1716 them at all unless you know exactly what you're doing.
1717
1718 @vindex gnus-level-default-unsubscribed
1719 @vindex gnus-level-default-subscribed
1720 Two closely related variables are @code{gnus-level-default-subscribed}
1721 (default 3) and @code{gnus-level-default-unsubscribed} (default 6),
1722 which are the levels that new groups will be put on if they are
1723 (un)subscribed.  These two variables should, of course, be inside the
1724 relevant valid ranges.
1725
1726 @vindex gnus-keep-same-level
1727 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
1728 will only move to groups of the same level (or lower).  In
1729 particular, going from the last article in one group to the next group
1730 will go to the next group of the same level (or lower).  This might be
1731 handy if you want to read the most important groups before you read the
1732 rest.
1733
1734 @vindex gnus-group-default-list-level
1735 All groups with a level less than or equal to
1736 @code{gnus-group-default-list-level} will be listed in the group buffer
1737 by default.
1738
1739 @vindex gnus-group-list-inactive-groups
1740 If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
1741 groups will be listed along with the unread groups.  This variable is
1742 @code{t} by default.  If it is @code{nil}, inactive groups won't be
1743 listed.
1744
1745 @vindex gnus-group-use-permanent-levels
1746 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
1747 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
1748 use this level as the ``work'' level.
1749
1750 @vindex gnus-activate-level
1751 Gnus will normally just activate (i. e., query the server about) groups
1752 on level @code{gnus-activate-level} or less.  If you don't want to
1753 activate unsubscribed groups, for instance, you might set this variable
1754 to 5.  The default is 6.
1755
1756
1757 @node Group Score
1758 @section Group Score
1759 @cindex group score
1760 @cindex group rank
1761 @cindex rank
1762
1763 You would normally keep important groups on high levels, but that scheme
1764 is somewhat restrictive.  Don't you wish you could have Gnus sort the
1765 group buffer according to how often you read groups, perhaps?  Within
1766 reason?
1767
1768 This is what @dfn{group score} is for.  You can have Gnus assign a score
1769 to each group through the mechanism described below.  You can then sort
1770 the group buffer based on this score.  Alternatively, you can sort on
1771 score and then level.  (Taken together, the level and the score is
1772 called the @dfn{rank} of the group.  A group that is on level 4 and has
1773 a score of 1 has a higher rank than a group on level 5 that has a score
1774 of 300.  (The level is the most significant part and the score is the
1775 least significant part.))
1776
1777 @findex gnus-summary-bubble-group
1778 If you want groups you read often to get higher scores than groups you
1779 read seldom you can add the @code{gnus-summary-bubble-group} function to
1780 the @code{gnus-summary-exit-hook} hook.  This will result (after
1781 sorting) in a bubbling sort of action.  If you want to see that in
1782 action after each summary exit, you can add
1783 @code{gnus-group-sort-groups-by-rank} or
1784 @code{gnus-group-sort-groups-by-score} to the same hook, but that will
1785 slow things down somewhat.
1786
1787
1788 @node Marking Groups
1789 @section Marking Groups
1790 @cindex marking groups
1791
1792 If you want to perform some command on several groups, and they appear
1793 subsequently in the group buffer, you would normally just give a
1794 numerical prefix to the command.  Most group commands will then do your
1795 bidding on those groups.
1796
1797 However, if the groups are not in sequential order, you can still
1798 perform a command on several groups.  You simply mark the groups first
1799 with the process mark and then execute the command.
1800
1801 @table @kbd
1802
1803 @item #
1804 @kindex # (Group)
1805 @itemx M m
1806 @kindex M m (Group)
1807 @findex gnus-group-mark-group
1808 Set the mark on the current group (@code{gnus-group-mark-group}).
1809
1810 @item M-#
1811 @kindex M-# (Group)
1812 @itemx M u
1813 @kindex M u (Group)
1814 @findex gnus-group-unmark-group
1815 Remove the mark from the current group
1816 (@code{gnus-group-unmark-group}).
1817
1818 @item M U
1819 @kindex M U (Group)
1820 @findex gnus-group-unmark-all-groups
1821 Remove the mark from all groups (@code{gnus-group-unmark-all-groups}).
1822
1823 @item M w
1824 @kindex M w (Group)
1825 @findex gnus-group-mark-region
1826 Mark all groups between point and mark (@code{gnus-group-mark-region}).
1827
1828 @item M b
1829 @kindex M b (Group)
1830 @findex gnus-group-mark-buffer
1831 Mark all groups in the buffer (@code{gnus-group-mark-buffer}).
1832
1833 @item M r
1834 @kindex M r (Group)
1835 @findex gnus-group-mark-regexp
1836 Mark all groups that match some regular expression
1837 (@code{gnus-group-mark-regexp}).
1838 @end table
1839
1840 Also @pxref{Process/Prefix}.
1841
1842 @findex gnus-group-universal-argument
1843 If you want to execute some command on all groups that have been marked
1844 with the process mark, you can use the @kbd{M-&}
1845 (@code{gnus-group-universal-argument}) command.  It will prompt you for
1846 the command to be executed.
1847
1848
1849 @node Foreign Groups
1850 @section Foreign Groups
1851 @cindex foreign groups
1852
1853 Below are some group mode commands for making and editing general foreign
1854 groups, as well as commands to ease the creation of a few
1855 special-purpose groups.  All these commands insert the newly created
1856 groups under point---@code{gnus-subscribe-newsgroup-method} is not
1857 consulted.
1858
1859 @table @kbd
1860
1861 @item G m
1862 @kindex G m (Group)
1863 @findex gnus-group-make-group
1864 @cindex making groups
1865 Make a new group (@code{gnus-group-make-group}).  Gnus will prompt you
1866 for a name, a method and possibly an @dfn{address}.  For an easier way
1867 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
1868
1869 @item G r
1870 @kindex G r (Group)
1871 @findex gnus-group-rename-group
1872 @cindex renaming groups
1873 Rename the current group to something else
1874 (@code{gnus-group-rename-group}).  This is valid only on some
1875 groups---mail groups mostly.  This command might very well be quite slow
1876 on some backends.
1877
1878 @item G c
1879 @kindex G c (Group)
1880 @cindex customizing
1881 @findex gnus-group-customize
1882 Customize the group parameters (@code{gnus-group-customize}).
1883
1884 @item G e
1885 @kindex G e (Group)
1886 @findex gnus-group-edit-group-method
1887 @cindex renaming groups
1888 Enter a buffer where you can edit the select method of the current
1889 group (@code{gnus-group-edit-group-method}).
1890
1891 @item G p
1892 @kindex G p (Group)
1893 @findex gnus-group-edit-group-parameters
1894 Enter a buffer where you can edit the group parameters
1895 (@code{gnus-group-edit-group-parameters}).
1896
1897 @item G E
1898 @kindex G E (Group)
1899 @findex gnus-group-edit-group
1900 Enter a buffer where you can edit the group info
1901 (@code{gnus-group-edit-group}).
1902
1903 @item G d
1904 @kindex G d (Group)
1905 @findex gnus-group-make-directory-group
1906 @cindex nndir
1907 Make a directory group (@pxref{Directory Groups}).  You will be prompted
1908 for a directory name (@code{gnus-group-make-directory-group}).
1909
1910 @item G h
1911 @kindex G h (Group)
1912 @cindex help group
1913 @findex gnus-group-make-help-group
1914 Make the Gnus help group (@code{gnus-group-make-help-group}).
1915
1916 @item G a
1917 @kindex G a (Group)
1918 @cindex (ding) archive
1919 @cindex archive group
1920 @findex gnus-group-make-archive-group
1921 @vindex gnus-group-archive-directory
1922 @vindex gnus-group-recent-archive-directory
1923 Make a Gnus archive group (@code{gnus-group-make-archive-group}).  By
1924 default a group pointing to the most recent articles will be created
1925 (@code{gnus-group-recent-archive-directory}), but given a prefix, a full
1926 group will be created from @code{gnus-group-archive-directory}.
1927
1928 @item G k
1929 @kindex G k (Group)
1930 @findex gnus-group-make-kiboze-group
1931 @cindex nnkiboze
1932 Make a kiboze group.  You will be prompted for a name, for a regexp to
1933 match groups to be ``included'' in the kiboze group, and a series of
1934 strings to match on headers (@code{gnus-group-make-kiboze-group}).
1935 @xref{Kibozed Groups}.
1936
1937 @item G D
1938 @kindex G D (Group)
1939 @findex gnus-group-enter-directory
1940 @cindex nneething
1941 Read an arbitrary directory as if it were a newsgroup with the
1942 @code{nneething} backend (@code{gnus-group-enter-directory}).
1943 @xref{Anything Groups}.
1944
1945 @item G f
1946 @kindex G f (Group)
1947 @findex gnus-group-make-doc-group
1948 @cindex ClariNet Briefs
1949 @cindex nndoc
1950 Make a group based on some file or other
1951 (@code{gnus-group-make-doc-group}).  If you give a prefix to this
1952 command, you will be prompted for a file name and a file type.
1953 Currently supported types are @code{babyl}, @code{mbox}, @code{digest},
1954 @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs},
1955 @code{rfc934}, @code{rfc822-forward}, @code{nsmail} and @code{forward}.
1956 If you run this command without a prefix, Gnus will guess at the file
1957 type.  @xref{Document Groups}.
1958
1959 @item G u
1960 @kindex G u (Group)
1961 @vindex gnus-useful-groups
1962 @findex gnus-group-make-useful-group
1963 Create one of the groups mentioned in @code{gnus-useful-groups}
1964 (@code{gnus-group-make-useful-group}).
1965
1966 @item G w
1967 @kindex G w (Group)
1968 @findex gnus-group-make-web-group
1969 @cindex DejaNews
1970 @cindex Alta Vista
1971 @cindex InReference
1972 @cindex nnweb
1973 Make an ephemeral group based on a web search
1974 (@code{gnus-group-make-web-group}).  If you give a prefix to this
1975 command, make a solid group instead.  You will be prompted for the
1976 search engine type and the search string.  Valid search engine types
1977 include @code{dejanews}, @code{altavista} and @code{reference}.
1978 @xref{Web Searches}.
1979
1980 If you use the @code{dejanews} search engine, you can limit the search
1981 to a particular group by using a match string like
1982 @samp{~g alt.sysadmin.recovery shaving}.
1983
1984 @item G DEL
1985 @kindex G DEL (Group)
1986 @findex gnus-group-delete-group
1987 This function will delete the current group
1988 (@code{gnus-group-delete-group}).  If given a prefix, this function will
1989 actually delete all the articles in the group, and forcibly remove the
1990 group itself from the face of the Earth.  Use a prefix only if you are
1991 absolutely sure of what you are doing.  This command can't be used on
1992 read-only groups (like @code{nntp} group), though.
1993
1994 @item G V
1995 @kindex G V (Group)
1996 @findex gnus-group-make-empty-virtual
1997 Make a new, fresh, empty @code{nnvirtual} group
1998 (@code{gnus-group-make-empty-virtual}).  @xref{Virtual Groups}.
1999
2000 @item G v
2001 @kindex G v (Group)
2002 @findex gnus-group-add-to-virtual
2003 Add the current group to an @code{nnvirtual} group
2004 (@code{gnus-group-add-to-virtual}).  Uses the process/prefix convention.
2005 @end table
2006
2007 @xref{Select Methods}, for more information on the various select
2008 methods.
2009
2010 @vindex gnus-activate-foreign-newsgroups
2011 If @code{gnus-activate-foreign-newsgroups} is a positive number,
2012 Gnus will check all foreign groups with this level or lower at startup.
2013 This might take quite a while, especially if you subscribe to lots of
2014 groups from different @sc{nntp} servers.  Also @pxref{Group Levels};
2015 @code{gnus-activate-level} also affects activation of foreign
2016 newsgroups.
2017
2018
2019 @node Group Parameters
2020 @section Group Parameters
2021 @cindex group parameters
2022
2023 The group parameters store information local to a particular group.
2024 Here's an example group parameter list:
2025
2026 @example
2027 ((to-address . "ding@@gnus.org")
2028  (auto-expire . t))
2029 @end example
2030
2031 We see that each element consists of a "dotted pair"---the thing before
2032 the dot is the key, while the thing after the dot is the value.  All the
2033 parameters have this form @emph{except} local variable specs, which are
2034 not dotted pairs, but proper lists.
2035
2036 The following group parameters can be used:
2037
2038 @table @code
2039 @item to-address
2040 @cindex to-address
2041 Address used by when doing followups and new posts.
2042
2043 @example
2044 (to-address .  "some@@where.com")
2045 @end example
2046
2047 This is primarily useful in mail groups that represent closed mailing
2048 lists---mailing lists where it's expected that everybody that writes to
2049 the mailing list is subscribed to it.  Since using this parameter
2050 ensures that the mail only goes to the mailing list itself, it means
2051 that members won't receive two copies of your followups.
2052
2053 Using @code{to-address} will actually work whether the group is foreign
2054 or not.  Let's say there's a group on the server that is called
2055 @samp{fa.4ad-l}.  This is a real newsgroup, but the server has gotten
2056 the articles from a mail-to-news gateway.  Posting directly to this
2057 group is therefore impossible---you have to send mail to the mailing
2058 list address instead.
2059
2060 @item to-list
2061 @cindex to-list
2062 Address used when doing a @kbd{a} in that group.
2063
2064 @example
2065 (to-list . "some@@where.com")
2066 @end example
2067
2068 It is totally ignored
2069 when doing a followup---except that if it is present in a news group,
2070 you'll get mail group semantics when doing @kbd{f}.
2071
2072 If you do an @kbd{a} command in a mail group and you have neither a
2073 @code{to-list} group parameter nor a @code{to-address} group parameter,
2074 then a @code{to-list} group parameter will be added automatically upon
2075 sending the message if @code{gnus-add-to-list} is set to @code{t}.
2076 @vindex gnus-add-to-list
2077
2078 If you do an @kbd{a} command in a mail group and you don't have a
2079 @code{to-list} group parameter, one will be added automatically upon
2080 sending the message.
2081
2082 @item visible
2083 @cindex visible
2084 If the group parameter list has the element @code{(visible . t)},
2085 that group will always be visible in the Group buffer, regardless
2086 of whether it has any unread articles.
2087
2088 @item broken-reply-to
2089 @cindex broken-reply-to
2090 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
2091 headers in this group are to be ignored.  This can be useful if you're
2092 reading a mailing list group where the listserv has inserted
2093 @code{Reply-To} headers that point back to the listserv itself.  This is
2094 broken behavior.  So there!
2095
2096 @item to-group
2097 @cindex to-group
2098 Elements like @code{(to-group . "some.group.name")} means that all
2099 posts in that group will be sent to @code{some.group.name}.
2100
2101 @item newsgroup
2102 @cindex newsgroup
2103 If you have @code{(newsgroup . t)} in the group parameter list, Gnus
2104 will treat all responses as if they were responses to news articles.
2105 This can be useful if you have a mail group that's really a mirror of a
2106 news group.
2107
2108 @item gcc-self
2109 @cindex gcc-self
2110 If @code{(gcc-self . t)} is present in the group parameter list, newly
2111 composed messages will be @code{Gcc}'d to the current group. If
2112 @code{(gcc-self . none)} is present, no @code{Gcc:} header will be
2113 generated, if @code{(gcc-self . "string")} is present, this string will
2114 be inserted literally as a @code{gcc} header.  This parameter takes
2115 precedence over any default @code{Gcc} rules as described later
2116 (@pxref{Archived Messages}).
2117
2118 @item auto-expire
2119 @cindex auto-expire
2120 If the group parameter has an element that looks like @code{(auto-expire
2121 . t)}, all articles read will be marked as expirable.  For an
2122 alternative approach, @pxref{Expiring Mail}.
2123
2124 @item total-expire
2125 @cindex total-expire
2126 If the group parameter has an element that looks like
2127 @code{(total-expire . t)}, all read articles will be put through the
2128 expiry process, even if they are not marked as expirable.  Use with
2129 caution.  Unread, ticked and dormant articles are not eligible for
2130 expiry.
2131
2132 @item expiry-wait
2133 @cindex expiry-wait
2134 @vindex nnmail-expiry-wait-function
2135 If the group parameter has an element that looks like @code{(expiry-wait
2136 . 10)}, this value will override any @code{nnmail-expiry-wait} and
2137 @code{nnmail-expiry-wait-function} when expiring expirable messages.
2138 The value can either be a number of days (not necessarily an integer) or
2139 the symbols @code{never} or @code{immediate}.
2140
2141 @item score-file
2142 @cindex score file group parameter
2143 Elements that look like @code{(score-file . "file")} will make
2144 @file{file} into the current score file for the group in question.  All
2145 interactive score entries will be put into this file.
2146
2147 @item adapt-file
2148 @cindex adapt file group parameter
2149 Elements that look like @code{(adapt-file . "file")} will make
2150 @file{file} into the current adaptive file for the group in question.
2151 All adaptive score entries will be put into this file.
2152
2153 @item admin-address
2154 When unsubscribing from a mailing list you should never send the
2155 unsubscription notice to the mailing list itself.  Instead, you'd send
2156 messages to the administrative address.  This parameter allows you to
2157 put the admin address somewhere convenient.
2158
2159 @item display
2160 Elements that look like @code{(display . MODE)} say which articles to
2161 display on entering the group.  Valid values are:
2162
2163 @table @code
2164 @item all
2165 Display all articles, both read and unread.
2166
2167 @item default
2168 Display the default visible articles, which normally includes unread and
2169 ticked articles.
2170 @end table
2171
2172 @item comment
2173 Elements that look like @code{(comment . "This is a comment")}
2174 are arbitrary comments on the group.  They are currently ignored by
2175 Gnus, but provide a place for you to store information on particular
2176 groups.
2177
2178 @item charset
2179 Elements that look like @code{(charset . iso-8859-1)} will make
2180 @code{iso-8859-1} the default charset; that is, the charset that will be
2181 used for all articles that do not specify a charset.
2182
2183 @item (@var{variable} @var{form})
2184 You can use the group parameters to set variables local to the group you
2185 are entering.  If you want to turn threading off in @samp{news.answers},
2186 you could put @code{(gnus-show-threads nil)} in the group parameters of
2187 that group.  @code{gnus-show-threads} will be made into a local variable
2188 in the summary buffer you enter, and the form @code{nil} will be
2189 @code{eval}ed there.
2190
2191 This can also be used as a group-specific hook function, if you'd like.
2192 If you want to hear a beep when you enter a group, you could put
2193 something like @code{(dummy-variable (ding))} in the parameters of that
2194 group.  @code{dummy-variable} will be set to the result of the
2195 @code{(ding)} form, but who cares?
2196
2197 @item posting-style
2198 You can store additional posting style information for this group only
2199 here (@pxref{Posting Styles}). The format is that of an entry in the
2200 @code{gnus-posting-styles} alist, except that there's no regexp matching
2201 the group name (of course). Style elements in this group parameter will
2202 take precedence over the ones found in @code{gnus-posting-styles}.
2203
2204 For instance, if you want a funky name and signature in this group only,
2205 instead of hacking @code{gnus-posting-styles}, you could put something
2206 like this in the group parameters:
2207
2208 @example
2209 (posting-style
2210   (name "Funky Name")
2211   (signature "Funky Signature"))
2212 @end example
2213
2214 @end table
2215
2216 Use the @kbd{G p} command to edit group parameters of a group.  You
2217 might also be interested in reading about topic parameters (@pxref{Topic
2218 Parameters}).
2219
2220
2221 @node Listing Groups
2222 @section Listing Groups
2223 @cindex group listing
2224
2225 These commands all list various slices of the groups available.
2226
2227 @table @kbd
2228
2229 @item l
2230 @itemx A s
2231 @kindex A s (Group)
2232 @kindex l (Group)
2233 @findex gnus-group-list-groups
2234 List all groups that have unread articles
2235 (@code{gnus-group-list-groups}).  If the numeric prefix is used, this
2236 command will list only groups of level ARG and lower.  By default, it
2237 only lists groups of level five (i. e.,
2238 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed
2239 groups).
2240
2241 @item L
2242 @itemx A u
2243 @kindex A u (Group)
2244 @kindex L (Group)
2245 @findex gnus-group-list-all-groups
2246 List all groups, whether they have unread articles or not
2247 (@code{gnus-group-list-all-groups}).  If the numeric prefix is used,
2248 this command will list only groups of level ARG and lower.  By default,
2249 it lists groups of level seven or lower (i.e., just subscribed and
2250 unsubscribed groups).
2251
2252 @item A l
2253 @kindex A l (Group)
2254 @findex gnus-group-list-level
2255 List all unread groups on a specific level
2256 (@code{gnus-group-list-level}).  If given a prefix, also list the groups
2257 with no unread articles.
2258
2259 @item A k
2260 @kindex A k (Group)
2261 @findex gnus-group-list-killed
2262 List all killed groups (@code{gnus-group-list-killed}).  If given a
2263 prefix argument, really list all groups that are available, but aren't
2264 currently (un)subscribed.  This could entail reading the active file
2265 from the server.
2266
2267 @item A z
2268 @kindex A z (Group)
2269 @findex gnus-group-list-zombies
2270 List all zombie groups (@code{gnus-group-list-zombies}).
2271
2272 @item A m
2273 @kindex A m (Group)
2274 @findex gnus-group-list-matching
2275 List all unread, subscribed groups with names that match a regexp
2276 (@code{gnus-group-list-matching}).
2277
2278 @item A M
2279 @kindex A M (Group)
2280 @findex gnus-group-list-all-matching
2281 List groups that match a regexp (@code{gnus-group-list-all-matching}).
2282
2283 @item A A
2284 @kindex A A (Group)
2285 @findex gnus-group-list-active
2286 List absolutely all groups in the active file(s) of the
2287 server(s) you are connected to (@code{gnus-group-list-active}).  This
2288 might very well take quite a while.  It might actually be a better idea
2289 to do a @kbd{A M} to list all matching, and just give @samp{.} as the
2290 thing to match on.  Also note that this command may list groups that
2291 don't exist (yet)---these will be listed as if they were killed groups.
2292 Take the output with some grains of salt.
2293
2294 @item A a
2295 @kindex A a (Group)
2296 @findex gnus-group-apropos
2297 List all groups that have names that match a regexp
2298 (@code{gnus-group-apropos}).
2299
2300 @item A d
2301 @kindex A d (Group)
2302 @findex gnus-group-description-apropos
2303 List all groups that have names or descriptions that match a regexp
2304 (@code{gnus-group-description-apropos}).
2305
2306 @end table
2307
2308 @vindex gnus-permanently-visible-groups
2309 @cindex visible group parameter
2310 Groups that match the @code{gnus-permanently-visible-groups} regexp will
2311 always be shown, whether they have unread articles or not.  You can also
2312 add the @code{visible} element to the group parameters in question to
2313 get the same effect.
2314
2315 @vindex gnus-list-groups-with-ticked-articles
2316 Groups that have just ticked articles in it are normally listed in the
2317 group buffer.  If @code{gnus-list-groups-with-ticked-articles} is
2318 @code{nil}, these groups will be treated just like totally empty
2319 groups.  It is @code{t} by default.
2320
2321
2322 @node Sorting Groups
2323 @section Sorting Groups
2324 @cindex sorting groups
2325
2326 @kindex C-c C-s (Group)
2327 @findex gnus-group-sort-groups
2328 @vindex gnus-group-sort-function
2329 The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
2330 group buffer according to the function(s) given by the
2331 @code{gnus-group-sort-function} variable.  Available sorting functions
2332 include:
2333
2334 @table @code
2335
2336 @item gnus-group-sort-by-alphabet
2337 @findex gnus-group-sort-by-alphabet
2338 Sort the group names alphabetically.  This is the default.
2339
2340 @item gnus-group-sort-by-real-name
2341 @findex gnus-group-sort-by-real-name
2342 Sort the group alphabetically on the real (unprefixed) group names.
2343
2344 @item gnus-group-sort-by-level
2345 @findex gnus-group-sort-by-level
2346 Sort by group level.
2347
2348 @item gnus-group-sort-by-score
2349 @findex gnus-group-sort-by-score
2350 Sort by group score.  @xref{Group Score}.
2351
2352 @item gnus-group-sort-by-rank
2353 @findex gnus-group-sort-by-rank
2354 Sort by group score and then the group level.  The level and the score
2355 are, when taken together, the group's @dfn{rank}.  @xref{Group Score}.
2356
2357 @item gnus-group-sort-by-unread
2358 @findex gnus-group-sort-by-unread
2359 Sort by number of unread articles.
2360
2361 @item gnus-group-sort-by-method
2362 @findex gnus-group-sort-by-method
2363 Sort alphabetically on the select method.
2364
2365
2366 @end table
2367
2368 @code{gnus-group-sort-function} can also be a list of sorting
2369 functions.  In that case, the most significant sort key function must be
2370 the last one.
2371
2372
2373 There are also a number of commands for sorting directly according to
2374 some sorting criteria:
2375
2376 @table @kbd
2377 @item G S a
2378 @kindex G S a (Group)
2379 @findex gnus-group-sort-groups-by-alphabet
2380 Sort the group buffer alphabetically by group name
2381 (@code{gnus-group-sort-groups-by-alphabet}).
2382
2383 @item G S u
2384 @kindex G S u (Group)
2385 @findex gnus-group-sort-groups-by-unread
2386 Sort the group buffer by the number of unread articles
2387 (@code{gnus-group-sort-groups-by-unread}).
2388
2389 @item G S l
2390 @kindex G S l (Group)
2391 @findex gnus-group-sort-groups-by-level
2392 Sort the group buffer by group level
2393 (@code{gnus-group-sort-groups-by-level}).
2394
2395 @item G S v
2396 @kindex G S v (Group)
2397 @findex gnus-group-sort-groups-by-score
2398 Sort the group buffer by group score
2399 (@code{gnus-group-sort-groups-by-score}).  @xref{Group Score}.
2400
2401 @item G S r
2402 @kindex G S r (Group)
2403 @findex gnus-group-sort-groups-by-rank
2404 Sort the group buffer by group rank
2405 (@code{gnus-group-sort-groups-by-rank}).  @xref{Group Score}.
2406
2407 @item G S m
2408 @kindex G S m (Group)
2409 @findex gnus-group-sort-groups-by-method
2410 Sort the group buffer alphabetically by backend name
2411 (@code{gnus-group-sort-groups-by-method}).
2412
2413 @end table
2414
2415 All the commands below obey the process/prefix convention
2416 (@pxref{Process/Prefix}).
2417
2418 When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
2419 commands will sort in reverse order.
2420
2421 You can also sort a subset of the groups:
2422
2423 @table @kbd
2424 @item G P a
2425 @kindex G P a (Group)
2426 @findex gnus-group-sort-selected-groups-by-alphabet
2427 Sort the groups alphabetically by group name
2428 (@code{gnus-group-sort-selected-groups-by-alphabet}).
2429
2430 @item G P u
2431 @kindex G P u (Group)
2432 @findex gnus-group-sort-selected-groups-by-unread
2433 Sort the groups by the number of unread articles
2434 (@code{gnus-group-sort-selected-groups-by-unread}).
2435
2436 @item G P l
2437 @kindex G P l (Group)
2438 @findex gnus-group-sort-selected-groups-by-level
2439 Sort the groups by group level
2440 (@code{gnus-group-sort-selected-groups-by-level}).
2441
2442 @item G P v
2443 @kindex G P v (Group)
2444 @findex gnus-group-sort-selected-groups-by-score
2445 Sort the groups by group score
2446 (@code{gnus-group-sort-selected-groups-by-score}).  @xref{Group Score}.
2447
2448 @item G P r
2449 @kindex G P r (Group)
2450 @findex gnus-group-sort-selected-groups-by-rank
2451 Sort the groups by group rank
2452 (@code{gnus-group-sort-selected-groups-by-rank}).  @xref{Group Score}.
2453
2454 @item G P m
2455 @kindex G P m (Group)
2456 @findex gnus-group-sort-selected-groups-by-method
2457 Sort the groups alphabetically by backend name
2458 (@code{gnus-group-sort-selected-groups-by-method}).
2459
2460 @end table
2461
2462
2463
2464 @node Group Maintenance
2465 @section Group Maintenance
2466 @cindex bogus groups
2467
2468 @table @kbd
2469 @item b
2470 @kindex b (Group)
2471 @findex gnus-group-check-bogus-groups
2472 Find bogus groups and delete them
2473 (@code{gnus-group-check-bogus-groups}).
2474
2475 @item F
2476 @kindex F (Group)
2477 @findex gnus-group-find-new-groups
2478 Find new groups and process them (@code{gnus-group-find-new-groups}).
2479 With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
2480 for new groups.  With 2 @kbd{C-u}'s, use most complete method possible
2481 to query the server for new groups, and subscribe the new groups as
2482 zombies.
2483
2484 @item C-c C-x
2485 @kindex C-c C-x (Group)
2486 @findex gnus-group-expire-articles
2487 Run all expirable articles in the current group through the expiry
2488 process (if any) (@code{gnus-group-expire-articles}).
2489
2490 @item C-c M-C-x
2491 @kindex C-c M-C-x (Group)
2492 @findex gnus-group-expire-all-groups
2493 Run all articles in all groups through the expiry process
2494 (@code{gnus-group-expire-all-groups}).
2495
2496 @end table
2497
2498
2499 @node Browse Foreign Server
2500 @section Browse Foreign Server
2501 @cindex foreign servers
2502 @cindex browsing servers
2503
2504 @table @kbd
2505 @item B
2506 @kindex B (Group)
2507 @findex gnus-group-browse-foreign-server
2508 You will be queried for a select method and a server name.  Gnus will
2509 then attempt to contact this server and let you browse the groups there
2510 (@code{gnus-group-browse-foreign-server}).
2511 @end table
2512
2513 @findex gnus-browse-mode
2514 A new buffer with a list of available groups will appear.  This buffer
2515 will use the @code{gnus-browse-mode}.  This buffer looks a bit (well,
2516 a lot) like a normal group buffer.
2517
2518 Here's a list of keystrokes available in the browse mode:
2519
2520 @table @kbd
2521 @item n
2522 @kindex n (Browse)
2523 @findex gnus-group-next-group
2524 Go to the next group (@code{gnus-group-next-group}).
2525
2526 @item p
2527 @kindex p (Browse)
2528 @findex gnus-group-prev-group
2529 Go to the previous group (@code{gnus-group-prev-group}).
2530
2531 @item SPACE
2532 @kindex SPACE (Browse)
2533 @findex gnus-browse-read-group
2534 Enter the current group and display the first article
2535 (@code{gnus-browse-read-group}).
2536
2537 @item RET
2538 @kindex RET (Browse)
2539 @findex gnus-browse-select-group
2540 Enter the current group (@code{gnus-browse-select-group}).
2541
2542 @item u
2543 @kindex u (Browse)
2544 @findex gnus-browse-unsubscribe-current-group
2545 Unsubscribe to the current group, or, as will be the case here,
2546 subscribe to it (@code{gnus-browse-unsubscribe-current-group}).
2547
2548 @item l
2549 @itemx q
2550 @kindex q (Browse)
2551 @kindex l (Browse)
2552 @findex gnus-browse-exit
2553 Exit browse mode (@code{gnus-browse-exit}).
2554
2555 @item ?
2556 @kindex ? (Browse)
2557 @findex gnus-browse-describe-briefly
2558 Describe browse mode briefly (well, there's not much to describe, is
2559 there) (@code{gnus-browse-describe-briefly}).
2560 @end table
2561
2562
2563 @node Exiting Gnus
2564 @section Exiting Gnus
2565 @cindex exiting Gnus
2566
2567 Yes, Gnus is ex(c)iting.
2568
2569 @table @kbd
2570 @item z
2571 @kindex z (Group)
2572 @findex gnus-group-suspend
2573 Suspend Gnus (@code{gnus-group-suspend}).  This doesn't really exit Gnus,
2574 but it kills all buffers except the Group buffer.  I'm not sure why this
2575 is a gain, but then who am I to judge?
2576
2577 @item q
2578 @kindex q (Group)
2579 @findex gnus-group-exit
2580 @c @icon{gnus-group-exit}
2581 Quit Gnus (@code{gnus-group-exit}).
2582
2583 @item Q
2584 @kindex Q (Group)
2585 @findex gnus-group-quit
2586 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
2587 The dribble file will be saved, though (@pxref{Auto Save}).
2588 @end table
2589
2590 @vindex gnus-exit-gnus-hook
2591 @vindex gnus-suspend-gnus-hook
2592 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
2593 @code{gnus-exit-gnus-hook} is called when you quit Gnus, while
2594 @code{gnus-after-exiting-gnus-hook} is called as the final item when
2595 exiting Gnus.
2596
2597 @findex gnus-unload
2598 @cindex unloading
2599 If you wish to completely unload Gnus and all its adherents, you can use
2600 the @code{gnus-unload} command.  This command is also very handy when
2601 trying to customize meta-variables.
2602
2603 Note:
2604
2605 @quotation
2606 Miss Lisa Cannifax, while sitting in English class, felt her feet go
2607 numbly heavy and herself fall into a hazy trance as the boy sitting
2608 behind her drew repeated lines with his pencil across the back of her
2609 plastic chair.
2610 @end quotation
2611
2612
2613 @node Group Topics
2614 @section Group Topics
2615 @cindex topics
2616
2617 If you read lots and lots of groups, it might be convenient to group
2618 them hierarchically according to topics.  You put your Emacs groups over
2619 here, your sex groups over there, and the rest (what, two groups or so?)
2620 you put in some misc section that you never bother with anyway.  You can
2621 even group the Emacs sex groups as a sub-topic to either the Emacs
2622 groups or the sex groups---or both!  Go wild!
2623
2624 @iftex
2625 @iflatex
2626 \gnusfigure{Group Topics}{400}{
2627 \put(75,50){\epsfig{figure=tmp/group-topic.ps,height=9cm}}
2628 }
2629 @end iflatex
2630 @end iftex
2631
2632 Here's an example:
2633
2634 @example
2635 Gnus
2636   Emacs -- I wuw it!
2637      3: comp.emacs
2638      2: alt.religion.emacs
2639     Naughty Emacs
2640      452: alt.sex.emacs
2641        0: comp.talk.emacs.recovery
2642   Misc
2643      8: comp.binaries.fractals
2644     13: comp.sources.unix
2645 @end example
2646
2647 @findex gnus-topic-mode
2648 @kindex t (Group)
2649 To get this @emph{fab} functionality you simply turn on (ooh!) the
2650 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer.  (This
2651 is a toggling command.)
2652
2653 Go ahead, just try it.  I'll still be here when you get back.  La de
2654 dum...  Nice tune, that...  la la la...  What, you're back? Yes, and now
2655 press @kbd{l}.  There.  All your groups are now listed under
2656 @samp{misc}.  Doesn't that make you feel all warm and fuzzy?  Hot and
2657 bothered?
2658
2659 If you want this permanently enabled, you should add that minor mode to
2660 the hook for the group mode:
2661
2662 @lisp
2663 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
2664 @end lisp
2665
2666 @menu
2667 * Topic Variables::    How to customize the topics the Lisp Way.
2668 * Topic Commands::     Interactive E-Z commands.
2669 * Topic Sorting::      Sorting each topic individually.
2670 * Topic Topology::     A map of the world.
2671 * Topic Parameters::   Parameters that apply to all groups in a topic.
2672 @end menu
2673
2674
2675 @node Topic Variables
2676 @subsection Topic Variables
2677 @cindex topic variables
2678
2679 Now, if you select a topic, it will fold/unfold that topic, which is
2680 really neat, I think.
2681
2682 @vindex gnus-topic-line-format
2683 The topic lines themselves are created according to the
2684 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
2685 Valid elements are:
2686
2687 @table @samp
2688 @item i
2689 Indentation.
2690 @item n
2691 Topic name.
2692 @item v
2693 Visibility.
2694 @item l
2695 Level.
2696 @item g
2697 Number of groups in the topic.
2698 @item a
2699 Number of unread articles in the topic.
2700 @item A
2701 Number of unread articles in the topic and all its subtopics.
2702 @end table
2703
2704 @vindex gnus-topic-indent-level
2705 Each sub-topic (and the groups in the sub-topics) will be indented with
2706 @code{gnus-topic-indent-level} times the topic level number of spaces.
2707 The default is 2.
2708
2709 @vindex gnus-topic-mode-hook
2710 @code{gnus-topic-mode-hook} is called in topic minor mode buffers.
2711
2712 @vindex gnus-topic-display-empty-topics
2713 The @code{gnus-topic-display-empty-topics} says whether to display even
2714 topics that have no unread articles in them.  The default is @code{t}.
2715
2716
2717 @node Topic Commands
2718 @subsection Topic Commands
2719 @cindex topic commands
2720
2721 When the topic minor mode is turned on, a new @kbd{T} submap will be
2722 available.  In addition, a few of the standard keys change their
2723 definitions slightly.
2724
2725 @table @kbd
2726
2727 @item T n
2728 @kindex T n (Topic)
2729 @findex gnus-topic-create-topic
2730 Prompt for a new topic name and create it
2731 (@code{gnus-topic-create-topic}).
2732
2733 @item T m
2734 @kindex T m (Topic)
2735 @findex gnus-topic-move-group
2736 Move the current group to some other topic
2737 (@code{gnus-topic-move-group}).  This command uses the process/prefix
2738 convention (@pxref{Process/Prefix}).
2739
2740 @item T j
2741 @kindex T j (Topic)
2742 @findex gnus-topic-jump-to-topic
2743 Go to a topic (@code{gnus-topic-jump-to-topic}).  
2744
2745 @item T c
2746 @kindex T c (Topic)
2747 @findex gnus-topic-copy-group
2748 Copy the current group to some other topic
2749 (@code{gnus-topic-copy-group}).  This command uses the process/prefix
2750 convention (@pxref{Process/Prefix}).
2751
2752 @item T D
2753 @kindex T D (Topic)
2754 @findex gnus-topic-remove-group
2755 Remove a group from the current topic (@code{gnus-topic-remove-group}).
2756 This command is mainly useful if you have the same group in several
2757 topics and wish to remove it from one of the topics.  You may also
2758 remove a group from all topics, but in that case, Gnus will add it to
2759 the root topic the next time you start Gnus.  In fact, all new groups
2760 (which, naturally, don't belong to any topic) will show up in the root
2761 topic.
2762
2763 This command uses the process/prefix convention
2764 (@pxref{Process/Prefix}).
2765
2766 @item T M
2767 @kindex T M (Topic)
2768 @findex gnus-topic-move-matching
2769 Move all groups that match some regular expression to a topic
2770 (@code{gnus-topic-move-matching}).
2771
2772 @item T C
2773 @kindex T C (Topic)
2774 @findex gnus-topic-copy-matching
2775 Copy all groups that match some regular expression to a topic
2776 (@code{gnus-topic-copy-matching}).
2777
2778 @item T H
2779 @kindex T H (Topic)
2780 @findex gnus-topic-toggle-display-empty-topics
2781 Toggle hiding empty topics
2782 (@code{gnus-topic-toggle-display-empty-topics}).
2783
2784 @item T #
2785 @kindex T # (Topic)
2786 @findex gnus-topic-mark-topic
2787 Mark all groups in the current topic with the process mark
2788 (@code{gnus-topic-mark-topic}).
2789
2790 @item T M-#
2791 @kindex T M-# (Topic)
2792 @findex gnus-topic-unmark-topic
2793 Remove the process mark from all groups in the current topic
2794 (@code{gnus-topic-unmark-topic}).
2795
2796 @item T TAB
2797 @itemx TAB
2798 @kindex T TAB (Topic)
2799 @kindex TAB (Topic)
2800 @findex gnus-topic-indent
2801 ``Indent'' the current topic so that it becomes a sub-topic of the
2802 previous topic (@code{gnus-topic-indent}).  If given a prefix,
2803 ``un-indent'' the topic instead.
2804
2805 @item M-TAB
2806 @kindex M-TAB (Topic)
2807 @findex gnus-topic-unindent
2808 ``Un-indent'' the current topic so that it becomes a sub-topic of the
2809 parent of its current parent (@code{gnus-topic-unindent}).
2810
2811 @item RET
2812 @kindex RET (Topic)
2813 @findex gnus-topic-select-group
2814 @itemx SPACE
2815 Either select a group or fold a topic (@code{gnus-topic-select-group}).
2816 When you perform this command on a group, you'll enter the group, as
2817 usual.  When done on a topic line, the topic will be folded (if it was
2818 visible) or unfolded (if it was folded already).  So it's basically a
2819 toggling command on topics.  In addition, if you give a numerical
2820 prefix, group on that level (and lower) will be displayed.
2821
2822 @item C-c C-x
2823 @kindex C-c C-x (Topic)
2824 @findex gnus-topic-expire-articles
2825 Run all expirable articles in the current group or topic through the expiry
2826 process (if any) (@code{gnus-topic-expire-articles}).
2827
2828 @item C-k
2829 @kindex C-k (Topic)
2830 @findex gnus-topic-kill-group
2831 Kill a group or topic (@code{gnus-topic-kill-group}).  All groups in the
2832 topic will be removed along with the topic.
2833
2834 @item C-y
2835 @kindex C-y (Topic)
2836 @findex gnus-topic-yank-group
2837 Yank the previously killed group or topic
2838 (@code{gnus-topic-yank-group}).  Note that all topics will be yanked
2839 before all groups.
2840
2841 @item T r
2842 @kindex T r (Topic)
2843 @findex gnus-topic-rename
2844 Rename a topic (@code{gnus-topic-rename}).
2845
2846 @item T DEL
2847 @kindex T DEL (Topic)
2848 @findex gnus-topic-delete
2849 Delete an empty topic (@code{gnus-topic-delete}).
2850
2851 @item A T
2852 @kindex A T (Topic)
2853 @findex gnus-topic-list-active
2854 List all groups that Gnus knows about in a topics-ified way
2855 (@code{gnus-topic-list-active}).
2856
2857 @item G p
2858 @kindex G p (Topic)
2859 @findex gnus-topic-edit-parameters
2860 @cindex group parameters
2861 @cindex topic parameters
2862 @cindex parameters
2863 Edit the topic parameters (@code{gnus-topic-edit-parameters}).
2864 @xref{Topic Parameters}.
2865
2866 @end table
2867
2868
2869 @node Topic Sorting
2870 @subsection Topic Sorting
2871 @cindex topic sorting
2872
2873 You can sort the groups in each topic individually with the following
2874 commands:
2875
2876
2877 @table @kbd
2878 @item T S a
2879 @kindex T S a (Topic)
2880 @findex gnus-topic-sort-groups-by-alphabet
2881 Sort the current topic alphabetically by group name
2882 (@code{gnus-topic-sort-groups-by-alphabet}).
2883
2884 @item T S u
2885 @kindex T S u (Topic)
2886 @findex gnus-topic-sort-groups-by-unread
2887 Sort the current topic by the number of unread articles
2888 (@code{gnus-topic-sort-groups-by-unread}).
2889
2890 @item T S l
2891 @kindex T S l (Topic)
2892 @findex gnus-topic-sort-groups-by-level
2893 Sort the current topic by group level
2894 (@code{gnus-topic-sort-groups-by-level}).
2895
2896 @item T S v
2897 @kindex T S v (Topic)
2898 @findex gnus-topic-sort-groups-by-score
2899 Sort the current topic by group score
2900 (@code{gnus-topic-sort-groups-by-score}).  @xref{Group Score}.
2901
2902 @item T S r
2903 @kindex T S r (Topic)
2904 @findex gnus-topic-sort-groups-by-rank
2905 Sort the current topic by group rank
2906 (@code{gnus-topic-sort-groups-by-rank}).  @xref{Group Score}.
2907
2908 @item T S m
2909 @kindex T S m (Topic)
2910 @findex gnus-topic-sort-groups-by-method
2911 Sort the current topic alphabetically by backend name
2912 (@code{gnus-topic-sort-groups-by-method}).
2913
2914 @end table
2915
2916 @xref{Sorting Groups}, for more information about group sorting.
2917
2918
2919 @node Topic Topology
2920 @subsection Topic Topology
2921 @cindex topic topology
2922 @cindex topology
2923
2924 So, let's have a look at an example group buffer:
2925
2926 @example
2927 Gnus
2928   Emacs -- I wuw it!
2929      3: comp.emacs
2930      2: alt.religion.emacs
2931     Naughty Emacs
2932      452: alt.sex.emacs
2933        0: comp.talk.emacs.recovery
2934   Misc
2935      8: comp.binaries.fractals
2936     13: comp.sources.unix
2937 @end example
2938
2939 So, here we have one top-level topic (@samp{Gnus}), two topics under
2940 that, and one sub-topic under one of the sub-topics.  (There is always
2941 just one (1) top-level topic).  This topology can be expressed as
2942 follows:
2943
2944 @lisp
2945 (("Gnus" visible)
2946  (("Emacs -- I wuw it!" visible)
2947   (("Naughty Emacs" visible)))
2948  (("Misc" visible)))
2949 @end lisp
2950
2951 @vindex gnus-topic-topology
2952 This is in fact how the variable @code{gnus-topic-topology} would look
2953 for the display above.  That variable is saved in the @file{.newsrc.eld}
2954 file, and shouldn't be messed with manually---unless you really want
2955 to.  Since this variable is read from the @file{.newsrc.eld} file,
2956 setting it in any other startup files will have no effect.
2957
2958 This topology shows what topics are sub-topics of what topics (right),
2959 and which topics are visible.  Two settings are currently
2960 allowed---@code{visible} and @code{invisible}.
2961
2962
2963 @node Topic Parameters
2964 @subsection Topic Parameters
2965 @cindex topic parameters
2966
2967 All groups in a topic will inherit group parameters from the parent (and
2968 ancestor) topic parameters.  All valid group parameters are valid topic
2969 parameters (@pxref{Group Parameters}).
2970
2971 In addition, the following parameters are only valid as topic
2972 parameters:
2973
2974 @table @code
2975 @item subscribe
2976 When subscribing new groups by topic (@pxref{Subscription Methods}), the 
2977 @code{subscribe} topic parameter says what groups go in what topic.  Its 
2978 value should be a regexp to match the groups that should go in that
2979 topic. 
2980
2981 @end table
2982
2983 Group parameters (of course) override topic parameters, and topic
2984 parameters in sub-topics override topic parameters in super-topics.  You
2985 know.  Normal inheritance rules.  (@dfn{Rules} is here a noun, not a
2986 verb, although you may feel free to disagree with me here.)
2987
2988 @example
2989 Gnus
2990   Emacs
2991      3: comp.emacs
2992      2: alt.religion.emacs
2993    452: alt.sex.emacs
2994     Relief
2995      452: alt.sex.emacs
2996        0: comp.talk.emacs.recovery
2997   Misc
2998      8: comp.binaries.fractals
2999     13: comp.sources.unix
3000    452: alt.sex.emacs
3001 @end example
3002
3003 The @samp{Emacs} topic has the topic parameter @code{(score-file
3004 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
3005 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
3006 topic parameter @code{(score-file . "emacs.SCORE")}.  In addition,
3007 @* @samp{alt.religion.emacs} has the group parameter @code{(score-file
3008 . "religion.SCORE")}.
3009
3010 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
3011 will get the @file{relief.SCORE} home score file.  If you enter the same
3012 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
3013 score file.  If you enter the group @samp{alt.religion.emacs}, you'll
3014 get the @file{religion.SCORE} home score file.
3015
3016 This seems rather simple and self-evident, doesn't it?  Well, yes.  But
3017 there are some problems, especially with the @code{total-expiry}
3018 parameter.  Say you have a mail group in two topics; one with
3019 @code{total-expiry} and one without.  What happens when you do @kbd{M-x
3020 gnus-expire-all-expirable-groups}?  Gnus has no way of telling which one
3021 of these topics you mean to expire articles from, so anything may
3022 happen.  In fact, I hereby declare that it is @dfn{undefined} what
3023 happens.  You just have to be careful if you do stuff like that.
3024
3025
3026 @node Misc Group Stuff
3027 @section Misc Group Stuff
3028
3029 @menu
3030 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
3031 * Group Information::     Information and help on groups and Gnus.
3032 * Group Timestamp::       Making Gnus keep track of when you last read a group.
3033 * File Commands::         Reading and writing the Gnus files.
3034 @end menu
3035
3036 @table @kbd
3037
3038 @item ^
3039 @kindex ^ (Group)
3040 @findex gnus-group-enter-server-mode
3041 Enter the server buffer (@code{gnus-group-enter-server-mode}).
3042 @xref{The Server Buffer}.
3043
3044 @item a
3045 @kindex a (Group)
3046 @findex gnus-group-post-news
3047 Post an article to a group (@code{gnus-group-post-news}).  If given a
3048 prefix, the current group name will be used as the default.
3049
3050 @item m
3051 @kindex m (Group)
3052 @findex gnus-group-mail
3053 Mail a message somewhere (@code{gnus-group-mail}).
3054
3055 @end table
3056
3057 Variables for the group buffer:
3058
3059 @table @code
3060
3061 @item gnus-group-mode-hook
3062 @vindex gnus-group-mode-hook
3063 is called after the group buffer has been
3064 created.
3065
3066 @item gnus-group-prepare-hook
3067 @vindex gnus-group-prepare-hook
3068 is called after the group buffer is
3069 generated.  It may be used to modify the buffer in some strange,
3070 unnatural way.
3071
3072 @item gnus-group-prepared-hook
3073 @vindex gnus-group-prepare-hook
3074 is called as the very last thing after the group buffer has been
3075 generated.  It may be used to move point around, for instance.
3076
3077 @item gnus-permanently-visible-groups
3078 @vindex gnus-permanently-visible-groups
3079 Groups matching this regexp will always be listed in the group buffer,
3080 whether they are empty or not.
3081
3082 @end table
3083
3084
3085 @node Scanning New Messages
3086 @subsection Scanning New Messages
3087 @cindex new messages
3088 @cindex scanning new news
3089
3090 @table @kbd
3091
3092 @item g
3093 @kindex g (Group)
3094 @findex gnus-group-get-new-news
3095 @c @icon{gnus-group-get-new-news}
3096 Check the server(s) for new articles.  If the numerical prefix is used,
3097 this command will check only groups of level @var{arg} and lower
3098 (@code{gnus-group-get-new-news}).  If given a non-numerical prefix, this
3099 command will force a total re-reading of the active file(s) from the
3100 backend(s).
3101
3102 @item M-g
3103 @kindex M-g (Group)
3104 @findex gnus-group-get-new-news-this-group
3105 @vindex gnus-goto-next-group-when-activating
3106 @c @icon{gnus-group-get-new-news-this-group}
3107 Check whether new articles have arrived in the current group
3108 (@code{gnus-group-get-new-news-this-group}).
3109 @code{gnus-goto-next-group-when-activating} says whether this command is
3110 to move point to the next group or not.  It is @code{t} by default.
3111
3112 @findex gnus-activate-all-groups
3113 @cindex activating groups
3114 @item C-c M-g
3115 @kindex C-c M-g (Group)
3116 Activate absolutely all groups (@code{gnus-activate-all-groups}).
3117
3118 @item R
3119 @kindex R (Group)
3120 @cindex restarting
3121 @findex gnus-group-restart
3122 Restart Gnus (@code{gnus-group-restart}).  This saves the @file{.newsrc}
3123 file(s), closes the connection to all servers, clears up all run-time
3124 Gnus variables, and then starts Gnus all over again.
3125
3126 @end table
3127
3128 @vindex gnus-get-new-news-hook
3129 @code{gnus-get-new-news-hook} is run just before checking for new news.
3130
3131 @vindex gnus-after-getting-new-news-hook
3132 @code{gnus-after-getting-new-news-hook} is run after checking for new
3133 news.
3134
3135
3136 @node Group Information
3137 @subsection Group Information
3138 @cindex group information
3139 @cindex information on groups
3140
3141 @table @kbd
3142
3143
3144 @item H f
3145 @kindex H f (Group)
3146 @findex gnus-group-fetch-faq
3147 @vindex gnus-group-faq-directory
3148 @cindex FAQ
3149 @cindex ange-ftp
3150 Try to fetch the FAQ for the current group
3151 (@code{gnus-group-fetch-faq}).  Gnus will try to get the FAQ from
3152 @code{gnus-group-faq-directory}, which is usually a directory on a
3153 remote machine.  This variable can also be a list of directories.  In
3154 that case, giving a prefix to this command will allow you to choose
3155 between the various sites.  @code{ange-ftp} (or @code{efs}) will be used
3156 for fetching the file.
3157
3158 If fetching from the first site is unsuccessful, Gnus will attempt to go
3159 through @code{gnus-group-faq-directory} and try to open them one by one.
3160
3161 @item H d
3162 @itemx C-c C-d
3163 @c @icon{gnus-group-describe-group}
3164 @kindex H d (Group)
3165 @kindex C-c C-d (Group)
3166 @cindex describing groups
3167 @cindex group description
3168 @findex gnus-group-describe-group
3169 Describe the current group (@code{gnus-group-describe-group}).  If given
3170 a prefix, force Gnus to re-read the description from the server.
3171
3172 @item M-d
3173 @kindex M-d (Group)
3174 @findex gnus-group-describe-all-groups
3175 Describe all groups (@code{gnus-group-describe-all-groups}).  If given a
3176 prefix, force Gnus to re-read the description file from the server.
3177
3178 @item H v
3179 @itemx V
3180 @kindex V (Group)
3181 @kindex H v (Group)
3182 @cindex version
3183 @findex gnus-version
3184 Display current Gnus version numbers (@code{gnus-version}).
3185
3186 @item ?
3187 @kindex ? (Group)
3188 @findex gnus-group-describe-briefly
3189 Give a very short help message (@code{gnus-group-describe-briefly}).
3190
3191 @item C-c C-i
3192 @kindex C-c C-i (Group)
3193 @cindex info
3194 @cindex manual
3195 @findex gnus-info-find-node
3196 Go to the Gnus info node (@code{gnus-info-find-node}).
3197 @end table
3198
3199
3200 @node Group Timestamp
3201 @subsection Group Timestamp
3202 @cindex timestamps
3203 @cindex group timestamps
3204
3205 It can be convenient to let Gnus keep track of when you last read a
3206 group.  To set the ball rolling, you should add
3207 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
3208
3209 @lisp
3210 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
3211 @end lisp
3212
3213 After doing this, each time you enter a group, it'll be recorded.
3214
3215 This information can be displayed in various ways---the easiest is to
3216 use the @samp{%d} spec in the group line format:
3217
3218 @lisp
3219 (setq gnus-group-line-format
3220       "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
3221 @end lisp
3222
3223 This will result in lines looking like:
3224
3225 @example
3226 *        0: mail.ding                                19961002T012943
3227          0: custom                                   19961002T012713
3228 @end example
3229
3230 As you can see, the date is displayed in compact ISO 8601 format.  This
3231 may be a bit too much, so to just display the date, you could say
3232 something like:
3233
3234 @lisp
3235 (setq gnus-group-line-format
3236       "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
3237 @end lisp
3238
3239
3240 @node File Commands
3241 @subsection File Commands
3242 @cindex file commands
3243
3244 @table @kbd
3245
3246 @item r
3247 @kindex r (Group)
3248 @findex gnus-group-read-init-file
3249 @vindex gnus-init-file
3250 @cindex reading init file
3251 Re-read the init file (@code{gnus-init-file}, which defaults to
3252 @file{~/.gnus}) (@code{gnus-group-read-init-file}).
3253
3254 @item s
3255 @kindex s (Group)
3256 @findex gnus-group-save-newsrc
3257 @cindex saving .newsrc
3258 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
3259 (@code{gnus-group-save-newsrc}).  If given a prefix, force saving the
3260 file(s) whether Gnus thinks it is necessary or not.
3261
3262 @c @item Z
3263 @c @kindex Z (Group)
3264 @c @findex gnus-group-clear-dribble
3265 @c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
3266
3267 @end table
3268
3269
3270 @node The Summary Buffer
3271 @chapter The Summary Buffer
3272 @cindex summary buffer
3273
3274 A line for each article is displayed in the summary buffer.  You can
3275 move around, read articles, post articles and reply to articles.
3276
3277 The most common way to a summary buffer is to select a group from the
3278 group buffer (@pxref{Selecting a Group}).
3279
3280 You can have as many summary buffers open as you wish.
3281
3282 @menu
3283 * Summary Buffer Format::       Deciding how the summary buffer is to look.
3284 * Summary Maneuvering::         Moving around the summary buffer.
3285 * Choosing Articles::           Reading articles.
3286 * Paging the Article::          Scrolling the current article.
3287 * Reply Followup and Post::     Posting articles.
3288 * Canceling and Superseding::   ``Whoops, I shouldn't have called him that.''
3289 * Marking Articles::            Marking articles as read, expirable, etc.
3290 * Limiting::                    You can limit the summary buffer.
3291 * Threading::                   How threads are made.
3292 * Sorting::                     How articles and threads are sorted.
3293 * Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
3294 * Article Caching::             You may store articles in a cache.
3295 * Persistent Articles::         Making articles expiry-resistant.
3296 * Article Backlog::             Having already read articles hang around.
3297 * Saving Articles::             Ways of customizing article saving.
3298 * Decoding Articles::           Gnus can treat series of (uu)encoded articles.
3299 * Article Treatment::           The article buffer can be mangled at will.
3300 * MIME Commands::               Doing MIMEy things with the articles.
3301 * Charsets::                    Character set issues.
3302 * Article Commands::            Doing various things with the article buffer.
3303 * Summary Sorting::             Sorting the summary buffer in various ways.
3304 * Finding the Parent::          No child support? Get the parent.
3305 * Alternative Approaches::      Reading using non-default summaries.
3306 * Tree Display::                A more visual display of threads.
3307 * Mail Group Commands::         Some commands can only be used in mail groups.
3308 * Various Summary Stuff::       What didn't fit anywhere else.
3309 * Exiting the Summary Buffer::  Returning to the Group buffer.
3310 * Crosspost Handling::          How crossposted articles are dealt with.
3311 * Duplicate Suppression::       An alternative when crosspost handling fails.
3312 @end menu
3313
3314
3315 @node Summary Buffer Format
3316 @section Summary Buffer Format
3317 @cindex summary buffer format
3318
3319 @iftex
3320 @iflatex
3321 \gnusfigure{The Summary Buffer}{180}{
3322 \put(0,0){\epsfig{figure=tmp/summary.ps,width=7.5cm}}
3323 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=tmp/summary-article.ps,width=7.5cm}}}
3324 }
3325 @end iflatex
3326 @end iftex
3327
3328 @menu
3329 * Summary Buffer Lines::     You can specify how summary lines should look.
3330 * To From Newsgroups::       How to not display your own name.
3331 * Summary Buffer Mode Line:: You can say how the mode line should look.
3332 * Summary Highlighting::     Making the summary buffer all pretty and nice.
3333 @end menu
3334
3335 @findex mail-extract-address-components
3336 @findex gnus-extract-address-components
3337 @vindex gnus-extract-address-components
3338 Gnus will use the value of the @code{gnus-extract-address-components}
3339 variable as a function for getting the name and address parts of a
3340 @code{From} header.  Two pre-defined functions exist:
3341 @code{gnus-extract-address-components}, which is the default, quite
3342 fast, and too simplistic solution; and
3343 @code{mail-extract-address-components}, which works very nicely, but is
3344 slower.  The default function will return the wrong answer in 5% of the
3345 cases.  If this is unacceptable to you, use the other function instead:
3346
3347 @lisp
3348 (setq gnus-extract-address-components
3349       'mail-extract-address-components)
3350 @end lisp
3351
3352 @vindex gnus-summary-same-subject
3353 @code{gnus-summary-same-subject} is a string indicating that the current
3354 article has the same subject as the previous.  This string will be used
3355 with those specs that require it.  The default is @code{""}.
3356
3357
3358 @node Summary Buffer Lines
3359 @subsection Summary Buffer Lines
3360
3361 @vindex gnus-summary-line-format
3362 You can change the format of the lines in the summary buffer by changing
3363 the @code{gnus-summary-line-format} variable.  It works along the same
3364 lines as a normal @code{format} string, with some extensions
3365 (@pxref{Formatting Variables}).
3366
3367 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
3368
3369 The following format specification characters are understood:
3370
3371 @table @samp
3372 @item N
3373 Article number.
3374 @item S
3375 Subject string. List identifiers stripped, @code{gnus-list-identifies}. @xref{Article Hiding}.
3376 @item s
3377 Subject if the article is the root of the thread or the previous article
3378 had a different subject, @code{gnus-summary-same-subject} otherwise.
3379 (@code{gnus-summary-same-subject} defaults to @code{""}.)
3380 @item F
3381 Full @code{From} header.
3382 @item n
3383 The name (from the @code{From} header).
3384 @item f
3385 The name, code @code{To} header or the @code{Newsgroups} header
3386 (@pxref{To From Newsgroups}).
3387 @item a
3388 The name (from the @code{From} header).  This differs from the @code{n}
3389 spec in that it uses the function designated by the
3390 @code{gnus-extract-address-components} variable, which is slower, but
3391 may be more thorough.
3392 @item A
3393 The address (from the @code{From} header).  This works the same way as
3394 the @code{a} spec.
3395 @item L
3396 Number of lines in the article.
3397 @item c
3398 Number of characters in the article.
3399 @item I
3400 Indentation based on thread level (@pxref{Customizing Threading}).
3401 @item T
3402 Nothing if the article is a root and lots of spaces if it isn't (it
3403 pushes everything after it off the screen).
3404 @item [
3405 Opening bracket, which is normally @samp{[}, but can also be @samp{<}
3406 for adopted articles (@pxref{Customizing Threading}).
3407 @item ]
3408 Closing bracket, which is normally @samp{]}, but can also be @samp{>}
3409 for adopted articles.
3410 @item >
3411 One space for each thread level.
3412 @item <
3413 Twenty minus thread level spaces.
3414 @item U
3415 Unread.
3416
3417 @item R
3418 This misleadingly named specifier is the @dfn{secondary mark}.  This
3419 mark will say whether the article has been replied to, has been cached,
3420 or has been saved.
3421
3422 @item i
3423 Score as a number (@pxref{Scoring}).
3424 @item z
3425 @vindex gnus-summary-zcore-fuzz
3426 Zcore, @samp{+} if above the default level and @samp{-} if below the
3427 default level.  If the difference between
3428 @code{gnus-summary-default-score} and the score is less than
3429 @code{gnus-summary-zcore-fuzz}, this spec will not be used.
3430 @item V
3431 Total thread score.
3432 @item x
3433 @code{Xref}.
3434 @item D
3435 @code{Date}.
3436 @item d
3437 The @code{Date} in @code{DD-MMM} format.
3438 @item o
3439 The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format.
3440 @item M
3441 @code{Message-ID}.
3442 @item r
3443 @code{References}.
3444 @item t
3445 Number of articles in the current sub-thread.  Using this spec will slow
3446 down summary buffer generation somewhat.
3447 @item e
3448 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
3449 article has any children.
3450 @item P
3451 The line number.
3452 @item O
3453 Download mark.
3454 @item u
3455 User defined specifier.  The next character in the format string should
3456 be a letter.  Gnus will call the function
3457 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
3458 following @samp{%u}.  The function will be passed the current header as
3459 argument.  The function should return a string, which will be inserted
3460 into the summary just like information from any other summary specifier.
3461 @end table
3462
3463 The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
3464 have to be handled with care.  For reasons of efficiency, Gnus will
3465 compute what column these characters will end up in, and ``hard-code''
3466 that.  This means that it is invalid to have these specs after a
3467 variable-length spec.  Well, you might not be arrested, but your summary
3468 buffer will look strange, which is bad enough.
3469
3470 The smart choice is to have these specs as far to the left as possible.
3471 (Isn't that the case with everything, though?  But I digress.)
3472
3473 This restriction may disappear in later versions of Gnus.
3474
3475
3476 @node To From Newsgroups
3477 @subsection To From Newsgroups
3478 @cindex To
3479 @cindex Newsgroups
3480
3481 In some groups (particularly in archive groups), the @code{From} header
3482 isn't very interesting, since all the articles there are written by
3483 you.  To display the information in the @code{To} or @code{Newsgroups}
3484 headers instead, you need to decide three things: What information to
3485 gather; where to display it; and when to display it.
3486
3487 @enumerate
3488 @item
3489 @vindex gnus-extra-headers
3490 The reading of extra header information is controlled by the
3491 @code{gnus-extra-headers}.  This is a list of header symbols.  For
3492 instance:
3493
3494 @lisp
3495 (setq gnus-extra-headers
3496       '(To Newsgroups X-Newsreader))
3497 @end lisp
3498
3499 This will result in Gnus trying to obtain these three headers, and
3500 storing it in header structures for later easy retrieval.
3501
3502 @item
3503 @findex gnus-extra-header
3504 The value of these extra headers can be accessed via the
3505 @code{gnus-extra-header} function.  Here's a format line spec that will
3506 access the @code{X-Newsreader} header:
3507
3508 @example
3509 "%~(form (gnus-extra-header 'X-Newsreader))@@"
3510 @end example
3511
3512 @item
3513 @vindex gnus-ignored-from-addresses
3514 The @code{gnus-ignored-from-addresses} variable says when the @samp{%f}
3515 summary line spec returns the @code{To}, @code{Newsreader} or
3516 @code{From} header.  If this regexp matches the contents of the
3517 @code{From} header, the value of the @code{To} or @code{Newsreader}
3518 headers are used instead.
3519
3520 @end enumerate
3521
3522 @vindex nnmail-extra-headers
3523 A related variable is @code{nnmail-extra-headers}, which controls when
3524 to include extra headers when generating overview (@sc{nov}) files.  If
3525 you have old overview files, you should regenerate them after changing
3526 this variable.
3527
3528 @vindex gnus-summary-line-format
3529 You also have to instruct Gnus to display the data by changing the
3530 @code{%n} spec to the @code{%f} spec in the
3531 @code{gnus-summary-line-format} variable.
3532
3533 In summary, you'd typically do something like the following:
3534
3535 @lisp
3536 (setq gnus-extra-headers
3537       '(To Newsgroups))
3538 (setq nnmail-extra-headers gnus-extra-headers)
3539 (setq gnus-summary-line-format
3540       "%U%R%z%I%(%[%4L: %-20,20f%]%) %s\n")
3541 (setq gnus-ignored-from-addresses
3542       "Your Name Here")
3543 @end lisp
3544
3545 Now, this is mostly useful for mail groups, where you have control over
3546 the @sc{nov} files that are created.  However, if you can persuade your
3547 nntp admin to add:
3548
3549 @example
3550 Newsgroups:full
3551 @end example
3552
3553 to the end of her @file{overview.fmt} file, then you can use that just
3554 as you would the extra headers from the mail groups.
3555
3556
3557 @node Summary Buffer Mode Line
3558 @subsection Summary Buffer Mode Line
3559
3560 @vindex gnus-summary-mode-line-format
3561 You can also change the format of the summary mode bar (@pxref{Mode Line
3562 Formatting}).  Set @code{gnus-summary-mode-line-format} to whatever you
3563 like.  The default is @samp{Gnus: %%b [%A] %Z}.
3564
3565 Here are the elements you can play with:
3566
3567 @table @samp
3568 @item G
3569 Group name.
3570 @item p
3571 Unprefixed group name.
3572 @item A
3573 Current article number.
3574 @item z
3575 Current article score.
3576 @item V
3577 Gnus version.
3578 @item U
3579 Number of unread articles in this group.
3580 @item e
3581 Number of unread articles in this group that aren't displayed in the
3582 summary buffer.
3583 @item Z
3584 A string with the number of unread and unselected articles represented
3585 either as @samp{<%U(+%e) more>} if there are both unread and unselected
3586 articles, and just as @samp{<%U more>} if there are just unread articles
3587 and no unselected ones.
3588 @item g
3589 Shortish group name.  For instance, @samp{rec.arts.anime} will be
3590 shortened to @samp{r.a.anime}.
3591 @item S
3592 Subject of the current article.
3593 @item u
3594 User-defined spec (@pxref{User-Defined Specs}).
3595 @item s
3596 Name of the current score file (@pxref{Scoring}).
3597 @item d
3598 Number of dormant articles (@pxref{Unread Articles}).
3599 @item t
3600 Number of ticked articles (@pxref{Unread Articles}).
3601 @item r
3602 Number of articles that have been marked as read in this session.
3603 @item E
3604 Number of articles expunged by the score files.
3605 @end table
3606
3607
3608 @node Summary Highlighting
3609 @subsection Summary Highlighting
3610
3611 @table @code
3612
3613 @item gnus-visual-mark-article-hook
3614 @vindex gnus-visual-mark-article-hook
3615 This hook is run after selecting an article.  It is meant to be used for
3616 highlighting the article in some way.  It is not run if
3617 @code{gnus-visual} is @code{nil}.
3618
3619 @item gnus-summary-update-hook
3620 @vindex gnus-summary-update-hook
3621 This hook is called when a summary line is changed.  It is not run if
3622 @code{gnus-visual} is @code{nil}.
3623
3624 @item gnus-summary-selected-face
3625 @vindex gnus-summary-selected-face
3626 This is the face (or @dfn{font} as some people call it) used to
3627 highlight the current article in the summary buffer.
3628
3629 @item gnus-summary-highlight
3630 @vindex gnus-summary-highlight
3631 Summary lines are highlighted according to this variable, which is a
3632 list where the elements are of the format @code{(@var{form}
3633 . @var{face})}.  If you would, for instance, like ticked articles to be
3634 italic and high-scored articles to be bold, you could set this variable
3635 to something like
3636 @lisp
3637 (((eq mark gnus-ticked-mark) . italic)
3638  ((> score default) . bold))
3639 @end lisp
3640 As you may have guessed, if @var{form} returns a non-@code{nil} value,
3641 @var{face} will be applied to the line.
3642 @end table
3643
3644
3645 @node Summary Maneuvering
3646 @section Summary Maneuvering
3647 @cindex summary movement
3648
3649 All the straight movement commands understand the numeric prefix and
3650 behave pretty much as you'd expect.
3651
3652 None of these commands select articles.
3653
3654 @table @kbd
3655 @item G M-n
3656 @itemx M-n
3657 @kindex M-n (Summary)
3658 @kindex G M-n (Summary)
3659 @findex gnus-summary-next-unread-subject
3660 Go to the next summary line of an unread article
3661 (@code{gnus-summary-next-unread-subject}).
3662
3663 @item G M-p
3664 @itemx M-p
3665 @kindex M-p (Summary)
3666 @kindex G M-p (Summary)
3667 @findex gnus-summary-prev-unread-subject
3668 Go to the previous summary line of an unread article
3669 (@code{gnus-summary-prev-unread-subject}).
3670
3671 @item G j
3672 @itemx j
3673 @kindex j (Summary)
3674 @kindex G j (Summary)
3675 @findex gnus-summary-goto-article
3676 Ask for an article number or @code{Message-ID}, and then go to that
3677 article (@code{gnus-summary-goto-article}).
3678
3679 @item G g
3680 @kindex G g (Summary)
3681 @findex gnus-summary-goto-subject
3682 Ask for an article number and then go to the summary line of that article
3683 without displaying the article (@code{gnus-summary-goto-subject}).
3684 @end table
3685
3686 If Gnus asks you to press a key to confirm going to the next group, you
3687 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
3688 buffer, searching for the next group to read without actually returning
3689 to the group buffer.
3690
3691 Variables related to summary movement:
3692
3693 @table @code
3694
3695 @vindex gnus-auto-select-next
3696 @item gnus-auto-select-next
3697 If you issue one of the movement commands (like @kbd{n}) and there are
3698 no more unread articles after the current one, Gnus will offer to go to
3699 the next group.  If this variable is @code{t} and the next group is
3700 empty, Gnus will exit summary mode and return to the group buffer.  If
3701 this variable is neither @code{t} nor @code{nil}, Gnus will select the
3702 next group, no matter whether it has any unread articles or not.  As a
3703 special case, if this variable is @code{quietly}, Gnus will select the
3704 next group without asking for confirmation.  If this variable is
3705 @code{almost-quietly}, the same will happen only if you are located on
3706 the last article in the group.  Finally, if this variable is
3707 @code{slightly-quietly}, the @kbd{Z n} command will go to the next group
3708 without confirmation.  Also @pxref{Group Levels}.
3709
3710 @item gnus-auto-select-same
3711 @vindex gnus-auto-select-same
3712 If non-@code{nil}, all the movement commands will try to go to the next
3713 article with the same subject as the current.  (@dfn{Same} here might
3714 mean @dfn{roughly equal}.  See @code{gnus-summary-gather-subject-limit}
3715 for details (@pxref{Customizing Threading}).)  If there are no more
3716 articles with the same subject, go to the first unread article.
3717
3718 This variable is not particularly useful if you use a threaded display.
3719
3720 @item gnus-summary-check-current
3721 @vindex gnus-summary-check-current
3722 If non-@code{nil}, all the ``unread'' movement commands will not proceed
3723 to the next (or previous) article if the current article is unread.
3724 Instead, they will choose the current article.
3725
3726 @item gnus-auto-center-summary
3727 @vindex gnus-auto-center-summary
3728 If non-@code{nil}, Gnus will keep the point in the summary buffer
3729 centered at all times.  This makes things quite tidy, but if you have a
3730 slow network connection, or simply do not like this un-Emacsism, you can
3731 set this variable to @code{nil} to get the normal Emacs scrolling
3732 action.  This will also inhibit horizontal re-centering of the summary
3733 buffer, which might make it more inconvenient to read extremely long
3734 threads.
3735
3736 This variable can also be a number.  In that case, center the window at
3737 the given number of lines from the top.
3738
3739 @end table
3740
3741
3742 @node Choosing Articles
3743 @section Choosing Articles
3744 @cindex selecting articles
3745
3746 @menu
3747 * Choosing Commands::        Commands for choosing articles.
3748 * Choosing Variables::       Variables that influence these commands.
3749 @end menu
3750
3751
3752 @node Choosing Commands
3753 @subsection Choosing Commands
3754
3755 None of the following movement commands understand the numeric prefix,
3756 and they all select and display an article.
3757
3758 @table @kbd
3759 @item SPACE
3760 @kindex SPACE (Summary)
3761 @findex gnus-summary-next-page
3762 Select the current article, or, if that one's read already, the next
3763 unread article (@code{gnus-summary-next-page}).
3764
3765 @item G n
3766 @itemx n
3767 @kindex n (Summary)
3768 @kindex G n (Summary)
3769 @findex gnus-summary-next-unread-article
3770 @c @icon{gnus-summary-next-unread}
3771 Go to next unread article (@code{gnus-summary-next-unread-article}).
3772
3773 @item G p
3774 @itemx p
3775 @kindex p (Summary)
3776 @findex gnus-summary-prev-unread-article
3777 @c @icon{gnus-summary-prev-unread}
3778 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
3779
3780 @item G N
3781 @itemx N
3782 @kindex N (Summary)
3783 @kindex G N (Summary)
3784 @findex gnus-summary-next-article
3785 Go to the next article (@code{gnus-summary-next-article}).
3786
3787 @item G P
3788 @itemx P
3789 @kindex P (Summary)
3790 @kindex G P (Summary)
3791 @findex gnus-summary-prev-article
3792 Go to the previous article (@code{gnus-summary-prev-article}).
3793
3794 @item G C-n
3795 @kindex G C-n (Summary)
3796 @findex gnus-summary-next-same-subject
3797 Go to the next article with the same subject
3798 (@code{gnus-summary-next-same-subject}).
3799
3800 @item G C-p
3801 @kindex G C-p (Summary)
3802 @findex gnus-summary-prev-same-subject
3803 Go to the previous article with the same subject
3804 (@code{gnus-summary-prev-same-subject}).
3805
3806 @item G f
3807 @itemx .
3808 @kindex G f  (Summary)
3809 @kindex .  (Summary)
3810 @findex gnus-summary-first-unread-article
3811 Go to the first unread article
3812 (@code{gnus-summary-first-unread-article}).
3813
3814 @item G b
3815 @itemx ,
3816 @kindex G b (Summary)
3817 @kindex , (Summary)
3818 @findex gnus-summary-best-unread-article
3819 Go to the article with the highest score
3820 (@code{gnus-summary-best-unread-article}).
3821
3822 @item G l
3823 @itemx l
3824 @kindex l (Summary)
3825 @kindex G l (Summary)
3826 @findex gnus-summary-goto-last-article
3827 Go to the previous article read (@code{gnus-summary-goto-last-article}).
3828
3829 @item G o
3830 @kindex G o (Summary)
3831 @findex gnus-summary-pop-article
3832 @cindex history
3833 @cindex article history
3834 Pop an article off the summary history and go to this article
3835 (@code{gnus-summary-pop-article}).  This command differs from the
3836 command above in that you can pop as many previous articles off the
3837 history as you like, while @kbd{l} toggles the two last read articles.
3838 For a somewhat related issue (if you use these commands a lot),
3839 @pxref{Article Backlog}.
3840 @end table
3841
3842
3843 @node Choosing Variables
3844 @subsection Choosing Variables
3845
3846 Some variables relevant for moving and selecting articles:
3847
3848 @table @code
3849 @item gnus-auto-extend-newsgroup
3850 @vindex gnus-auto-extend-newsgroup
3851 All the movement commands will try to go to the previous (or next)
3852 article, even if that article isn't displayed in the Summary buffer if
3853 this variable is non-@code{nil}.  Gnus will then fetch the article from
3854 the server and display it in the article buffer.
3855
3856 @item gnus-select-article-hook
3857 @vindex gnus-select-article-hook
3858 This hook is called whenever an article is selected.  By default it
3859 exposes any threads hidden under the selected article.
3860
3861 @item gnus-mark-article-hook
3862 @vindex gnus-mark-article-hook
3863 @findex gnus-summary-mark-unread-as-read
3864 @findex gnus-summary-mark-read-and-unread-as-read
3865 @findex gnus-unread-mark
3866 This hook is called whenever an article is selected.  It is intended to
3867 be used for marking articles as read.  The default value is
3868 @code{gnus-summary-mark-read-and-unread-as-read}, and will change the
3869 mark of almost any article you read to @code{gnus-unread-mark}.  The
3870 only articles not affected by this function are ticked, dormant, and
3871 expirable articles.  If you'd instead like to just have unread articles
3872 marked as read, you can use @code{gnus-summary-mark-unread-as-read}
3873 instead.  It will leave marks like @code{gnus-low-score-mark},
3874 @code{gnus-del-mark} (and so on) alone.
3875
3876 @end table
3877
3878
3879 @node Paging the Article
3880 @section Scrolling the Article
3881 @cindex article scrolling
3882
3883 @table @kbd
3884
3885 @item SPACE
3886 @kindex SPACE (Summary)
3887 @findex gnus-summary-next-page
3888 Pressing @kbd{SPACE} will scroll the current article forward one page,
3889 or, if you have come to the end of the current article, will choose the
3890 next article (@code{gnus-summary-next-page}).
3891
3892 @item DEL
3893 @kindex DEL (Summary)
3894 @findex gnus-summary-prev-page
3895 Scroll the current article back one page (@code{gnus-summary-prev-page}).
3896
3897 @item RET
3898 @kindex RET (Summary)
3899 @findex gnus-summary-scroll-up
3900 Scroll the current article one line forward
3901 (@code{gnus-summary-scroll-up}).
3902
3903 @item M-RET
3904 @kindex M-RET (Summary)
3905 @findex gnus-summary-scroll-down
3906 Scroll the current article one line backward
3907 (@code{gnus-summary-scroll-down}).
3908
3909 @item A g
3910 @itemx g
3911 @kindex A g (Summary)
3912 @kindex g (Summary)
3913 @findex gnus-summary-show-article
3914 (Re)fetch the current article (@code{gnus-summary-show-article}).  If
3915 given a prefix, fetch the current article, but don't run any of the
3916 article treatment functions.  This will give you a ``raw'' article, just
3917 the way it came from the server.
3918
3919 @item A <
3920 @itemx <
3921 @kindex < (Summary)
3922 @kindex A < (Summary)
3923 @findex gnus-summary-beginning-of-article
3924 Scroll to the beginning of the article
3925 (@code{gnus-summary-beginning-of-article}).
3926
3927 @item A >
3928 @itemx >
3929 @kindex > (Summary)
3930 @kindex A > (Summary)
3931 @findex gnus-summary-end-of-article
3932 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
3933
3934 @item A s
3935 @itemx s
3936 @kindex A s (Summary)
3937 @kindex s (Summary)
3938 @findex gnus-summary-isearch-article
3939 Perform an isearch in the article buffer
3940 (@code{gnus-summary-isearch-article}).