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