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