c767e11404658c5d10fcc3530fa885d4a8514b96
[gnus] / texi / gnus.texi
1 \input texinfo                  @c -*-texinfo-*-
2
3 @setfilename gnus
4 @settitle Gnus 5.4.56 Manual
5 @synindex fn cp
6 @synindex vr cp
7 @synindex pg cp
8 @iftex
9 @finalout
10 @end iftex
11 @setchapternewpage odd
12
13 @iftex
14 @iflatex
15 \documentclass[twoside,a4paper,openright]{book}
16 \usepackage[latin1]{inputenc}
17 \usepackage{pagestyle}
18 \usepackage{epsfig}
19 \fontfamily{bembo}\selectfont
20
21 \makeindex
22 \begin{document}
23
24 \newcommand{\gnuschaptername}{}
25 \newcommand{\gnussectionname}{}
26
27 \newcommand{\gnusbackslash}{/}
28
29 \newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}}
30 \newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}}
31
32 \newcommand{\gnuskindex}[1]{\index{#1}}
33 \newcommand{\gnusindex}[1]{\index{#1}}
34
35 \newcommand{\gnustt}[1]{{\textbf{\textsf{#1}}}}
36 \newcommand{\gnuscode}[1]{\gnustt{#1}}
37 \newcommand{\gnussamp}[1]{``\gnustt{#1}''}
38 \newcommand{\gnuslisp}[1]{\gnustt{#1}}
39 \newcommand{\gnuskbd}[1]{`\gnustt{#1}'}
40 \newcommand{\gnusfile}[1]{`\gnustt{#1}'}
41 \newcommand{\gnusdfn}[1]{\textit{#1}}
42 \newcommand{\gnusi}[1]{\textit{#1}}
43 \newcommand{\gnusstrong}[1]{\textbf{#1}}
44 \newcommand{\gnusemph}[1]{\textit{#1}}
45 \newcommand{\gnusvar}[1]{\textsl{\textsf{#1}}}
46 \newcommand{\gnussc}[1]{\textsc{#1}}
47 \newcommand{\gnustitle}[1]{{\huge\textbf{#1}}}
48 \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}}
49
50 \newcommand{\gnusbullet}{{${\bullet}$}}
51 \newcommand{\gnusdollar}{\$}
52 \newcommand{\gnusampersand}{\&}
53 \newcommand{\gnuspercent}{\%}
54 \newcommand{\gnushash}{\#}
55 \newcommand{\gnushat}{\symbol{"5E}}
56 \newcommand{\gnusunderline}{\symbol{"5F}}
57 \newcommand{\gnusnot}{$\neg$}
58 \newcommand{\gnustilde}{\symbol{"7E}}
59 \newcommand{\gnusless}{{$<$}}
60 \newcommand{\gnusgreater}{{$>$}}
61
62 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}}
63 \newcommand{\gnusinteresting}{
64 \marginpar[\hspace{2.5cm}\gnushead]{\gnushead}
65 }
66
67 \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi}
68
69 \newcommand{\gnuspagechapter}[1]{
70 {\mbox{}}
71 }
72
73 \newdimen{\gnusdimen}
74 \gnusdimen 0pt
75
76 \newcommand{\gnuschapter}[2]{
77 \gnuscleardoublepage
78 \ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi
79 \chapter{#2}
80 \renewcommand{\gnussectionname}{}
81 \renewcommand{\gnuschaptername}{#2}
82 \thispagestyle{empty}
83 \hspace*{-2cm}
84 \begin{picture}(500,500)(0,0)
85 \put(0,0){\makebox(480,350)[tr]{#1}}
86 \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}}
87 \end{picture}
88 \clearpage
89 }
90
91 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
92
93 \newcommand{\gnussection}[1]{
94 \renewcommand{\gnussectionname}{#1}
95 \section{#1}
96 }
97
98 \newenvironment{codelist}%
99 {\begin{list}{}{
100 }
101 }{\end{list}}
102
103 \newenvironment{kbdlist}%
104 {\begin{list}{}{
105 \labelwidth=0cm
106 }
107 }{\end{list}}
108
109 \newenvironment{dfnlist}%
110 {\begin{list}{}{
111 }
112 }{\end{list}}
113
114 \newenvironment{stronglist}%
115 {\begin{list}{}{
116 }
117 }{\end{list}}
118
119 \newenvironment{samplist}%
120 {\begin{list}{}{
121 }
122 }{\end{list}}
123
124 \newenvironment{varlist}%
125 {\begin{list}{}{
126 }
127 }{\end{list}}
128
129 \newenvironment{emphlist}%
130 {\begin{list}{}{
131 }
132 }{\end{list}}
133
134 \newlength\gnusheadtextwidth
135 \setlength{\gnusheadtextwidth}{\headtextwidth}
136 \addtolength{\gnusheadtextwidth}{1cm}
137
138 \newpagestyle{gnuspreamble}%
139 {
140 {
141 \ifodd\count0
142 {
143 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}}
144 }
145 \else
146 {
147 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}}
148 }
149 }
150 \fi
151 }
152 }
153 {
154 \ifodd\count0
155 \mbox{} \hfill 
156 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
157 \else
158 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
159 \hfill \mbox{}
160 \fi
161 }
162
163 \newpagestyle{gnusindex}%
164 {
165 {
166 \ifodd\count0
167 {
168 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}}
169 }
170 \else
171 {
172 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
173 }
174 \fi
175 }
176 }
177 {
178 \ifodd\count0
179 \mbox{} \hfill 
180 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
181 \else
182 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
183 \hfill \mbox{}
184 \fi
185 }
186
187 \newpagestyle{gnus}%
188 {
189 {
190 \ifodd\count0
191 {
192 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}
193 }
194 \else
195 {
196 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
197 }
198 \fi
199 }
200 }
201 {
202 \ifodd\count0
203 \mbox{} \hfill 
204 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
205 \else
206 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
207 \hfill \mbox{}
208 \fi
209 }
210
211 \pagenumbering{roman}
212 \pagestyle{gnuspreamble}
213
214 @end iflatex
215 @end iftex
216
217 @iftex
218 @iflatex
219 \begin{titlepage}
220 {
221
222 %\addtolength{\oddsidemargin}{-5cm}
223 %\addtolength{\evensidemargin}{-5cm}
224 \parindent=0cm
225 \addtolength{\textheight}{2cm}
226
227 \gnustitle{\gnustitlename}\\
228 \rule{15cm}{1mm}\\
229 \vfill
230 \hspace*{-1cm}\epsfig{figure=gnus-big-logo.eps,height=15cm}
231 \vfill
232 \rule{15cm}{1mm}\\
233 \gnusauthor{by Lars Magne Ingebrigtsen}
234 \newpage
235 }
236
237 \mbox{}
238 \vfill
239
240 \thispagestyle{empty}
241
242 Copyright \copyright{} 1995,96 Free Software Foundation, Inc. 
243
244 Permission is granted to make and distribute verbatim copies of
245 this manual provided the copyright notice and this permission notice
246 are preserved on all copies.
247
248 Permission is granted to copy and distribute modified versions of this
249 manual under the conditions for verbatim copying, provided that the
250 entire resulting derived work is distributed under the terms of a
251 permission notice identical to this one.
252
253 Permission is granted to copy and distribute translations of this manual
254 into another language, under the above conditions for modified versions.
255
256 \newpage
257 \end{titlepage}
258 @end iflatex
259 @end iftex
260
261 @ifinfo
262
263 This file documents Gnus, the GNU Emacs newsreader.
264
265 Copyright (C) 1995,96 Free Software Foundation, Inc.
266
267 Permission is granted to make and distribute verbatim copies of
268 this manual provided the copyright notice and this permission notice
269 are preserved on all copies.
270
271 @ignore
272 Permission is granted to process this file through Tex and print the
273 results, provided the printed document carries copying permission
274 notice identical to this one except for the removal of this paragraph
275 (this paragraph not being relevant to the printed manual).
276
277 @end ignore
278 Permission is granted to copy and distribute modified versions of this
279 manual under the conditions for verbatim copying, provided also that the
280 entire resulting derived work is distributed under the terms of a
281 permission notice identical to this one.
282
283 Permission is granted to copy and distribute translations of this manual
284 into another language, under the above conditions for modified versions.
285 @end ifinfo
286
287 @tex
288
289 @titlepage
290 @title Gnus 5.4.56 Manual
291
292 @author by Lars Magne Ingebrigtsen
293 @page
294
295 @vskip 0pt plus 1filll
296 Copyright @copyright{} 1995,96,97 Free Software Foundation, Inc. 
297
298 Permission is granted to make and distribute verbatim copies of
299 this manual provided the copyright notice and this permission notice
300 are preserved on all copies.
301
302 Permission is granted to copy and distribute modified versions of this
303 manual under the conditions for verbatim copying, provided that the
304 entire resulting derived work is distributed under the terms of a
305 permission notice identical to this one.
306
307 Permission is granted to copy and distribute translations of this manual
308 into another language, under the above conditions for modified versions.
309
310 @end titlepage
311 @page
312
313 @end tex
314
315
316 @node Top
317 @top The Gnus Newsreader
318
319 @ifinfo
320
321 You can read news (and mail) from within Emacs by using Gnus.  The news
322 can be gotten by any nefarious means you can think of---@sc{nntp}, local
323 spool or your mbox file.  All at the same time, if you want to push your
324 luck.
325
326 This manual corresponds to Gnus 5.4.56.
327
328 @end ifinfo
329
330 @iftex
331
332 @iflatex
333 \tableofcontents
334 \gnuscleardoublepage
335 @end iflatex
336
337 Gnus is the advanced, self-documenting, customizable, extensible
338 unreal-time newsreader for GNU Emacs.  
339
340 Oops.  That sounds oddly familiar, so let's start over again to avoid
341 being accused of plagiarism:
342
343 Gnus is a message-reading laboratory.  It will let you look at just
344 about anything as if it were a newsgroup.  You can read mail with it,
345 you can browse directories with it, you can @code{ftp} with it---you can
346 even read news with it!
347
348 Gnus tries to empower people who read news the same way Emacs empowers
349 people who edit text.  Gnus sets no limits to what the user should be
350 allowed to do.  Users are encouraged to extend Gnus to make it behave
351 like they want it to behave.  A program should not control people;
352 people should be empowered to do what they want by using (or abusing)
353 the program.
354
355 @end iftex
356
357
358 @menu
359 * Starting Up::           Finding news can be a pain.
360 * The Group Buffer::      Selecting, subscribing and killing groups.
361 * The Summary Buffer::    Reading, saving and posting articles.
362 * The Article Buffer::    Displaying and handling articles.
363 * Composing Messages::    Information on sending mail and news.
364 * Select Methods::        Gnus reads all messages from various select methods.
365 * Scoring::               Assigning values to articles.
366 * Various::               General purpose settings.
367 * The End::               Farewell and goodbye.
368 * Appendices::            Terminology, Emacs intro, FAQ, History, Internals.
369 * Index::                 Variable, function and concept index.
370 * Key Index::             Key Index.
371 @end menu
372
373 @node Starting Up
374 @chapter Starting Gnus
375 @cindex starting up
376
377 @kindex M-x gnus
378 @findex gnus
379 If your system administrator has set things up properly, starting Gnus
380 and reading news is extremely easy---you just type @kbd{M-x gnus} in
381 your Emacs. 
382
383 @findex gnus-other-frame
384 @kindex M-x gnus-other-frame
385 If you want to start Gnus in a different frame, you can use the command
386 @kbd{M-x gnus-other-frame} instead.
387
388 If things do not go smoothly at startup, you have to twiddle some
389 variables. 
390
391 @menu
392 * Finding the News::    Choosing a method for getting news.
393 * The First Time::      What does Gnus do the first time you start it?
394 * The Server is Down::  How can I read my mail then?
395 * Slave Gnusae::        You can have more than one Gnus active at a time.
396 * Fetching a Group::    Starting Gnus just to read a group.
397 * New Groups::          What is Gnus supposed to do with new groups?
398 * Startup Files::       Those pesky startup files---@file{.newsrc}.
399 * Auto Save::           Recovering from a crash.
400 * The Active File::     Reading the active file over a slow line Takes Time.
401 * Changing Servers::    You may want to move from one server to another.
402 * Startup Variables::   Other variables you might change.
403 @end menu
404
405
406 @node Finding the News
407 @section Finding the News
408 @cindex finding news
409
410 @vindex gnus-select-method
411 @c @head
412 The @code{gnus-select-method} variable says where Gnus should look for
413 news.  This variable should be a list where the first element says
414 @dfn{how} and the second element says @dfn{where}.  This method is your
415 native method.  All groups that are not fetched with this method are
416 foreign groups.
417
418 For instance, if the @samp{news.somewhere.edu} @sc{nntp} server is where
419 you want to get your daily dosage of news from, you'd say:
420
421 @lisp
422 (setq gnus-select-method '(nntp "news.somewhere.edu"))
423 @end lisp
424
425 If you want to read directly from the local spool, say:
426
427 @lisp
428 (setq gnus-select-method '(nnspool ""))
429 @end lisp
430
431 If you can use a local spool, you probably should, as it will almost
432 certainly be much faster.
433
434 @vindex gnus-nntpserver-file
435 @cindex NNTPSERVER
436 @cindex @sc{nntp} server
437 If this variable is not set, Gnus will take a look at the
438 @code{NNTPSERVER} environment variable.  If that variable isn't set,
439 Gnus will see whether @code{gnus-nntpserver-file}
440 (@file{/etc/nntpserver} by default) has any opinions on the matter.  If
441 that fails as well, Gnus will will try to use the machine that is
442 running Emacs as an @sc{nntp} server.  That's a long shot, though.
443
444 @vindex gnus-nntp-server
445 If @code{gnus-nntp-server} is set, this variable will override
446 @code{gnus-select-method}.  You should therefore set
447 @code{gnus-nntp-server} to @code{nil}, which is what it is by default.
448
449 @vindex gnus-secondary-servers
450 You can also make Gnus prompt you interactively for the name of an
451 @sc{nntp} server.  If you give a non-numerical prefix to @code{gnus}
452 (i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
453 in the @code{gnus-secondary-servers} list (if any).  You can also just
454 type in the name of any server you feel like visiting.
455
456 @findex gnus-group-browse-foreign-server
457 @kindex B (Group)
458 However, if you use one @sc{nntp} server regularly and are just
459 interested in a couple of groups from a different server, you would be
460 better served by using the @kbd{B} command in the group buffer.  It will
461 let you have a look at what groups are available, and you can subscribe
462 to any of the groups you want to.  This also makes @file{.newsrc}
463 maintenance much tidier.  @xref{Foreign Groups}.
464
465 @vindex gnus-secondary-select-methods
466 @c @head
467 A slightly different approach to foreign groups is to set the
468 @code{gnus-secondary-select-methods} variable.  The select methods
469 listed in this variable are in many ways just as native as the
470 @code{gnus-select-method} server.  They will also be queried for active
471 files during startup (if that's required), and new newsgroups that
472 appear on these servers will be subscribed (or not) just as native
473 groups are.
474
475 For instance, if you use the @code{nnmbox} backend to read your mail, you
476 would typically set this variable to
477
478 @lisp
479 (setq gnus-secondary-select-methods '((nnmbox "")))
480 @end lisp
481
482
483 @node The First Time
484 @section The First Time
485 @cindex first time usage
486
487 If no startup files exist, Gnus will try to determine what groups should
488 be subscribed by default.
489
490 @vindex gnus-default-subscribed-newsgroups
491 If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
492 will subscribe you to just those groups in that list, leaving the rest
493 killed.  Your system administrator should have set this variable to
494 something useful.
495
496 Since she hasn't, Gnus will just subscribe you to a few arbitrarily
497 picked groups (i.e., @samp{*.newusers}).  (@dfn{Arbitrary} is here
498 defined as @dfn{whatever Lars thinks you should read}.)
499
500 You'll also be subscribed to the Gnus documentation group, which should
501 help you with most common problems.  
502
503 If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
504 use the normal functions for handling new groups, and not do anything
505 special.
506
507
508 @node The Server is Down
509 @section The Server is Down
510 @cindex server errors
511
512 If the default server is down, Gnus will understandably have some
513 problems starting.  However, if you have some mail groups in addition to
514 the news groups, you may want to start Gnus anyway.
515
516 Gnus, being the trusting sort of program, will ask whether to proceed
517 without a native select method if that server can't be contacted.  This
518 will happen whether the server doesn't actually exist (i.e., you have
519 given the wrong address) or the server has just momentarily taken ill
520 for some reason or other.  If you decide to continue and have no foreign
521 groups, you'll find it difficult to actually do anything in the group
522 buffer.  But, hey, that's your problem.  Blllrph!
523
524 @findex gnus-no-server
525 @kindex M-x gnus-no-server
526 @c @head
527 If you know that the server is definitely down, or you just want to read
528 your mail without bothering with the server at all, you can use the
529 @code{gnus-no-server} command to start Gnus.  That might come in handy
530 if you're in a hurry as well.  This command will not attempt to contact
531 your primary server---instead, it will just activate all groups on level
532 1 and 2.  (You should preferably keep no native groups on those two
533 levels.)
534
535
536 @node Slave Gnusae
537 @section Slave Gnusae
538 @cindex slave
539
540 You might want to run more than one Emacs with more than one Gnus at the
541 same time.  If you are using different @file{.newsrc} files (e.g., if you
542 are using the two different Gnusae to read from two different servers),
543 that is no problem whatsoever.  You just do it.
544
545 The problem appears when you want to run two Gnusae that use the same
546 @code{.newsrc} file.
547
548 To work around that problem some, we here at the Think-Tank at the Gnus
549 Towers have come up with a new concept: @dfn{Masters} and
550 @dfn{slaves}.  (We have applied for a patent on this concept, and have
551 taken out a copyright on those words.  If you wish to use those words in
552 conjunction with each other, you have to send $1 per usage instance to
553 me.  Usage of the patent (@dfn{Master/Slave Relationships In Computer
554 Applications}) will be much more expensive, of course.)
555
556 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
557 however you do it).  Each subsequent slave Gnusae should be started with
558 @kbd{M-x gnus-slave}.  These slaves won't save normal @file{.newsrc}
559 files, but instead save @dfn{slave files} that contain information only
560 on what groups have been read in the slave session.  When a master Gnus
561 starts, it will read (and delete) these slave files, incorporating all
562 information from them.  (The slave files will be read in the sequence
563 they were created, so the latest changes will have precedence.)
564
565 Information from the slave files has, of course, precedence over the
566 information in the normal (i.e., master) @code{.newsrc} file.
567
568
569 @node Fetching a Group
570 @section Fetching a Group
571 @cindex fetching a group
572
573 @findex gnus-fetch-group
574 It it sometimes convenient to be able to just say ``I want to read this
575 group and I don't care whether Gnus has been started or not''.  This is
576 perhaps more useful for people who write code than for users, but the
577 command @code{gnus-fetch-group} provides this functionality in any case.
578 It takes the group name as a parameter.
579
580
581 @node New Groups
582 @section New Groups
583 @cindex new groups
584 @cindex subscription
585
586 @vindex gnus-check-new-newsgroups
587 If you are satisfied that you really never want to see any new groups,
588 you can set @code{gnus-check-new-newsgroups} to @code{nil}.  This will
589 also save you some time at startup.  Even if this variable is
590 @code{nil}, you can always subscribe to the new groups just by pressing
591 @kbd{U} in the group buffer (@pxref{Group Maintenance}).  This variable
592 is @code{t} by default.  If you set this variable to @code{always}, then
593 Gnus will query the backends for new groups even when you do the @kbd{g}
594 command (@pxref{Scanning New Messages}).
595
596 @menu
597 * Checking New Groups::      Determining what groups are new.
598 * Subscription Methods::     What Gnus should do with new groups.
599 * Filtering New Groups::     Making Gnus ignore certain new groups.
600 @end menu
601
602
603 @node Checking New Groups
604 @subsection Checking New Groups
605
606 Gnus normally determines whether a group is new or not by comparing the
607 list of groups from the active file(s) with the lists of subscribed and
608 dead groups.  This isn't a particularly fast method.  If
609 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
610 server for new groups since the last time.  This is both faster and
611 cheaper.  This also means that you can get rid of the list of killed
612 groups altogether, so you may set @code{gnus-save-killed-list} to
613 @code{nil}, which will save time both at startup, at exit, and all over.
614 Saves disk space, too.  Why isn't this the default, then?
615 Unfortunately, not all servers support this command. 
616
617 I bet I know what you're thinking now: How do I find out whether my
618 server supports @code{ask-server}?  No?  Good, because I don't have a
619 fail-safe answer.  I would suggest just setting this variable to
620 @code{ask-server} and see whether any new groups appear within the next
621 few days.  If any do, then it works.  If none do, then it doesn't
622 work.  I could write a function to make Gnus guess whether the server
623 supports @code{ask-server}, but it would just be a guess.  So I won't.
624 You could @code{telnet} to the server and say @code{HELP} and see
625 whether it lists @samp{NEWGROUPS} among the commands it understands.  If
626 it does, then it might work.  (But there are servers that lists
627 @samp{NEWGROUPS} without supporting the function properly.)
628
629 This variable can also be a list of select methods.  If so, Gnus will
630 issue an @code{ask-server} command to each of the select methods, and
631 subscribe them (or not) using the normal methods.  This might be handy
632 if you are monitoring a few servers for new groups.  A side effect is
633 that startup will take much longer, so you can meditate while waiting.
634 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
635
636
637 @node Subscription Methods
638 @subsection Subscription Methods
639
640 @vindex gnus-subscribe-newsgroup-method
641 What Gnus does when it encounters a new group is determined by the
642 @code{gnus-subscribe-newsgroup-method} variable.
643
644 This variable should contain a function.  This function will be called
645 with the name of the new group as the only parameter.
646
647 Some handy pre-fab functions are:
648
649 @table @code
650
651 @item gnus-subscribe-zombies
652 @vindex gnus-subscribe-zombies
653 Make all new groups zombies.  This is the default.  You can browse the
654 zombies later (with @kbd{A z}) and either kill them all off properly
655 (with @kbd{S z}), or subscribe to them (with @kbd{u}).
656
657 @item gnus-subscribe-randomly
658 @vindex gnus-subscribe-randomly
659 Subscribe all new groups randomly.
660
661 @item gnus-subscribe-alphabetically
662 @vindex gnus-subscribe-alphabetically
663 Subscribe all new groups alphabetically.
664
665 @item gnus-subscribe-hierarchically
666 @vindex gnus-subscribe-hierarchically
667 Subscribe all new groups hierarchically.  The difference between this
668 function and @code{gnus-subscribe-alphabetically} is slight.
669 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
670 alphabetical fashion, while this function will enter groups into it's
671 hierarchy.  So if you want to have the @samp{rec} hierarchy before the
672 @samp{comp} hierarchy, this function will not mess that configuration
673 up.  Or something like that.
674
675 @item gnus-subscribe-interactively
676 @vindex gnus-subscribe-interactively
677 Subscribe new groups interactively.  This means that Gnus will ask
678 you about @strong{all} new groups.
679
680 @item gnus-subscribe-killed
681 @vindex gnus-subscribe-killed
682 Kill all new groups.
683
684 @end table
685
686 @vindex gnus-subscribe-hierarchical-interactive
687 A closely related variable is
688 @code{gnus-subscribe-hierarchical-interactive}.  (That's quite a
689 mouthful.)  If this variable is non-@code{nil}, Gnus will ask you in a
690 hierarchical fashion whether to subscribe to new groups or not.  Gnus
691 will ask you for each sub-hierarchy whether you want to descend the
692 hierarchy or not.  
693
694 One common mistake is to set the variable a few paragraphs above to
695 @code{gnus-subscribe-hierarchical-interactive}.  This is an error.  This
696 will not work.  This is ga-ga.  So don't do it.
697
698
699 @node Filtering New Groups
700 @subsection Filtering New Groups
701
702 A nice and portable way to control which new newsgroups should be
703 subscribed (or ignored) is to put an @dfn{options} line at the start of
704 the @file{.newsrc} file.  Here's an example:
705
706 @example
707 options -n !alt.all !rec.all sci.all
708 @end example
709
710 @vindex gnus-subscribe-options-newsgroup-method
711 This line obviously belongs to a serious-minded intellectual scientific
712 person (or she may just be plain old boring), because it says that all
713 groups that have names beginning with @samp{alt} and @samp{rec} should
714 be ignored, and all groups with names beginning with @samp{sci} should
715 be subscribed.  Gnus will not use the normal subscription method for
716 subscribing these groups.
717 @code{gnus-subscribe-options-newsgroup-method} is used instead.  This
718 variable defaults to @code{gnus-subscribe-alphabetically}.
719
720 @vindex gnus-options-not-subscribe
721 @vindex gnus-options-subscribe
722 If you don't want to mess with your @file{.newsrc} file, you can just
723 set the two variables @code{gnus-options-subscribe} and
724 @code{gnus-options-not-subscribe}.  These two variables do exactly the
725 same as the @file{.newsrc} @samp{options -n} trick.  Both are regexps,
726 and if the the new group matches the former, it will be unconditionally
727 subscribed, and if it matches the latter, it will be ignored.
728
729 @vindex gnus-auto-subscribed-groups
730 Yet another variable that meddles here is
731 @code{gnus-auto-subscribed-groups}.  It works exactly like
732 @code{gnus-options-subscribe}, and is therefore really superfluous, but I
733 thought it would be nice to have two of these.  This variable is more
734 meant for setting some ground rules, while the other variable is used
735 more for user fiddling.  By default this variable makes all new groups
736 that come from mail backends (@code{nnml}, @code{nnbabyl},
737 @code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed.  If you
738 don't like that, just set this variable to @code{nil}.
739
740 New groups that match this regexp are subscribed using
741 @code{gnus-subscribe-options-newsgroup-method}.
742
743
744 @node Changing Servers
745 @section Changing Servers
746 @cindex changing servers
747
748 Sometimes it is necessary to move from one @sc{nntp} server to another.
749 This happens very rarely, but perhaps you change jobs, or one server is
750 very flaky and you want to use another.  
751
752 Changing the server is pretty easy, right?  You just change
753 @code{gnus-select-method} to point to the new server?  
754
755 @emph{Wrong!}
756
757 Article numbers are not (in any way) kept synchronized between different
758 @sc{nntp} servers, and the only way Gnus keeps track of what articles
759 you have read is by keeping track of article numbers.  So when you
760 change @code{gnus-select-method}, your @file{.newsrc} file becomes
761 worthless.  
762
763 Gnus provides a few functions to attempt to translate a @file{.newsrc}
764 file from one server to another.  They all have one thing in
765 common---they take a looong time to run.  You don't want to use these
766 functions more than absolutely necessary.
767
768 @kindex M-x gnus-change-server
769 @findex gnus-change-server
770 If you have access to both servers, Gnus can request the headers for all
771 the articles you have read and compare @code{Message-ID}s and map the
772 article numbers of the read articles and article marks.  The @kbd{M-x
773 gnus-change-server} command will do this for all your native groups.  It
774 will prompt for the method you want to move to.
775
776 @kindex M-x gnus-group-move-group-to-server
777 @findex gnus-group-move-group-to-server
778 You can also move individual groups with the @kbd{M-x
779 gnus-group-move-group-to-server} command.  This is useful if you want to
780 move a (foreign) group from one server to another.
781
782 @kindex M-x gnus-group-clear-data-on-native-groups
783 @findex gnus-group-clear-data-on-native-groups
784 If you don't have access to both the old and new server, all your marks
785 and read ranges have become worthless.  You can use the @kbd{M-x
786 gnus-group-clear-data-on-native-groups} command to clear out all data
787 that you have on your native groups.  Use with caution.
788
789
790 @node Startup Files
791 @section Startup Files
792 @cindex startup files
793 @cindex .newsrc
794 @cindex .newsrc.el
795 @cindex .newsrc.eld
796
797 Now, you all know about the @file{.newsrc} file.  All subscription
798 information is traditionally stored in this file.
799
800 Things got a bit more complicated with @sc{gnus}.  In addition to
801 keeping the @file{.newsrc} file updated, it also used a file called
802 @file{.newsrc.el} for storing all the information that didn't fit into
803 the @file{.newsrc} file.  (Actually, it also duplicated everything in
804 the @file{.newsrc} file.)  @sc{gnus} would read whichever one of these
805 files was the most recently saved, which enabled people to swap between
806 @sc{gnus} and other newsreaders.
807
808 That was kinda silly, so Gnus went one better: In addition to the
809 @file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
810 @file{.newsrc.eld}.  It will read whichever of these files that are most
811 recent, but it will never write a @file{.newsrc.el} file.
812
813 @vindex gnus-save-newsrc-file
814 You can turn off writing the @file{.newsrc} file by setting
815 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
816 the file and save some space, as well as making exit from Gnus faster.
817 However, this will make it impossible to use other newsreaders than
818 Gnus.  But hey, who would want to, right?
819
820 @vindex gnus-save-killed-list
821 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
822 will not save the list of killed groups to the startup file.  This will
823 save both time (when starting and quitting) and space (on disk).  It
824 will also mean that Gnus has no record of what groups are new or old,
825 so the automatic new groups subscription methods become meaningless.
826 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
827 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
828 Groups}).  This variable can also be a regular expression.  If that's
829 the case, remove all groups that do not match this regexp before
830 saving.  This can be useful in certain obscure situations that involve
831 several servers where not all servers support @code{ask-server}.
832
833 @vindex gnus-startup-file
834 The @code{gnus-startup-file} variable says where the startup files are.
835 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
836 file being whatever that one is with a @samp{.eld} appended.
837
838 @vindex gnus-save-newsrc-hook
839 @vindex gnus-save-quick-newsrc-hook
840 @vindex gnus-save-standard-newsrc-hook
841 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc
842 files, while @code{gnus-save-quick-newsrc-hook} is called just before
843 saving the @file{.newsrc.eld} file, and
844 @code{gnus-save-standard-newsrc-hook} is called just before saving the
845 @file{.newsrc} file.  The latter two are commonly used to turn version
846 control on or off.  Version control is on by default when saving the
847 startup files.  If you want to turn backup creation off, say something like: 
848
849 @lisp
850 (defun turn-off-backup ()
851   (set (make-local-variable 'backup-inhibited) t))
852
853 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
854 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
855 @end lisp
856
857 @vindex gnus-init-file
858 When Gnus starts, it will read the @code{gnus-site-init-file}
859 (@file{.../site-lisp/gnus} by default) and @code{gnus-init-file}
860 (@file{~/.gnus} by default) files.  These are normal Emacs Lisp files
861 and can be used to avoid cluttering your @file{~/.emacs} and
862 @file{site-init} files with Gnus stuff.  Gnus will also check for files
863 with the same names as these, but with @file{.elc} and @file{.el}
864 suffixes.  In other words, if you have set @code{gnus-init-file} to
865 @file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
866 and finally @file{~/.gnus} (in this order).
867
868
869
870 @node Auto Save
871 @section Auto Save
872 @cindex dribble file
873 @cindex auto-save
874
875 Whenever you do something that changes the Gnus data (reading articles,
876 catching up, killing/subscribing groups), the change is added to a
877 special @dfn{dribble buffer}.  This buffer is auto-saved the normal
878 Emacs way.  If your Emacs should crash before you have saved the
879 @file{.newsrc} files, all changes you have made can be recovered from
880 this file.
881
882 If Gnus detects this file at startup, it will ask the user whether to
883 read it.  The auto save file is deleted whenever the real startup file is
884 saved.
885
886 @vindex gnus-use-dribble-file
887 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
888 maintain a dribble buffer.  The default is @code{t}.
889
890 @vindex gnus-dribble-directory
891 Gnus will put the dribble file(s) in @code{gnus-dribble-directory}.  If
892 this variable is @code{nil}, which it is by default, Gnus will dribble
893 into the directory where the @file{.newsrc} file is located.  (This is
894 normally the user's home directory.)  The dribble file will get the same
895 file permissions as the @code{.newsrc} file.
896
897
898 @node The Active File
899 @section The Active File
900 @cindex active file
901 @cindex ignored groups
902
903 When Gnus starts, or indeed whenever it tries to determine whether new
904 articles have arrived, it reads the active file.  This is a very large
905 file that lists all the active groups and articles on the server.
906
907 @vindex gnus-ignored-newsgroups
908 Before examining the active file, Gnus deletes all lines that match the
909 regexp @code{gnus-ignored-newsgroups}.  This is done primarily to reject
910 any groups with bogus names, but you can use this variable to make Gnus
911 ignore hierarchies you aren't ever interested in.  However, this is not
912 recommended.  In fact, it's highly discouraged.  Instead, @pxref{New
913 Groups} for an overview of other variables that can be used instead.
914
915 @c This variable is
916 @c @code{nil} by default, and will slow down active file handling somewhat
917 @c if you set it to anything else.
918
919 @vindex gnus-read-active-file
920 @c @head
921 The active file can be rather Huge, so if you have a slow network, you
922 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
923 reading the active file.  This variable is @code{t} by default.
924
925 Gnus will try to make do by getting information just on the groups that
926 you actually subscribe to.
927
928 Note that if you subscribe to lots and lots of groups, setting this
929 variable to @code{nil} will probably make Gnus slower, not faster.  At
930 present, having this variable @code{nil} will slow Gnus down
931 considerably, unless you read news over a 2400 baud modem.  
932
933 This variable can also have the value @code{some}.  Gnus will then
934 attempt to read active info only on the subscribed groups.  On some
935 servers this is quite fast (on sparkling, brand new INN servers that
936 support the @code{LIST ACTIVE group} command), on others this isn't fast
937 at all.  In any case, @code{some} should be faster than @code{nil}, and
938 is certainly faster than @code{t} over slow lines.
939
940 If this variable is @code{nil}, Gnus will ask for group info in total
941 lock-step, which isn't very fast.  If it is @code{some} and you use an
942 @sc{nntp} server, Gnus will pump out commands as fast as it can, and
943 read all the replies in one swoop.  This will normally result in better
944 performance, but if the server does not support the aforementioned
945 @code{LIST ACTIVE group} command, this isn't very nice to the server.
946
947 In any case, if you use @code{some} or @code{nil}, you should definitely
948 kill all groups that you aren't interested in to speed things up.
949
950 Note that this variable also affects active file retrieval from
951 secondary select methods.
952
953
954 @node Startup Variables
955 @section Startup Variables
956
957 @table @code
958
959 @item gnus-load-hook
960 @vindex gnus-load-hook
961 A hook that is run while Gnus is being loaded.  Note that this hook will
962 normally be run just once in each Emacs session, no matter how many
963 times you start Gnus.
964
965 @item gnus-startup-hook
966 @vindex gnus-startup-hook
967 A hook that is run after starting up Gnus successfully.
968
969 @item gnus-started-hook
970 @vindex gnus-started-hook
971 A hook that is run as the very last thing after starting up Gnus
972 successfully.
973
974 @item gnus-check-bogus-newsgroups
975 @vindex gnus-check-bogus-newsgroups
976 If non-@code{nil}, Gnus will check for and delete all bogus groups at
977 startup.  A @dfn{bogus group} is a group that you have in your
978 @file{.newsrc} file, but doesn't exist on the news server.  Checking for
979 bogus groups can take quite a while, so to save time and resources it's
980 best to leave this option off, and do the checking for bogus groups once
981 in a while from the group buffer instead (@pxref{Group Maintenance}).
982
983 @item gnus-inhibit-startup-message
984 @vindex gnus-inhibit-startup-message
985 If non-@code{nil}, the startup message won't be displayed.  That way,
986 your boss might not notice as easily that you are reading news instead
987 of doing your job.  Note that this variable is used before
988 @file{.gnus.el} is loaded, so it should be set in @code{.emacs} instead.
989
990 @item gnus-no-groups-message
991 @vindex gnus-no-groups-message
992 Message displayed by Gnus when no groups are available.
993
994 @item gnus-play-startup-jingle
995 @vindex gnus-play-startup-jingle
996 If non-@code{nil}, play the Gnus jingle at startup.
997
998 @item gnus-startup-jingle
999 @vindex gnus-startup-jingle
1000 Jingle to be played if the above variable is non-@code{nil}.  The
1001 default is @samp{Tuxedomoon.Jingle4.au}.
1002
1003 @end table
1004
1005
1006 @node The Group Buffer
1007 @chapter The Group Buffer
1008 @cindex group buffer
1009
1010 The @dfn{group buffer} lists all (or parts) of the available groups.  It
1011 is the first buffer shown when Gnus starts, and will never be killed as
1012 long as Gnus is active.
1013
1014 @menu
1015 * Group Buffer Format::    Information listed and how you can change it.
1016 * Group Maneuvering::      Commands for moving in the group buffer.
1017 * Selecting a Group::      Actually reading news.
1018 * Group Data::             Changing the info for a group.
1019 * Subscription Commands::  Unsubscribing, killing, subscribing.
1020 * Group Levels::           Levels? What are those, then?
1021 * Group Score::            A mechanism for finding out what groups you like.
1022 * Marking Groups::         You can mark groups for later processing.
1023 * Foreign Groups::         Creating and editing groups.
1024 * Group Parameters::       Each group may have different parameters set.
1025 * Listing Groups::         Gnus can list various subsets of the groups.
1026 * Sorting Groups::         Re-arrange the group order.
1027 * Group Maintenance::      Maintaining a tidy @file{.newsrc} file.
1028 * Browse Foreign Server::  You can browse a server.  See what it has to offer.
1029 * Exiting Gnus::           Stop reading news and get some work done.
1030 * Group Topics::           A folding group mode divided into topics.
1031 * Misc Group Stuff::       Other stuff that you can to do.
1032 @end menu
1033
1034
1035 @node Group Buffer Format
1036 @section Group Buffer Format
1037
1038 @menu 
1039 * Group Line Specification::       Deciding how the group buffer is to look.
1040 * Group Modeline Specification::   The group buffer modeline.
1041 * Group Highlighting::             Having nice colors in the group buffer.
1042 @end menu
1043
1044
1045 @node Group Line Specification
1046 @subsection Group Line Specification
1047 @cindex group buffer format
1048
1049 The default format of the group buffer is nice and dull, but you can
1050 make it as exciting and ugly as you feel like.
1051
1052 Here's a couple of example group lines:
1053
1054 @example
1055      25: news.announce.newusers
1056  *    0: alt.fan.andrea-dworkin
1057 @end example
1058
1059 Quite simple, huh?
1060
1061 You can see that there are 25 unread articles in
1062 @samp{news.announce.newusers}.  There are no unread articles, but some
1063 ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
1064 asterisk at the beginning of the line?)
1065
1066 @vindex gnus-group-line-format
1067 You can change that format to whatever you want by fiddling with the
1068 @code{gnus-group-line-format} variable.  This variable works along the
1069 lines of a @code{format} specification, which is pretty much the same as
1070 a @code{printf} specifications, for those of you who use (feh!) C.
1071 @xref{Formatting Variables}. 
1072
1073 @samp{%M%S%5y: %(%g%)\n} is the value that produced those lines above.
1074
1075 There should always be a colon on the line; the cursor always moves to
1076 the colon after performing an operation.  Nothing else is required---not
1077 even the group name.  All displayed text is just window dressing, and is
1078 never examined by Gnus.  Gnus stores all real information it needs using
1079 text properties.
1080
1081 (Note that if you make a really strange, wonderful, spreadsheet-like
1082 layout, everybody will believe you are hard at work with the accounting
1083 instead of wasting time reading news.)
1084
1085 Here's a list of all available format characters:
1086
1087 @table @samp
1088
1089 @item M    
1090 An asterisk if the group only has marked articles.
1091
1092 @item S
1093 Whether the group is subscribed.
1094
1095 @item L    
1096 Level of subscribedness.
1097
1098 @item N
1099 Number of unread articles.
1100
1101 @item I
1102 Number of dormant articles.
1103
1104 @item T
1105 Number of ticked articles.
1106
1107 @item R
1108 Number of read articles.
1109
1110 @item t
1111 Estimated total number of articles.  (This is really @var{max-number}
1112 minus @var{min-number} plus 1.)
1113
1114 @item y
1115 Number of unread, unticked, non-dormant articles.
1116
1117 @item i
1118 Number of ticked and dormant articles.
1119
1120 @item g
1121 Full group name.
1122
1123 @item G
1124 Group name.
1125
1126 @item D
1127 Newsgroup description.
1128
1129 @item o
1130 @samp{m} if moderated.
1131
1132 @item O
1133 @samp{(m)} if moderated.
1134
1135 @item s
1136 Select method.
1137
1138 @item n
1139 Select from where.
1140
1141 @item z
1142 A string that looks like @samp{<%s:%n>} if a foreign select method is
1143 used.
1144
1145 @item P
1146 Indentation based on the level of the topic (@pxref{Group Topics}). 
1147
1148 @item c
1149 @vindex gnus-group-uncollapsed-levels
1150 Short (collapsed) group name.  The @code{gnus-group-uncollapsed-levels}
1151 variable says how many levels to leave at the end of the group name.
1152 The default is 1---this will mean that group names like
1153 @samp{gnu.emacs.gnus} will be shortened to @samp{g.emacs.gnus}.
1154
1155 @item m
1156 @vindex gnus-new-mail-mark
1157 @cindex %
1158 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1159 the group lately.
1160
1161 @item d
1162 A string that says when you last read the group (@pxref{Group
1163 Timestamp}). 
1164
1165 @item u
1166 User defined specifier.  The next character in the format string should
1167 be a letter.  @sc{gnus} will call the function
1168 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
1169 following @samp{%u}.  The function will be passed a single dummy
1170 parameter as argument.  The function should return a string, which will
1171 be inserted into the buffer just like information from any other
1172 specifier.
1173 @end table
1174
1175 @cindex *
1176 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
1177 if no info is available---for instance, if it is a non-activated foreign
1178 group, or a bogus native group.
1179
1180
1181 @node Group Modeline Specification
1182 @subsection Group Modeline Specification
1183 @cindex group modeline
1184
1185 @vindex gnus-group-mode-line-format
1186 The mode line can be changed by setting
1187 @code{gnus-group-mode-line-format} (@pxref{Formatting Variables}).  It
1188 doesn't understand that many format specifiers:
1189
1190 @table @samp
1191 @item S
1192 The native news server.
1193 @item M
1194 The native select method.
1195 @end table
1196
1197
1198 @node Group Highlighting
1199 @subsection Group Highlighting
1200 @cindex highlighting
1201 @cindex group highlighting
1202
1203 @vindex gnus-group-highlight
1204 Highlighting in the group buffer is controlled by the
1205 @code{gnus-group-highlight} variable.  This is an alist with elements
1206 that look like @var{(form . face)}.  If @var{form} evaluates to
1207 something non-@code{nil}, the @var{face} will be used on the line.
1208
1209 Here's an example value for this variable that might look nice if the
1210 background is dark:
1211
1212 @lisp
1213 (setq gnus-group-highlight
1214       `(((> unread 200) . 
1215          ,(custom-face-lookup "Red" nil nil t nil nil))
1216         ((and (< level 3) (zerop unread)) . 
1217          ,(custom-face-lookup "SeaGreen" nil nil t nil nil))
1218         ((< level 3) . 
1219          ,(custom-face-lookup "SpringGreen" nil nil t nil nil))
1220         ((zerop unread) . 
1221          ,(custom-face-lookup "SteelBlue" nil nil t nil nil))
1222         (t . 
1223          ,(custom-face-lookup "SkyBlue" nil nil t nil nil))))
1224 @end lisp
1225
1226 Variables that are dynamically bound when the forms are evaluated
1227 include:
1228
1229 @table @code
1230 @item group
1231 The group name.
1232 @item unread
1233 The number of unread articles in the group.
1234 @item method
1235 The select method.
1236 @item mailp
1237 Whether the group is a mail group.
1238 @item level
1239 The level of the group.
1240 @item score
1241 The score of the group.
1242 @item ticked 
1243 The number of ticked articles in the group.
1244 @item total
1245 The total number of articles in the group.  Or rather, MAX-NUMBER minus
1246 MIN-NUMBER.
1247 @item topic
1248 When using the topic minor mode, this variable is bound to the current
1249 topic being inserted.
1250 @end table
1251
1252 When the forms are @code{eval}ed, point is at the beginning of the line
1253 of the group in question, so you can use many of the normal Gnus
1254 functions for snarfing info on the group.
1255
1256 @vindex gnus-group-update-hook
1257 @findex gnus-group-highlight-line
1258 @code{gnus-group-update-hook} is called when a group line is changed.
1259 It will not be called when @code{gnus-visual} is @code{nil}.  This hook
1260 calls @code{gnus-group-highlight-line} by default.
1261
1262
1263 @node Group Maneuvering
1264 @section Group Maneuvering
1265 @cindex group movement
1266
1267 All movement commands understand the numeric prefix and will behave as
1268 expected, hopefully. 
1269
1270 @table @kbd
1271
1272 @item n
1273 @kindex n (Group)
1274 @findex gnus-group-next-unread-group
1275 Go to the next group that has unread articles
1276 (@code{gnus-group-next-unread-group}).
1277
1278 @item p
1279 @itemx DEL
1280 @kindex DEL (Group)
1281 @kindex p (Group)
1282 @findex gnus-group-prev-unread-group
1283 Go to the previous group that has unread articles
1284 (@code{gnus-group-prev-unread-group}).
1285
1286 @item N
1287 @kindex N (Group)
1288 @findex gnus-group-next-group
1289 Go to the next group (@code{gnus-group-next-group}).
1290
1291 @item P
1292 @kindex P (Group)
1293 @findex gnus-group-prev-group
1294 Go to the previous group (@code{gnus-group-prev-group}).
1295
1296 @item M-p
1297 @kindex M-p (Group)
1298 @findex gnus-group-next-unread-group-same-level
1299 Go to the next unread group on the same (or lower) level
1300 (@code{gnus-group-next-unread-group-same-level}). 
1301
1302 @item M-n
1303 @kindex M-n (Group)
1304 @findex gnus-group-prev-unread-group-same-level
1305 Go to the previous unread group on the same (or lower) level
1306 (@code{gnus-group-prev-unread-group-same-level}). 
1307 @end table
1308
1309 Three commands for jumping to groups:
1310
1311 @table @kbd
1312
1313 @item j
1314 @kindex j (Group)
1315 @findex gnus-group-jump-to-group
1316 Jump to a group (and make it visible if it isn't already)
1317 (@code{gnus-group-jump-to-group}).  Killed groups can be jumped to, just
1318 like living groups.
1319
1320 @item ,
1321 @kindex , (Group)
1322 @findex gnus-group-best-unread-group
1323 Jump to the unread group with the lowest level
1324 (@code{gnus-group-best-unread-group}). 
1325
1326 @item .
1327 @kindex . (Group)
1328 @findex gnus-group-first-unread-group
1329 Jump to the first group with unread articles
1330 (@code{gnus-group-first-unread-group}).  
1331 @end table
1332
1333 @vindex gnus-group-goto-unread
1334 If @code{gnus-group-goto-unread} is @code{nil}, all the movement
1335 commands will move to the next group, not the next unread group.  Even
1336 the commands that say they move to the next unread group.  The default
1337 is @code{t}.
1338
1339
1340 @node Selecting a Group
1341 @section Selecting a Group
1342 @cindex group selection
1343
1344 @table @kbd
1345
1346 @item SPACE
1347 @kindex SPACE (Group)
1348 @findex gnus-group-read-group
1349 Select the current group, switch to the summary buffer and display the
1350 first unread article (@code{gnus-group-read-group}).  If there are no
1351 unread articles in the group, or if you give a non-numerical prefix to
1352 this command, Gnus will offer to fetch all the old articles in this
1353 group from the server.  If you give a numerical prefix @var{N}, @var{N}
1354 determines the number of articles Gnus will fetch.  If @var{N} is
1355 positive, Gnus fetches the @var{N} newest articles, if @var{N} is
1356 negative, Gnus fetches the @var{abs(N)} oldest articles.
1357
1358 @item RET
1359 @kindex RET (Group)
1360 @findex gnus-group-select-group
1361 Select the current group and switch to the summary buffer
1362 (@code{gnus-group-select-group}).  Takes the same arguments as
1363 @code{gnus-group-read-group}---the only difference is that this command
1364 does not display the first unread article automatically upon group
1365 entry. 
1366
1367 @item M-RET
1368 @kindex M-RET (Group)
1369 @findex gnus-group-quick-select-group
1370 This does the same as the command above, but tries to do it with the
1371 minimum amount of fuzz (@code{gnus-group-quick-select-group}).  No
1372 scoring/killing will be performed, there will be no highlights and no
1373 expunging.  This might be useful if you're in a real hurry and have to
1374 enter some humongous group.  If you give a 0 prefix to this command
1375 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer.
1376 This might be useful if you want to toggle threading before entering the
1377 group.
1378
1379 @item M-SPACE
1380 @kindex M-SPACE (Group)
1381 @findex gnus-group-visible-select-group
1382 This is yet one more command that does the same as the @kbd{RET}
1383 command, but this one does it without expunging and hiding dormants
1384 (@code{gnus-group-visible-select-group}).
1385
1386 @item M-C-RET
1387 @kindex M-C-RET (Group)
1388 @findex gnus-group-select-group-ephemerally
1389 Finally, this command selects the current group ephemerally without
1390 doing any processing of its contents
1391 (@code{gnus-group-select-group-ephemerally}).  Even threading has been
1392 turned off.  Everything you do in the group after selecting it in this
1393 manner will have no permanent effects.
1394
1395 @end table
1396
1397 @vindex gnus-large-newsgroup
1398 The @code{gnus-large-newsgroup} variable says what Gnus should consider
1399 to be a big group.  This is 200 by default.  If the group has more
1400 (unread and/or ticked) articles than this, Gnus will query the user
1401 before entering the group.  The user can then specify how many articles
1402 should be fetched from the server.  If the user specifies a negative
1403 number (@code{-n}), the @code{n} oldest articles will be fetched.  If it
1404 is positive, the @code{n} articles that have arrived most recently will
1405 be fetched.
1406
1407 @vindex gnus-select-group-hook
1408 @vindex gnus-auto-select-first
1409 @code{gnus-auto-select-first} control whether any articles are selected
1410 automatically when entering a group with the @kbd{SPACE} command.
1411
1412 @table @code
1413
1414 @item nil
1415 Don't select any articles when entering the group.  Just display the
1416 full summary buffer.
1417
1418 @item t
1419 Select the first unread article when entering the group.  
1420
1421 @item best
1422 Select the most high-scored article in the group when entering the
1423 group. 
1424 @end table
1425         
1426 If you want to prevent automatic selection in some group (say, in a
1427 binary group with Huge articles) you can set this variable to @code{nil}
1428 in @code{gnus-select-group-hook}, which is called when a group is
1429 selected.
1430
1431
1432 @node Subscription Commands
1433 @section Subscription Commands
1434 @cindex subscription
1435
1436 @table @kbd
1437
1438 @item S t
1439 @itemx u
1440 @kindex S t (Group)
1441 @kindex u (Group)
1442 @findex gnus-group-unsubscribe-current-group
1443 Toggle subscription to the current group
1444 (@code{gnus-group-unsubscribe-current-group}).  
1445
1446 @item S s
1447 @itemx U
1448 @kindex S s (Group)
1449 @kindex U (Group)
1450 @findex gnus-group-unsubscribe-group
1451 Prompt for a group to subscribe, and then subscribe it.  If it was
1452 subscribed already, unsubscribe it instead
1453 (@code{gnus-group-unsubscribe-group}).
1454
1455 @item S k
1456 @itemx C-k
1457 @kindex S k (Group)
1458 @kindex C-k (Group)
1459 @findex gnus-group-kill-group
1460 Kill the current group (@code{gnus-group-kill-group}).
1461
1462 @item S y
1463 @itemx C-y
1464 @kindex S y (Group)
1465 @kindex C-y (Group)
1466 @findex gnus-group-yank-group
1467 Yank the last killed group (@code{gnus-group-yank-group}).
1468
1469 @item C-x C-t
1470 @kindex C-x C-t (Group)
1471 @findex gnus-group-transpose-groups
1472 Transpose two groups (@code{gnus-group-transpose-groups}).  This isn't
1473 really a subscription command, but you can use it instead of a
1474 kill-and-yank sequence sometimes.
1475
1476 @item S w
1477 @itemx C-w
1478 @kindex S w (Group)
1479 @kindex C-w (Group)
1480 @findex gnus-group-kill-region
1481 Kill all groups in the region (@code{gnus-group-kill-region}). 
1482
1483 @item S z
1484 @kindex S z (Group)
1485 @findex gnus-group-kill-all-zombies
1486 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
1487
1488 @item S C-k
1489 @kindex S C-k (Group)
1490 @findex gnus-group-kill-level
1491 Kill all groups on a certain level (@code{gnus-group-kill-level}).
1492 These groups can't be yanked back after killing, so this command should
1493 be used with some caution.  The only time where this command comes in
1494 really handy is when you have a @file{.newsrc} with lots of unsubscribed
1495 groups that you want to get rid off.  @kbd{S C-k} on level 7 will
1496 kill off all unsubscribed groups that do not have message numbers in the
1497 @file{.newsrc} file.  
1498
1499 @end table
1500
1501 Also @pxref{Group Levels}.
1502
1503
1504 @node Group Data
1505 @section Group Data
1506
1507 @table @kbd
1508
1509 @item c
1510 @kindex c (Group)
1511 @findex gnus-group-catchup-current
1512 @vindex gnus-group-catchup-group-hook
1513 Mark all unticked articles in this group as read
1514 (@code{gnus-group-catchup-current}).
1515 @code{gnus-group-catchup-group-hook} is called when catching up a group from
1516 the group buffer.
1517
1518 @item C
1519 @kindex C (Group)
1520 @findex gnus-group-catchup-current-all
1521 Mark all articles in this group, even the ticked ones, as read
1522 (@code{gnus-group-catchup-current-all}).   
1523
1524 @item M-c
1525 @kindex M-c (Group)
1526 @findex gnus-group-clear-data
1527 Clear the data from the current group---nix out marks and the list of
1528 read articles (@code{gnus-group-clear-data}).
1529
1530 @item M-x gnus-group-clear-data-on-native-groups
1531 @kindex M-x gnus-group-clear-data-on-native-groups
1532 @findex gnus-group-clear-data-on-native-groups
1533 If you have switched from one @sc{nntp} server to another, all your marks
1534 and read ranges have become worthless.  You can use this command to
1535 clear out all data that you have on your native groups.  Use with
1536 caution. 
1537
1538 @end table
1539
1540
1541 @node Group Levels
1542 @section Group Levels
1543 @cindex group level
1544 @cindex level
1545
1546 All groups have a level of @dfn{subscribedness}.  For instance, if a
1547 group is on level 2, it is more subscribed than a group on level 5.  You
1548 can ask Gnus to just list groups on a given level or lower
1549 (@pxref{Listing Groups}), or to just check for new articles in groups on
1550 a given level or lower (@pxref{Scanning New Messages}).
1551
1552 Remember:  The higher the level of the group, the less important it is. 
1553
1554 @table @kbd
1555
1556 @item S l
1557 @kindex S l (Group)
1558 @findex gnus-group-set-current-level
1559 Set the level of the current group.  If a numeric prefix is given, the
1560 next @var{n} groups will have their levels set.  The user will be
1561 prompted for a level.
1562 @end table
1563
1564 @vindex gnus-level-killed
1565 @vindex gnus-level-zombie
1566 @vindex gnus-level-unsubscribed
1567 @vindex gnus-level-subscribed
1568 Gnus considers groups on between levels 1 and
1569 @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed,
1570 @code{gnus-level-subscribed} (exclusive) and
1571 @code{gnus-level-unsubscribed} (inclusive) (default 7) to be
1572 unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
1573 (default 8) and @code{gnus-level-killed} to be killed (default 9),
1574 completely dead.  Gnus treats subscribed and unsubscribed groups exactly
1575 the same, but zombie and killed groups have no information on what
1576 articles you have read, etc, stored.  This distinction between dead and
1577 living groups isn't done because it is nice or clever, it is done purely
1578 for reasons of efficiency.
1579
1580 It is recommended that you keep all your mail groups (if any) on quite
1581 low levels (e.g. 1 or 2).
1582
1583 If you want to play with the level variables, you should show some care.
1584 Set them once, and don't touch them ever again.  Better yet, don't touch
1585 them at all unless you know exactly what you're doing.
1586
1587 @vindex gnus-level-default-unsubscribed
1588 @vindex gnus-level-default-subscribed
1589 Two closely related variables are @code{gnus-level-default-subscribed}
1590 (default 3) and @code{gnus-level-default-unsubscribed} (default 6),
1591 which are the levels that new groups will be put on if they are
1592 (un)subscribed.  These two variables should, of course, be inside the
1593 relevant legal ranges.
1594
1595 @vindex gnus-keep-same-level
1596 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
1597 will only move to groups that are of the same level (or lower).  In
1598 particular, going from the last article in one group to the next group
1599 will go to the next group of the same level (or lower).  This might be
1600 handy if you want to read the most important groups before you read the
1601 rest.
1602
1603 @vindex gnus-group-default-list-level
1604 All groups with a level less than or equal to
1605 @code{gnus-group-default-list-level} will be listed in the group buffer
1606 by default.
1607
1608 @vindex gnus-group-list-inactive-groups
1609 If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
1610 groups will be listed along with the unread groups.  This variable is
1611 @code{t} by default.  If it is @code{nil}, inactive groups won't be
1612 listed. 
1613
1614 @vindex gnus-group-use-permanent-levels
1615 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
1616 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
1617 use this level as the ``work'' level.
1618
1619 @vindex gnus-activate-level
1620 Gnus will normally just activate groups that are on level
1621 @code{gnus-activate-level} or less.  If you don't want to activate
1622 unsubscribed groups, for instance, you might set this variable to
1623 5.  The default is 6.
1624
1625
1626 @node Group Score
1627 @section Group Score
1628 @cindex group score
1629
1630 You would normally keep important groups on high levels, but that scheme
1631 is somewhat restrictive.  Don't you wish you could have Gnus sort the
1632 group buffer according to how often you read groups, perhaps?  Within
1633 reason?  
1634
1635 This is what @dfn{group score} is for.  You can assign a score to each
1636 group.  You can then sort the group buffer based on this score.
1637 Alternatively, you can sort on score and then level.  (Taken together,
1638 the level and the score is called the @dfn{rank} of the group.  A group
1639 that is on level 4 and has a score of 1 has a higher rank than a group
1640 on level 5 that has a score of 300.  (The level is the most significant
1641 part and the score is the least significant part.))
1642
1643 @findex gnus-summary-bubble-group
1644 If you want groups you read often to get higher scores than groups you
1645 read seldom you can add the @code{gnus-summary-bubble-group} function to
1646 the @code{gnus-summary-exit-hook} hook.  This will result (after
1647 sorting) in a bubbling sort of action.  If you want to see that in
1648 action after each summary exit, you can add
1649 @code{gnus-group-sort-groups-by-rank} or
1650 @code{gnus-group-sort-groups-by-score} to the same hook, but that will
1651 slow things down somewhat.
1652
1653
1654 @node Marking Groups
1655 @section Marking Groups
1656 @cindex marking groups
1657
1658 If you want to perform some command on several groups, and they appear
1659 subsequently in the group buffer, you would normally just give a
1660 numerical prefix to the command.  Most group commands will then do your
1661 bidding on those groups.
1662
1663 However, if the groups are not in sequential order, you can still
1664 perform a command on several groups.  You simply mark the groups first
1665 with the process mark and then execute the command.
1666
1667 @table @kbd
1668
1669 @item #
1670 @kindex # (Group)
1671 @itemx M m
1672 @kindex M m (Group)
1673 @findex gnus-group-mark-group
1674 Set the mark on the current group (@code{gnus-group-mark-group}). 
1675
1676 @item M-#
1677 @kindex M-# (Group)
1678 @itemx M u
1679 @kindex M u (Group)
1680 @findex gnus-group-unmark-group
1681 Remove the mark from the current group
1682 (@code{gnus-group-unmark-group}). 
1683
1684 @item M U
1685 @kindex M U (Group)
1686 @findex gnus-group-unmark-all-groups
1687 Remove the mark from all groups (@code{gnus-group-unmark-all-groups}). 
1688
1689 @item M w
1690 @kindex M w (Group)
1691 @findex gnus-group-mark-region
1692 Mark all groups between point and mark (@code{gnus-group-mark-region}). 
1693
1694 @item M b
1695 @kindex M b (Group)
1696 @findex gnus-group-mark-buffer
1697 Mark all groups in the buffer (@code{gnus-group-mark-buffer}). 
1698
1699 @item M r
1700 @kindex M r (Group)
1701 @findex gnus-group-mark-regexp
1702 Mark all groups that match some regular expression
1703 (@code{gnus-group-mark-regexp}).  
1704 @end table
1705
1706 Also @pxref{Process/Prefix}.
1707
1708 @findex gnus-group-universal-argument
1709 If you want to execute some command on all groups that have been marked
1710 with the process mark, you can use the @kbd{M-&}
1711 (@code{gnus-group-universal-argument}) command.  It will prompt you for
1712 the command to be executed.
1713
1714
1715 @node Foreign Groups
1716 @section Foreign Groups
1717 @cindex foreign groups
1718
1719 Below are some group mode commands for making and editing general foreign
1720 groups, as well as commands to ease the creation of a few
1721 special-purpose groups.  All these commands insert the newly created
1722 groups under point---@code{gnus-subscribe-newsgroup-method} is not
1723 consulted.
1724
1725 @table @kbd
1726
1727 @item G m
1728 @kindex G m (Group)
1729 @findex gnus-group-make-group
1730 @cindex making groups
1731 Make a new group (@code{gnus-group-make-group}).  Gnus will prompt you
1732 for a name, a method and possibly an @dfn{address}.  For an easier way
1733 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
1734
1735 @item G r
1736 @kindex G r (Group)
1737 @findex gnus-group-rename-group
1738 @cindex renaming groups
1739 Rename the current group to something else
1740 (@code{gnus-group-rename-group}).  This is legal only on some
1741 groups---mail groups mostly.  This command might very well be quite slow
1742 on some backends.
1743
1744 @item G c
1745 @kindex G c (Group)
1746 @cindex customizing
1747 @findex gnus-group-customize
1748 Customize the group parameters (@code{gnus-group-customize}).
1749
1750 @item G e
1751 @kindex G e (Group)
1752 @findex gnus-group-edit-group-method
1753 @cindex renaming groups
1754 Enter a buffer where you can edit the select method of the current
1755 group (@code{gnus-group-edit-group-method}).
1756
1757 @item G p
1758 @kindex G p (Group)
1759 @findex gnus-group-edit-group-parameters
1760 Enter a buffer where you can edit the group parameters
1761 (@code{gnus-group-edit-group-parameters}). 
1762
1763 @item G E
1764 @kindex G E (Group)
1765 @findex gnus-group-edit-group
1766 Enter a buffer where you can edit the group info
1767 (@code{gnus-group-edit-group}).
1768
1769 @item G d
1770 @kindex G d (Group)
1771 @findex gnus-group-make-directory-group
1772 @cindex nndir
1773 Make a directory group (@pxref{Directory Groups}).  You will be prompted
1774 for a directory name (@code{gnus-group-make-directory-group}).
1775
1776 @item G h 
1777 @kindex G h (Group)
1778 @cindex help group
1779 @findex gnus-group-make-help-group
1780 Make the Gnus help group (@code{gnus-group-make-help-group}).
1781
1782 @item G a
1783 @kindex G a (Group)
1784 @cindex (ding) archive
1785 @cindex archive group
1786 @findex gnus-group-make-archive-group
1787 @vindex gnus-group-archive-directory
1788 @vindex gnus-group-recent-archive-directory
1789 Make a Gnus archive group (@code{gnus-group-make-archive-group}).  By
1790 default a group pointing to the most recent articles will be created
1791 (@code{gnus-group-recent-archive-directory}), but given a prefix, a full
1792 group will be created from @code{gnus-group-archive-directory}.
1793
1794 @item G k
1795 @kindex G k (Group)
1796 @findex gnus-group-make-kiboze-group
1797 @cindex nnkiboze
1798 Make a kiboze group.  You will be prompted for a name, for a regexp to
1799 match groups to be ``included'' in the kiboze group, and a series of
1800 strings to match on headers (@code{gnus-group-make-kiboze-group}).
1801 @xref{Kibozed Groups}.
1802
1803 @item G D
1804 @kindex G D (Group)
1805 @findex gnus-group-enter-directory
1806 @cindex nneething
1807 Read an arbitrary directory as if with were a newsgroup with the
1808 @code{nneething} backend (@code{gnus-group-enter-directory}).
1809 @xref{Anything Groups}. 
1810
1811 @item G f
1812 @kindex G f (Group)
1813 @findex gnus-group-make-doc-group
1814 @cindex ClariNet Briefs
1815 @cindex nndoc
1816 Make a group based on some file or other
1817 (@code{gnus-group-make-doc-group}).  If you give a prefix to this
1818 command, you will be prompted for a file name and a file type.
1819 Currently supported types are @code{babyl}, @code{mbox}, @code{digest},
1820 @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs},
1821 @code{rfc934}, @code{rfc822-forward}, and @code{forward}.  If you run
1822 this command without a prefix, Gnus will guess at the file type.
1823 @xref{Document Groups}.
1824
1825 @item G w
1826 @kindex G w (Group)
1827 @findex gnus-group-make-web-group
1828 @cindex DejaNews
1829 @cindex Alta Vista
1830 @cindex InReference
1831 @cindex nnweb
1832 Make an ephemeral group based on a web search
1833 (@code{gnus-group-make-web-group}).  If you give a prefix to this
1834 command, make a solid group instead.  You will be prompted for the
1835 search engine type and the search string.  Legal search engine types
1836 include @code{dejanews}, @code{altavista} and @code{reference}.
1837 @xref{Web Searches}.
1838
1839 @item G DEL
1840 @kindex G DEL (Group)
1841 @findex gnus-group-delete-group
1842 This function will delete the current group
1843 (@code{gnus-group-delete-group}).  If given a prefix, this function will
1844 actually delete all the articles in the group, and forcibly remove the
1845 group itself from the face of the Earth.  Use a prefix only if you are
1846 absolutely sure of what you are doing.
1847
1848 @item G V
1849 @kindex G V (Group)
1850 @findex gnus-group-make-empty-virtual
1851 Make a new, fresh, empty @code{nnvirtual} group
1852 (@code{gnus-group-make-empty-virtual}).  @xref{Virtual Groups}.
1853
1854 @item G v
1855 @kindex G v (Group)
1856 @findex gnus-group-add-to-virtual
1857 Add the current group to an @code{nnvirtual} group
1858 (@code{gnus-group-add-to-virtual}).  Uses the process/prefix convention.
1859 @end table
1860
1861 @xref{Select Methods} for more information on the various select
1862 methods. 
1863
1864 @vindex gnus-activate-foreign-newsgroups
1865 If @code{gnus-activate-foreign-newsgroups} is a positive number,
1866 Gnus will check all foreign groups with this level or lower at startup.
1867 This might take quite a while, especially if you subscribe to lots of
1868 groups from different @sc{nntp} servers.
1869
1870
1871 @node Group Parameters
1872 @section Group Parameters
1873 @cindex group parameters
1874
1875 The group parameters store information local to a particular group:
1876
1877 @table @code
1878 @item to-address
1879 @cindex to-address
1880 If the group parameter list contains an element that looks like
1881 @code{(to-address .  "some@@where.com")}, that address will be used by
1882 the backend when doing followups and posts.  This is primarily useful in
1883 mail groups that represent closed mailing lists---mailing lists where
1884 it's expected that everybody that writes to the mailing list is
1885 subscribed to it.  Since using this parameter ensures that the mail only
1886 goes to the mailing list itself, it means that members won't receive two
1887 copies of your followups.
1888
1889 Using @code{to-address} will actually work whether the group is foreign
1890 or not.  Let's say there's a group on the server that is called
1891 @samp{fa.4ad-l}.  This is a real newsgroup, but the server has gotten
1892 the articles from a mail-to-news gateway.  Posting directly to this
1893 group is therefore impossible---you have to send mail to the mailing
1894 list address instead. 
1895
1896 @item to-list
1897 @cindex to-list
1898 If the group parameter list has an element that looks like
1899 @code{(to-list . "some@@where.com")}, that address will be used when
1900 doing a @kbd{a} in any group.  It is totally ignored when doing a
1901 followup---except that if it is present in a news group, you'll get mail
1902 group semantics when doing @kbd{f}.
1903
1904 If you do an @kbd{a} command in a mail group and you don't have a
1905 @code{to-list} group parameter, one will be added automatically upon
1906 sending the message.
1907
1908 @item broken-reply-to
1909 @cindex broken-reply-to
1910 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
1911 headers in this group are to be ignored.  This can be useful if you're
1912 reading a mailing list group where the listserv has inserted
1913 @code{Reply-To} headers that point back to the listserv itself.  This is
1914 broken behavior.  So there!
1915
1916 @item to-group
1917 @cindex to-group
1918 Elements like @code{(to-group . "some.group.name")} means that all
1919 posts in that group will be sent to @code{some.group.name}.  
1920
1921 @item newsgroup
1922 @cindex newsgroup
1923 If this symbol is present in the group parameter list, Gnus will treat
1924 all responses as if they were responses to news articles.  This can be
1925 useful if you have a mail group that's really a mirror of a news group. 
1926
1927 @item gcc-self
1928 @cindex gcc-self
1929 If this symbol is present in the group parameter list and set to
1930 @code{t}, new composed messages will be @code{Gcc}'d to the current
1931 group. If it is present and set to @code{none}, no @code{Gcc:} header
1932 will be generated, if it is present and a string, this string will be
1933 inserted literally as a @code{gcc} header (this symbol takes precedence over
1934 any default @code{Gcc} rules as described later).
1935
1936 @item auto-expire
1937 @cindex auto-expire
1938 If the group parameter has an element that looks like @code{(auto-expire
1939 . t)}, , all articles that are read will be marked as expirable.  For an
1940 alternative approach, @pxref{Expiring Mail}.
1941
1942 @item total-expire
1943 @cindex total-expire
1944 If the group parameter has an element that looks like
1945 @code{(total-expire . t)}, all read articles will be put through the
1946 expiry process, even if they are not marked as expirable.  Use with
1947 caution.  Unread, ticked and dormant articles are not eligible for
1948 expiry.
1949
1950 @item expiry-wait
1951 @cindex expiry-wait
1952 @vindex nnmail-expiry-wait-function
1953 If the group parameter has an element that looks like @code{(expiry-wait
1954 . 10)}, this value will override any @code{nnmail-expiry-wait} and
1955 @code{nnmail-expiry-wait-function} when expiring expirable messages.
1956 The value can either be a number of days (not necessarily an integer) or
1957 the symbols @code{never} or @code{immediate}.
1958
1959 @item score-file
1960 @cindex score file group parameter
1961 Elements that look like @code{(score-file . "file")} will make
1962 @file{file} into the current score file for the group in question.  This
1963 means that all score commands you issue will end up in that file. 
1964
1965 @item adapt-file
1966 @cindex adapt file group parameter
1967 Elements that look like @code{(adapt-file . "file")} will make
1968 @file{file} into the current adaptive file for the group in question.
1969 All adaptive score entries will be put into this file.
1970
1971 @item admin-address
1972 When unsubscribing to a mailing list you should never send the
1973 unsubscription notice to the mailing list itself.  Instead, you'd send
1974 messages to the administrative address.  This parameter allows you to
1975 put the admin address somewhere convenient.
1976
1977 @item display
1978 Elements that look like @code{(display . MODE)} says which articles to
1979 display on entering the group.  Legal values are:
1980
1981 @table @code
1982 @item all
1983 Display all articles, both read and unread.
1984
1985 @item default
1986 Display the default visible articles, which normally includes unread and
1987 ticked articles.
1988 @end table
1989
1990 @item comment
1991 Elements that look like @code{(comment . "This is a comment")}
1992 are arbitrary comments on the group.  They are currently ignored by
1993 Gnus, but provide a place for you to store information on particular
1994 groups. 
1995
1996 @item @var{(variable form)}
1997 You can use the group parameters to set variables local to the group you
1998 are entering.  If you want to turn threading off in @samp{news.answers},
1999 you could put @code{(gnus-show-threads nil)} in the group parameters of
2000 that group.  @code{gnus-show-threads} will be made into a local variable
2001 in the summary buffer you enter, and the form @code{nil} will be
2002 @code{eval}ed there.
2003
2004 This can also be used as a group-specific hook function, if you'd like.
2005 If you want to hear a beep when you enter a group, you could put
2006 something like @code{(dummy-variable (ding))} in the parameters of that
2007 group.  @code{dummy-variable} will be set to the result of the
2008 @code{(ding)} form, but who cares?
2009
2010 @end table
2011
2012 Use the @kbd{G p} command to edit group parameters of a group.
2013
2014 Also @pxref{Topic Parameters}.
2015
2016 Here's an example group parameter list:
2017
2018 @example
2019 ((to-address . "ding@@gnus.org")
2020  (auto-expiry . t))
2021 @end example
2022
2023
2024 @node Listing Groups
2025 @section Listing Groups
2026 @cindex group listing
2027
2028 These commands all list various slices of the groups that are available.
2029
2030 @table @kbd
2031
2032 @item l
2033 @itemx A s
2034 @kindex A s (Group)
2035 @kindex l (Group)
2036 @findex gnus-group-list-groups
2037 List all groups that have unread articles
2038 (@code{gnus-group-list-groups}).  If the numeric prefix is used, this
2039 command will list only groups of level ARG and lower.  By default, it
2040 only lists groups of level five (i. e.,
2041 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed
2042 groups).
2043
2044 @item L
2045 @itemx A u
2046 @kindex A u (Group)
2047 @kindex L (Group)
2048 @findex gnus-group-list-all-groups
2049 List all groups, whether they have unread articles or not
2050 (@code{gnus-group-list-all-groups}).  If the numeric prefix is used,
2051 this command will list only groups of level ARG and lower.  By default,
2052 it lists groups of level seven or lower (i.e., just subscribed and
2053 unsubscribed groups).
2054
2055 @item A l
2056 @kindex A l (Group)
2057 @findex gnus-group-list-level
2058 List all unread groups on a specific level
2059 (@code{gnus-group-list-level}).  If given a prefix, also list the groups
2060 with no unread articles.
2061
2062 @item A k
2063 @kindex A k (Group)
2064 @findex gnus-group-list-killed
2065 List all killed groups (@code{gnus-group-list-killed}).  If given a
2066 prefix argument, really list all groups that are available, but aren't
2067 currently (un)subscribed.  This could entail reading the active file
2068 from the server.
2069
2070 @item A z
2071 @kindex A z (Group)
2072 @findex gnus-group-list-zombies
2073 List all zombie groups (@code{gnus-group-list-zombies}).
2074
2075 @item A m
2076 @kindex A m (Group)
2077 @findex gnus-group-list-matching
2078 List all unread, subscribed groups with names that match a regexp
2079 (@code{gnus-group-list-matching}). 
2080
2081 @item A M
2082 @kindex A M (Group)
2083 @findex gnus-group-list-all-matching
2084 List groups that match a regexp (@code{gnus-group-list-all-matching}).
2085
2086 @item A A
2087 @kindex A A (Group)
2088 @findex gnus-group-list-active
2089 List absolutely all groups that are in the active file(s) of the
2090 server(s) you are connected to (@code{gnus-group-list-active}).  This
2091 might very well take quite a while.  It might actually be a better idea
2092 to do a @kbd{A M} to list all matching, and just give @samp{.} as the
2093 thing to match on.  Also note that this command may list group that
2094 don't exist (yet)---these will be listed as if they are killed groups.
2095 Take the output with some grains of salt.
2096
2097 @item A a
2098 @kindex A a (Group)
2099 @findex gnus-group-apropos
2100 List all groups that have names that match a regexp
2101 (@code{gnus-group-apropos}).
2102
2103 @item A d
2104 @kindex A d (Group)
2105 @findex gnus-group-description-apropos
2106 List all groups that have names or descriptions that match a regexp
2107 (@code{gnus-group-description-apropos}).
2108
2109 @end table
2110
2111 @vindex gnus-permanently-visible-groups
2112 @cindex visible group parameter
2113 Groups that match the @code{gnus-permanently-visible-groups} regexp will
2114 always be shown, whether they have unread articles or not.  You can also
2115 add the @code{visible} element to the group parameters in question to
2116 get the same effect.
2117
2118 @vindex gnus-list-groups-with-ticked-articles
2119 Groups that have just ticked articles in it are normally listed in the
2120 group buffer.  If @code{gnus-list-groups-with-ticked-articles} is
2121 @code{nil}, these groups will be treated just like totally empty
2122 groups.  It is @code{t} by default.
2123
2124
2125 @node Sorting Groups
2126 @section Sorting Groups
2127 @cindex sorting groups
2128
2129 @kindex C-c C-s (Group)
2130 @findex gnus-group-sort-groups
2131 @vindex gnus-group-sort-function
2132 The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
2133 group buffer according to the function(s) given by the
2134 @code{gnus-group-sort-function} variable.  Available sorting functions
2135 include: 
2136
2137 @table @code
2138
2139 @item gnus-group-sort-by-alphabet
2140 @findex gnus-group-sort-by-alphabet
2141 Sort the group names alphabetically.  This is the default.
2142
2143 @item gnus-group-sort-by-real-name
2144 @findex gnus-group-sort-by-real-name
2145 Sort the group alphabetically on the real (unprefixed) group names.
2146
2147 @item gnus-group-sort-by-level
2148 @findex gnus-group-sort-by-level
2149 Sort by group level.
2150
2151 @item gnus-group-sort-by-score
2152 @findex gnus-group-sort-by-score
2153 Sort by group score.
2154
2155 @item gnus-group-sort-by-rank
2156 @findex gnus-group-sort-by-rank
2157 Sort by group score and then the group level.  The level and the score
2158 are, when taken together, the group's @dfn{rank}. 
2159
2160 @item gnus-group-sort-by-unread
2161 @findex gnus-group-sort-by-unread
2162 Sort by number of unread articles.
2163
2164 @item gnus-group-sort-by-method
2165 @findex gnus-group-sort-by-method
2166 Sort alphabetically on the select method.
2167
2168
2169 @end table
2170
2171 @code{gnus-group-sort-function} can also be a list of sorting
2172 functions.  In that case, the most significant sort key function must be
2173 the last one.
2174
2175
2176 There are also a number of commands for sorting directly according to
2177 some sorting criteria:
2178
2179 @table @kbd
2180 @item G S a
2181 @kindex G S a (Group)
2182 @findex gnus-group-sort-groups-by-alphabet
2183 Sort the group buffer alphabetically by group name
2184 (@code{gnus-group-sort-groups-by-alphabet}). 
2185
2186 @item G S u
2187 @kindex G S u (Group)
2188 @findex gnus-group-sort-groups-by-unread
2189 Sort the group buffer by the number of unread articles
2190 (@code{gnus-group-sort-groups-by-unread}).
2191
2192 @item G S l
2193 @kindex G S l (Group)
2194 @findex gnus-group-sort-groups-by-level
2195 Sort the group buffer by group level
2196 (@code{gnus-group-sort-groups-by-level}). 
2197
2198 @item G S v
2199 @kindex G S v (Group)
2200 @findex gnus-group-sort-groups-by-score
2201 Sort the group buffer by group score
2202 (@code{gnus-group-sort-groups-by-score}). 
2203
2204 @item G S r
2205 @kindex G S r (Group)
2206 @findex gnus-group-sort-groups-by-rank
2207 Sort the group buffer by group rank
2208 (@code{gnus-group-sort-groups-by-rank}). 
2209
2210 @item G S m
2211 @kindex G S m (Group)
2212 @findex gnus-group-sort-groups-by-method
2213 Sort the group buffer alphabetically by backend name
2214 (@code{gnus-group-sort-groups-by-method}). 
2215
2216 @end table
2217
2218 When given a prefix, all these commands will sort in reverse order. 
2219
2220 You can also sort a subset of the groups:
2221
2222 @table @kbd
2223 @item G P a
2224 @kindex G P a (Group)
2225 @findex gnus-group-sort-selected-groups-by-alphabet
2226 Sort the process/prefixed groups in the group buffer alphabetically by
2227 group name (@code{gnus-group-sort-selected-groups-by-alphabet}).
2228
2229 @item G P u
2230 @kindex G P u (Group)
2231 @findex gnus-group-sort-selected-groups-by-unread
2232 Sort the process/prefixed groups in the group buffer by the number of
2233 unread articles (@code{gnus-group-sort-selected-groups-by-unread}).
2234
2235 @item G P l
2236 @kindex G P l (Group)
2237 @findex gnus-group-sort-selected-groups-by-level
2238 Sort the process/prefixed groups in the group buffer by group level
2239 (@code{gnus-group-sort-selected-groups-by-level}).
2240
2241 @item G P v
2242 @kindex G P v (Group)
2243 @findex gnus-group-sort-selected-groups-by-score
2244 Sort the process/prefixed groups in the group buffer by group score
2245 (@code{gnus-group-sort-selected-groups-by-score}).
2246
2247 @item G P r
2248 @kindex G P r (Group)
2249 @findex gnus-group-sort-selected-groups-by-rank
2250 Sort the process/prefixed groups in the group buffer by group rank
2251 (@code{gnus-group-sort-selected-groups-by-rank}).
2252
2253 @item G P m
2254 @kindex G P m (Group)
2255 @findex gnus-group-sort-selected-groups-by-method
2256 Sort the process/prefixed groups in the group buffer alphabetically by
2257 backend name (@code{gnus-group-sort-selected-groups-by-method}).
2258
2259 @end table
2260
2261
2262
2263 @node Group Maintenance
2264 @section Group Maintenance
2265 @cindex bogus groups
2266
2267 @table @kbd
2268 @item b
2269 @kindex b (Group)
2270 @findex gnus-group-check-bogus-groups
2271 Find bogus groups and delete them
2272 (@code{gnus-group-check-bogus-groups}).
2273
2274 @item F
2275 @kindex F (Group)
2276 @findex gnus-group-find-new-groups
2277 Find new groups and process them (@code{gnus-group-find-new-groups}).
2278 If given a prefix, use the @code{ask-server} method to query the server
2279 for new groups.
2280
2281 @item C-c C-x
2282 @kindex C-c C-x (Group)
2283 @findex gnus-group-expire-articles
2284 Run all expirable articles in the current group through the expiry
2285 process (if any) (@code{gnus-group-expire-articles}).
2286
2287 @item C-c M-C-x
2288 @kindex C-c M-C-x (Group)
2289 @findex gnus-group-expire-all-groups
2290 Run all articles in all groups through the expiry process
2291 (@code{gnus-group-expire-all-groups}).
2292
2293 @end table
2294
2295
2296 @node Browse Foreign Server
2297 @section Browse Foreign Server
2298 @cindex foreign servers
2299 @cindex browsing servers
2300
2301 @table @kbd
2302 @item B
2303 @kindex B (Group)
2304 @findex gnus-group-browse-foreign-server
2305 You will be queried for a select method and a server name.  Gnus will
2306 then attempt to contact this server and let you browse the groups there
2307 (@code{gnus-group-browse-foreign-server}).
2308 @end table
2309
2310 @findex gnus-browse-mode
2311 A new buffer with a list of available groups will appear.  This buffer
2312 will be use the @code{gnus-browse-mode}.  This buffer looks a bit (well,
2313 a lot) like a normal group buffer.
2314
2315 Here's a list of keystrokes available in the browse mode:
2316
2317 @table @kbd
2318 @item n
2319 @kindex n (Browse)
2320 @findex gnus-group-next-group
2321 Go to the next group (@code{gnus-group-next-group}).
2322
2323 @item p
2324 @kindex p (Browse)
2325 @findex gnus-group-prev-group
2326 Go to the previous group (@code{gnus-group-prev-group}).
2327
2328 @item SPACE
2329 @kindex SPACE (Browse)
2330 @findex gnus-browse-read-group
2331 Enter the current group and display the first article
2332 (@code{gnus-browse-read-group}). 
2333
2334 @item RET
2335 @kindex RET (Browse)
2336 @findex gnus-browse-select-group
2337 Enter the current group (@code{gnus-browse-select-group}). 
2338
2339 @item u
2340 @kindex u (Browse)
2341 @findex gnus-browse-unsubscribe-current-group
2342 Unsubscribe to the current group, or, as will be the case here,
2343 subscribe to it (@code{gnus-browse-unsubscribe-current-group}). 
2344
2345 @item l
2346 @itemx q
2347 @kindex q (Browse)
2348 @kindex l (Browse)
2349 @findex gnus-browse-exit
2350 Exit browse mode (@code{gnus-browse-exit}).
2351
2352 @item ?
2353 @kindex ? (Browse)
2354 @findex gnus-browse-describe-briefly
2355 Describe browse mode briefly (well, there's not much to describe, is
2356 there) (@code{gnus-browse-describe-briefly}).
2357 @end table
2358
2359
2360 @node Exiting Gnus
2361 @section Exiting Gnus
2362 @cindex exiting Gnus
2363
2364 Yes, Gnus is ex(c)iting.
2365
2366 @table @kbd
2367 @item z
2368 @kindex z (Group)
2369 @findex gnus-group-suspend
2370 Suspend Gnus (@code{gnus-group-suspend}).  This doesn't really exit Gnus,
2371 but it kills all buffers except the Group buffer.  I'm not sure why this
2372 is a gain, but then who am I to judge?
2373
2374 @item q
2375 @kindex q (Group)
2376 @findex gnus-group-exit
2377 Quit Gnus (@code{gnus-group-exit}).
2378
2379 @item Q
2380 @kindex Q (Group)
2381 @findex gnus-group-quit
2382 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
2383 The dribble file will be saved, though (@pxref{Auto Save}).
2384 @end table
2385
2386 @vindex gnus-exit-gnus-hook
2387 @vindex gnus-suspend-gnus-hook
2388 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
2389 @code{gnus-exit-gnus-hook} is called when you quit Gnus, while
2390 @code{gnus-after-exiting-gnus-hook} is called as the final item when
2391 exiting Gnus.
2392
2393 @findex gnus-unload
2394 @cindex unloading
2395 If you wish to completely unload Gnus and all its adherents, you can use
2396 the @code{gnus-unload} command.  This command is also very handy when
2397 trying to customize meta-variables.
2398
2399 Note:
2400
2401 @quotation
2402 Miss Lisa Cannifax, while sitting in English class, felt her feet go
2403 numbly heavy and herself fall into a hazy trance as the boy sitting
2404 behind her drew repeated lines with his pencil across the back of her
2405 plastic chair.
2406 @end quotation
2407
2408
2409 @node Group Topics
2410 @section Group Topics
2411 @cindex topics
2412
2413 If you read lots and lots of groups, it might be convenient to group
2414 them hierarchically according to topics.  You put your Emacs groups over
2415 here, your sex groups over there, and the rest (what, two groups or so?)
2416 you put in some misc section that you never bother with anyway.  You can
2417 even group the Emacs sex groups as a sub-topic to either the Emacs
2418 groups or the sex groups---or both!  Go wild!
2419
2420 Here's an example:
2421
2422 @example
2423 Gnus
2424   Emacs -- I wuw it!
2425      3: comp.emacs
2426      2: alt.religion.emacs
2427     Naughty Emacs
2428      452: alt.sex.emacs
2429        0: comp.talk.emacs.recovery
2430   Misc
2431      8: comp.binaries.fractals
2432     13: comp.sources.unix
2433 @end example
2434
2435 @findex gnus-topic-mode
2436 @kindex t (Group)
2437 To get this @emph{fab} functionality you simply turn on (ooh!) the
2438 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer.  (This
2439 is a toggling command.)
2440
2441 Go ahead, just try it.  I'll still be here when you get back.  La de
2442 dum...  Nice tune, that...  la la la...  What, you're back? Yes, and now
2443 press @kbd{l}.  There.  All your groups are now listed under
2444 @samp{misc}.  Doesn't that make you feel all warm and fuzzy?  Hot and
2445 bothered?
2446
2447 If you want this permanently enabled, you should add that minor mode to
2448 the hook for the group mode:
2449
2450 @lisp
2451 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
2452 @end lisp
2453
2454 @menu 
2455 * Topic Variables::    How to customize the topics the Lisp Way.
2456 * Topic Commands::     Interactive E-Z commands.
2457 * Topic Sorting::      Sorting each topic individually.
2458 * Topic Topology::     A map of the world.
2459 * Topic Parameters::   Parameters that apply to all groups in a topic.
2460 @end menu
2461
2462
2463 @node Topic Variables
2464 @subsection Topic Variables
2465 @cindex topic variables
2466
2467 Now, if you select a topic, if will fold/unfold that topic, which is
2468 really neat, I think.
2469
2470 @vindex gnus-topic-line-format
2471 The topic lines themselves are created according to the
2472 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
2473 Legal elements are:
2474
2475 @table @samp
2476 @item i
2477 Indentation.
2478 @item n
2479 Topic name.
2480 @item v
2481 Visibility.
2482 @item l
2483 Level.
2484 @item g
2485 Number of groups in the topic.
2486 @item a
2487 Number of unread articles in the topic.
2488 @item A 
2489 Number of unread articles in the topic and all its subtopics. 
2490 @end table
2491
2492 @vindex gnus-topic-indent-level
2493 Each sub-topic (and the groups in the sub-topics) will be indented with
2494 @code{gnus-topic-indent-level} times the topic level number of spaces.
2495 The default is 2.
2496
2497 @vindex gnus-topic-mode-hook
2498 @code{gnus-topic-mode-hook} is called in topic minor mode buffers. 
2499
2500 @vindex gnus-topic-display-empty-topics
2501 The @code{gnus-topic-display-empty-topics} says whether to display even
2502 topics that have no unread articles in them.  The default is @code{t}.
2503
2504
2505 @node Topic Commands
2506 @subsection Topic Commands
2507 @cindex topic commands
2508
2509 When the topic minor mode is turned on, a new @kbd{T} submap will be
2510 available.  In addition, a few of the standard keys change their
2511 definitions slightly.
2512
2513 @table @kbd
2514
2515 @item T n
2516 @kindex T n (Topic)
2517 @findex gnus-topic-create-topic
2518 Prompt for a new topic name and create it 
2519 (@code{gnus-topic-create-topic}). 
2520
2521 @item T m
2522 @kindex T m (Topic)
2523 @findex gnus-topic-move-group
2524 Move the current group to some other topic
2525 (@code{gnus-topic-move-group}).  This command uses the process/prefix
2526 convention (@pxref{Process/Prefix}).
2527
2528 @item T c
2529 @kindex T c (Topic)
2530 @findex gnus-topic-copy-group
2531 Copy the current group to some other topic
2532 (@code{gnus-topic-copy-group}).  This command uses the process/prefix
2533 convention (@pxref{Process/Prefix}).
2534
2535 @item T D
2536 @kindex T D (Topic)
2537 @findex gnus-topic-remove-group
2538 Remove a group from the current topic (@code{gnus-topic-remove-group}).
2539 This command uses the process/prefix convention
2540 (@pxref{Process/Prefix}).
2541
2542 @item T M
2543 @kindex T M (Topic)
2544 @findex gnus-topic-move-matching
2545 Move all groups that match some regular expression to a topic
2546 (@code{gnus-topic-move-matching}). 
2547
2548 @item T C
2549 @kindex T C (Topic)
2550 @findex gnus-topic-copy-matching
2551 Copy all groups that match some regular expression to a topic
2552 (@code{gnus-topic-copy-matching}). 
2553
2554 @item T h
2555 @kindex T h (Topic)
2556 @findex gnus-topic-toggle-display-empty-topics
2557 Toggle hiding empty topics
2558 (@code{gnus-topic-toggle-display-empty-topics}). 
2559
2560 @item T #
2561 @kindex T # (Topic)
2562 @findex gnus-topic-mark-topic
2563 Mark all groups in the current topic with the process mark
2564 (@code{gnus-topic-mark-topic}). 
2565
2566 @item T M-#
2567 @kindex T M-# (Topic)
2568 @findex gnus-topic-unmark-topic
2569 Remove the process mark from all groups in the current topic
2570 (@code{gnus-topic-unmark-topic}). 
2571
2572 @item RET
2573 @kindex RET (Topic)
2574 @findex gnus-topic-select-group
2575 @itemx SPACE
2576 Either select a group or fold a topic (@code{gnus-topic-select-group}).
2577 When you perform this command on a group, you'll enter the group, as
2578 usual.  When done on a topic line, the topic will be folded (if it was
2579 visible) or unfolded (if it was folded already).  So it's basically a
2580 toggling command on topics.  In addition, if you give a numerical
2581 prefix, group on that level (and lower) will be displayed.
2582
2583 @item T TAB
2584 @kindex T TAB (Topic)
2585 @findex gnus-topic-indent
2586 ``Indent'' the current topic so that it becomes a sub-topic of the
2587 previous topic (@code{gnus-topic-indent}).  If given a prefix,
2588 ``un-indent'' the topic instead.
2589
2590 @item C-k
2591 @kindex C-k (Topic)
2592 @findex gnus-topic-kill-group
2593 Kill a group or topic (@code{gnus-topic-kill-group}).  All groups in the
2594 topic will be removed along with the topic.
2595
2596 @item C-y
2597 @kindex C-y (Topic)
2598 @findex gnus-topic-yank-group
2599 Yank the previously killed group or topic
2600 (@code{gnus-topic-yank-group}).  Note that all topics will be yanked
2601 before all groups. 
2602
2603 @item T r
2604 @kindex T r (Topic)
2605 @findex gnus-topic-rename
2606 Rename a topic (@code{gnus-topic-rename}). 
2607
2608 @item T DEL
2609 @kindex T DEL (Topic)
2610 @findex gnus-topic-delete
2611 Delete an empty topic (@code{gnus-topic-delete}). 
2612
2613 @item A T
2614 @kindex A T (Topic)
2615 @findex gnus-topic-list-active
2616 List all groups that Gnus knows about in a topics-ified way
2617 (@code{gnus-topic-list-active}).
2618
2619 @item G p
2620 @kindex G p (Topic)
2621 @findex gnus-topic-edit-parameters
2622 @cindex group parameters
2623 @cindex topic parameters
2624 @cindex parameters
2625 Edit the topic parameters (@code{gnus-topic-edit-parameters}).
2626 @xref{Topic Parameters}.
2627
2628 @end table
2629
2630
2631 @node Topic Sorting
2632 @subsection Topic Sorting
2633 @cindex topic sorting
2634
2635 You can sort the groups in each topic individually with the following
2636 commands: 
2637
2638
2639 @table @kbd
2640 @item T S a
2641 @kindex T S a (Topic)
2642 @findex gnus-topic-sort-groups-by-alphabet
2643 Sort the current topic alphabetically by group name
2644 (@code{gnus-topic-sort-groups-by-alphabet}). 
2645
2646 @item T S u
2647 @kindex T S u (Topic)
2648 @findex gnus-topic-sort-groups-by-unread
2649 Sort the current topic by the number of unread articles
2650 (@code{gnus-topic-sort-groups-by-unread}).
2651
2652 @item T S l
2653 @kindex T S l (Topic)
2654 @findex gnus-topic-sort-groups-by-level
2655 Sort the current topic by group level
2656 (@code{gnus-topic-sort-groups-by-level}). 
2657
2658 @item T S v
2659 @kindex T S v (Topic)
2660 @findex gnus-topic-sort-groups-by-score
2661 Sort the current topic by group score
2662 (@code{gnus-topic-sort-groups-by-score}). 
2663
2664 @item T S r
2665 @kindex T S r (Topic)
2666 @findex gnus-topic-sort-groups-by-rank
2667 Sort the current topic by group rank
2668 (@code{gnus-topic-sort-groups-by-rank}). 
2669
2670 @item T S m
2671 @kindex T S m (Topic)
2672 @findex gnus-topic-sort-groups-by-method
2673 Sort the current topic alphabetically by backend name
2674 (@code{gnus-topic-sort-groups-by-method}). 
2675
2676 @end table
2677
2678 @xref{Sorting Groups} for more information about group sorting. 
2679
2680
2681 @node Topic Topology
2682 @subsection Topic Topology
2683 @cindex topic topology
2684 @cindex topology
2685
2686 So, let's have a look at an example group buffer:
2687
2688 @example
2689 Gnus
2690   Emacs -- I wuw it!
2691      3: comp.emacs
2692      2: alt.religion.emacs
2693     Naughty Emacs
2694      452: alt.sex.emacs
2695        0: comp.talk.emacs.recovery
2696   Misc
2697      8: comp.binaries.fractals
2698     13: comp.sources.unix
2699 @end example
2700
2701 So, here we have one top-level topic (@samp{Gnus}), two topics under
2702 that, and one sub-topic under one of the sub-topics.  (There is always
2703 just one (1) top-level topic).  This topology can be expressed as
2704 follows:
2705
2706 @lisp
2707 (("Gnus" visible)
2708  (("Emacs -- I wuw it!" visible) 
2709   (("Naughty Emacs" visible)))
2710  (("Misc" visible)))
2711 @end lisp
2712
2713 @vindex gnus-topic-topology
2714 This is in fact how the variable @code{gnus-topic-topology} would look
2715 for the display above.  That variable is saved in the @file{.newsrc.eld}
2716 file, and shouldn't be messed with manually---unless you really want
2717 to.  Since this variable is read from the @file{.newsrc.eld} file,
2718 setting it in any other startup files will have no effect.  
2719
2720 This topology shows what topics are sub-topics of what topics (right),
2721 and which topics are visible.  Two settings are currently
2722 allowed---@code{visible} and @code{invisible}.
2723
2724
2725 @node Topic Parameters
2726 @subsection Topic Parameters
2727 @cindex topic parameters
2728
2729 All groups in a topic will inherit group parameters from the parent (and
2730 ancestor) topic parameters.  All legal group parameters are legal topic
2731 parameters (@pxref{Group Parameters}).  
2732
2733 Group parameters (of course) override topic parameters, and topic
2734 parameters in sub-topics override topic parameters in super-topics.  You
2735 know.  Normal inheritance rules.  (@dfn{Rules} is here a noun, not a
2736 verb, although you may feel free to disagree with me here.)
2737
2738 @example
2739 Gnus
2740   Emacs
2741      3: comp.emacs
2742      2: alt.religion.emacs
2743    452: alt.sex.emacs
2744     Relief
2745      452: alt.sex.emacs
2746        0: comp.talk.emacs.recovery
2747   Misc
2748      8: comp.binaries.fractals
2749     13: comp.sources.unix
2750    452: alt.sex.emacs
2751 @end example
2752
2753 The @samp{Emacs} topic has the topic parameter @code{(score-file
2754 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
2755 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
2756 topic parameter @code{(score-file . "emacs.SCORE")}.  In addition,
2757 @samp{alt.religion.emacs} has the group parameter @code{(score-file
2758 . "religion.SCORE")}.
2759
2760 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
2761 will get the @file{relief.SCORE} home score file.  If you enter the same
2762 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
2763 score file.  If you enter the group @samp{alt.religion.emacs}, you'll
2764 get the @file{religion.SCORE} home score file.
2765
2766 This seems rather simple and self-evident, doesn't it?  Well, yes.  But
2767 there are some problems, especially with the @code{total-expiry}
2768 parameter.  Say you have a mail group in two topics; one with
2769 @code{total-expiry} and one without.  What happens when you do @kbd{M-x
2770 gnus-expire-all-expirable-groups}?  Gnus has no way of telling which one
2771 of these topics you mean to expire articles from, so anything may
2772 happen.  In fact, I hereby declare that it is @dfn{undefined} what
2773 happens.  You just have to be careful if you do stuff like that.
2774
2775
2776 @node Misc Group Stuff
2777 @section Misc Group Stuff
2778
2779 @menu
2780 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
2781 * Group Information::     Information and help on groups and Gnus.
2782 * Group Timestamp::       Making Gnus keep track of when you last read a group.
2783 * File Commands::         Reading and writing the Gnus files.
2784 @end menu
2785
2786 @table @kbd
2787
2788 @item ^
2789 @kindex ^ (Group)
2790 @findex gnus-group-enter-server-mode
2791 Enter the server buffer (@code{gnus-group-enter-server-mode}).
2792 @xref{The Server Buffer}.
2793
2794 @item a
2795 @kindex a (Group)
2796 @findex gnus-group-post-news
2797 Post an article to a group (@code{gnus-group-post-news}).  The current
2798 group name will be used as the default.
2799
2800 @item m
2801 @kindex m (Group)
2802 @findex gnus-group-mail
2803 Mail a message somewhere (@code{gnus-group-mail}).
2804
2805 @end table
2806
2807 Variables for the group buffer:
2808
2809 @table @code
2810
2811 @item gnus-group-mode-hook
2812 @vindex gnus-group-mode-hook
2813 @code{gnus-group-mode-hook} is called after the group buffer has been
2814 created. 
2815
2816 @item gnus-group-prepare-hook
2817 @vindex gnus-group-prepare-hook
2818 @code{gnus-group-prepare-hook} is called after the group buffer is
2819 generated.  It may be used to modify the buffer in some strange,
2820 unnatural way.
2821
2822 @item gnus-permanently-visible-groups
2823 @vindex gnus-permanently-visible-groups
2824 Groups matching this regexp will always be listed in the group buffer,
2825 whether they are empty or not.
2826
2827 @end table
2828
2829
2830 @node Scanning New Messages
2831 @subsection Scanning New Messages
2832 @cindex new messages
2833 @cindex scanning new news
2834
2835 @table @kbd
2836
2837 @item g
2838 @kindex g (Group)
2839 @findex gnus-group-get-new-news
2840 Check the server(s) for new articles.  If the numerical prefix is used,
2841 this command will check only groups of level @var{arg} and lower
2842 (@code{gnus-group-get-new-news}).  If given a non-numerical prefix, this
2843 command will force a total rereading of the active file(s) from the
2844 backend(s).
2845
2846 @item M-g
2847 @kindex M-g (Group)
2848 @findex gnus-group-get-new-news-this-group
2849 @vindex gnus-goto-next-group-when-activating
2850 Check whether new articles have arrived in the current group
2851 (@code{gnus-group-get-new-news-this-group}).
2852 @code{gnus-goto-next-group-when-activating} says whether this command is
2853 to move point to the next group or not.  It is @code{t} by default.
2854
2855 @findex gnus-activate-all-groups
2856 @cindex activating groups
2857 @item C-c M-g
2858 @kindex C-c M-g (Group)
2859 Activate absolutely all groups (@code{gnus-activate-all-groups}). 
2860
2861 @item R
2862 @kindex R (Group)
2863 @cindex restarting
2864 @findex gnus-group-restart
2865 Restart Gnus (@code{gnus-group-restart}).  This saves the @file{.newsrc}
2866 file(s), closes the connection to all servers, clears up all run-time
2867 Gnus variables, and then starts Gnus all over again.
2868
2869 @end table
2870
2871 @vindex gnus-get-new-news-hook
2872 @code{gnus-get-new-news-hook} is run just before checking for new news. 
2873
2874 @vindex gnus-after-getting-new-news-hook
2875 @code{gnus-after-getting-new-news-hook} is run after checking for new
2876 news.
2877
2878
2879 @node Group Information
2880 @subsection Group Information
2881 @cindex group information
2882 @cindex information on groups
2883
2884 @table @kbd
2885
2886
2887 @item H f
2888 @kindex H f (Group)
2889 @findex gnus-group-fetch-faq
2890 @vindex gnus-group-faq-directory
2891 @cindex FAQ
2892 @cindex ange-ftp
2893 Try to fetch the FAQ for the current group
2894 (@code{gnus-group-fetch-faq}).  Gnus will try to get the FAQ from
2895 @code{gnus-group-faq-directory}, which is usually a directory on a
2896 remote machine.  This variable can also be a list of directories.  In
2897 that case, giving a prefix to this command will allow you to choose
2898 between the various sites.  @code{ange-ftp} (or @code{efs}) will be used
2899 for fetching the file.
2900
2901 If fetching from the first site is unsuccessful, Gnus will attempt to go
2902 through @code{gnus-group-faq-directory} and try to open them one by one.
2903
2904 @item H d
2905 @itemx C-c C-d
2906 @kindex H d (Group)
2907 @kindex C-c C-d (Group)
2908 @cindex describing groups
2909 @cindex group description
2910 @findex gnus-group-describe-group
2911 Describe the current group (@code{gnus-group-describe-group}).  If given
2912 a prefix, force Gnus to re-read the description from the server.
2913
2914 @item M-d
2915 @kindex M-d (Group)
2916 @findex gnus-group-describe-all-groups
2917 Describe all groups (@code{gnus-group-describe-all-groups}).  If given a
2918 prefix, force Gnus to re-read the description file from the server.
2919
2920 @item H v
2921 @itemx V
2922 @kindex V (Group)
2923 @kindex H v (Group)
2924 @cindex version
2925 @findex gnus-version
2926 Display current Gnus version numbers (@code{gnus-version}).
2927
2928 @item ?
2929 @kindex ? (Group)
2930 @findex gnus-group-describe-briefly
2931 Give a very short help message (@code{gnus-group-describe-briefly}).
2932
2933 @item C-c C-i
2934 @kindex C-c C-i (Group)
2935 @cindex info
2936 @cindex manual
2937 @findex gnus-info-find-node
2938 Go to the Gnus info node (@code{gnus-info-find-node}).
2939 @end table
2940
2941
2942 @node Group Timestamp
2943 @subsection Group Timestamp
2944 @cindex timestamps
2945 @cindex group timestamps
2946
2947 It can be convenient to let Gnus keep track of when you last read a
2948 group.  To set the ball rolling, you should add
2949 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
2950
2951 @lisp
2952 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
2953 @end lisp
2954
2955 After doing this, each time you enter a group, it'll be recorded.
2956
2957 This information can be displayed in various ways---the easiest is to
2958 use the @samp{%d} spec in the group line format:
2959
2960 @lisp
2961 (setq gnus-group-line-format 
2962       "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
2963 @end lisp
2964
2965 This will result in lines looking like:
2966
2967 @example
2968 *        0: mail.ding                                19961002T012943
2969          0: custom                                   19961002T012713
2970 @end example
2971
2972 As you can see, the date is displayed in compact ISO 8601 format.  This
2973 may be a bit too much, so to just display the date, you could say
2974 something like:
2975
2976 @lisp
2977 (setq gnus-group-line-format 
2978       "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
2979 @end lisp
2980
2981
2982 @node File Commands
2983 @subsection File Commands
2984 @cindex file commands
2985
2986 @table @kbd
2987
2988 @item r
2989 @kindex r (Group)
2990 @findex gnus-group-read-init-file
2991 @vindex gnus-init-file
2992 @cindex reading init file
2993 Re-read the init file (@code{gnus-init-file}, which defaults to
2994 @file{~/.gnus}) (@code{gnus-group-read-init-file}).
2995
2996 @item s
2997 @kindex s (Group)
2998 @findex gnus-group-save-newsrc
2999 @cindex saving .newsrc
3000 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
3001 (@code{gnus-group-save-newsrc}).  If given a prefix, force saving the
3002 file(s) whether Gnus thinks it is necessary or not.
3003
3004 @c @item Z
3005 @c @kindex Z (Group)
3006 @c @findex gnus-group-clear-dribble
3007 @c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
3008
3009 @end table
3010
3011
3012 @node The Summary Buffer
3013 @chapter The Summary Buffer
3014 @cindex summary buffer
3015
3016 A line for each article is displayed in the summary buffer.  You can
3017 move around, read articles, post articles and reply to articles.
3018
3019 The most common way to a summary buffer is to select a group from the
3020 group buffer (@pxref{Selecting a Group}).  
3021
3022 You can have as many summary buffers open as you wish.
3023
3024 @menu
3025 * Summary Buffer Format::       Deciding how the summary buffer is to look.
3026 * Summary Maneuvering::         Moving around the summary buffer.
3027 * Choosing Articles::           Reading articles.
3028 * Paging the Article::          Scrolling the current article.
3029 * Reply Followup and Post::     Posting articles.
3030 * Canceling and Superseding::   ``Whoops, I shouldn't have called him that.''
3031 * Marking Articles::            Marking articles as read, expirable, etc.
3032 * Limiting::                    You can limit the summary buffer.
3033 * Threading::                   How threads are made.
3034 * Sorting::                     How articles and threads are sorted.
3035 * Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
3036 * Article Caching::             You may store articles in a cache.
3037 * Persistent Articles::         Making articles expiry-resistant.
3038 * Article Backlog::             Having already read articles hang around.
3039 * Saving Articles::             Ways of customizing article saving.
3040 * Decoding Articles::           Gnus can treat series of (uu)encoded articles.
3041 * Article Treatment::           The article buffer can be mangled at will.
3042 * Article Commands::            Doing various things with the article buffer.
3043 * Summary Sorting::             Sorting the summary buffer in various ways.
3044 * Finding the Parent::          No child support? Get the parent.
3045 * Alternative Approaches::      Reading using non-default summaries.
3046 * Tree Display::                A more visual display of threads.
3047 * Mail Group Commands::         Some commands can only be used in mail groups.
3048 * Various Summary Stuff::       What didn't fit anywhere else.
3049 * Exiting the Summary Buffer::  Returning to the Group buffer.
3050 * Crosspost Handling::          How crossposted articles are dealt with.
3051 * Duplicate Suppression::       An alternative when crosspost handling fails.
3052 @end menu
3053
3054
3055 @node Summary Buffer Format
3056 @section Summary Buffer Format
3057 @cindex summary buffer format
3058
3059 @menu
3060 * Summary Buffer Lines::     You can specify how summary lines should look.
3061 * Summary Buffer Mode Line:: You can say how the mode line should look.
3062 * Summary Highlighting::     Making the summary buffer all pretty and nice.
3063 @end menu
3064
3065 @findex mail-extract-address-components
3066 @findex gnus-extract-address-components
3067 @vindex gnus-extract-address-components
3068 Gnus will use the value of the @code{gnus-extract-address-components}
3069 variable as a function for getting the name and address parts of a
3070 @code{From} header.  Two pre-defined function exist:
3071 @code{gnus-extract-address-components}, which is the default, quite
3072 fast, and too simplistic solution; and
3073 @code{mail-extract-address-components}, which works very nicely, but is
3074 slower.  The default function will return the wrong answer in 5% of the
3075 cases.  If this is unacceptable to you, use the other function instead.
3076
3077 @vindex gnus-summary-same-subject
3078 @code{gnus-summary-same-subject} is a string indicating that the current
3079 article has the same subject as the previous.  This string will be used
3080 with those specs that require it.  The default is @samp{}.
3081
3082
3083 @node Summary Buffer Lines
3084 @subsection Summary Buffer Lines
3085
3086 @vindex gnus-summary-line-format
3087 You can change the format of the lines in the summary buffer by changing
3088 the @code{gnus-summary-line-format} variable.  It works along the same
3089 lines a a normal @code{format} string, with some extensions
3090 (@pxref{Formatting Variables}).
3091
3092 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
3093
3094 The following format specification characters are understood:
3095
3096 @table @samp
3097 @item N 
3098 Article number.
3099 @item S
3100 Subject string.
3101 @item s
3102 Subject if the article is the root or the previous article had a
3103 different subject, @code{gnus-summary-same-subject} otherwise.
3104 (@code{gnus-summary-same-subject} defaults to @samp{}.)
3105 @item F
3106 Full @code{From} header.
3107 @item n
3108 The name (from the @code{From} header).
3109 @item a
3110 The name (from the @code{From} header).  This differs from the @code{n}
3111 spec in that it uses the function designated by the
3112 @code{gnus-extract-address-components} variable, which is slower, but
3113 may be more thorough.
3114 @item A
3115 The address (from the @code{From} header).  This works the same way as
3116 the @code{a} spec.
3117 @item L
3118 Number of lines in the article.
3119 @item c
3120 Number of characters in the article.
3121 @item I
3122 Indentation based on thread level (@pxref{Customizing Threading}).
3123 @item T
3124 Nothing if the article is a root and lots of spaces if it isn't (it
3125 pushes everything after it off the screen).
3126 @item [
3127 Opening bracket, which is normally @samp{[}, but can also be @samp{<}
3128 for adopted articles (@pxref{Customizing Threading}).
3129 @item ]
3130 Closing bracket, which is normally @samp{]}, but can also be @samp{>}
3131 for adopted articles.
3132 @item >
3133 One space for each thread level.
3134 @item <
3135 Twenty minus thread level spaces.
3136 @item U
3137 Unread.
3138 @item R
3139 Replied.
3140 @item i
3141 Score as a number.
3142 @item z
3143 @vindex gnus-summary-zcore-fuzz
3144 Zcore, @samp{+} if above the default level and @samp{-} if below the
3145 default level.  If the difference between
3146 @code{gnus-summary-default-level} and the score is less than
3147 @code{gnus-summary-zcore-fuzz}, this spec will not be used.
3148 @item V
3149 Total thread score.
3150 @item x
3151 @code{Xref}.
3152 @item D
3153 @code{Date}.
3154 @item d
3155 The @code{Date} in @code{DD-MMM} format.
3156 @item o
3157 The @code{Date} in @code{YYYYMMDDTHHMMSS} format.
3158 @item M
3159 @code{Message-ID}.
3160 @item r
3161 @code{References}.
3162 @item t
3163 Number of articles in the current sub-thread.  Using this spec will slow
3164 down summary buffer generation somewhat.
3165 @item e
3166 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
3167 article has any children.
3168 @item P
3169 The line number.
3170 @item u
3171 User defined specifier.  The next character in the format string should
3172 be a letter.  @sc{gnus} will call the function
3173 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
3174 following @samp{%u}.  The function will be passed the current header as
3175 argument.  The function should return a string, which will be inserted
3176 into the summary just like information from any other summary specifier.
3177 @end table
3178
3179 The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
3180 have to be handled with care.  For reasons of efficiency, Gnus will
3181 compute what column these characters will end up in, and ``hard-code''
3182 that.  This means that it is illegal to have these specs after a
3183 variable-length spec.  Well, you might not be arrested, but your summary
3184 buffer will look strange, which is bad enough.
3185
3186 The smart choice is to have these specs as far to the left as possible.
3187 (Isn't that the case with everything, though?  But I digress.)
3188
3189 This restriction may disappear in later versions of Gnus.
3190
3191
3192 @node Summary Buffer Mode Line
3193 @subsection Summary Buffer Mode Line
3194
3195 @vindex gnus-summary-mode-line-format
3196 You can also change the format of the summary mode bar.  Set
3197 @code{gnus-summary-mode-line-format} to whatever you like.  The default
3198 is @samp{Gnus: %%b [%A] %Z}.  
3199
3200 Here are the elements you can play with:
3201
3202 @table @samp
3203 @item G
3204 Group name.
3205 @item p
3206 Unprefixed group name.
3207 @item A
3208 Current article number.
3209 @item V
3210 Gnus version.
3211 @item U
3212 Number of unread articles in this group.
3213 @item e
3214 Number of unselected articles in this group.
3215 @item Z
3216 A string with the number of unread and unselected articles represented
3217 either as @samp{<%U(+%e) more>} if there are both unread and unselected
3218 articles, and just as @samp{<%U more>} if there are just unread articles
3219 and no unselected ones.
3220 @item g
3221 Shortish group name.  For instance, @samp{rec.arts.anime} will be
3222 shortened to @samp{r.a.anime}. 
3223 @item S
3224 Subject of the current article.
3225 @item u
3226 User-defined spec.
3227 @item s
3228 Name of the current score file.
3229 @item d
3230 Number of dormant articles.
3231 @item t
3232 Number of ticked articles.
3233 @item r
3234 Number of articles that have been marked as read in this session. 
3235 @item E
3236 Number of articles expunged by the score files.
3237 @end table
3238
3239
3240 @node Summary Highlighting
3241 @subsection Summary Highlighting
3242
3243 @table @code
3244
3245 @item gnus-visual-mark-article-hook
3246 @vindex gnus-visual-mark-article-hook
3247 This hook is run after selecting an article.  It is meant to be used for
3248 highlighting the article in some way.  It is not run if
3249 @code{gnus-visual} is @code{nil}.
3250
3251 @item gnus-summary-update-hook
3252 @vindex gnus-summary-update-hook
3253 This hook is called when a summary line is changed.  It is not run if
3254 @code{gnus-visual} is @code{nil}.
3255
3256 @item gnus-summary-selected-face
3257 @vindex gnus-summary-selected-face
3258 This is the face (or @dfn{font} as some people call it) that is used to
3259 highlight the current article in the summary buffer.
3260
3261 @item gnus-summary-highlight
3262 @vindex gnus-summary-highlight
3263 Summary lines are highlighted according to this variable, which is a
3264 list where the elements are on the format @var{(FORM . FACE)}.  If you
3265 would, for instance, like ticked articles to be italic and high-scored
3266 articles to be bold, you could set this variable to something like
3267 @lisp
3268 (((eq mark gnus-ticked-mark) . italic)
3269  ((> score default) . bold))
3270 @end lisp
3271 As you may have guessed, if @var{FORM} returns a non-@code{nil} value,
3272 @var{FACE} will be applied to the line.
3273 @end table
3274
3275
3276 @node Summary Maneuvering
3277 @section Summary Maneuvering
3278 @cindex summary movement
3279
3280 All the straight movement commands understand the numeric prefix and
3281 behave pretty much as you'd expect. 
3282
3283 None of these commands select articles.
3284
3285 @table @kbd
3286 @item G M-n
3287 @itemx M-n
3288 @kindex M-n (Summary)
3289 @kindex G M-n (Summary)
3290 @findex gnus-summary-next-unread-subject
3291 Go to the next summary line of an unread article
3292 (@code{gnus-summary-next-unread-subject}). 
3293
3294 @item G M-p
3295 @itemx M-p
3296 @kindex M-p (Summary)
3297 @kindex G M-p (Summary)
3298 @findex gnus-summary-prev-unread-subject
3299 Go to the previous summary line of an unread article
3300 (@code{gnus-summary-prev-unread-subject}). 
3301
3302 @item G j
3303 @itemx j
3304 @kindex j (Summary)
3305 @kindex G j (Summary)
3306 @findex gnus-summary-goto-article
3307 Ask for an article number and then go to that article
3308 (@code{gnus-summary-goto-article}). 
3309
3310 @item G g
3311 @kindex G g (Summary)
3312 @findex gnus-summary-goto-subject
3313 Ask for an article number and then go the summary line of that article
3314 without displaying the article (@code{gnus-summary-goto-subject}).
3315 @end table
3316
3317 If Gnus asks you to press a key to confirm going to the next group, you
3318 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
3319 buffer, searching for the next group to read without actually returning
3320 to the group buffer.
3321
3322 Variables related to summary movement:
3323
3324 @table @code
3325
3326 @vindex gnus-auto-select-next
3327 @item gnus-auto-select-next
3328 If you issue one of the movement commands (like @kbd{n}) and there are
3329 no more unread articles after the current one, Gnus will offer to go to
3330 the next group.  If this variable is @code{t} and the next group is
3331 empty, Gnus will exit summary mode and return to the group buffer.  If
3332 this variable is neither @code{t} nor @code{nil}, Gnus will select the
3333 next group, no matter whether it has any unread articles or not.  As a
3334 special case, if this variable is @code{quietly}, Gnus will select the
3335 next group without asking for confirmation.  If this variable is
3336 @code{almost-quietly}, the same will happen only if you are located on
3337 the last article in the group.  Finally, if this variable is
3338 @code{slightly-quietly}, the @kbd{Z n} command will go to the next group
3339 without confirmation.  Also @pxref{Group Levels}.
3340
3341 @item gnus-auto-select-same
3342 @vindex gnus-auto-select-same
3343 If non-@code{nil}, all the movement commands will try to go to the next
3344 article with the same subject as the current.  (@dfn{Same} here might
3345 mean @dfn{roughly equal}.  See @code{gnus-summary-gather-subject-limit}
3346 for details (@pxref{Customizing Threading}).)  This variable is not
3347 particularly useful if you use a threaded display.
3348
3349 @item gnus-summary-check-current
3350 @vindex gnus-summary-check-current
3351 If non-@code{nil}, all the ``unread'' movement commands will not proceed
3352 to the next (or previous) article if the current article is unread.
3353 Instead, they will choose the current article.
3354
3355 @item gnus-auto-center-summary
3356 @vindex gnus-auto-center-summary
3357 If non-@code{nil}, Gnus will keep the point in the summary buffer
3358 centered at all times.  This makes things quite tidy, but if you have a
3359 slow network connection, or simply do not like this un-Emacsism, you can
3360 set this variable to @code{nil} to get the normal Emacs scrolling
3361 action.  This will also inhibit horizontal re-centering of the summary
3362 buffer, which might make it more inconvenient to read extremely long
3363 threads.
3364
3365 @end table
3366
3367
3368 @node Choosing Articles
3369 @section Choosing Articles
3370 @cindex selecting articles
3371
3372 @menu
3373 * Choosing Commands::        Commands for choosing articles.
3374 * Choosing Variables::       Variables that influence these commands.
3375 @end menu
3376
3377
3378 @node Choosing Commands
3379 @subsection Choosing Commands
3380
3381 None of the following movement commands understand the numeric prefix,
3382 and they all select and display an article.
3383
3384 @table @kbd
3385 @item SPACE
3386 @kindex SPACE (Summary)
3387 @findex gnus-summary-next-page
3388 Select the current article, or, if that one's read already, the next
3389 unread article (@code{gnus-summary-next-page}).
3390
3391 @item G n
3392 @itemx n
3393 @kindex n (Summary)
3394 @kindex G n (Summary)
3395 @findex gnus-summary-next-unread-article
3396 Go to next unread article (@code{gnus-summary-next-unread-article}).
3397
3398 @item G p
3399 @itemx p
3400 @kindex p (Summary)
3401 @findex gnus-summary-prev-unread-article
3402 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
3403
3404 @item G N
3405 @itemx N
3406 @kindex N (Summary)
3407 @kindex G N (Summary)
3408 @findex gnus-summary-next-article
3409 Go to the next article (@code{gnus-summary-next-article}).
3410
3411 @item G P
3412 @itemx P
3413 @kindex P (Summary)
3414 @kindex G P (Summary)
3415 @findex gnus-summary-prev-article
3416 Go to the previous article (@code{gnus-summary-prev-article}).
3417
3418 @item G C-n
3419 @kindex G C-n (Summary)
3420 @findex gnus-summary-next-same-subject
3421 Go to the next article with the same subject
3422 (@code{gnus-summary-next-same-subject}). 
3423
3424 @item G C-p
3425 @kindex G C-p (Summary)
3426 @findex gnus-summary-prev-same-subject
3427 Go to the previous article with the same subject
3428 (@code{gnus-summary-prev-same-subject}). 
3429
3430 @item G f
3431 @itemx .
3432 @kindex G f  (Summary)
3433 @kindex .  (Summary)
3434 @findex gnus-summary-first-unread-article
3435 Go to the first unread article
3436 (@code{gnus-summary-first-unread-article}).
3437
3438 @item G b
3439 @itemx ,
3440 @kindex G b (Summary)
3441 @kindex , (Summary)
3442 @findex gnus-summary-best-unread-article
3443 Go to the article with the highest score
3444 (@code{gnus-summary-best-unread-article}). 
3445
3446 @item G l
3447 @itemx l
3448 @kindex l (Summary)
3449 @kindex G l (Summary)
3450 @findex gnus-summary-goto-last-article
3451 Go to the previous article read (@code{gnus-summary-goto-last-article}).
3452
3453 @item G p
3454 @kindex G p (Summary)
3455 @findex gnus-summary-pop-article
3456 Pop an article off the summary history and go to this article
3457 (@code{gnus-summary-pop-article}).  This command differs from the
3458 command above in that you can pop as many previous articles off the
3459 history as you like.
3460 @end table
3461
3462
3463 @node Choosing Variables
3464 @subsection Choosing Variables
3465
3466 Some variables that are relevant for moving and selecting articles:
3467
3468 @table @code
3469 @item gnus-auto-extend-newsgroup
3470 @vindex gnus-auto-extend-newsgroup
3471 All the movement commands will try to go to the previous (or next)
3472 article, even if that article isn't displayed in the Summary buffer if
3473 this variable is non-@code{nil}.  Gnus will then fetch the article from
3474 the server and display it in the article buffer.
3475
3476 @item gnus-select-article-hook
3477 @vindex gnus-select-article-hook
3478 This hook is called whenever an article is selected.  By default it
3479 exposes any threads hidden under the selected article.
3480
3481 @item gnus-mark-article-hook
3482 @vindex gnus-mark-article-hook
3483 @findex gnus-summary-mark-unread-as-read
3484 @findex gnus-summary-mark-read-and-unread-as-read
3485 @findex gnus-unread-mark
3486 This hook is called whenever an article is selected.  It is intended to
3487 be used for marking articles as read.  The default value is
3488 @code{gnus-summary-mark-read-and-unread-as-read}, and will change the
3489 mark of almost any article you read to @code{gnus-unread-mark}.  The
3490 only articles not affected by this function are ticked, dormant, and
3491 expirable articles.  If you'd instead like to just have unread articles
3492 marked as read, you can use @code{gnus-summary-mark-unread-as-read}
3493 instead.  It will leave marks like @code{gnus-low-score-mark},
3494 @code{gnus-del-mark} (and so on) alone.
3495
3496 @end table
3497
3498
3499 @node Paging the Article
3500 @section Scrolling the Article
3501 @cindex article scrolling
3502
3503 @table @kbd
3504
3505 @item SPACE
3506 @kindex SPACE (Summary)
3507 @findex gnus-summary-next-page
3508 Pressing @kbd{SPACE} will scroll the current article forward one page,
3509 or, if you have come to the end of the current article, will choose the
3510 next article (@code{gnus-summary-next-page}).
3511
3512 @item DEL
3513 @kindex DEL (Summary)
3514 @findex gnus-summary-prev-page
3515 Scroll the current article back one page (@code{gnus-summary-prev-page}). 
3516
3517 @item RET
3518 @kindex RET (Summary)
3519 @findex gnus-summary-scroll-up
3520 Scroll the current article one line forward
3521 (@code{gnus-summary-scroll-up}).
3522
3523 @item A g
3524 @itemx g
3525 @kindex A g (Summary)
3526 @kindex g (Summary)
3527 @findex gnus-summary-show-article
3528 (Re)fetch the current article (@code{gnus-summary-show-article}).  If
3529 given a prefix, fetch the current article, but don't run any of the
3530 article treatment functions.  This will give you a ``raw'' article, just
3531 the way it came from the server.
3532
3533 @item A <
3534 @itemx <
3535 @kindex < (Summary)
3536 @kindex A < (Summary)
3537 @findex gnus-summary-beginning-of-article
3538 Scroll to the beginning of the article
3539 (@code{gnus-summary-beginning-of-article}).
3540
3541 @item A >
3542 @itemx >
3543 @kindex > (Summary)
3544 @kindex A > (Summary)
3545 @findex gnus-summary-end-of-article
3546 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
3547
3548 @item A s 
3549 @itemx s
3550 @kindex A s (Summary)
3551 @kindex s (Summary)
3552 @findex gnus-summary-isearch-article
3553 Perform an isearch in the article buffer
3554 (@code{gnus-summary-isearch-article}). 
3555
3556 @end table
3557
3558
3559 @node Reply Followup and Post
3560 @section Reply, Followup and Post
3561
3562 @menu
3563 * Summary Mail Commands::            Sending mail.
3564 * Summary Post Commands::            Sending news.
3565 @end menu
3566
3567
3568 @node Summary Mail Commands
3569 @subsection Summary Mail Commands
3570 @cindex mail
3571 @cindex composing mail
3572
3573 Commands for composing a mail message:
3574
3575 @table @kbd
3576
3577 @item S r
3578 @itemx r
3579 @kindex S r (Summary)
3580 @kindex r (Summary)
3581 @findex gnus-summary-reply
3582 Mail a reply to the author of the current article
3583 (@code{gnus-summary-reply}). 
3584
3585 @item S R
3586 @itemx R
3587 @kindex R (Summary)
3588 @kindex S R (Summary)
3589 @findex gnus-summary-reply-with-original
3590 Mail a reply to the author of the current article and include the
3591 original message (@code{gnus-summary-reply-with-original}).  This
3592 command uses the process/prefix convention.
3593
3594 @item S w
3595 @kindex S w (Summary)
3596 @findex gnus-summary-wide-reply
3597 Mail a wide reply to the author of the current article
3598 (@code{gnus-summary-wide-reply}). 
3599
3600 @item S W
3601 @kindex S W (Summary)
3602 @findex gnus-summary-wide-reply-with-original
3603 Mail a wide reply to the current article and include the original
3604 message (@code{gnus-summary-reply-with-original}).  This command uses
3605 the process/prefix convention.
3606
3607 @item S o m
3608 @kindex S o m (Summary)
3609 @findex gnus-summary-mail-forward
3610 Forward the current article to some other person
3611 (@code{gnus-summary-mail-forward}).  If given a prefix, include the full
3612 headers of the forwarded article.
3613
3614 @item S m
3615 @itemx m
3616 @kindex m (Summary)
3617 @kindex S m (Summary)
3618 @findex gnus-summary-mail-other-window
3619 Send a mail to some other person
3620 (@code{gnus-summary-mail-other-window}).
3621
3622 @item S D b
3623 @kindex S D b (Summary)
3624 @findex gnus-summary-resend-bounced-mail
3625 @cindex bouncing mail
3626 If you have sent a mail, but the mail was bounced back to you for some
3627 reason (wrong address, transient failure), you can use this command to
3628 resend that bounced mail (@code{gnus-summary-resend-bounced-mail}).  You
3629 will be popped into a mail buffer where you can edit the headers before
3630 sending the mail off again.  If you give a prefix to this command, and
3631 the bounced mail is a reply to some other mail, Gnus will try to fetch
3632 that mail and display it for easy perusal of its headers.  This might
3633 very well fail, though.
3634
3635 @item S D r
3636 @kindex S D r (Summary)
3637 @findex gnus-summary-resend-message
3638 Not to be confused with the previous command,
3639 @code{gnus-summary-resend-message} will prompt you for an address to
3640 send the current message off to, and then send it to that place.  The
3641 headers of the message won't be altered---but lots of headers that say
3642 @code{Resent-To}, @code{Resent-From} and so on will be added.  This
3643 means that you actually send a mail to someone that has a @code{To}
3644 header that (probably) points to yourself.  This will confuse people.
3645 So, natcherly you'll only do that if you're really eVIl.  
3646
3647 This command is mainly used if you have several accounts and want to
3648 ship a mail to a different account of yours.  (If you're both
3649 @code{root} and @code{postmaster} and get a mail for @code{postmaster}
3650 to the @code{root} account, you may want to resend it to
3651 @code{postmaster}.  Ordnung muß sein!
3652
3653 This command understands the process/prefix convention
3654 (@pxref{Process/Prefix}). 
3655
3656 @item S O m
3657 @kindex S O m (Summary)
3658 @findex gnus-uu-digest-mail-forward
3659 Digest the current series and forward the result using mail
3660 (@code{gnus-uu-digest-mail-forward}).  This command uses the
3661 process/prefix convention (@pxref{Process/Prefix}). 
3662
3663 @item S M-c
3664 @kindex S M-c (Summary)
3665 @findex gnus-summary-mail-crosspost-complaint
3666 @cindex crossposting
3667 @cindex excessive crossposting
3668 Send a complaint about excessive crossposting to the author of the
3669 current article (@code{gnus-summary-mail-crosspost-complaint}).  
3670
3671 @findex gnus-crosspost-complaint
3672 This command is provided as a way to fight back agains the current
3673 crossposting pandemic that's sweeping Usenet.  It will compose a reply
3674 using the @code{gnus-crosspost-complaint} variable as a preamble.  This
3675 command understands the process/prefix convention
3676 (@pxref{Process/Prefix}) and will prompt you before sending each mail.
3677
3678 @end table
3679
3680
3681 @node Summary Post Commands
3682 @subsection Summary Post Commands
3683 @cindex post
3684 @cindex composing news
3685
3686 Commands for posting a news article:
3687
3688 @table @kbd
3689 @item S p
3690 @itemx a
3691 @kindex a (Summary)
3692 @kindex S p (Summary)
3693 @findex gnus-summary-post-news
3694 Post an article to the current group
3695 (@code{gnus-summary-post-news}).
3696
3697 @item S f
3698 @itemx f
3699 @kindex f (Summary)
3700 @kindex S f (Summary)
3701 @findex gnus-summary-followup
3702 Post a followup to the current article (@code{gnus-summary-followup}).
3703
3704 @item S F
3705 @itemx F
3706 @kindex S F (Summary)
3707 @kindex F (Summary)
3708 @findex gnus-summary-followup-with-original
3709 Post a followup to the current article and include the original message
3710 (@code{gnus-summary-followup-with-original}).   This command uses the
3711 process/prefix convention.
3712
3713 @item S n
3714 @kindex S n (Summary)
3715 @findex gnus-summary-followup-to-mail
3716 Post a followup to the current article via news, even if you got the
3717 message through mail (@code{gnus-summary-followup-to-mail}).
3718
3719 @item S n
3720 @kindex S n (Summary)
3721 @findex gnus-summary-followup-to-mail
3722 Post a followup to the current article via news, even if you got the
3723 message through mail and include the original message
3724 (@code{gnus-summary-followup-to-mail-with-original}).  This command uses
3725 the process/prefix convention.
3726
3727 @item S o p
3728 @kindex S o p (Summary)
3729 @findex gnus-summary-post-forward
3730 Forward the current article to a newsgroup
3731 (@code{gnus-summary-post-forward}).  If given a prefix, include the full
3732 headers of the forwarded article.
3733
3734 @item S O p
3735 @kindex S O p (Summary)
3736 @findex gnus-uu-digest-post-forward
3737 @cindex digests
3738 @cindex making digests
3739 Digest the current series and forward the result to a newsgroup
3740 (@code{gnus-uu-digest-mail-forward}).  This command uses the
3741 process/prefix convention.
3742
3743 @item S u
3744 @kindex S u (Summary)
3745 @findex gnus-uu-post-news
3746 Uuencode a file, split it into parts, and post it as a series
3747 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}). 
3748 @end table
3749
3750
3751 @node Canceling and Superseding
3752 @section Canceling Articles
3753 @cindex canceling articles
3754 @cindex superseding articles
3755
3756 Have you ever written something, and then decided that you really,
3757 really, really wish you hadn't posted that?
3758
3759 Well, you can't cancel mail, but you can cancel posts.
3760
3761 @findex gnus-summary-cancel-article
3762 @kindex C (Summary)
3763 Find the article you wish to cancel (you can only cancel your own
3764 articles, so don't try any funny stuff).  Then press @kbd{C} or @kbd{S
3765 c} (@code{gnus-summary-cancel-article}).  Your article will be
3766 canceled---machines all over the world will be deleting your article. 
3767
3768 Be aware, however, that not all sites honor cancels, so your article may
3769 live on here and there, while most sites will delete the article in
3770 question.
3771
3772 If you discover that you have made some mistakes and want to do some
3773 corrections, you can post a @dfn{superseding} article that will replace
3774 your original article.
3775
3776 @findex gnus-summary-supersede-article
3777 @kindex S (Summary)
3778 Go to the original article and press @kbd{S s}
3779 (@code{gnus-summary-supersede-article}).  You will be put in a buffer
3780 where you can edit the article all you want before sending it off the
3781 usual way.
3782
3783 The same goes for superseding as for canceling, only more so: Some
3784 sites do not honor superseding.  On those sites, it will appear that you
3785 have posted almost the same article twice.
3786
3787 If you have just posted the article, and change your mind right away,
3788 there is a trick you can use to cancel/supersede the article without
3789 waiting for the article to appear on your site first.  You simply return
3790 to the post buffer (which is called @code{*sent ...*}).  There you will
3791 find the article you just posted, with all the headers intact.  Change
3792 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
3793 header by substituting one of those words for the word
3794 @code{Message-ID}.  Then just press @kbd{C-c C-c} to send the article as
3795 you would do normally.  The previous article will be
3796 canceled/superseded.
3797
3798 Just remember, kids: There is no 'c' in 'supersede'.
3799
3800
3801 @node Marking Articles
3802 @section Marking Articles
3803 @cindex article marking
3804 @cindex article ticking
3805 @cindex marks
3806
3807 There are several marks you can set on an article. 
3808
3809 You have marks that decide the @dfn{readedness} (whoo, neato-keano
3810 neologism ohoy!) of the article.  Alphabetic marks generally mean
3811 @dfn{read}, while non-alphabetic characters generally mean @dfn{unread}.
3812
3813 In addition, you also have marks that do not affect readedness.
3814
3815 @menu
3816 * Unread Articles::      Marks for unread articles.
3817 * Read Articles::        Marks for read articles.
3818 * Other Marks::          Marks that do not affect readedness.
3819 @end menu
3820
3821 @ifinfo
3822 There's a plethora of commands for manipulating these marks:
3823 @end ifinfo
3824
3825 @menu
3826 * Setting Marks::           How to set and remove marks.
3827 * Setting Process Marks::   How to mark articles for later processing.
3828 @end menu
3829
3830
3831 @node Unread Articles
3832 @subsection Unread Articles
3833
3834 The following marks mark articles as (kinda) unread, in one form or
3835 other.
3836
3837 @table @samp
3838 @item !
3839 @vindex gnus-ticked-mark
3840 Marked as ticked (@code{gnus-ticked-mark}).
3841
3842 @dfn{Ticked articles} are articles that will remain visible always.  If
3843 you see an article that you find interesting, or you want to put off
3844 reading it, or replying to it, until sometime later, you'd typically
3845 tick it.  However, articles can be expired, so if you want to keep an
3846 article forever, you'll have to make it persistent (@pxref{Persistent
3847 Articles}).  
3848
3849 @item ?
3850 @vindex gnus-dormant-mark
3851 Marked as dormant (@code{gnus-dormant-mark}).  
3852
3853 @dfn{Dormant articles} will only appear in the summary buffer if there
3854 are followups to it.
3855
3856 @item SPACE
3857 @vindex gnus-unread-mark
3858 Markes as unread (@code{gnus-unread-mark}).
3859
3860 @dfn{Unread articles} are articles that haven't been read at all yet.
3861 @end table
3862
3863
3864 @node Read Articles
3865 @subsection Read Articles
3866 @cindex expirable mark
3867
3868 All the following marks mark articles as read.
3869
3870 @table @samp
3871
3872 @item r
3873 @vindex gnus-del-mark
3874 These are articles that the user has marked as read with the @kbd{d}
3875 command manually, more or less (@code{gnus-del-mark}).
3876
3877 @item R
3878 @vindex gnus-read-mark
3879 Articles that have actually been read (@code{gnus-read-mark}).
3880
3881 @item O
3882 @vindex gnus-ancient-mark
3883 Articles that were marked as read in previous sessions and are now
3884 @dfn{old} (@code{gnus-ancient-mark}).
3885
3886 @item K
3887 @vindex gnus-killed-mark
3888 Marked as killed (@code{gnus-killed-mark}).
3889
3890 @item X
3891 @vindex gnus-kill-file-mark
3892 Marked as killed by kill files (@code{gnus-kill-file-mark}).
3893
3894 @item Y
3895 @vindex gnus-low-score-mark
3896 Marked as read by having a too low score (@code{gnus-low-score-mark}).
3897
3898 @item C
3899 @vindex gnus-catchup-mark
3900 Marked as read by a catchup (@code{gnus-catchup-mark}).
3901
3902 @item G
3903 @vindex gnus-canceled-mark
3904 Canceled article (@code{gnus-canceled-mark})
3905
3906 @item F
3907 @vindex gnus-souped-mark
3908 @sc{SOUP}ed article (@code{gnus-souped-mark}).  @xref{SOUP}.
3909
3910 @item Q
3911 @vindex gnus-sparse-mark
3912 Sparsely reffed article (@code{gnus-sparse-mark}).  @xref{Customizing
3913 Threading}.
3914
3915 @item M
3916 @vindex gnus-duplicate-mark
3917 Article marked as read by duplicate suppression
3918 (@code{gnus-duplicated-mark}).  @xref{Duplicate Suppression}.
3919
3920 @end table
3921
3922 All these marks just mean that the article is marked as read, really.
3923 They are interpreted differently when doing adaptive scoring, though.
3924
3925 One more special mark, though:
3926
3927 @table @samp
3928 @item E
3929 @vindex gnus-expirable-mark
3930 Marked as expirable (@code{gnus-expirable-mark}).
3931
3932 Marking articles as @dfn{expirable} (or have them marked as such
3933 automatically) doesn't make much sense in normal groups---a user doesn't
3934 control the expiring of news articles, but in mail groups, for instance,
3935 articles that are marked as @dfn{expirable} can be deleted by Gnus at
3936 any time.
3937 @end table
3938
3939
3940 @node Other Marks
3941 @subsection Other Marks
3942 @cindex process mark
3943 @cindex bookmarks
3944
3945 There are some marks that have nothing to do with whether the article is
3946 read or not.
3947
3948 @itemize @bullet
3949
3950 @item 
3951 You can set a bookmark in the current article.  Say you are reading a
3952 long thesis on cats' urinary tracts, and have to go home for dinner
3953 before you've finished reading the thesis.  You can then set a bookmark
3954 in the article, and Gnus will jump to this bookmark the next time it
3955 encounters the article.  @xref{Setting Marks}
3956
3957 @item
3958 @vindex gnus-replied-mark
3959 All articles that you have replied to or made a followup to (i.e., have
3960 answered) will be marked with an @samp{A} in the second column
3961 (@code{gnus-replied-mark}).
3962
3963 @item 
3964 @vindex gnus-cached-mark
3965 Articles that are stored in the article cache will be marked with an
3966 @samp{*} in the second column (@code{gnus-cached-mark}).
3967
3968 @item 
3969 @vindex gnus-saved-mark
3970 Articles that are ``saved'' (in some manner or other; not necessarily
3971 religiously) are marked with an @samp{S} in the second column
3972 (@code{gnus-saved-mark}.
3973
3974 @item 
3975 @vindex gnus-not-empty-thread-mark
3976 @vindex gnus-empty-thread-mark
3977 It the @samp{%e} spec is used, the presence of threads or not will be
3978 marked with @code{gnus-not-empty-thread-mark} and
3979 @code{gnus-empty-thread-mark} in the third column, respectively.
3980
3981 @item 
3982 @vindex gnus-process-mark
3983 Finally we have the @dfn{process mark} (@code{gnus-process-mark}.  A
3984 variety of commands react to the presence of the process mark.  For
3985 instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view
3986 all articles that have been marked with the process mark.  Articles
3987 marked with the process mark have a @samp{#} in the second column.
3988
3989 @end itemize
3990
3991 You might have noticed that most of these ``non-readedness'' marks
3992 appear in the second column by default.  So if you have a cached, saved,
3993 replied article that you have process-marked, what will that look like?
3994
3995 Nothing much.  The precedence rules go as follows: process -> cache ->
3996 replied -> saved.  So if the article is in the cache and is replied,
3997 you'll only see the cache mark and not the replied mark.
3998
3999
4000 @node Setting Marks
4001 @subsection Setting Marks
4002 @cindex setting marks
4003
4004 All the marking commands understand the numeric prefix.
4005
4006 @table @kbd
4007 @item M t
4008 @itemx !
4009 @kindex ! (Summary)
4010 @kindex M t (Summary)
4011 @findex gnus-summary-tick-article-forward
4012 Tick the current article (@code{gnus-summary-tick-article-forward}).
4013
4014 @item M ?
4015 @itemx ?
4016 @kindex ? (Summary)
4017 @kindex M ? (Summary)
4018 @findex gnus-summary-mark-as-dormant
4019 Mark the current article as dormant
4020 (@code{gnus-summary-mark-as-dormant}).
4021
4022 @item M d
4023 @itemx d
4024 @kindex M d (Summary)
4025 @kindex d (Summary)
4026 @findex gnus-summary-mark-as-read-forward
4027 Mark the current article as read
4028 (@code{gnus-summary-mark-as-read-forward}).
4029
4030 @item D
4031 @kindex D (Summary)
4032 @findex gnus-summary-mark-as-read-backward
4033 Mark the current article as read and move point to the previous line
4034 (@code{gnus-summary-mark-as-read-backward}).
4035
4036 @item M k
4037 @itemx k
4038 @kindex k (Summary)
4039 @kindex M k (Summary)
4040 @findex gnus-summary-kill-same-subject-and-select
4041 Mark all articles that have the same subject as the current one as read,
4042 and then select the next unread article
4043 (@code{gnus-summary-kill-same-subject-and-select}).
4044
4045 @item M K
4046 @itemx C-k
4047 @kindex M K (Summary)
4048 @kindex C-k (Summary)
4049 @findex gnus-summary-kill-same-subject
4050 Mark all articles that have the same subject as the current one as read
4051 (@code{gnus-summary-kill-same-subject}).  
4052
4053 @item M C
4054 @kindex M C (Summary)
4055 @findex gnus-summary-catchup
4056 Mark all unread articles as read (@code{gnus-summary-catchup}).
4057
4058 @item M C-c
4059 @kindex M C-c (Summary)
4060 @findex gnus-summary-catchup-all
4061 Mark all articles in the group as read---even the ticked and dormant
4062 articles (@code{gnus-summary-catchup-all}).
4063
4064 @item M H
4065 @kindex M H (Summary)
4066 @findex gnus-summary-catchup-to-here
4067 Catchup the current group to point
4068 (@code{gnus-summary-catchup-to-here}). 
4069
4070 @item C-w
4071 @kindex C-w (Summary)
4072 @findex gnus-summary-mark-region-as-read
4073 Mark all articles between point and mark as read
4074 (@code{gnus-summary-mark-region-as-read}). 
4075
4076 @item M V k
4077 @kindex M V k (Summary)
4078 @findex gnus-summary-kill-below
4079 Kill all articles with scores below the default score (or below the
4080 numeric prefix) (@code{gnus-summary-kill-below}).
4081
4082 @item M c
4083 @itemx M-u
4084 @kindex M c (Summary)
4085 @kindex M-u (Summary)
4086 @findex gnus-summary-clear-mark-forward
4087 Clear all readedness-marks from the current article
4088 (@code{gnus-summary-clear-mark-forward}).
4089
4090 @item M e
4091 @itemx E
4092 @kindex M e (Summary)
4093 @kindex E (Summary)
4094 @findex gnus-summary-mark-as-expirable
4095 Mark the current article as expirable
4096 (@code{gnus-summary-mark-as-expirable}).
4097
4098 @item M b
4099 @kindex M b (Summary)
4100 @findex gnus-summary-set-bookmark
4101 Set a bookmark in the current article
4102 (@code{gnus-summary-set-bookmark}).
4103
4104 @item M B
4105 @kindex M B (Summary)
4106 @findex gnus-summary-remove-bookmark
4107 Remove the bookmark from the current article
4108 (@code{gnus-summary-remove-bookmark}).
4109
4110 @item M V c
4111 @kindex M V c (Summary)
4112 @findex gnus-summary-clear-above
4113 Clear all marks from articles with scores over the default score (or
4114 over the numeric prefix) (@code{gnus-summary-clear-above}).
4115
4116 @item M V u
4117 @kindex M V u (Summary)
4118 @findex gnus-summary-tick-above
4119 Tick all articles with scores over the default score (or over the
4120 numeric prefix) (@code{gnus-summary-tick-above}).
4121
4122 @item M V m
4123 @kindex M V m (Summary)
4124 @findex gnus-summary-mark-above
4125 Prompt for a mark, and mark all articles with scores over the default
4126 score (or over the numeric prefix) with this mark
4127 (@code{gnus-summary-clear-above}).
4128 @end table
4129
4130 @vindex gnus-summary-goto-unread
4131 The @code{gnus-summary-goto-unread} variable controls what action should
4132 be taken after setting a mark.  If non-@code{nil}, point will move to
4133 the next/previous unread article.  If @code{nil}, point will just move
4134 one line up or down.  As a special case, if this variable is
4135 @code{never}, all the marking commands as well as other commands (like
4136 @kbd{SPACE}) will move to the next article, whether it is unread or not.
4137 The default is @code{t}.
4138
4139
4140 @node Setting Process Marks
4141 @subsection Setting Process Marks
4142 @cindex setting process marks
4143
4144 @table @kbd
4145
4146 @item M P p
4147 @itemx #
4148 @kindex # (Summary)
4149 @kindex M P p (Summary)
4150 @findex gnus-summary-mark-as-processable
4151 Mark the current article with the process mark
4152 (@code{gnus-summary-mark-as-processable}). 
4153 @findex gnus-summary-unmark-as-processable
4154
4155 @item M P u 
4156 @itemx M-#
4157 @kindex M P u (Summary)
4158 @kindex M-# (Summary)
4159 Remove the process mark, if any, from the current article
4160 (@code{gnus-summary-unmark-as-processable}).
4161
4162 @item M P U
4163 @kindex M P U (Summary)
4164 @findex gnus-summary-unmark-all-processable
4165 Remove the process mark from all articles
4166 (@code{gnus-summary-unmark-all-processable}). 
4167
4168 @item M P i
4169 @kindex M P i (Summary)
4170 @findex gnus-uu-invert-processable
4171 Invert the list of process marked articles
4172 (@code{gnus-uu-invert-processable}). 
4173
4174 @item M P R
4175 @kindex M P R (Summary)
4176 @findex gnus-uu-mark-by-regexp
4177 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}). 
4178
4179 @item M P r
4180 @kindex M P r (Summary)
4181 @findex gnus-uu-mark-region
4182 Mark articles in region (@code{gnus-uu-mark-region}).
4183
4184 @item M P t
4185 @kindex M P t (Summary)
4186 @findex gnus-uu-mark-thread
4187 Mark all articles in the current (sub)thread
4188 (@code{gnus-uu-mark-thread}).
4189
4190 @item M P T
4191 @kindex M P T (Summary)
4192 @findex gnus-uu-unmark-thread
4193 Unmark all articles in the current (sub)thread
4194 (@code{gnus-uu-unmark-thread}).
4195
4196 @item M P v
4197 @kindex M P v (Summary)
4198 @findex gnus-uu-mark-over
4199 Mark all articles that have a score above the prefix argument
4200 (@code{gnus-uu-mark-over}).
4201
4202 @item M P s
4203 @kindex M P s (Summary)
4204 @findex gnus-uu-mark-series
4205 Mark all articles in the current series (@code{gnus-uu-mark-series}).
4206
4207 @item M P S
4208 @kindex M P S (Summary)
4209 @findex gnus-uu-mark-sparse
4210 Mark all series that have already had some articles marked
4211 (@code{gnus-uu-mark-sparse}).
4212
4213 @item M P a
4214 @kindex M P a (Summary)
4215 @findex gnus-uu-mark-all
4216 Mark all articles in series order (@code{gnus-uu-mark-series}).
4217
4218 @item M P b
4219 @kindex M P b (Summary)
4220 @findex gnus-uu-mark-buffer
4221 Mark all articles in the buffer in the order they appear
4222 (@code{gnus-uu-mark-buffer}). 
4223
4224 @item M P k
4225 @kindex M P k (Summary)
4226 @findex gnus-summary-kill-process-mark
4227 Push the current process mark set onto the stack and unmark all articles
4228 (@code{gnus-summary-kill-process-mark}).
4229
4230 @item M P y
4231 @kindex M P y (Summary)
4232 @findex gnus-summary-yank-process-mark
4233 Pop the previous process mark set from the stack and restore it
4234 (@code{gnus-summary-yank-process-mark}).
4235
4236 @item M P w
4237 @kindex M P w (Summary)
4238 @findex gnus-summary-save-process-mark
4239 Push the current process mark set onto the stack
4240 (@code{gnus-summary-save-process-mark}).
4241
4242 @end table
4243
4244
4245 @node Limiting
4246 @section Limiting
4247 @cindex limiting
4248
4249 It can be convenient to limit the summary buffer to just show some
4250 subset of the articles currently in the group.  The effect most limit
4251 commands have is to remove a few (or many) articles from the summary
4252 buffer. 
4253
4254 @table @kbd
4255
4256 @item / /
4257 @itemx / s
4258 @kindex / / (Summary)
4259 @findex gnus-summary-limit-to-subject
4260 Limit the summary buffer to articles that match some subject
4261 (@code{gnus-summary-limit-to-subject}). 
4262
4263 @item / a
4264 @kindex / a (Summary)
4265 @findex gnus-summary-limit-to-author
4266 Limit the summary buffer to articles that match some author
4267 (@code{gnus-summary-limit-to-author}).
4268
4269 @item / u
4270 @itemx x
4271 @kindex / u (Summary)
4272 @kindex x (Summary)
4273 @findex gnus-summary-limit-to-unread
4274 Limit the summary buffer to articles that are not marked as read
4275 (@code{gnus-summary-limit-to-unread}).  If given a prefix, limit the
4276 buffer to articles that are strictly unread.  This means that ticked and
4277 dormant articles will also be excluded.
4278
4279 @item / m
4280 @kindex / m (Summary)
4281 @findex gnus-summary-limit-to-marks
4282 Ask for a mark and then limit to all articles that have not been marked
4283 with that mark (@code{gnus-summary-limit-to-marks}).
4284
4285 @item / t
4286 @kindex / t (Summary)
4287 @findex gnus-summary-limit-to-age
4288 Ask for a number and then limit the summary buffer to articles that are
4289 older than (or equal to) that number of days
4290 (@code{gnus-summary-limit-to-marks}).  If given a prefix, limit to
4291 articles that are younger than that number of days.
4292
4293 @item / n
4294 @kindex / n (Summary)
4295 @findex gnus-summary-limit-to-articles
4296 Limit the summary buffer to the current article
4297 (@code{gnus-summary-limit-to-articles}).  Uses the process/prefix
4298 convention (@pxref{Process/Prefix}).
4299
4300 @item / w
4301 @kindex / w (Summary)
4302 @findex gnus-summary-pop-limit
4303 Pop the previous limit off the stack and restore it
4304 (@code{gnus-summary-pop-limit}).  If given a prefix, pop all limits off
4305 the stack.
4306
4307 @item / v
4308 @kindex / v (Summary)
4309 @findex gnus-summary-limit-to-score
4310 Limit the summary buffer to articles that have a score at or above some
4311 score (@code{gnus-summary-limit-to-score}).
4312
4313 @item / E
4314 @itemx M S
4315 @kindex M S (Summary)
4316 @kindex / E (Summary)
4317 @findex gnus-summary-limit-include-expunged
4318 Display all expunged articles
4319 (@code{gnus-summary-limit-include-expunged}). 
4320
4321 @item / D
4322 @kindex / D (Summary)
4323 @findex gnus-summary-limit-include-dormant
4324 Display all dormant articles (@code{gnus-summary-limit-include-dormant}).
4325
4326 @item / d
4327 @kindex / d (Summary)
4328 @findex gnus-summary-limit-exclude-dormant
4329 Hide all dormant articles (@code{gnus-summary-limit-exclude-dormant}).
4330
4331 @item / c
4332 @kindex / c (Summary)
4333 @findex gnus-summary-limit-exclude-childless-dormant
4334 Hide all dormant articles that have no children
4335 (@code{gnus-summary-limit-exclude-childless-dormant}). 
4336
4337 @item / C
4338 @kindex / C (Summary)
4339 @findex gnus-summary-limit-mark-excluded-as-read
4340 Mark all excluded unread articles as read
4341 (@code{gnus-summary-limit-mark-excluded-as-read}).   If given a prefix,
4342 also mark excluded ticked and dormant articles as read.
4343
4344 @end table
4345
4346
4347 @node Threading
4348 @section Threading
4349 @cindex threading
4350 @cindex article threading
4351
4352 Gnus threads articles by default.  @dfn{To thread} is to put responses
4353 to articles directly after the articles they respond to---in a
4354 hierarchical fashion.
4355
4356 @menu
4357 * Customizing Threading::     Variables you can change to affect the threading.
4358 * Thread Commands::           Thread based commands in the summary buffer.
4359 @end menu
4360
4361
4362 @node Customizing Threading
4363 @subsection Customizing Threading
4364 @cindex customizing threading
4365 @cindex <
4366 @cindex >
4367
4368 @table @code
4369
4370 @item gnus-show-threads
4371 @vindex gnus-show-threads
4372 If this variable is @code{nil}, no threading will be done, and all of
4373 the rest of the variables here will have no effect.  Turning threading
4374 off will speed group selection up a bit, but it is sure to make reading
4375 slower and more awkward.
4376
4377 @item gnus-fetch-old-headers
4378 @vindex gnus-fetch-old-headers
4379 If non-@code{nil}, Gnus will attempt to build old threads by fetching
4380 more old headers---headers to articles that are marked as read.  If you
4381 would like to display as few summary lines as possible, but still
4382 connect as many loose threads as possible, you should set this variable
4383 to @code{some} or a number.  If you set it to a number, no more than
4384 that number of extra old headers will be fetched.  In either case,
4385 fetching old headers only works if the backend you are using carries
4386 overview files---this would normally be @code{nntp}, @code{nnspool} and
4387 @code{nnml}.  Also remember that if the root of the thread has been
4388 expired by the server, there's not much Gnus can do about that.
4389
4390 @item gnus-build-sparse-threads
4391 @vindex gnus-build-sparse-threads
4392 Fetching old headers can be slow.  A low-rent similar effect can be
4393 gotten by setting this variable to @code{some}.  Gnus will then look at
4394 the complete @code{References} headers of all articles and try to string
4395 articles that belong in the same thread together.  This will leave
4396 @dfn{gaps} in the threading display where Gnus guesses that an article
4397 is missing from the thread.  (These gaps appear like normal summary
4398 lines.  If you select a gap, Gnus will try to fetch the article in
4399 question.)  If this variable is @code{t}, Gnus will display all these
4400 ``gaps'' without regard for whether they are useful for completing the
4401 thread or not.  Finally, if this variable is @code{more}, Gnus won't cut
4402 off sparse leaf nodes that don't lead anywhere.  This variable is
4403 @code{nil} by default.
4404
4405 @item gnus-summary-gather-subject-limit
4406 @vindex gnus-summary-gather-subject-limit
4407 Loose threads are gathered by comparing subjects of articles.  If this
4408 variable is @code{nil}, Gnus requires an exact match between the
4409 subjects of the loose threads before gathering them into one big
4410 super-thread.  This might be too strict a requirement, what with the
4411 presence of stupid newsreaders that chop off long subjects lines.  If
4412 you think so, set this variable to, say, 20 to require that only the
4413 first 20 characters of the subjects have to match.  If you set this
4414 variable to a really low number, you'll find that Gnus will gather
4415 everything in sight into one thread, which isn't very helpful.
4416
4417 @cindex fuzzy article gathering
4418 If you set this variable to the special value @code{fuzzy}, Gnus will
4419 use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
4420 Matching}). 
4421
4422 @item gnus-simplify-subject-fuzzy-regexp
4423 @vindex gnus-simplify-subject-fuzzy-regexp
4424 This can either be a regular expression or list of regular expressions
4425 that match strings that will be removed from subjects if fuzzy subject
4426 simplification is used.
4427
4428 @item gnus-simplify-ignored-prefixes
4429 @vindex gnus-simplify-ignored-prefixes
4430 If you set @code{gnus-summary-gather-subject-limit} to something as low
4431 as 10, you might consider setting this variable to something sensible:
4432
4433 @c Written by Michael Ernst <mernst@cs.rice.edu>
4434 @lisp
4435 (setq gnus-simplify-ignored-prefixes
4436       (concat 
4437        "\\`\\[?\\("
4438        (mapconcat 
4439         'identity
4440         '("looking"
4441           "wanted" "followup" "summary\\( of\\)?"
4442           "help" "query" "problem" "question" 
4443           "answer" "reference" "announce"
4444           "How can I" "How to" "Comparison of"
4445           ;; ...
4446           )
4447         "\\|")
4448        "\\)\\s *\\("
4449        (mapconcat 'identity
4450                   '("for" "for reference" "with" "about")
4451                   "\\|")
4452        "\\)?\\]?:?[ \t]*"))
4453 @end lisp
4454
4455 All words that match this regexp will be removed before comparing two
4456 subjects. 
4457
4458 @item gnus-summary-gather-exclude-subject
4459 @vindex gnus-summary-gather-exclude-subject
4460 Since loose thread gathering is done on subjects only, that might lead
4461 to many false hits, especially with certain common subjects like
4462 @samp{} and @samp{(none)}.  To make the situation slightly better,
4463 you can use the regexp @code{gnus-summary-gather-exclude-subject} to say
4464 what subjects should be excluded from the gathering process.  The
4465 default is @samp{^ *$\\|^(none)$}.  
4466
4467 @item gnus-summary-thread-gathering-function
4468 @vindex gnus-summary-thread-gathering-function
4469 Gnus gathers threads by looking at @code{Subject} headers.  This means
4470 that totally unrelated articles may end up in the same ``thread'', which
4471 is confusing.  An alternate approach is to look at all the
4472 @code{Message-ID}s in all the @code{References} headers to find matches.
4473 This will ensure that no gathered threads ever includes unrelated
4474 articles, but it's also means that people who have posted with broken
4475 newsreaders won't be gathered properly.  The choice is yours---plague or
4476 cholera:
4477
4478 @table @code
4479 @item gnus-gather-threads-by-subject
4480 @findex gnus-gather-threads-by-subject
4481 This function is the default gathering function and looks at
4482 @code{Subject}s exclusively.
4483
4484 @item gnus-gather-threads-by-references
4485 @findex gnus-gather-threads-by-references
4486 This function looks at @code{References} headers exclusively.
4487 @end table
4488
4489 If you want to test gathering by @code{References}, you could say
4490 something like:
4491
4492 @lisp
4493 (setq gnus-summary-thread-gathering-function
4494       'gnus-gather-threads-by-references)
4495 @end lisp
4496
4497 @item gnus-summary-make-false-root
4498 @vindex gnus-summary-make-false-root
4499 If non-@code{nil}, Gnus will gather all loose subtrees into one big tree
4500 and create a dummy root at the top.  (Wait a minute.  Root at the top?
4501 Yup.)  Loose subtrees occur when the real root has expired, or you've
4502 read or killed the root in a previous session.
4503
4504 When there is no real root of a thread, Gnus will have to fudge
4505 something.  This variable says what fudging method Gnus should use.
4506 There are four possible values:
4507
4508 @cindex adopting articles
4509
4510 @table @code
4511
4512 @item adopt
4513 Gnus will make the first of the orphaned articles the parent.  This
4514 parent will adopt all the other articles.  The adopted articles will be
4515 marked as such by pointy brackets (@samp{<>}) instead of the standard
4516 square brackets (@samp{[]}).  This is the default method.
4517
4518 @item dummy
4519 @vindex gnus-summary-dummy-line-format
4520 Gnus will create a dummy summary line that will pretend to be the
4521 parent.  This dummy line does not correspond to any real article, so
4522 selecting it will just select the first real article after the dummy
4523 article.  @code{gnus-summary-dummy-line-format} is used to specify the
4524 format of the dummy roots.  It accepts only one format spec:  @samp{S},
4525 which is the subject of the article.  @xref{Formatting Variables}.
4526
4527 @item empty
4528 Gnus won't actually make any article the parent, but simply leave the
4529 subject field of all orphans except the first empty.  (Actually, it will
4530 use @code{gnus-summary-same-subject} as the subject (@pxref{Summary
4531 Buffer Format}).)
4532
4533 @item none
4534 Don't make any article parent at all.  Just gather the threads and
4535 display them after one another.
4536
4537 @item nil
4538 Don't gather loose threads.
4539 @end table
4540
4541 @item gnus-thread-hide-subtree
4542 @vindex gnus-thread-hide-subtree
4543 If non-@code{nil}, all threads will be hidden when the summary buffer is
4544 generated.
4545
4546 @item gnus-thread-expunge-below
4547 @vindex gnus-thread-expunge-below
4548 All threads that have a total score (as defined by
4549 @code{gnus-thread-score-function}) less than this number will be
4550 expunged.  This variable is @code{nil} by default, which means that no
4551 threads are expunged.
4552
4553 @item gnus-thread-hide-killed
4554 @vindex gnus-thread-hide-killed
4555 if you kill a thread and this variable is non-@code{nil}, the subtree
4556 will be hidden.
4557
4558 @item gnus-thread-ignore-subject
4559 @vindex gnus-thread-ignore-subject
4560 Sometimes somebody changes the subject in the middle of a thread.  If
4561 this variable is non-@code{nil}, the subject change is ignored.  If it
4562 is @code{nil}, which is the default, a change in the subject will result
4563 in a new thread.
4564
4565 @item gnus-thread-indent-level
4566 @vindex gnus-thread-indent-level
4567 This is a number that says how much each sub-thread should be indented.
4568 The default is 4.
4569
4570 @item gnus-parse-headers-hook
4571 @vindex gnus-parse-headers-hook
4572 Hook run before parsing any headers.  The default value is
4573 @code{(gnus-decode-rfc1522)}, which means that QPized headers will be
4574 slightly decoded in a hackish way.  This is likely to change in the
4575 future when Gnus becomes @sc{MIME}ified.
4576
4577 @end table
4578
4579
4580 @node Thread Commands
4581 @subsection Thread Commands
4582 @cindex thread commands
4583
4584 @table @kbd
4585
4586 @item T k
4587 @itemx M-C-k
4588 @kindex T k (Summary)
4589 @kindex M-C-k (Summary)
4590 @findex gnus-summary-kill-thread
4591 Mark all articles in the current (sub-)thread as read
4592 (@code{gnus-summary-kill-thread}).  If the prefix argument is positive,
4593 remove all marks instead.  If the prefix argument is negative, tick
4594 articles instead.
4595
4596 @item T l
4597 @itemx M-C-l
4598 @kindex T l (Summary)
4599 @kindex M-C-l (Summary)
4600 @findex gnus-summary-lower-thread
4601 Lower the score of the current (sub-)thread
4602 (@code{gnus-summary-lower-thread}). 
4603
4604 @item T i
4605 @kindex T i (Summary)
4606 @findex gnus-summary-raise-thread
4607 Increase the score of the current (sub-)thread
4608 (@code{gnus-summary-raise-thread}).
4609
4610 @item T #
4611 @kindex T # (Summary)
4612 @findex gnus-uu-mark-thread
4613 Set the process mark on the current (sub-)thread
4614 (@code{gnus-uu-mark-thread}).
4615
4616 @item T M-#
4617 @kindex T M-# (Summary)
4618 @findex gnus-uu-unmark-thread
4619 Remove the process mark from the current (sub-)thread
4620 (@code{gnus-uu-unmark-thread}).
4621
4622 @item T T
4623 @kindex T T (Summary)
4624 @findex gnus-summary-toggle-threads
4625 Toggle threading (@code{gnus-summary-toggle-threads}).
4626
4627 @item T s
4628 @kindex T s (Summary)
4629 @findex gnus-summary-show-thread
4630 Expose the (sub-)thread hidden under the current article, if any
4631 (@code{gnus-summary-show-thread}).
4632
4633 @item T h
4634 @kindex T h (Summary)
4635 @findex gnus-summary-hide-thread
4636 Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
4637
4638 @item T S
4639 @kindex T S (Summary)
4640 @findex gnus-summary-show-all-threads
4641 Expose all hidden threads (@code{gnus-summary-show-all-threads}).
4642
4643 @item T H
4644 @kindex T H (Summary)
4645 @findex gnus-summary-hide-all-threads
4646 Hide all threads (@code{gnus-summary-hide-all-threads}).
4647
4648 @item T t
4649 @kindex T t (Summary)
4650 @findex gnus-summary-rethread-current
4651 Re-thread the thread the current article is part of
4652 (@code{gnus-summary-rethread-current}).  This works even when the
4653 summary buffer is otherwise unthreaded.
4654
4655 @item T ^
4656 @kindex T ^ (Summary)
4657 @findex gnus-summary-reparent-thread
4658 Make the current article the child of the marked (or previous) article
4659 (@code{gnus-summary-reparent-thread}.
4660
4661 @end table
4662
4663 The following commands are thread movement commands.  They all
4664 understand the numeric prefix.
4665
4666 @table @kbd
4667
4668 @item T n
4669 @kindex T n (Summary)
4670 @findex gnus-summary-next-thread
4671 Go to the next thread (@code{gnus-summary-next-thread}).
4672
4673 @item T p
4674 @kindex T p (Summary)
4675 @findex gnus-summary-prev-thread
4676 Go to the previous thread (@code{gnus-summary-prev-thread}).
4677
4678 @item T d
4679 @kindex T d (Summary)
4680 @findex gnus-summary-down-thread
4681 Descend the thread (@code{gnus-summary-down-thread}).
4682
4683 @item T u
4684 @kindex T u (Summary)
4685 @findex gnus-summary-up-thread
4686 Ascend the thread (@code{gnus-summary-up-thread}).
4687
4688 @item T o
4689 @kindex T o (Summary)
4690 @findex gnus-summary-top-thread
4691 Go to the top of the thread (@code{gnus-summary-top-thread}).
4692 @end table
4693
4694 @vindex gnus-thread-operation-ignore-subject 
4695 If you ignore subject while threading, you'll naturally end up with
4696 threads that have several different subjects in them.  If you then issue
4697 a command like `T k' (@code{gnus-summary-kill-thread}) you might not
4698 wish to kill the entire thread, but just those parts of the thread that
4699 have the same subject as the current article.  If you like this idea,
4700 you can fiddle with @code{gnus-thread-operation-ignore-subject}.  If is
4701 is non-@code{nil} (which it is by default), subjects will be ignored
4702 when doing thread commands.  If this variable is @code{nil}, articles in
4703 the same thread with different subjects will not be included in the
4704 operation in question.  If this variable is @code{fuzzy}, only articles
4705 that have subjects that are fuzzily equal will be included (@pxref{Fuzzy
4706 Matching}).
4707
4708
4709 @node Sorting
4710 @section Sorting
4711
4712 @findex gnus-thread-sort-by-total-score
4713 @findex gnus-thread-sort-by-date
4714 @findex gnus-thread-sort-by-score
4715 @findex gnus-thread-sort-by-subject
4716 @findex gnus-thread-sort-by-author
4717 @findex gnus-thread-sort-by-number
4718 @vindex gnus-thread-sort-functions
4719 If you are using a threaded summary display, you can sort the threads by
4720 setting @code{gnus-thread-sort-functions}, which is a list of functions.
4721 By default, sorting is done on article numbers.  Ready-made sorting
4722 predicate functions include @code{gnus-thread-sort-by-number},
4723 @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-subject},
4724 @code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-score}, and
4725 @code{gnus-thread-sort-by-total-score}.
4726
4727 Each function takes two threads and return non-@code{nil} if the first
4728 thread should be sorted before the other.  Note that sorting really is
4729 normally done by looking only at the roots of each thread.  If you use
4730 more than one function, the primary sort key should be the last function
4731 in the list.  You should probably always include
4732 @code{gnus-thread-sort-by-number} in the list of sorting
4733 functions---preferably first.  This will ensure that threads that are
4734 equal with respect to the other sort criteria will be displayed in
4735 ascending article order.
4736
4737 If you would like to sort by score, then by subject, and finally by
4738 number, you could do something like:
4739
4740 @lisp
4741 (setq gnus-thread-sort-functions 
4742       '(gnus-thread-sort-by-number
4743         gnus-thread-sort-by-subject
4744         gnus-thread-sort-by-total-score))
4745 @end lisp
4746
4747 The threads that have highest score will be displayed first in the
4748 summary buffer.  When threads have the same score, they will be sorted
4749 alphabetically.  The threads that have the same score and the same
4750 subject will be sorted by number, which is (normally) the sequence in
4751 which the articles arrived.
4752
4753 If you want to sort by score and then reverse arrival order, you could
4754 say something like:
4755
4756 @lisp
4757 (setq gnus-thread-sort-functions
4758       '((lambda (t1 t2) 
4759           (not (gnus-thread-sort-by-number t1 t2)))
4760         gnus-thread-sort-by-score))
4761 @end lisp
4762
4763 @vindex gnus-thread-score-function
4764 The function in the @code{gnus-thread-score-function} variable (default
4765 @code{+}) is used for calculating the total score of a thread.  Useful
4766 functions might be @code{max}, @code{min}, or squared means, or whatever
4767 tickles your fancy.
4768
4769 @findex gnus-article-sort-functions
4770 @findex gnus-article-sort-by-date
4771 @findex gnus-article-sort-by-score
4772 @findex gnus-article-sort-by-subject
4773 @findex gnus-article-sort-by-author
4774 @findex gnus-article-sort-by-number
4775 If you are using an unthreaded display for some strange reason or other,
4776 you have to fiddle with the @code{gnus-article-sort-functions} variable.
4777 It is very similar to the @code{gnus-thread-sort-functions}, except that
4778 is uses slightly different functions for article comparison.  Available
4779 sorting predicate functions are @code{gnus-article-sort-by-number},
4780 @code{gnus-article-sort-by-author}, @code{gnus-article-sort-by-subject},
4781 @code{gnus-article-sort-by-date}, and @code{gnus-article-sort-by-score}.
4782
4783 If you want to sort an unthreaded summary display by subject, you could
4784 say something like:
4785
4786 @lisp
4787 (setq gnus-article-sort-functions 
4788       '(gnus-article-sort-by-number
4789         gnus-article-sort-by-subject))
4790 @end lisp
4791
4792
4793
4794 @node Asynchronous Fetching
4795 @section Asynchronous Article Fetching
4796 @cindex asynchronous article fetching
4797 @cindex article pre-fetch
4798 @cindex pre-fetch
4799
4800 If you read your news from an @sc{nntp} server that's far away, the
4801 network latencies may make reading articles a chore.  You have to wait
4802 for a while after pressing @kbd{n} to go to the next article before the
4803 article appears.  Why can't Gnus just go ahead and fetch the article
4804 while you are reading the previous one?  Why not, indeed.
4805
4806 First, some caveats.  There are some pitfalls to using asynchronous
4807 article fetching, especially the way Gnus does it.  
4808
4809 Let's say you are reading article 1, which is short, and article 2 is
4810 quite long, and you are not interested in reading that.  Gnus does not
4811 know this, so it goes ahead and fetches article 2.  You decide to read
4812 article 3, but since Gnus is in the process of fetching article 2, the
4813 connection is blocked.
4814
4815 To avoid these situations, Gnus will open two (count 'em two)
4816 connections to the server.  Some people may think this isn't a very nice
4817 thing to do, but I don't see any real alternatives.  Setting up that
4818 extra connection takes some time, so Gnus startup will be slower.
4819
4820 Gnus will fetch more articles than you will read.  This will mean that
4821 the link between your machine and the @sc{nntp} server will become more
4822 loaded than if you didn't use article pre-fetch.  The server itself will
4823 also become more loaded---both with the extra article requests, and the
4824 extra connection.
4825
4826 Ok, so now you know that you shouldn't really use this thing...  unless
4827 you really want to.
4828
4829 @vindex gnus-asynchronous
4830 Here's how:  Set @code{gnus-asynchronous} to @code{t}.  The rest should
4831 happen automatically.
4832
4833 @vindex gnus-use-article-prefetch
4834 You can control how many articles that are to be pre-fetched by setting
4835 @code{gnus-use-article-prefetch}.  This is 30 by default, which means
4836 that when you read an article in the group, the backend will pre-fetch
4837 the next 30 articles.  If this variable is @code{t}, the backend will
4838 pre-fetch all the articles that it can without bound.  If it is
4839 @code{nil}, no pre-fetching will be made.
4840
4841 @vindex gnus-async-prefetch-article-p
4842 @findex gnus-async-read-p
4843 There are probably some articles that you don't want to pre-fetch---read
4844 articles, for instance.  Which articles to pre-fetch is controlled by
4845 the @code{gnus-async-prefetch-article-p} variable.  This function should
4846 return non-@code{nil} when the article in question is to be
4847 pre-fetched.  The default is @code{gnus-async-read-p}, which returns
4848 @code{nil} on read articles.  The function is called with an article
4849 data structure as the only parameter.
4850
4851 If, for instance, you wish to pre-fetch only unread articles that are
4852 shorter than 100 lines, you could say something like:
4853
4854 @lisp
4855 (defun my-async-short-unread-p (data)
4856   "Return non-nil for short, unread articles."
4857   (and (gnus-data-unread-p data)
4858        (< (mail-header-lines (gnus-data-header data))
4859           100)))
4860
4861 (setq gnus-async-prefetch-article-p 'my-async-short-unread-p)
4862 @end lisp
4863
4864 These functions will be called many, many times, so they should
4865 preferrably be short and sweet to avoid slowing down Gnus too much.
4866 It's also probably a good idea to byte-compile things like this.
4867
4868 @vindex gnus-prefetched-article-deletion-strategy
4869 Articles have to be removed from the asynch buffer sooner or later.  The
4870 @code{gnus-prefetched-article-deletion-strategy} says when to remove
4871 articles.  This is a list that may contain the following elements:
4872
4873 @table @code
4874 @item read
4875 Remove articles when they are read.
4876
4877 @item exit
4878 Remove articles when exiting the group.
4879 @end table
4880
4881 The default value is @code{(read exit)}.
4882
4883 @vindex gnus-use-header-prefetch
4884 If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
4885 from the next group.
4886
4887
4888 @node Article Caching
4889 @section Article Caching
4890 @cindex article caching
4891 @cindex caching
4892
4893 If you have an @emph{extremely} slow @sc{nntp} connection, you may
4894 consider turning article caching on.  Each article will then be stored
4895 locally under your home directory.  As you may surmise, this could
4896 potentially use @emph{huge} amounts of disk space, as well as eat up all
4897 your inodes so fast it will make your head swim.  In vodka.
4898
4899 Used carefully, though, it could be just an easier way to save articles.
4900
4901 @vindex gnus-use-long-file-name
4902 @vindex gnus-cache-directory
4903 @vindex gnus-use-cache
4904 To turn caching on, set @code{gnus-use-cache} to @code{t}.  By default,
4905 all articles that are ticked or marked as dormant will then be copied
4906 over to your local cache (@code{gnus-cache-directory}).  Whether this
4907 cache is flat or hierarchal is controlled by the
4908 @code{gnus-use-long-file-name} variable, as usual.
4909
4910 When re-select a ticked or dormant article, it will be fetched from the
4911 cache instead of from the server.  As articles in your cache will never
4912 expire, this might serve as a method of saving articles while still
4913 keeping them where they belong.  Just mark all articles you want to save
4914 as dormant, and don't worry.
4915
4916 When an article is marked as read, is it removed from the cache.
4917
4918 @vindex gnus-cache-remove-articles
4919 @vindex gnus-cache-enter-articles
4920 The entering/removal of articles from the cache is controlled by the
4921 @code{gnus-cache-enter-articles} and @code{gnus-cache-remove-articles}
4922 variables.  Both are lists of symbols.  The first is @code{(ticked
4923 dormant)} by default, meaning that ticked and dormant articles will be
4924 put in the cache.  The latter is @code{(read)} by default, meaning that
4925 articles that are marked as read are removed from the cache.  Possibly
4926 symbols in these two lists are @code{ticked}, @code{dormant},
4927 @code{unread} and @code{read}.
4928
4929 @findex gnus-jog-cache
4930 So where does the massive article-fetching and storing come into the
4931 picture?  The @code{gnus-jog-cache} command will go through all
4932 subscribed newsgroups, request all unread articles, and store them in
4933 the cache.  You should only ever, ever ever ever, use this command if 1)
4934 your connection to the @sc{nntp} server is really, really, really slow
4935 and 2) you have a really, really, really huge disk.  Seriously.
4936
4937 @vindex gnus-uncacheable-groups
4938 It is likely that you do not want caching on some groups.  For instance,
4939 if your @code{nnml} mail is located under your home directory, it makes no
4940 sense to cache it somewhere else under your home directory.  Unless you
4941 feel that it's neat to use twice as much space.  To limit the caching,
4942 you could set the @code{gnus-uncacheable-groups} regexp to
4943 @samp{^nnml}, for instance.  This variable is @code{nil} by
4944 default.
4945
4946 @findex gnus-cache-generate-nov-databases
4947 @findex gnus-cache-generate-active
4948 @vindex gnus-cache-active-file
4949 The cache stores information on what articles it contains in its active
4950 file (@code{gnus-cache-active-file}).  If this file (or any other parts
4951 of the cache) becomes all messed up for some reason or other, Gnus
4952 offers two functions that will try to set things right.  @kbd{M-x
4953 gnus-cache-generate-nov-databases} will (re)build all the @sc{nov}
4954 files, and @kbd{gnus-cache-generate-active} will (re)generate the active
4955 file.
4956
4957
4958 @node Persistent Articles
4959 @section Persistent Articles
4960 @cindex persistent articles
4961
4962 Closely related to article caching, we have @dfn{persistent articles}.
4963 In fact, it's just a different way of looking at caching, and much more
4964 useful in my opinion.
4965
4966 Say you're reading a newsgroup, and you happen on to some valuable gem
4967 that you want to keep and treasure forever.  You'd normally just save it
4968 (using one of the many saving commands) in some file.  The problem with
4969 that is that it's just, well, yucky.  Ideally you'd prefer just having
4970 the article remain in the group where you found it forever; untouched by
4971 the expiry going on at the news server.
4972
4973 This is what a @dfn{persistent article} is---an article that just won't
4974 be deleted.  It's implemented using the normal cache functions, but
4975 you use two explicit commands for managing persistent articles:
4976
4977 @table @kbd
4978
4979 @item *
4980 @kindex * (Summary)
4981 @findex gnus-cache-enter-article
4982 Make the current article persistent (@code{gnus-cache-enter-article}). 
4983
4984 @item M-*
4985 @kindex M-* (Summary)
4986 @findex gnus-cache-remove-article
4987 Remove the current article from the persistent articles
4988 (@code{gnus-cache-remove-article}).  This will normally delete the
4989 article. 
4990 @end table
4991
4992 Both these commands understand the process/prefix convention. 
4993
4994 To avoid having all ticked articles (and stuff) entered into the cache,
4995 you should set @code{gnus-use-cache} to @code{passive} if you're just
4996 interested in persistent articles:
4997
4998 @lisp
4999 (setq gnus-use-cache 'passive)
5000 @end lisp
5001
5002
5003 @node Article Backlog
5004 @section Article Backlog
5005 @cindex backlog
5006 @cindex article backlog
5007
5008 If you have a slow connection, but the idea of using caching seems
5009 unappealing to you (and it is, really), you can help the situation some
5010 by switching on the @dfn{backlog}.  This is where Gnus will buffer
5011 already read articles so that it doesn't have to re-fetch articles
5012 you've already read.  This only helps if you are in the habit of
5013 re-selecting articles you've recently read, of course.  If you never do
5014 that, turning the backlog on will slow Gnus down a little bit, and
5015 increase memory usage some.
5016
5017 @vindex gnus-keep-backlog
5018 If you set @code{gnus-keep-backlog} to a number @var{n}, Gnus will store
5019 at most @var{n} old articles in a buffer for later re-fetching.  If this
5020 variable is non-@code{nil} and is not a number, Gnus will store
5021 @emph{all} read articles, which means that your Emacs will grow without
5022 bound before exploding and taking your machine down with you.  I put
5023 that in there just to keep y'all on your toes.  
5024
5025 This variable is @code{nil} by default.
5026
5027
5028 @node Saving Articles
5029 @section Saving Articles
5030 @cindex saving articles
5031
5032 Gnus can save articles in a number of ways.  Below is the documentation
5033 for saving articles in a fairly straight-forward fashion (i.e., little
5034 processing of the article is done before it is saved).  For a different
5035 approach (uudecoding, unsharing) you should use @code{gnus-uu}
5036 (@pxref{Decoding Articles}).
5037
5038 @vindex gnus-save-all-headers
5039 If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete
5040 unwanted headers before saving the article.
5041
5042 @vindex gnus-saved-headers
5043 If the preceding variable is @code{nil}, all headers that match the
5044 @code{gnus-saved-headers} regexp will be kept, while the rest will be
5045 deleted before saving.
5046
5047 @table @kbd
5048
5049 @item O o
5050 @itemx o
5051 @kindex O o (Summary)
5052 @kindex o (Summary)
5053 @findex gnus-summary-save-article
5054 Save the current article using the default article saver
5055 (@code{gnus-summary-save-article}). 
5056
5057 @item O m
5058 @kindex O m (Summary)
5059 @findex gnus-summary-save-article-mail
5060 Save the current article in mail format
5061 (@code{gnus-summary-save-article-mail}). 
5062
5063 @item O r
5064 @kindex O r (Summary)
5065 @findex gnus-summary-save-article-rmail
5066 Save the current article in rmail format
5067 (@code{gnus-summary-save-article-rmail}). 
5068
5069 @item O f
5070 @kindex O f (Summary)
5071 @findex gnus-summary-save-article-file
5072 Save the current article in plain file format
5073 (@code{gnus-summary-save-article-file}). 
5074
5075 @item O F
5076 @kindex O F (Summary)
5077 @findex gnus-summary-write-article-file
5078 Write the current article in plain file format, overwriting any previous
5079 file contents (@code{gnus-summary-write-article-file}). 
5080
5081 @item O b
5082 @kindex O b (Summary)
5083 @findex gnus-summary-save-article-body-file
5084 Save the current article body in plain file format
5085 (@code{gnus-summary-save-article-body-file}). 
5086
5087 @item O h
5088 @kindex O h (Summary)
5089 @findex gnus-summary-save-article-folder
5090 Save the current article in mh folder format
5091 (@code{gnus-summary-save-article-folder}). 
5092
5093 @item O v
5094 @kindex O v (Summary)
5095 @findex gnus-summary-save-article-vm
5096 Save the current article in a VM folder
5097 (@code{gnus-summary-save-article-vm}).
5098
5099 @item O p
5100 @kindex O p (Summary)
5101 @findex gnus-summary-pipe-output
5102 Save the current article in a pipe.  Uhm, like, what I mean is---Pipe
5103 the current article to a process (@code{gnus-summary-pipe-output}).
5104 @end table
5105
5106 @vindex gnus-prompt-before-saving
5107 All these commands use the process/prefix convention
5108 (@pxref{Process/Prefix}).  If you save bunches of articles using these
5109 functions, you might get tired of being prompted for files to save each
5110 and every article in.  The prompting action is controlled by
5111 the @code{gnus-prompt-before-saving} variable, which is @code{always} by
5112 default, giving you that excessive prompting action you know and
5113 loathe.  If you set this variable to @code{t} instead, you'll be prompted
5114 just once for each series of articles you save.  If you like to really
5115 have Gnus do all your thinking for you, you can even set this variable
5116 to @code{nil}, which means that you will never be prompted for files to
5117 save articles in.  Gnus will simply save all the articles in the default
5118 files. 
5119
5120
5121 @vindex gnus-default-article-saver
5122 You can customize the @code{gnus-default-article-saver} variable to make
5123 Gnus do what you want it to.  You can use any of the four ready-made
5124 functions below, or you can create your own.
5125
5126 @table @code
5127
5128 @item gnus-summary-save-in-rmail
5129 @findex gnus-summary-save-in-rmail
5130 @vindex gnus-rmail-save-name
5131 @findex gnus-plain-save-name
5132 This is the default format, @dfn{babyl}.  Uses the function in the
5133 @code{gnus-rmail-save-name} variable to get a file name to save the
5134 article in.  The default is @code{gnus-plain-save-name}.
5135
5136 @item gnus-summary-save-in-mail
5137 @findex gnus-summary-save-in-mail
5138 @vindex gnus-mail-save-name
5139 Save in a Unix mail (mbox) file.  Uses the function in the
5140 @code{gnus-mail-save-name} variable to get a file name to save the
5141 article in.  The default is @code{gnus-plain-save-name}.
5142
5143 @item gnus-summary-save-in-file
5144 @findex gnus-summary-save-in-file
5145 @vindex gnus-file-save-name
5146 @findex gnus-numeric-save-name
5147 Append the article straight to an ordinary file.  Uses the function in