lisp/ChangeLog addition:
[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,
13 2002, 2003, 2004, 2005, 2006, 2007 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.2 or
18 any later version published by the Free Software Foundation; with no
19 Invariant Sections, with the Front-Cover texts being ``A GNU
20 Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
21 license is included in the section entitled ``GNU Free Documentation
22 License'' in the Emacs manual.
23
24 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
25 this GNU Manual, like GNU software.  Copies published by the Free
26 Software Foundation raise funds for GNU development.''
27
28 This document is part of a collection distributed under the GNU Free
29 Documentation License.  If you want to distribute this document
30 separately from the collection, you can do so by adding a copy of the
31 license to the document, as described in section 6 of the license.
32 @end quotation
33 @end copying
34
35 @iftex
36 @iflatex
37 \documentclass[twoside,a4paper,openright,11pt]{book}
38 \usepackage[latin1]{inputenc}
39 \usepackage{pagestyle}
40 \usepackage{epsfig}
41 \usepackage{pixidx}
42 \input{gnusconfig.tex}
43
44 \ifx\pdfoutput\undefined
45 \else
46 \usepackage[pdftex,bookmarks,colorlinks=true]{hyperref}
47 \usepackage{thumbpdf}
48 \pdfcompresslevel=9
49 \fi
50
51 \makeindex
52 \begin{document}
53
54 % Adjust ../Makefile.in if you change the following line:
55 \newcommand{\gnusversionname}{No Gnus v0.6}
56 \newcommand{\gnuschaptername}{}
57 \newcommand{\gnussectionname}{}
58
59 \newcommand{\gnusbackslash}{/}
60
61 \newcommand{\gnusref}[1]{``#1'' on page \pageref{#1}}
62 \ifx\pdfoutput\undefined
63 \newcommand{\gnusuref}[1]{\gnustt{#1}}
64 \else
65 \newcommand{\gnusuref}[1]{\href{#1}{\gnustt{#1}}}
66 \fi
67 \newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}}
68 \newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}}
69
70 \newcommand{\gnuskindex}[1]{\index{#1}}
71 \newcommand{\gnusindex}[1]{\index{#1}}
72
73 \newcommand{\gnustt}[1]{{\gnusselectttfont{}#1}}
74 \newcommand{\gnuscode}[1]{\gnustt{#1}}
75 \newcommand{\gnusasis}[1]{\gnustt{#1}}
76 \newcommand{\gnusurl}[1]{\gnustt{#1}}
77 \newcommand{\gnuscommand}[1]{\gnustt{#1}}
78 \newcommand{\gnusenv}[1]{\gnustt{#1}}
79 \newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\gnusselectttfont{}#1}''}
80 \newcommand{\gnuslisp}[1]{\gnustt{#1}}
81 \newcommand{\gnuskbd}[1]{`\gnustt{#1}'}
82 \newcommand{\gnuskey}[1]{`\gnustt{#1}'}
83 \newcommand{\gnusfile}[1]{`\gnustt{#1}'}
84 \newcommand{\gnusdfn}[1]{\textit{#1}}
85 \newcommand{\gnusi}[1]{\textit{#1}}
86 \newcommand{\gnusr}[1]{\textrm{#1}}
87 \newcommand{\gnusstrong}[1]{\textbf{#1}}
88 \newcommand{\gnusemph}[1]{\textit{#1}}
89 \newcommand{\gnusvar}[1]{{\fontsize{10pt}{10}\selectfont\textsl{\textsf{#1}}}}
90 \newcommand{\gnussc}[1]{\textsc{#1}}
91 \newcommand{\gnustitle}[1]{{\huge\textbf{#1}}}
92 \newcommand{\gnusversion}[1]{{\small\textit{#1}}}
93 \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}}
94 \newcommand{\gnusresult}[1]{\gnustt{=> #1}}
95 \newcommand{\gnusacronym}[1]{\textsc{#1}}
96 \newcommand{\gnusemail}[1]{\textit{#1}}
97
98 \newcommand{\gnusbullet}{{${\bullet}$}}
99 \newcommand{\gnusdollar}{\$}
100 \newcommand{\gnusampersand}{\&}
101 \newcommand{\gnuspercent}{\%}
102 \newcommand{\gnushash}{\#}
103 \newcommand{\gnushat}{\symbol{"5E}}
104 \newcommand{\gnusunderline}{\symbol{"5F}}
105 \newcommand{\gnusnot}{$\neg$}
106 \newcommand{\gnustilde}{\symbol{"7E}}
107 \newcommand{\gnusless}{{$<$}}
108 \newcommand{\gnusgreater}{{$>$}}
109 \newcommand{\gnusbraceleft}{{$>$}}
110 \newcommand{\gnusbraceright}{{$>$}}
111
112 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=ps/gnus-head,height=1cm}}}
113 \newcommand{\gnusinteresting}{
114 \marginpar[\mbox{}\hfill\gnushead]{\gnushead}
115 }
116
117 \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi}
118
119 \newcommand{\gnuspagechapter}[1]{
120 {\mbox{}}
121 }
122
123 \newdimen{\gnusdimen}
124 \gnusdimen 0pt
125
126 \newcommand{\gnuschapter}[2]{
127 \gnuscleardoublepage
128 \ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi
129 \chapter{#2}
130 \renewcommand{\gnussectionname}{}
131 \renewcommand{\gnuschaptername}{#2}
132 \thispagestyle{empty}
133 \hspace*{-2cm}
134 \begin{picture}(500,500)(0,0)
135 \put(480,350){\makebox(0,0)[tr]{#1}}
136 \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}}
137 \end{picture}
138 \clearpage
139 }
140
141 \newcommand{\gnusfigure}[3]{
142 \begin{figure}
143 \mbox{}\ifodd\count0\hspace*{-0.8cm}\else\hspace*{-3cm}\fi\begin{picture}(440,#2)
144 #3
145 \end{picture}
146 \caption{#1}
147 \end{figure}
148 }
149
150 \newcommand{\gnusicon}[1]{
151 \marginpar[\mbox{}\hfill\raisebox{-1.5cm}{\epsfig{figure=ps/#1-up,height=1.5cm}}]{\raisebox{-1cm}{\epsfig{figure=ps/#1-up,height=1cm}}}
152 }
153
154 \newcommand{\gnuspicon}[1]{
155 \margindex{\epsfig{figure=#1,width=2cm}}
156 }
157
158 \newcommand{\gnusxface}[2]{
159 \margindex{\epsfig{figure=#1,width=1cm}\epsfig{figure=#2,width=1cm}}
160 }
161
162 \newcommand{\gnussmiley}[2]{
163 \margindex{\makebox[2cm]{\hfill\epsfig{figure=#1,width=0.5cm}\hfill\epsfig{figure=#2,width=0.5cm}\hfill}}
164 }
165
166 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
167
168 \newcommand{\gnussection}[1]{
169 \renewcommand{\gnussectionname}{#1}
170 \section{#1}
171 }
172
173 \newenvironment{codelist}%
174 {\begin{list}{}{
175 }
176 }{\end{list}}
177
178 \newenvironment{asislist}%
179 {\begin{list}{}{
180 }
181 }{\end{list}}
182
183 \newenvironment{kbdlist}%
184 {\begin{list}{}{
185 \labelwidth=0cm
186 }
187 }{\end{list}}
188
189 \newenvironment{dfnlist}%
190 {\begin{list}{}{
191 }
192 }{\end{list}}
193
194 \newenvironment{stronglist}%
195 {\begin{list}{}{
196 }
197 }{\end{list}}
198
199 \newenvironment{samplist}%
200 {\begin{list}{}{
201 }
202 }{\end{list}}
203
204 \newenvironment{varlist}%
205 {\begin{list}{}{
206 }
207 }{\end{list}}
208
209 \newenvironment{emphlist}%
210 {\begin{list}{}{
211 }
212 }{\end{list}}
213
214 \newlength\gnusheadtextwidth
215 \setlength{\gnusheadtextwidth}{\headtextwidth}
216 \addtolength{\gnusheadtextwidth}{1cm}
217
218 \newpagestyle{gnuspreamble}%
219 {
220 {
221 \ifodd\count0
222 {
223 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}}
224 }
225 \else
226 {
227 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}}
228 }
229 }
230 \fi
231 }
232 }
233 {
234 \ifodd\count0
235 \mbox{} \hfill
236 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
237 \else
238 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
239 \hfill \mbox{}
240 \fi
241 }
242
243 \newpagestyle{gnusindex}%
244 {
245 {
246 \ifodd\count0
247 {
248 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}}
249 }
250 \else
251 {
252 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
253 }
254 \fi
255 }
256 }
257 {
258 \ifodd\count0
259 \mbox{} \hfill
260 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
261 \else
262 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
263 \hfill \mbox{}
264 \fi
265 }
266
267 \newpagestyle{gnus}%
268 {
269 {
270 \ifodd\count0
271 {
272 \makebox[12cm]{\hspace*{3.1cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}}
273 }
274 \else
275 {
276 \makebox[12cm]{\hspace*{-2.95cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}}
277 }
278 \fi
279 }
280 }
281 {
282 \ifodd\count0
283 \mbox{} \hfill
284 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
285 \else
286 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
287 \hfill \mbox{}
288 \fi
289 }
290
291 \pagenumbering{roman}
292 \pagestyle{gnuspreamble}
293
294 @end iflatex
295 @end iftex
296
297 @iftex
298 @iflatex
299
300 \begin{titlepage}
301 {
302
303 %\addtolength{\oddsidemargin}{-5cm}
304 %\addtolength{\evensidemargin}{-5cm}
305 \parindent=0cm
306 \addtolength{\textheight}{2cm}
307
308 \gnustitle{\gnustitlename}\hfill\gnusversion{\gnusversionname}\\
309 \rule{15cm}{1mm}\\
310 \vfill
311 \hspace*{0cm}\epsfig{figure=ps/gnus-big-logo,height=15cm}
312 \vfill
313 \rule{15cm}{1mm}\\
314 \gnusauthor{by Lars Magne Ingebrigtsen}
315 \newpage
316 }
317
318 \mbox{}
319 \vfill
320
321 \thispagestyle{empty}
322
323 @c @insertcopying
324 \newpage
325 \end{titlepage}
326 @end iflatex
327 @end iftex
328
329 @ifnottex
330 @insertcopying
331 @end ifnottex
332
333 @dircategory Emacs
334 @direntry
335 * Gnus: (gnus).         The newsreader Gnus.
336 @end direntry
337 @iftex
338 @finalout
339 @end iftex
340 @setchapternewpage odd
341
342
343
344 @titlepage
345 @title Gnus Manual
346
347 @author by Lars Magne Ingebrigtsen
348 @page
349 @vskip 0pt plus 1filll
350 @insertcopying
351 @end titlepage
352
353
354 @node Top
355 @top The Gnus Newsreader
356
357 @ifinfo
358
359 You can read news (and mail) from within Emacs by using Gnus.  The news
360 can be gotten by any nefarious means you can think of---@acronym{NNTP}, local
361 spool or your mbox file.  All at the same time, if you want to push your
362 luck.
363
364 @c Adjust ../Makefile.in if you change the following line:
365 This manual corresponds to No Gnus v0.6.
366
367 @end ifinfo
368
369 @iftex
370
371 @iflatex
372 \tableofcontents
373 \gnuscleardoublepage
374 @end iflatex
375
376 Gnus is the advanced, self-documenting, customizable, extensible
377 unreal-time newsreader for GNU Emacs.
378
379 Oops.  That sounds oddly familiar, so let's start over again to avoid
380 being accused of plagiarism:
381
382 Gnus is a message-reading laboratory.  It will let you look at just
383 about anything as if it were a newsgroup.  You can read mail with it,
384 you can browse directories with it, you can @code{ftp} with it---you
385 can even read news with it!
386
387 Gnus tries to empower people who read news the same way Emacs empowers
388 people who edit text.  Gnus sets no limits to what the user should be
389 allowed to do.  Users are encouraged to extend Gnus to make it behave
390 like they want it to behave.  A program should not control people;
391 people should be empowered to do what they want by using (or abusing)
392 the program.
393
394 @end iftex
395
396 @menu
397 * Starting Up::              Finding news can be a pain.
398 * Group Buffer::             Selecting, subscribing and killing groups.
399 * Summary Buffer::           Reading, saving and posting articles.
400 * Article Buffer::           Displaying and handling articles.
401 * Composing Messages::       Information on sending mail and news.
402 * Select Methods::           Gnus reads all messages from various select methods.
403 * Scoring::                  Assigning values to articles.
404 * Various::                  General purpose settings.
405 * The End::                  Farewell and goodbye.
406 * Appendices::               Terminology, Emacs intro, @acronym{FAQ}, History, Internals.
407 * Index::                    Variable, function and concept index.
408 * Key Index::                Key Index.
409
410 Other related manuals
411
412 * Message:(message).         Composing messages.
413 * Emacs-MIME:(emacs-mime).   Composing messages; @acronym{MIME}-specific parts.
414 * Sieve:(sieve).             Managing Sieve scripts in Emacs.
415 * PGG:(pgg).                 @acronym{PGP/MIME} with Gnus.
416 * SASL:(sasl).               @acronym{SASL} authentication in Emacs.
417
418 @detailmenu
419  --- The Detailed Node Listing ---
420
421 Starting Gnus
422
423 * Finding the News::            Choosing a method for getting news.
424 * The First Time::              What does Gnus do the first time you start it?
425 * The Server is Down::          How can I read my mail then?
426 * Slave Gnusae::                You can have more than one Gnus active at a time.
427 * Fetching a Group::            Starting Gnus just to read a group.
428 * New Groups::                  What is Gnus supposed to do with new groups?
429 * Changing Servers::            You may want to move from one server to another.
430 * Startup Files::               Those pesky startup files---@file{.newsrc}.
431 * Auto Save::                   Recovering from a crash.
432 * The Active File::             Reading the active file over a slow line Takes Time.
433 * Startup Variables::           Other variables you might change.
434
435 New Groups
436
437 * Checking New Groups::         Determining what groups are new.
438 * Subscription Methods::        What Gnus should do with new groups.
439 * Filtering New Groups::        Making Gnus ignore certain new groups.
440
441 Group Buffer
442
443 * Group Buffer Format::         Information listed and how you can change it.
444 * Group Maneuvering::           Commands for moving in the group buffer.
445 * Selecting a Group::           Actually reading news.
446 * Subscription Commands::       Unsubscribing, killing, subscribing.
447 * Group Data::                  Changing the info for a group.
448 * Group Levels::                Levels? What are those, then?
449 * Group Score::                 A mechanism for finding out what groups you like.
450 * Marking Groups::              You can mark groups for later processing.
451 * Foreign Groups::              Creating and editing groups.
452 * Group Parameters::            Each group may have different parameters set.
453 * Listing Groups::              Gnus can list various subsets of the groups.
454 * Sorting Groups::              Re-arrange the group order.
455 * Group Maintenance::           Maintaining a tidy @file{.newsrc} file.
456 * Browse Foreign Server::       You can browse a server.  See what it has to offer.
457 * Exiting Gnus::                Stop reading news and get some work done.
458 * Group Topics::                A folding group mode divided into topics.
459 * Misc Group Stuff::            Other stuff that you can to do.
460
461 Group Buffer Format
462
463 * Group Line Specification::    Deciding how the group buffer is to look.
464 * Group Mode Line Specification::  The group buffer mode line.
465 * Group Highlighting::          Having nice colors in the group buffer.
466
467 Group Topics
468
469 * Topic Commands::              Interactive E-Z commands.
470 * Topic Variables::             How to customize the topics the Lisp Way.
471 * Topic Sorting::               Sorting each topic individually.
472 * Topic Topology::              A map of the world.
473 * Topic Parameters::            Parameters that apply to all groups in a topic.
474
475 Misc Group Stuff
476
477 * Scanning New Messages::       Asking Gnus to see whether new messages have arrived.
478 * Group Information::           Information and help on groups and Gnus.
479 * Group Timestamp::             Making Gnus keep track of when you last read a group.
480 * File Commands::               Reading and writing the Gnus files.
481 * Sieve Commands::              Managing Sieve scripts.
482
483 Summary Buffer
484
485 * Summary Buffer Format::       Deciding how the summary buffer is to look.
486 * Summary Maneuvering::         Moving around the summary buffer.
487 * Choosing Articles::           Reading articles.
488 * Paging the Article::          Scrolling the current article.
489 * Reply Followup and Post::     Posting articles.
490 * Delayed Articles::            Send articles at a later time.
491 * Marking Articles::            Marking articles as read, expirable, etc.
492 * Limiting::                    You can limit the summary buffer.
493 * Threading::                   How threads are made.
494 * Sorting the Summary Buffer::  How articles and threads are sorted.
495 * Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
496 * Article Caching::             You may store articles in a cache.
497 * Persistent Articles::         Making articles expiry-resistant.
498 * Article Backlog::             Having already read articles hang around.
499 * Saving Articles::             Ways of customizing article saving.
500 * Decoding Articles::           Gnus can treat series of (uu)encoded articles.
501 * Article Treatment::           The article buffer can be mangled at will.
502 * MIME Commands::               Doing MIMEy things with the articles.
503 * Charsets::                    Character set issues.
504 * Article Commands::            Doing various things with the article buffer.
505 * Summary Sorting::             Sorting the summary buffer in various ways.
506 * Finding the Parent::          No child support? Get the parent.
507 * Alternative Approaches::      Reading using non-default summaries.
508 * Tree Display::                A more visual display of threads.
509 * Mail Group Commands::         Some commands can only be used in mail groups.
510 * Various Summary Stuff::       What didn't fit anywhere else.
511 * Exiting the Summary Buffer::  Returning to the Group buffer,
512                                 or reselecting the current group.
513 * Crosspost Handling::          How crossposted articles are dealt with.
514 * Duplicate Suppression::       An alternative when crosspost handling fails.
515 * Security::                    Decrypt and Verify.
516 * Mailing List::                Mailing list minor mode.
517
518 Summary Buffer Format
519
520 * Summary Buffer Lines::        You can specify how summary lines should look.
521 * To From Newsgroups::          How to not display your own name.
522 * Summary Buffer Mode Line::    You can say how the mode line should look.
523 * Summary Highlighting::        Making the summary buffer all pretty and nice.
524
525 Choosing Articles
526
527 * Choosing Commands::           Commands for choosing articles.
528 * Choosing Variables::          Variables that influence these commands.
529
530 Reply, Followup and Post
531
532 * Summary Mail Commands::       Sending mail.
533 * Summary Post Commands::       Sending news.
534 * Summary Message Commands::    Other Message-related commands.
535 * Canceling and Superseding::
536
537 Marking Articles
538
539 * Unread Articles::             Marks for unread articles.
540 * Read Articles::               Marks for read articles.
541 * Other Marks::                 Marks that do not affect readedness.
542 * Setting Marks::               How to set and remove marks.
543 * Generic Marking Commands::    How to customize the marking.
544 * Setting Process Marks::       How to mark articles for later processing.
545
546 Threading
547
548 * Customizing Threading::       Variables you can change to affect the threading.
549 * Thread Commands::             Thread based commands in the summary buffer.
550
551 Customizing Threading
552
553 * Loose Threads::               How Gnus gathers loose threads into bigger threads.
554 * Filling In Threads::          Making the threads displayed look fuller.
555 * More Threading::              Even more variables for fiddling with threads.
556 * Low-Level Threading::         You thought it was over@dots{} but you were wrong!
557
558 Decoding Articles
559
560 * Uuencoded Articles::          Uudecode articles.
561 * Shell Archives::              Unshar articles.
562 * PostScript Files::            Split PostScript.
563 * Other Files::                 Plain save and binhex.
564 * Decoding Variables::          Variables for a happy decoding.
565 * Viewing Files::               You want to look at the result of the decoding?
566
567 Decoding Variables
568
569 * Rule Variables::              Variables that say how a file is to be viewed.
570 * Other Decode Variables::      Other decode variables.
571 * Uuencoding and Posting::      Variables for customizing uuencoding.
572
573 Article Treatment
574
575 * Article Highlighting::        You want to make the article look like fruit salad.
576 * Article Fontisizing::         Making emphasized text look nice.
577 * Article Hiding::              You also want to make certain info go away.
578 * Article Washing::             Lots of way-neat functions to make life better.
579 * Article Header::              Doing various header transformations.
580 * Article Buttons::             Click on URLs, Message-IDs, addresses and the like.
581 * Article Button Levels::       Controlling appearance of buttons.
582 * Article Date::                Grumble, UT!
583 * Article Display::             Display various stuff---X-Face, Picons, Smileys
584 * Article Signature::           What is a signature?
585 * Article Miscellanea::         Various other stuff.
586
587 Alternative Approaches
588
589 * Pick and Read::               First mark articles and then read them.
590 * Binary Groups::               Auto-decode all articles.
591
592 Various Summary Stuff
593
594 * Summary Group Information::   Information oriented commands.
595 * Searching for Articles::      Multiple article commands.
596 * Summary Generation Commands::
597 * Really Various Summary Commands::  Those pesky non-conformant commands.
598
599 Article Buffer
600
601 * Hiding Headers::              Deciding what headers should be displayed.
602 * Using MIME::                  Pushing articles through @acronym{MIME} before reading them.
603 * Customizing Articles::        Tailoring the look of the articles.
604 * Article Keymap::              Keystrokes available in the article buffer.
605 * Misc Article::                Other stuff.
606
607 Composing Messages
608
609 * Mail::                        Mailing and replying.
610 * Posting Server::              What server should you post and mail via?
611 * POP before SMTP::             You cannot send a mail unless you read a mail.
612 * Mail and Post::               Mailing and posting at the same time.
613 * Archived Messages::           Where Gnus stores the messages you've sent.
614 * Posting Styles::              An easier way to specify who you are.
615 * Drafts::                      Postponing messages and rejected messages.
616 * Rejected Articles::           What happens if the server doesn't like your article?
617 * Signing and encrypting::      How to compose secure messages.
618
619 Select Methods
620
621 * Server Buffer::               Making and editing virtual servers.
622 * Getting News::                Reading USENET news with Gnus.
623 * Getting Mail::                Reading your personal mail with Gnus.
624 * Browsing the Web::            Getting messages from a plethora of Web sources.
625 * IMAP::                        Using Gnus as a @acronym{IMAP} client.
626 * Other Sources::               Reading directories, files, SOUP packets.
627 * Combined Groups::             Combining groups into one group.
628 * Email Based Diary::           Using mails to manage diary events in Gnus.
629 * Gnus Unplugged::              Reading news and mail offline.
630
631 Server Buffer
632
633 * Server Buffer Format::        You can customize the look of this buffer.
634 * Server Commands::             Commands to manipulate servers.
635 * Example Methods::             Examples server specifications.
636 * Creating a Virtual Server::   An example session.
637 * Server Variables::            Which variables to set.
638 * Servers and Methods::         You can use server names as select methods.
639 * Unavailable Servers::         Some servers you try to contact may be down.
640
641 Getting News
642
643 * NNTP::                        Reading news from an @acronym{NNTP} server.
644 * News Spool::                  Reading news from the local spool.
645
646 @acronym{NNTP}
647
648 * Direct Functions::            Connecting directly to the server.
649 * Indirect Functions::          Connecting indirectly to the server.
650 * Common Variables::            Understood by several connection functions.
651 * NNTP marks::                  Storing marks for @acronym{NNTP} servers.
652
653 Getting Mail
654
655 * Mail in a Newsreader::        Important introductory notes.
656 * Getting Started Reading Mail::  A simple cookbook example.
657 * Splitting Mail::              How to create mail groups.
658 * Mail Sources::                How to tell Gnus where to get mail from.
659 * Mail Back End Variables::     Variables for customizing mail handling.
660 * Fancy Mail Splitting::        Gnus can do hairy splitting of incoming mail.
661 * Group Mail Splitting::        Use group customize to drive mail splitting.
662 * Incorporating Old Mail::      What about the old mail you have?
663 * Expiring Mail::               Getting rid of unwanted mail.
664 * Washing Mail::                Removing cruft from the mail you get.
665 * Duplicates::                  Dealing with duplicated mail.
666 * Not Reading Mail::            Using mail back ends for reading other files.
667 * Choosing a Mail Back End::    Gnus can read a variety of mail formats.
668
669 Mail Sources
670
671 * Mail Source Specifiers::      How to specify what a mail source is.
672 * Mail Source Customization::   Some variables that influence things.
673 * Fetching Mail::               Using the mail source specifiers.
674
675 Choosing a Mail Back End
676
677 * Unix Mail Box::               Using the (quite) standard Un*x mbox.
678 * Rmail Babyl::                 Emacs programs use the Rmail Babyl format.
679 * Mail Spool::                  Store your mail in a private spool?
680 * MH Spool::                    An mhspool-like back end.
681 * Maildir::                     Another one-file-per-message format.
682 * Mail Folders::                Having one file for each group.
683 * Comparing Mail Back Ends::    An in-depth looks at pros and cons.
684
685 Browsing the Web
686
687 * Archiving Mail::
688 * Web Searches::                Creating groups from articles that match a string.
689 * Slashdot::                    Reading the Slashdot comments.
690 * Ultimate::                    The Ultimate Bulletin Board systems.
691 * Web Archive::                 Reading mailing list archived on web.
692 * RSS::                         Reading RDF site summary.
693 * Customizing W3::              Doing stuff to Emacs/W3 from Gnus.
694
695 @acronym{IMAP}
696
697 * Splitting in IMAP::           Splitting mail with nnimap.
698 * Expiring in IMAP::            Expiring mail with nnimap.
699 * Editing IMAP ACLs::           Limiting/enabling other users access to a mailbox.
700 * Expunging mailboxes::         Equivalent of a ``compress mailbox'' button.
701 * A note on namespaces::        How to (not) use @acronym{IMAP} namespace in Gnus.
702 * Debugging IMAP::              What to do when things don't work.
703
704 Other Sources
705
706 * Directory Groups::            You can read a directory as if it was a newsgroup.
707 * Anything Groups::             Dired?  Who needs dired?
708 * Document Groups::             Single files can be the basis of a group.
709 * SOUP::                        Reading @sc{soup} packets ``offline''.
710 * Mail-To-News Gateways::       Posting articles via mail-to-news gateways.
711
712 Document Groups
713
714 * Document Server Internals::   How to add your own document types.
715
716 SOUP
717
718 * SOUP Commands::               Commands for creating and sending @sc{soup} packets
719 * SOUP Groups::                 A back end for reading @sc{soup} packets.
720 * SOUP Replies::                How to enable @code{nnsoup} to take over mail and news.
721
722 Combined Groups
723
724 * Virtual Groups::              Combining articles from many groups.
725 * Kibozed Groups::              Looking through parts of the newsfeed for articles.
726
727 Email Based Diary
728
729 * The NNDiary Back End::        Basic setup and usage.
730 * The Gnus Diary Library::      Utility toolkit on top of nndiary.
731 * Sending or Not Sending::      A final note on sending diary messages.
732
733 The NNDiary Back End
734
735 * Diary Messages::              What makes a message valid for nndiary.
736 * Running NNDiary::             NNDiary has two modes of operation.
737 * Customizing NNDiary::         Bells and whistles.
738
739 The Gnus Diary Library
740
741 * Diary Summary Line Format::           A nicer summary buffer line format.
742 * Diary Articles Sorting::              A nicer way to sort messages.
743 * Diary Headers Generation::            Not doing it manually.
744 * Diary Group Parameters::              Not handling them manually.
745
746 Gnus Unplugged
747
748 * Agent Basics::                How it all is supposed to work.
749 * Agent Categories::            How to tell the Gnus Agent what to download.
750 * Agent Commands::              New commands for all the buffers.
751 * Agent Visuals::               Ways that the agent may effect your summary buffer.
752 * Agent as Cache::              The Agent is a big cache too.
753 * Agent Expiry::                How to make old articles go away.
754 * Agent Regeneration::          How to recover from lost connections and other accidents.
755 * Agent and flags::             How the Agent maintains flags.
756 * Agent and IMAP::              How to use the Agent with @acronym{IMAP}.
757 * Outgoing Messages::           What happens when you post/mail something?
758 * Agent Variables::             Customizing is fun.
759 * Example Setup::               An example @file{~/.gnus.el} file for offline people.
760 * Batching Agents::             How to fetch news from a @code{cron} job.
761 * Agent Caveats::               What you think it'll do and what it does.
762
763 Agent Categories
764
765 * Category Syntax::             What a category looks like.
766 * Category Buffer::             A buffer for maintaining categories.
767 * Category Variables::          Customize'r'Us.
768
769 Agent Commands
770
771 * Group Agent Commands::        Configure groups and fetch their contents.
772 * Summary Agent Commands::      Manually select then fetch specific articles.
773 * Server Agent Commands::       Select the servers that are supported by the agent.
774
775 Scoring
776
777 * Summary Score Commands::      Adding score entries for the current group.
778 * Group Score Commands::        General score commands.
779 * Score Variables::             Customize your scoring.  (My, what terminology).
780 * Score File Format::           What a score file may contain.
781 * Score File Editing::          You can edit score files by hand as well.
782 * Adaptive Scoring::            Big Sister Gnus knows what you read.
783 * Home Score File::             How to say where new score entries are to go.
784 * Followups To Yourself::       Having Gnus notice when people answer you.
785 * Scoring On Other Headers::    Scoring on non-standard headers.
786 * Scoring Tips::                How to score effectively.
787 * Reverse Scoring::             That problem child of old is not problem.
788 * Global Score Files::          Earth-spanning, ear-splitting score files.
789 * Kill Files::                  They are still here, but they can be ignored.
790 * Converting Kill Files::       Translating kill files to score files.
791 * Advanced Scoring::            Using logical expressions to build score rules.
792 * Score Decays::                It can be useful to let scores wither away.
793
794 Advanced Scoring
795
796 * Advanced Scoring Syntax::     A definition.
797 * Advanced Scoring Examples::   What they look like.
798 * Advanced Scoring Tips::       Getting the most out of it.
799
800 Various
801
802 * Process/Prefix::              A convention used by many treatment commands.
803 * Interactive::                 Making Gnus ask you many questions.
804 * Symbolic Prefixes::           How to supply some Gnus functions with options.
805 * Formatting Variables::        You can specify what buffers should look like.
806 * Window Layout::               Configuring the Gnus buffer windows.
807 * Faces and Fonts::             How to change how faces look.
808 * Compilation::                 How to speed Gnus up.
809 * Mode Lines::                  Displaying information in the mode lines.
810 * Highlighting and Menus::      Making buffers look all nice and cozy.
811 * Buttons::                     Get tendinitis in ten easy steps!
812 * Daemons::                     Gnus can do things behind your back.
813 * NoCeM::                       How to avoid spam and other fatty foods.
814 * Undo::                        Some actions can be undone.
815 * Predicate Specifiers::        Specifying predicates.
816 * Moderation::                  What to do if you're a moderator.
817 * Image Enhancements::          Modern versions of Emacs/XEmacs can display images.
818 * Fuzzy Matching::              What's the big fuzz?
819 * Thwarting Email Spam::        Simple ways to avoid unsolicited commercial email.
820 * Spam Package::                A package for filtering and processing spam.
821 * Other modes::                 Interaction with other modes.
822 * Various Various::             Things that are really various.
823
824 Formatting Variables
825
826 * Formatting Basics::           A formatting variable is basically a format string.
827 * Mode Line Formatting::        Some rules about mode line formatting variables.
828 * Advanced Formatting::         Modifying output in various ways.
829 * User-Defined Specs::          Having Gnus call your own functions.
830 * Formatting Fonts::            Making the formatting look colorful and nice.
831 * Positioning Point::           Moving point to a position after an operation.
832 * Tabulation::                  Tabulating your output.
833 * Wide Characters::             Dealing with wide characters.
834
835 Image Enhancements
836
837 * X-Face::                      Display a funky, teensy black-and-white image.
838 * Face::                        Display a funkier, teensier colored image.
839 * Smileys::                     Show all those happy faces the way they were
840                                   meant to be shown.
841 * Picons::                      How to display pictures of what you're reading.
842 * XVarious::                    Other XEmacsy Gnusey variables.
843
844 Thwarting Email Spam
845
846 * The problem of spam::         Some background, and some solutions
847 * Anti-Spam Basics::            Simple steps to reduce the amount of spam.
848 * SpamAssassin::                How to use external anti-spam tools.
849 * Hashcash::                    Reduce spam by burning CPU time.
850
851 Spam Package
852
853 * Spam Package Introduction::
854 * Filtering Incoming Mail::
855 * Detecting Spam in Groups::
856 * Spam and Ham Processors::
857 * Spam Package Configuration Examples::
858 * Spam Back Ends::
859 * Extending the Spam package::
860 * Spam Statistics Package::
861
862 Spam Statistics Package
863
864 * Creating a spam-stat dictionary::
865 * Splitting mail using spam-stat::
866 * Low-level interface to the spam-stat dictionary::
867
868 Appendices
869
870 * XEmacs::                      Requirements for installing under XEmacs.
871 * History::                     How Gnus got where it is today.
872 * On Writing Manuals::          Why this is not a beginner's guide.
873 * Terminology::                 We use really difficult, like, words here.
874 * Customization::               Tailoring Gnus to your needs.
875 * Troubleshooting::             What you might try if things do not work.
876 * Gnus Reference Guide::        Rilly, rilly technical stuff.
877 * Emacs for Heathens::          A short introduction to Emacsian terms.
878 * Frequently Asked Questions::  The Gnus FAQ
879
880 History
881
882 * Gnus Versions::               What Gnus versions have been released.
883 * Other Gnus Versions::         Other Gnus versions that also have been released.
884 * Why?::                        What's the point of Gnus?
885 * Compatibility::               Just how compatible is Gnus with @sc{gnus}?
886 * Conformity::                  Gnus tries to conform to all standards.
887 * Emacsen::                     Gnus can be run on a few modern Emacsen.
888 * Gnus Development::            How Gnus is developed.
889 * Contributors::                Oodles of people.
890 * New Features::                Pointers to some of the new stuff in Gnus.
891
892 New Features
893
894 * ding Gnus::                   New things in Gnus 5.0/5.1, the first new Gnus.
895 * September Gnus::              The Thing Formally Known As Gnus 5.2/5.3.
896 * Red Gnus::                    Third time best---Gnus 5.4/5.5.
897 * Quassia Gnus::                Two times two is four, or Gnus 5.6/5.7.
898 * Pterodactyl Gnus::            Pentad also starts with P, AKA Gnus 5.8/5.9.
899 * Oort Gnus::                   It's big.  It's far out.  Gnus 5.10/5.11.
900 * No Gnus::                     Very punny.
901
902 Customization
903
904 * Slow/Expensive Connection::   You run a local Emacs and get the news elsewhere.
905 * Slow Terminal Connection::    You run a remote Emacs.
906 * Little Disk Space::           You feel that having large setup files is icky.
907 * Slow Machine::                You feel like buying a faster machine.
908
909 Gnus Reference Guide
910
911 * Gnus Utility Functions::      Common functions and variable to use.
912 * Back End Interface::          How Gnus communicates with the servers.
913 * Score File Syntax::           A BNF definition of the score file standard.
914 * Headers::                     How Gnus stores headers internally.
915 * Ranges::                      A handy format for storing mucho numbers.
916 * Group Info::                  The group info format.
917 * Extended Interactive::        Symbolic prefixes and stuff.
918 * Emacs/XEmacs Code::           Gnus can be run under all modern Emacsen.
919 * Various File Formats::        Formats of files that Gnus use.
920
921 Back End Interface
922
923 * Required Back End Functions::  Functions that must be implemented.
924 * Optional Back End Functions::  Functions that need not be implemented.
925 * Error Messaging::             How to get messages and report errors.
926 * Writing New Back Ends::       Extending old back ends.
927 * Hooking New Back Ends Into Gnus::  What has to be done on the Gnus end.
928 * Mail-like Back Ends::         Some tips on mail back ends.
929
930 Various File Formats
931
932 * Active File Format::          Information on articles and groups available.
933 * Newsgroups File Format::      Group descriptions.
934
935 Emacs for Heathens
936
937 * Keystrokes::                  Entering text and executing commands.
938 * Emacs Lisp::                  The built-in Emacs programming language.
939
940 @end detailmenu
941 @end menu
942
943 @node Starting Up
944 @chapter Starting Gnus
945 @cindex starting up
946
947 If you are haven't used Emacs much before using Gnus, read @ref{Emacs
948 for Heathens} first.
949
950 @kindex M-x gnus
951 @findex gnus
952 If your system administrator has set things up properly, starting Gnus
953 and reading news is extremely easy---you just type @kbd{M-x gnus} in
954 your Emacs.  If not, you should customize the variable
955 @code{gnus-select-method} as described in @ref{Finding the News}.  For a
956 minimal setup for posting should also customize the variables
957 @code{user-full-name} and @code{user-mail-address}.
958
959 @findex gnus-other-frame
960 @kindex M-x gnus-other-frame
961 If you want to start Gnus in a different frame, you can use the command
962 @kbd{M-x gnus-other-frame} instead.
963
964 If things do not go smoothly at startup, you have to twiddle some
965 variables in your @file{~/.gnus.el} file.  This file is similar to
966 @file{~/.emacs}, but is read when Gnus starts.
967
968 If you puzzle at any terms used in this manual, please refer to the
969 terminology section (@pxref{Terminology}).
970
971 @menu
972 * Finding the News::      Choosing a method for getting news.
973 * The First Time::        What does Gnus do the first time you start it?
974 * The Server is Down::    How can I read my mail then?
975 * Slave Gnusae::          You can have more than one Gnus active at a time.
976 * New Groups::            What is Gnus supposed to do with new groups?
977 * Changing Servers::      You may want to move from one server to another.
978 * Startup Files::         Those pesky startup files---@file{.newsrc}.
979 * Auto Save::             Recovering from a crash.
980 * The Active File::       Reading the active file over a slow line Takes Time.
981 * Startup Variables::     Other variables you might change.
982 @end menu
983
984
985 @node Finding the News
986 @section Finding the News
987 @cindex finding news
988
989 @vindex gnus-select-method
990 @c @head
991 The @code{gnus-select-method} variable says where Gnus should look for
992 news.  This variable should be a list where the first element says
993 @dfn{how} and the second element says @dfn{where}.  This method is your
994 native method.  All groups not fetched with this method are
995 foreign groups.
996
997 For instance, if the @samp{news.somewhere.edu} @acronym{NNTP} server is where
998 you want to get your daily dosage of news from, you'd say:
999
1000 @lisp
1001 (setq gnus-select-method '(nntp "news.somewhere.edu"))
1002 @end lisp
1003
1004 If you want to read directly from the local spool, say:
1005
1006 @lisp
1007 (setq gnus-select-method '(nnspool ""))
1008 @end lisp
1009
1010 If you can use a local spool, you probably should, as it will almost
1011 certainly be much faster.  But do not use the local spool if your
1012 server is running Leafnode (which is a simple, standalone private news
1013 server); in this case, use @code{(nntp "localhost")}.
1014
1015 @vindex gnus-nntpserver-file
1016 @cindex NNTPSERVER
1017 @cindex @acronym{NNTP} server
1018 If this variable is not set, Gnus will take a look at the
1019 @env{NNTPSERVER} environment variable.  If that variable isn't set,
1020 Gnus will see whether @code{gnus-nntpserver-file}
1021 (@file{/etc/nntpserver} by default) has any opinions on the matter.
1022 If that fails as well, Gnus will try to use the machine running Emacs
1023 as an @acronym{NNTP} server.  That's a long shot, though.
1024
1025 @vindex gnus-nntp-server
1026 If @code{gnus-nntp-server} is set, this variable will override
1027 @code{gnus-select-method}.  You should therefore set
1028 @code{gnus-nntp-server} to @code{nil}, which is what it is by default.
1029
1030 @vindex gnus-secondary-servers
1031 @vindex gnus-nntp-server
1032 You can also make Gnus prompt you interactively for the name of an
1033 @acronym{NNTP} server.  If you give a non-numerical prefix to @code{gnus}
1034 (i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
1035 in the @code{gnus-secondary-servers} list (if any).  You can also just
1036 type in the name of any server you feel like visiting.  (Note that this
1037 will set @code{gnus-nntp-server}, which means that if you then @kbd{M-x
1038 gnus} later in the same Emacs session, Gnus will contact the same
1039 server.)
1040
1041 @findex gnus-group-browse-foreign-server
1042 @kindex B (Group)
1043 However, if you use one @acronym{NNTP} server regularly and are just
1044 interested in a couple of groups from a different server, you would be
1045 better served by using the @kbd{B} command in the group buffer.  It will
1046 let you have a look at what groups are available, and you can subscribe
1047 to any of the groups you want to.  This also makes @file{.newsrc}
1048 maintenance much tidier.  @xref{Foreign Groups}.
1049
1050 @vindex gnus-secondary-select-methods
1051 @c @head
1052 A slightly different approach to foreign groups is to set the
1053 @code{gnus-secondary-select-methods} variable.  The select methods
1054 listed in this variable are in many ways just as native as the
1055 @code{gnus-select-method} server.  They will also be queried for active
1056 files during startup (if that's required), and new newsgroups that
1057 appear on these servers will be subscribed (or not) just as native
1058 groups are.
1059
1060 For instance, if you use the @code{nnmbox} back end to read your mail,
1061 you would typically set this variable to
1062
1063 @lisp
1064 (setq gnus-secondary-select-methods '((nnmbox "")))
1065 @end lisp
1066
1067 Note: the @acronym{NNTP} back end stores marks in marks files
1068 (@pxref{NNTP marks}).  This feature makes it easy to share marks between
1069 several Gnus installations, but may slow down things a bit when fetching
1070 new articles.  @xref{NNTP marks}, for more information.
1071
1072
1073 @node The First Time
1074 @section The First Time
1075 @cindex first time usage
1076
1077 If no startup files exist (@pxref{Startup Files}), Gnus will try to
1078 determine what groups should be subscribed by default.
1079
1080 @vindex gnus-default-subscribed-newsgroups
1081 If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
1082 will subscribe you to just those groups in that list, leaving the rest
1083 killed.  Your system administrator should have set this variable to
1084 something useful.
1085
1086 Since she hasn't, Gnus will just subscribe you to a few arbitrarily
1087 picked groups (i.e., @samp{*.newusers}).  (@dfn{Arbitrary} is defined
1088 here as @dfn{whatever Lars thinks you should read}.)
1089
1090 You'll also be subscribed to the Gnus documentation group, which should
1091 help you with most common problems.
1092
1093 If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
1094 use the normal functions for handling new groups, and not do anything
1095 special.
1096
1097
1098 @node The Server is Down
1099 @section The Server is Down
1100 @cindex server errors
1101
1102 If the default server is down, Gnus will understandably have some
1103 problems starting.  However, if you have some mail groups in addition to
1104 the news groups, you may want to start Gnus anyway.
1105
1106 Gnus, being the trusting sort of program, will ask whether to proceed
1107 without a native select method if that server can't be contacted.  This
1108 will happen whether the server doesn't actually exist (i.e., you have
1109 given the wrong address) or the server has just momentarily taken ill
1110 for some reason or other.  If you decide to continue and have no foreign
1111 groups, you'll find it difficult to actually do anything in the group
1112 buffer.  But, hey, that's your problem.  Blllrph!
1113
1114 @findex gnus-no-server
1115 @kindex M-x gnus-no-server
1116 @c @head
1117 If you know that the server is definitely down, or you just want to read
1118 your mail without bothering with the server at all, you can use the
1119 @code{gnus-no-server} command to start Gnus.  That might come in handy
1120 if you're in a hurry as well.  This command will not attempt to contact
1121 your primary server---instead, it will just activate all groups on level
1122 1 and 2.  (You should preferably keep no native groups on those two
1123 levels.) Also @pxref{Group Levels}.
1124
1125
1126 @node Slave Gnusae
1127 @section Slave Gnusae
1128 @cindex slave
1129
1130 You might want to run more than one Emacs with more than one Gnus at the
1131 same time.  If you are using different @file{.newsrc} files (e.g., if you
1132 are using the two different Gnusae to read from two different servers),
1133 that is no problem whatsoever.  You just do it.
1134
1135 The problem appears when you want to run two Gnusae that use the same
1136 @file{.newsrc} file.
1137
1138 To work around that problem some, we here at the Think-Tank at the Gnus
1139 Towers have come up with a new concept: @dfn{Masters} and
1140 @dfn{slaves}.  (We have applied for a patent on this concept, and have
1141 taken out a copyright on those words.  If you wish to use those words in
1142 conjunction with each other, you have to send $1 per usage instance to
1143 me.  Usage of the patent (@dfn{Master/Slave Relationships In Computer
1144 Applications}) will be much more expensive, of course.)
1145
1146 @findex gnus-slave
1147 Anyway, you start one Gnus up the normal way with @kbd{M-x gnus} (or
1148 however you do it).  Each subsequent slave Gnusae should be started with
1149 @kbd{M-x gnus-slave}.  These slaves won't save normal @file{.newsrc}
1150 files, but instead save @dfn{slave files} that contain information only
1151 on what groups have been read in the slave session.  When a master Gnus
1152 starts, it will read (and delete) these slave files, incorporating all
1153 information from them.  (The slave files will be read in the sequence
1154 they were created, so the latest changes will have precedence.)
1155
1156 Information from the slave files has, of course, precedence over the
1157 information in the normal (i.e., master) @file{.newsrc} file.
1158
1159 If the @file{.newsrc*} files have not been saved in the master when the
1160 slave starts, you may be prompted as to whether to read an auto-save
1161 file.  If you answer ``yes'', the unsaved changes to the master will be
1162 incorporated into the slave.  If you answer ``no'', the slave may see some
1163 messages as unread that have been read in the master.
1164
1165
1166
1167 @node New Groups
1168 @section New Groups
1169 @cindex new groups
1170 @cindex subscription
1171
1172 @vindex gnus-check-new-newsgroups
1173 If you are satisfied that you really never want to see any new groups,
1174 you can set @code{gnus-check-new-newsgroups} to @code{nil}.  This will
1175 also save you some time at startup.  Even if this variable is
1176 @code{nil}, you can always subscribe to the new groups just by pressing
1177 @kbd{U} in the group buffer (@pxref{Group Maintenance}).  This variable
1178 is @code{ask-server} by default.  If you set this variable to
1179 @code{always}, then Gnus will query the back ends for new groups even
1180 when you do the @kbd{g} command (@pxref{Scanning New Messages}).
1181
1182 @menu
1183 * Checking New Groups::         Determining what groups are new.
1184 * Subscription Methods::        What Gnus should do with new groups.
1185 * Filtering New Groups::        Making Gnus ignore certain new groups.
1186 @end menu
1187
1188
1189 @node Checking New Groups
1190 @subsection Checking New Groups
1191
1192 Gnus normally determines whether a group is new or not by comparing the
1193 list of groups from the active file(s) with the lists of subscribed and
1194 dead groups.  This isn't a particularly fast method.  If
1195 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
1196 server for new groups since the last time.  This is both faster and
1197 cheaper.  This also means that you can get rid of the list of killed
1198 groups altogether, so you may set @code{gnus-save-killed-list} to
1199 @code{nil}, which will save time both at startup, at exit, and all over.
1200 Saves disk space, too.  Why isn't this the default, then?
1201 Unfortunately, not all servers support this command.
1202
1203 I bet I know what you're thinking now: How do I find out whether my
1204 server supports @code{ask-server}?  No?  Good, because I don't have a
1205 fail-safe answer.  I would suggest just setting this variable to
1206 @code{ask-server} and see whether any new groups appear within the next
1207 few days.  If any do, then it works.  If none do, then it doesn't
1208 work.  I could write a function to make Gnus guess whether the server
1209 supports @code{ask-server}, but it would just be a guess.  So I won't.
1210 You could @code{telnet} to the server and say @code{HELP} and see
1211 whether it lists @samp{NEWGROUPS} among the commands it understands.  If
1212 it does, then it might work.  (But there are servers that lists
1213 @samp{NEWGROUPS} without supporting the function properly.)
1214
1215 This variable can also be a list of select methods.  If so, Gnus will
1216 issue an @code{ask-server} command to each of the select methods, and
1217 subscribe them (or not) using the normal methods.  This might be handy
1218 if you are monitoring a few servers for new groups.  A side effect is
1219 that startup will take much longer, so you can meditate while waiting.
1220 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
1221
1222
1223 @node Subscription Methods
1224 @subsection Subscription Methods
1225
1226 @vindex gnus-subscribe-newsgroup-method
1227 What Gnus does when it encounters a new group is determined by the
1228 @code{gnus-subscribe-newsgroup-method} variable.
1229
1230 This variable should contain a function.  This function will be called
1231 with the name of the new group as the only parameter.
1232
1233 Some handy pre-fab functions are:
1234
1235 @table @code
1236
1237 @item gnus-subscribe-zombies
1238 @vindex gnus-subscribe-zombies
1239 Make all new groups zombies.  This is the default.  You can browse the
1240 zombies later (with @kbd{A z}) and either kill them all off properly
1241 (with @kbd{S z}), or subscribe to them (with @kbd{u}).
1242
1243 @item gnus-subscribe-randomly
1244 @vindex gnus-subscribe-randomly
1245 Subscribe all new groups in arbitrary order.  This really means that all
1246 new groups will be added at ``the top'' of the group buffer.
1247
1248 @item gnus-subscribe-alphabetically
1249 @vindex gnus-subscribe-alphabetically
1250 Subscribe all new groups in alphabetical order.
1251
1252 @item gnus-subscribe-hierarchically
1253 @vindex gnus-subscribe-hierarchically
1254 Subscribe all new groups hierarchically.  The difference between this
1255 function and @code{gnus-subscribe-alphabetically} is slight.
1256 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
1257 alphabetical fashion, while this function will enter groups into its
1258 hierarchy.  So if you want to have the @samp{rec} hierarchy before the
1259 @samp{comp} hierarchy, this function will not mess that configuration
1260 up.  Or something like that.
1261
1262 @item gnus-subscribe-interactively
1263 @vindex gnus-subscribe-interactively
1264 Subscribe new groups interactively.  This means that Gnus will ask
1265 you about @strong{all} new groups.  The groups you choose to subscribe
1266 to will be subscribed hierarchically.
1267
1268 @item gnus-subscribe-killed
1269 @vindex gnus-subscribe-killed
1270 Kill all new groups.
1271
1272 @item gnus-subscribe-topics
1273 @vindex gnus-subscribe-topics
1274 Put the groups into the topic that has a matching @code{subscribe} topic
1275 parameter (@pxref{Topic Parameters}).  For instance, a @code{subscribe}
1276 topic parameter that looks like
1277
1278 @example
1279 "nnslashdot"
1280 @end example
1281
1282 will mean that all groups that match that regex will be subscribed under
1283 that topic.
1284
1285 If no topics match the groups, the groups will be subscribed in the
1286 top-level topic.
1287
1288 @end table
1289
1290 @vindex gnus-subscribe-hierarchical-interactive
1291 A closely related variable is
1292 @code{gnus-subscribe-hierarchical-interactive}.  (That's quite a
1293 mouthful.)  If this variable is non-@code{nil}, Gnus will ask you in a
1294 hierarchical fashion whether to subscribe to new groups or not.  Gnus
1295 will ask you for each sub-hierarchy whether you want to descend the
1296 hierarchy or not.
1297
1298 One common mistake is to set the variable a few paragraphs above
1299 (@code{gnus-subscribe-newsgroup-method}) to
1300 @code{gnus-subscribe-hierarchical-interactive}.  This is an error.  This
1301 will not work.  This is ga-ga.  So don't do it.
1302
1303
1304 @node Filtering New Groups
1305 @subsection Filtering New Groups
1306
1307 A nice and portable way to control which new newsgroups should be
1308 subscribed (or ignored) is to put an @dfn{options} line at the start of
1309 the @file{.newsrc} file.  Here's an example:
1310
1311 @example
1312 options -n !alt.all !rec.all sci.all
1313 @end example
1314
1315 @vindex gnus-subscribe-options-newsgroup-method
1316 This line obviously belongs to a serious-minded intellectual scientific
1317 person (or she may just be plain old boring), because it says that all
1318 groups that have names beginning with @samp{alt} and @samp{rec} should
1319 be ignored, and all groups with names beginning with @samp{sci} should
1320 be subscribed.  Gnus will not use the normal subscription method for
1321 subscribing these groups.
1322 @code{gnus-subscribe-options-newsgroup-method} is used instead.  This
1323 variable defaults to @code{gnus-subscribe-alphabetically}.
1324
1325 @vindex gnus-options-not-subscribe
1326 @vindex gnus-options-subscribe
1327 If you don't want to mess with your @file{.newsrc} file, you can just
1328 set the two variables @code{gnus-options-subscribe} and
1329 @code{gnus-options-not-subscribe}.  These two variables do exactly the
1330 same as the @file{.newsrc} @samp{options -n} trick.  Both are regexps,
1331 and if the new group matches the former, it will be unconditionally
1332 subscribed, and if it matches the latter, it will be ignored.
1333
1334 @vindex gnus-auto-subscribed-groups
1335 Yet another variable that meddles here is
1336 @code{gnus-auto-subscribed-groups}.  It works exactly like
1337 @code{gnus-options-subscribe}, and is therefore really superfluous,
1338 but I thought it would be nice to have two of these.  This variable is
1339 more meant for setting some ground rules, while the other variable is
1340 used more for user fiddling.  By default this variable makes all new
1341 groups that come from mail back ends (@code{nnml}, @code{nnbabyl},
1342 @code{nnfolder}, @code{nnmbox}, @code{nnmh}, and @code{nnmaildir})
1343 subscribed.  If you don't like that, just set this variable to
1344 @code{nil}.
1345
1346 New groups that match this regexp are subscribed using
1347 @code{gnus-subscribe-options-newsgroup-method}.
1348
1349
1350 @node Changing Servers
1351 @section Changing Servers
1352 @cindex changing servers
1353
1354 Sometimes it is necessary to move from one @acronym{NNTP} server to another.
1355 This happens very rarely, but perhaps you change jobs, or one server is
1356 very flaky and you want to use another.
1357
1358 Changing the server is pretty easy, right?  You just change
1359 @code{gnus-select-method} to point to the new server?
1360
1361 @emph{Wrong!}
1362
1363 Article numbers are not (in any way) kept synchronized between different
1364 @acronym{NNTP} servers, and the only way Gnus keeps track of what articles
1365 you have read is by keeping track of article numbers.  So when you
1366 change @code{gnus-select-method}, your @file{.newsrc} file becomes
1367 worthless.
1368
1369 Gnus provides a few functions to attempt to translate a @file{.newsrc}
1370 file from one server to another.  They all have one thing in
1371 common---they take a looong time to run.  You don't want to use these
1372 functions more than absolutely necessary.
1373
1374 @kindex M-x gnus-change-server
1375 @findex gnus-change-server
1376 If you have access to both servers, Gnus can request the headers for all
1377 the articles you have read and compare @code{Message-ID}s and map the
1378 article numbers of the read articles and article marks.  The @kbd{M-x
1379 gnus-change-server} command will do this for all your native groups.  It
1380 will prompt for the method you want to move to.
1381
1382 @kindex M-x gnus-group-move-group-to-server
1383 @findex gnus-group-move-group-to-server
1384 You can also move individual groups with the @kbd{M-x
1385 gnus-group-move-group-to-server} command.  This is useful if you want to
1386 move a (foreign) group from one server to another.
1387
1388 @kindex M-x gnus-group-clear-data-on-native-groups
1389 @findex gnus-group-clear-data-on-native-groups
1390 If you don't have access to both the old and new server, all your marks
1391 and read ranges have become worthless.  You can use the @kbd{M-x
1392 gnus-group-clear-data-on-native-groups} command to clear out all data
1393 that you have on your native groups.  Use with caution.
1394
1395 @kindex M-x gnus-group-clear-data
1396 @findex gnus-group-clear-data
1397 Clear the data from the current group only---nix out marks and the
1398 list of read articles (@code{gnus-group-clear-data}).
1399
1400 After changing servers, you @strong{must} move the cache hierarchy away,
1401 since the cached articles will have wrong article numbers, which will
1402 affect which articles Gnus thinks are read.
1403 @code{gnus-group-clear-data-on-native-groups} will ask you if you want
1404 to have it done automatically; for @code{gnus-group-clear-data}, you
1405 can use @kbd{M-x gnus-cache-move-cache} (but beware, it will move the
1406 cache for all groups).
1407
1408
1409 @node Startup Files
1410 @section Startup Files
1411 @cindex startup files
1412 @cindex .newsrc
1413 @cindex .newsrc.el
1414 @cindex .newsrc.eld
1415
1416 Most common Unix news readers use a shared startup file called
1417 @file{.newsrc}.  This file contains all the information about what
1418 groups are subscribed, and which articles in these groups have been
1419 read.
1420
1421 Things got a bit more complicated with @sc{gnus}.  In addition to
1422 keeping the @file{.newsrc} file updated, it also used a file called
1423 @file{.newsrc.el} for storing all the information that didn't fit into
1424 the @file{.newsrc} file.  (Actually, it also duplicated everything in
1425 the @file{.newsrc} file.)  @sc{gnus} would read whichever one of these
1426 files was the most recently saved, which enabled people to swap between
1427 @sc{gnus} and other newsreaders.
1428
1429 That was kinda silly, so Gnus went one better: In addition to the
1430 @file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
1431 @file{.newsrc.eld}.  It will read whichever of these files that are most
1432 recent, but it will never write a @file{.newsrc.el} file.  You should
1433 never delete the @file{.newsrc.eld} file---it contains much information
1434 not stored in the @file{.newsrc} file.
1435
1436 @vindex gnus-save-newsrc-file
1437 @vindex gnus-read-newsrc-file
1438 You can turn off writing the @file{.newsrc} file by setting
1439 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
1440 the file and save some space, as well as exiting from Gnus faster.
1441 However, this will make it impossible to use other newsreaders than
1442 Gnus.  But hey, who would want to, right?  Similarly, setting
1443 @code{gnus-read-newsrc-file} to @code{nil} makes Gnus ignore the
1444 @file{.newsrc} file and any @file{.newsrc-SERVER} files, which can be
1445 convenient if you use a different news reader occasionally, and you
1446 want to read a different subset of the available groups with that
1447 news reader.
1448
1449 @vindex gnus-save-killed-list
1450 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
1451 will not save the list of killed groups to the startup file.  This will
1452 save both time (when starting and quitting) and space (on disk).  It
1453 will also mean that Gnus has no record of what groups are new or old,
1454 so the automatic new groups subscription methods become meaningless.
1455 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
1456 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
1457 Groups}).  This variable can also be a regular expression.  If that's
1458 the case, remove all groups that do not match this regexp before
1459 saving.  This can be useful in certain obscure situations that involve
1460 several servers where not all servers support @code{ask-server}.
1461
1462 @vindex gnus-startup-file
1463 @vindex gnus-backup-startup-file
1464 @vindex version-control
1465 The @code{gnus-startup-file} variable says where the startup files are.
1466 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
1467 file being whatever that one is, with a @samp{.eld} appended.
1468 If you want version control for this file, set
1469 @code{gnus-backup-startup-file}.  It respects the same values as the
1470 @code{version-control} variable.
1471
1472 @vindex gnus-save-newsrc-hook
1473 @vindex gnus-save-quick-newsrc-hook
1474 @vindex gnus-save-standard-newsrc-hook
1475 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc
1476 files, while @code{gnus-save-quick-newsrc-hook} is called just before
1477 saving the @file{.newsrc.eld} file, and
1478 @code{gnus-save-standard-newsrc-hook} is called just before saving the
1479 @file{.newsrc} file.  The latter two are commonly used to turn version
1480 control on or off.  Version control is on by default when saving the
1481 startup files.  If you want to turn backup creation off, say something like:
1482
1483 @lisp
1484 (defun turn-off-backup ()
1485   (set (make-local-variable 'backup-inhibited) t))
1486
1487 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
1488 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
1489 @end lisp
1490
1491 @vindex gnus-init-file
1492 @vindex gnus-site-init-file
1493 When Gnus starts, it will read the @code{gnus-site-init-file}
1494 (@file{.../site-lisp/gnus-init} by default) and @code{gnus-init-file}
1495 (@file{~/.gnus} by default) files.  These are normal Emacs Lisp files
1496 and can be used to avoid cluttering your @file{~/.emacs} and
1497 @file{site-init} files with Gnus stuff.  Gnus will also check for files
1498 with the same names as these, but with @file{.elc} and @file{.el}
1499 suffixes.  In other words, if you have set @code{gnus-init-file} to
1500 @file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
1501 and finally @file{~/.gnus} (in this order).  If Emacs was invoked with
1502 the @option{-q} or @option{--no-init-file} options (@pxref{Initial
1503 Options, ,Initial Options, emacs, The Emacs Manual}), Gnus doesn't read
1504 @code{gnus-init-file}.
1505
1506
1507 @node Auto Save
1508 @section Auto Save
1509 @cindex dribble file
1510 @cindex auto-save
1511
1512 Whenever you do something that changes the Gnus data (reading articles,
1513 catching up, killing/subscribing groups), the change is added to a
1514 special @dfn{dribble buffer}.  This buffer is auto-saved the normal
1515 Emacs way.  If your Emacs should crash before you have saved the
1516 @file{.newsrc} files, all changes you have made can be recovered from
1517 this file.
1518
1519 If Gnus detects this file at startup, it will ask the user whether to
1520 read it.  The auto save file is deleted whenever the real startup file is
1521 saved.
1522
1523 @vindex gnus-use-dribble-file
1524 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
1525 maintain a dribble buffer.  The default is @code{t}.
1526
1527 @vindex gnus-dribble-directory
1528 Gnus will put the dribble file(s) in @code{gnus-dribble-directory}.  If
1529 this variable is @code{nil}, which it is by default, Gnus will dribble
1530 into the directory where the @file{.newsrc} file is located.  (This is
1531 normally the user's home directory.)  The dribble file will get the same
1532 file permissions as the @file{.newsrc} file.
1533
1534 @vindex gnus-always-read-dribble-file
1535 If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will
1536 read the dribble file on startup without querying the user.
1537
1538
1539 @node The Active File
1540 @section The Active File
1541 @cindex active file
1542 @cindex ignored groups
1543
1544 When Gnus starts, or indeed whenever it tries to determine whether new
1545 articles have arrived, it reads the active file.  This is a very large
1546 file that lists all the active groups and articles on the server.
1547
1548 @vindex gnus-ignored-newsgroups
1549 Before examining the active file, Gnus deletes all lines that match the
1550 regexp @code{gnus-ignored-newsgroups}.  This is done primarily to reject
1551 any groups with bogus names, but you can use this variable to make Gnus
1552 ignore hierarchies you aren't ever interested in.  However, this is not
1553 recommended.  In fact, it's highly discouraged.  Instead, @pxref{New
1554 Groups} for an overview of other variables that can be used instead.
1555
1556 @c This variable is
1557 @c @code{nil} by default, and will slow down active file handling somewhat
1558 @c if you set it to anything else.
1559
1560 @vindex gnus-read-active-file
1561 @c @head
1562 The active file can be rather Huge, so if you have a slow network, you
1563 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
1564 reading the active file.  This variable is @code{some} by default.
1565
1566 Gnus will try to make do by getting information just on the groups that
1567 you actually subscribe to.
1568
1569 Note that if you subscribe to lots and lots of groups, setting this
1570 variable to @code{nil} will probably make Gnus slower, not faster.  At
1571 present, having this variable @code{nil} will slow Gnus down
1572 considerably, unless you read news over a 2400 baud modem.
1573
1574 This variable can also have the value @code{some}.  Gnus will then
1575 attempt to read active info only on the subscribed groups.  On some
1576 servers this is quite fast (on sparkling, brand new INN servers that
1577 support the @code{LIST ACTIVE group} command), on others this isn't fast
1578 at all.  In any case, @code{some} should be faster than @code{nil}, and
1579 is certainly faster than @code{t} over slow lines.
1580
1581 Some news servers (old versions of Leafnode and old versions of INN, for
1582 instance) do not support the @code{LIST ACTIVE group}.  For these
1583 servers, @code{nil} is probably the most efficient value for this
1584 variable.
1585
1586 If this variable is @code{nil}, Gnus will ask for group info in total
1587 lock-step, which isn't very fast.  If it is @code{some} and you use an
1588 @acronym{NNTP} server, Gnus will pump out commands as fast as it can, and
1589 read all the replies in one swoop.  This will normally result in better
1590 performance, but if the server does not support the aforementioned
1591 @code{LIST ACTIVE group} command, this isn't very nice to the server.
1592
1593 If you think that starting up Gnus takes too long, try all the three
1594 different values for this variable and see what works best for you.
1595
1596 In any case, if you use @code{some} or @code{nil}, you should definitely
1597 kill all groups that you aren't interested in to speed things up.
1598
1599 Note that this variable also affects active file retrieval from
1600 secondary select methods.
1601
1602
1603 @node Startup Variables
1604 @section Startup Variables
1605
1606 @table @code
1607
1608 @item gnus-load-hook
1609 @vindex gnus-load-hook
1610 A hook run while Gnus is being loaded.  Note that this hook will
1611 normally be run just once in each Emacs session, no matter how many
1612 times you start Gnus.
1613
1614 @item gnus-before-startup-hook
1615 @vindex gnus-before-startup-hook
1616 A hook run after starting up Gnus successfully.
1617
1618 @item gnus-startup-hook
1619 @vindex gnus-startup-hook
1620 A hook run as the very last thing after starting up Gnus
1621
1622 @item gnus-started-hook
1623 @vindex gnus-started-hook
1624 A hook that is run as the very last thing after starting up Gnus
1625 successfully.
1626
1627 @item gnus-setup-news-hook
1628 @vindex gnus-setup-news-hook
1629 A hook that is run after reading the @file{.newsrc} file(s), but before
1630 generating the group buffer.
1631
1632 @item gnus-check-bogus-newsgroups
1633 @vindex gnus-check-bogus-newsgroups
1634 If non-@code{nil}, Gnus will check for and delete all bogus groups at
1635 startup.  A @dfn{bogus group} is a group that you have in your
1636 @file{.newsrc} file, but doesn't exist on the news server.  Checking for
1637 bogus groups can take quite a while, so to save time and resources it's
1638 best to leave this option off, and do the checking for bogus groups once
1639 in a while from the group buffer instead (@pxref{Group Maintenance}).
1640
1641 @item gnus-inhibit-startup-message
1642 @vindex gnus-inhibit-startup-message
1643 If non-@code{nil}, the startup message won't be displayed.  That way,
1644 your boss might not notice as easily that you are reading news instead
1645 of doing your job.  Note that this variable is used before
1646 @file{~/.gnus.el} is loaded, so it should be set in @file{.emacs} instead.
1647
1648 @item gnus-no-groups-message
1649 @vindex gnus-no-groups-message
1650 Message displayed by Gnus when no groups are available.
1651
1652 @item gnus-play-startup-jingle
1653 @vindex gnus-play-startup-jingle
1654 If non-@code{nil}, play the Gnus jingle at startup.
1655
1656 @item gnus-startup-jingle
1657 @vindex gnus-startup-jingle
1658 Jingle to be played if the above variable is non-@code{nil}.  The
1659 default is @samp{Tuxedomoon.Jingle4.au}.
1660
1661 @end table
1662
1663
1664 @node Group Buffer
1665 @chapter Group Buffer
1666 @cindex group buffer
1667
1668 @c Alex Schroeder suggests to rearrange this as follows:
1669 @c
1670 @c <kensanata> ok, just save it for reference.  I'll go to bed in a minute.
1671 @c   1. Selecting a Group, 2. (new) Finding a Group, 3. Group Levels,
1672 @c   4. Subscription Commands, 5. Group Maneuvering, 6. Group Data,
1673 @c   7. Group Score, 8. Group Buffer Format
1674 @c <kensanata> Group Levels should have more information on levels 5 to 9.  I
1675 @c   suggest to split the 4th paragraph ("Gnus considers groups...") as follows:
1676 @c <kensanata> First, "Gnus considers groups... (default 9)."
1677 @c <kensanata> New, a table summarizing what levels 1 to 9 mean.
1678 @c <kensanata> Third, "Gnus treats subscribed ... reasons of efficiency"
1679 @c <kensanata> Then expand the next paragraph or add some more to it.
1680 @c    This short one sentence explains levels 1 and 2, therefore I understand
1681 @c    that I should keep important news at 3 and boring news at 4.
1682 @c    Say so!  Then go on to explain why I should bother with levels 6 to 9.
1683 @c    Maybe keep those that you don't want to read temporarily at 6,
1684 @c    those that you never want to read at 8, those that offend your
1685 @c    human rights at 9...
1686
1687
1688 The @dfn{group buffer} lists all (or parts) of the available groups.  It
1689 is the first buffer shown when Gnus starts, and will never be killed as
1690 long as Gnus is active.
1691
1692 @iftex
1693 @iflatex
1694 \gnusfigure{The Group Buffer}{320}{
1695 \put(75,50){\epsfig{figure=ps/group,height=9cm}}
1696 \put(120,37){\makebox(0,0)[t]{Buffer name}}
1697 \put(120,38){\vector(1,2){10}}
1698 \put(40,60){\makebox(0,0)[r]{Mode line}}
1699 \put(40,58){\vector(1,0){30}}
1700 \put(200,28){\makebox(0,0)[t]{Native select method}}
1701 \put(200,26){\vector(-1,2){15}}
1702 }
1703 @end iflatex
1704 @end iftex
1705
1706 @menu
1707 * Group Buffer Format::         Information listed and how you can change it.
1708 * Group Maneuvering::           Commands for moving in the group buffer.
1709 * Selecting a Group::           Actually reading news.
1710 * Subscription Commands::       Unsubscribing, killing, subscribing.
1711 * Group Data::                  Changing the info for a group.
1712 * Group Levels::                Levels? What are those, then?
1713 * Group Score::                 A mechanism for finding out what groups you like.
1714 * Marking Groups::              You can mark groups for later processing.
1715 * Foreign Groups::              Creating and editing groups.
1716 * Group Parameters::            Each group may have different parameters set.
1717 * Listing Groups::              Gnus can list various subsets of the groups.
1718 * Sorting Groups::              Re-arrange the group order.
1719 * Group Maintenance::           Maintaining a tidy @file{.newsrc} file.
1720 * Browse Foreign Server::       You can browse a server.  See what it has to offer.
1721 * Exiting Gnus::                Stop reading news and get some work done.
1722 * Group Topics::                A folding group mode divided into topics.
1723 * Misc Group Stuff::            Other stuff that you can to do.
1724 @end menu
1725
1726
1727 @node Group Buffer Format
1728 @section Group Buffer Format
1729
1730 @menu
1731 * Group Line Specification::    Deciding how the group buffer is to look.
1732 * Group Mode Line Specification::  The group buffer mode line.
1733 * Group Highlighting::          Having nice colors in the group buffer.
1734 @end menu
1735
1736 You can customize the Group Mode tool bar, see @kbd{M-x
1737 customize-apropos RET gnus-group-tool-bar}.  This feature is only
1738 available in Emacs.
1739
1740 The tool bar icons are now (de)activated correctly depending on the
1741 cursor position.  Therefore, moving around in the Group Buffer is
1742 slower.  You can disable this via the variable
1743 @code{gnus-group-update-tool-bar}.  Its default value depends on your
1744 Emacs version.
1745
1746 @node Group Line Specification
1747 @subsection Group Line Specification
1748 @cindex group buffer format
1749
1750 The default format of the group buffer is nice and dull, but you can
1751 make it as exciting and ugly as you feel like.
1752
1753 Here's a couple of example group lines:
1754
1755 @example
1756      25: news.announce.newusers
1757  *    0: alt.fan.andrea-dworkin
1758 @end example
1759
1760 Quite simple, huh?
1761
1762 You can see that there are 25 unread articles in
1763 @samp{news.announce.newusers}.  There are no unread articles, but some
1764 ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
1765 asterisk at the beginning of the line?).
1766
1767 @vindex gnus-group-line-format
1768 You can change that format to whatever you want by fiddling with the
1769 @code{gnus-group-line-format} variable.  This variable works along the
1770 lines of a @code{format} specification, which is pretty much the same as
1771 a @code{printf} specifications, for those of you who use (feh!) C.
1772 @xref{Formatting Variables}.
1773
1774 @samp{%M%S%5y:%B%(%g%)\n} is the value that produced those lines above.
1775
1776 There should always be a colon on the line; the cursor always moves to
1777 the colon after performing an operation.  @xref{Positioning
1778 Point}.  Nothing else is required---not even the group name.  All
1779 displayed text is just window dressing, and is never examined by Gnus.
1780 Gnus stores all real information it needs using text properties.
1781
1782 (Note that if you make a really strange, wonderful, spreadsheet-like
1783 layout, everybody will believe you are hard at work with the accounting
1784 instead of wasting time reading news.)
1785
1786 Here's a list of all available format characters:
1787
1788 @table @samp
1789
1790 @item M
1791 An asterisk if the group only has marked articles.
1792
1793 @item S
1794 Whether the group is subscribed.
1795
1796 @item L
1797 Level of subscribedness.
1798
1799 @item N
1800 Number of unread articles.
1801
1802 @item I
1803 Number of dormant articles.
1804
1805 @item T
1806 Number of ticked articles.
1807
1808 @item R
1809 Number of read articles.
1810
1811 @item U
1812 Number of unseen articles.
1813
1814 @item t
1815 Estimated total number of articles.  (This is really @var{max-number}
1816 minus @var{min-number} plus 1.)
1817
1818 Gnus uses this estimation because the @acronym{NNTP} protocol provides
1819 efficient access to @var{max-number} and @var{min-number} but getting
1820 the true unread message count is not possible efficiently.  For
1821 hysterical raisins, even the mail back ends, where the true number of
1822 unread messages might be available efficiently, use the same limited
1823 interface.  To remove this restriction from Gnus means that the back
1824 end interface has to be changed, which is not an easy job.
1825
1826 The nnml backend @pxref{Mail Spool} has a feature called ``group
1827 compaction'' which circumvents this deficiency: the idea is to
1828 renumber all articles from 1, removing all gaps between numbers, hence
1829 getting a correct total count.  Other backends may support this in the
1830 future.  In order to keep your total article count relatively up to
1831 date, you might want to compact your groups (or even directly your
1832 server) from time to time. @xref{Misc Group Stuff}, @xref{Server Commands}.
1833
1834 @item y
1835 Number of unread, unticked, non-dormant articles.
1836
1837 @item i
1838 Number of ticked and dormant articles.
1839
1840 @item g
1841 Full group name.
1842
1843 @item G
1844 Group name.
1845
1846 @item C
1847 Group comment (@pxref{Group Parameters}) or group name if there is no
1848 comment element in the group parameters.
1849
1850 @item D
1851 Newsgroup description.  You need to read the group descriptions
1852 before these will appear, and to do that, you either have to set
1853 @code{gnus-read-active-file} or use the group buffer @kbd{M-d}
1854 command.
1855
1856 @item o
1857 @samp{m} if moderated.
1858
1859 @item O
1860 @samp{(m)} if moderated.
1861
1862 @item s
1863 Select method.
1864
1865 @item B
1866 If the summary buffer for the group is open or not.
1867
1868 @item n
1869 Select from where.
1870
1871 @item z
1872 A string that looks like @samp{<%s:%n>} if a foreign select method is
1873 used.
1874
1875 @item P
1876 Indentation based on the level of the topic (@pxref{Group Topics}).
1877
1878 @item c
1879 @vindex gnus-group-uncollapsed-levels
1880 Short (collapsed) group name.  The @code{gnus-group-uncollapsed-levels}
1881 variable says how many levels to leave at the end of the group name.
1882 The default is 1---this will mean that group names like
1883 @samp{gnu.emacs.gnus} will be shortened to @samp{g.e.gnus}.
1884
1885 @item m
1886 @vindex gnus-new-mail-mark
1887 @cindex %
1888 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1889 the group lately.
1890
1891 @item p
1892 @samp{#} (@code{gnus-process-mark}) if the group is process marked.
1893
1894 @item d
1895 A string that says when you last read the group (@pxref{Group
1896 Timestamp}).
1897
1898 @item F
1899 The disk space used by the articles fetched by both the cache and
1900 agent.  The value is automatically scaled to bytes(B), kilobytes(K),
1901 megabytes(M), or gigabytes(G) to minimize the column width.  A format
1902 of %7F is sufficient for a fixed-width column.
1903
1904 @item u
1905 User defined specifier.  The next character in the format string should
1906 be a letter.  Gnus will call the function
1907 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
1908 following @samp{%u}.  The function will be passed a single dummy
1909 parameter as argument.  The function should return a string, which will
1910 be inserted into the buffer just like information from any other
1911 specifier.
1912 @end table
1913
1914 @cindex *
1915 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
1916 if no info is available---for instance, if it is a non-activated foreign
1917 group, or a bogus native group.
1918
1919
1920 @node Group Mode Line Specification
1921 @subsection Group Mode Line Specification
1922 @cindex group mode line
1923
1924 @vindex gnus-group-mode-line-format
1925 The mode line can be changed by setting
1926 @code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}).  It
1927 doesn't understand that many format specifiers:
1928
1929 @table @samp
1930 @item S
1931 The native news server.
1932 @item M
1933 The native select method.
1934 @end table
1935
1936
1937 @node Group Highlighting
1938 @subsection Group Highlighting
1939 @cindex highlighting
1940 @cindex group highlighting
1941
1942 @vindex gnus-group-highlight
1943 Highlighting in the group buffer is controlled by the
1944 @code{gnus-group-highlight} variable.  This is an alist with elements
1945 that look like @code{(@var{form} . @var{face})}.  If @var{form} evaluates to
1946 something non-@code{nil}, the @var{face} will be used on the line.
1947
1948 Here's an example value for this variable that might look nice if the
1949 background is dark:
1950
1951 @lisp
1952 (cond (window-system
1953        (setq custom-background-mode 'light)
1954        (defface my-group-face-1
1955          '((t (:foreground "Red" :bold t))) "First group face")
1956        (defface my-group-face-2
1957          '((t (:foreground "DarkSeaGreen4" :bold t)))
1958          "Second group face")
1959        (defface my-group-face-3
1960          '((t (:foreground "Green4" :bold t))) "Third group face")
1961        (defface my-group-face-4
1962          '((t (:foreground "SteelBlue" :bold t))) "Fourth group face")
1963        (defface my-group-face-5
1964          '((t (:foreground "Blue" :bold t))) "Fifth group face")))
1965
1966 (setq gnus-group-highlight
1967       '(((> unread 200) . my-group-face-1)
1968         ((and (< level 3) (zerop unread)) . my-group-face-2)
1969         ((< level 3) . my-group-face-3)
1970         ((zerop unread) . my-group-face-4)
1971         (t . my-group-face-5)))
1972 @end lisp
1973
1974 Also @pxref{Faces and Fonts}.
1975
1976 Variables that are dynamically bound when the forms are evaluated
1977 include:
1978
1979 @table @code
1980 @item group
1981 The group name.
1982 @item unread
1983 The number of unread articles in the group.
1984 @item method
1985 The select method.
1986 @item mailp
1987 Whether the group is a mail group.
1988 @item level
1989 The level of the group.
1990 @item score
1991 The score of the group.
1992 @item ticked
1993 The number of ticked articles in the group.
1994 @item total
1995 The total number of articles in the group.  Or rather,
1996 @var{max-number} minus @var{min-number} plus one.
1997 @item topic
1998 When using the topic minor mode, this variable is bound to the current
1999 topic being inserted.
2000 @end table
2001
2002 When the forms are @code{eval}ed, point is at the beginning of the line
2003 of the group in question, so you can use many of the normal Gnus
2004 functions for snarfing info on the group.
2005
2006 @vindex gnus-group-update-hook
2007 @findex gnus-group-highlight-line
2008 @code{gnus-group-update-hook} is called when a group line is changed.
2009 It will not be called when @code{gnus-visual} is @code{nil}.  This hook
2010 calls @code{gnus-group-highlight-line} by default.
2011
2012
2013 @node Group Maneuvering
2014 @section Group Maneuvering
2015 @cindex group movement
2016
2017 All movement commands understand the numeric prefix and will behave as
2018 expected, hopefully.
2019
2020 @table @kbd
2021
2022 @item n
2023 @kindex n (Group)
2024 @findex gnus-group-next-unread-group
2025 Go to the next group that has unread articles
2026 (@code{gnus-group-next-unread-group}).
2027
2028 @item p
2029 @itemx DEL
2030 @kindex DEL (Group)
2031 @kindex p (Group)
2032 @findex gnus-group-prev-unread-group
2033 Go to the previous group that has unread articles
2034 (@code{gnus-group-prev-unread-group}).
2035
2036 @item N
2037 @kindex N (Group)
2038 @findex gnus-group-next-group
2039 Go to the next group (@code{gnus-group-next-group}).
2040
2041 @item P
2042 @kindex P (Group)
2043 @findex gnus-group-prev-group
2044 Go to the previous group (@code{gnus-group-prev-group}).
2045
2046 @item M-n
2047 @kindex M-n (Group)
2048 @findex gnus-group-next-unread-group-same-level
2049 Go to the next unread group on the same (or lower) level
2050 (@code{gnus-group-next-unread-group-same-level}).
2051
2052 @item M-p
2053 @kindex M-p (Group)
2054 @findex gnus-group-prev-unread-group-same-level
2055 Go to the previous unread group on the same (or lower) level
2056 (@code{gnus-group-prev-unread-group-same-level}).
2057 @end table
2058
2059 Three commands for jumping to groups:
2060
2061 @table @kbd
2062
2063 @item j
2064 @kindex j (Group)
2065 @findex gnus-group-jump-to-group
2066 Jump to a group (and make it visible if it isn't already)
2067 (@code{gnus-group-jump-to-group}).  Killed groups can be jumped to, just
2068 like living groups.
2069
2070 @item ,
2071 @kindex , (Group)
2072 @findex gnus-group-best-unread-group
2073 Jump to the unread group with the lowest level
2074 (@code{gnus-group-best-unread-group}).
2075
2076 @item .
2077 @kindex . (Group)
2078 @findex gnus-group-first-unread-group
2079 Jump to the first group with unread articles
2080 (@code{gnus-group-first-unread-group}).
2081 @end table
2082
2083 @vindex gnus-group-goto-unread
2084 If @code{gnus-group-goto-unread} is @code{nil}, all the movement
2085 commands will move to the next group, not the next unread group.  Even
2086 the commands that say they move to the next unread group.  The default
2087 is @code{t}.
2088
2089
2090 @node Selecting a Group
2091 @section Selecting a Group
2092 @cindex group selection
2093
2094 @table @kbd
2095
2096 @item SPACE
2097 @kindex SPACE (Group)
2098 @findex gnus-group-read-group
2099 Select the current group, switch to the summary buffer and display the
2100 first unread article (@code{gnus-group-read-group}).  If there are no
2101 unread articles in the group, or if you give a non-numerical prefix to
2102 this command, Gnus will offer to fetch all the old articles in this
2103 group from the server.  If you give a numerical prefix @var{n}, @var{n}
2104 determines the number of articles Gnus will fetch.  If @var{n} is
2105 positive, Gnus fetches the @var{n} newest articles, if @var{n} is
2106 negative, Gnus fetches the @code{abs(@var{n})} oldest articles.
2107
2108 Thus, @kbd{SPC} enters the group normally, @kbd{C-u SPC} offers old
2109 articles, @kbd{C-u 4 2 SPC} fetches the 42 newest articles, and @kbd{C-u
2110 - 4 2 SPC} fetches the 42 oldest ones.
2111
2112 When you are in the group (in the Summary buffer), you can type
2113 @kbd{M-g} to fetch new articles, or @kbd{C-u M-g} to also show the old
2114 ones.
2115
2116 @item RET
2117 @kindex RET (Group)
2118 @findex gnus-group-select-group
2119 Select the current group and switch to the summary buffer
2120 (@code{gnus-group-select-group}).  Takes the same arguments as
2121 @code{gnus-group-read-group}---the only difference is that this command
2122 does not display the first unread article automatically upon group
2123 entry.
2124
2125 @item M-RET
2126 @kindex M-RET (Group)
2127 @findex gnus-group-quick-select-group
2128 This does the same as the command above, but tries to do it with the
2129 minimum amount of fuzz (@code{gnus-group-quick-select-group}).  No
2130 scoring/killing will be performed, there will be no highlights and no
2131 expunging.  This might be useful if you're in a real hurry and have to
2132 enter some humongous group.  If you give a 0 prefix to this command
2133 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer,
2134 which is useful if you want to toggle threading before generating the
2135 summary buffer (@pxref{Summary Generation Commands}).
2136
2137 @item M-SPACE
2138 @kindex M-SPACE (Group)
2139 @findex gnus-group-visible-select-group
2140 This is yet one more command that does the same as the @kbd{RET}
2141 command, but this one does it without expunging and hiding dormants
2142 (@code{gnus-group-visible-select-group}).
2143
2144 @item C-M-RET
2145 @kindex C-M-RET (Group)
2146 @findex gnus-group-select-group-ephemerally
2147 Finally, this command selects the current group ephemerally without
2148 doing any processing of its contents
2149 (@code{gnus-group-select-group-ephemerally}).  Even threading has been
2150 turned off.  Everything you do in the group after selecting it in this
2151 manner will have no permanent effects.
2152
2153 @end table
2154
2155 @vindex gnus-large-newsgroup
2156 The @code{gnus-large-newsgroup} variable says what Gnus should
2157 consider to be a big group.  If it is @code{nil}, no groups are
2158 considered big.  The default value is 200.  If the group has more
2159 (unread and/or ticked) articles than this, Gnus will query the user
2160 before entering the group.  The user can then specify how many
2161 articles should be fetched from the server.  If the user specifies a
2162 negative number (@var{-n}), the @var{n} oldest articles will be
2163 fetched.  If it is positive, the @var{n} articles that have arrived
2164 most recently will be fetched.
2165
2166 @vindex gnus-large-ephemeral-newsgroup
2167 @code{gnus-large-ephemeral-newsgroup} is the same as
2168 @code{gnus-large-newsgroup}, but is only used for ephemeral
2169 newsgroups.
2170
2171 @vindex gnus-select-group-hook
2172 @vindex gnus-auto-select-first
2173 @vindex gnus-auto-select-subject
2174 If @code{gnus-auto-select-first} is non-@code{nil}, select an article
2175 automatically when entering a group with the @kbd{SPACE} command.
2176 Which article this is is controlled by the
2177 @code{gnus-auto-select-subject} variable.  Valid values for this
2178 variable are:
2179
2180 @table @code
2181
2182 @item unread
2183 Place point on the subject line of the first unread article.
2184
2185 @item first
2186 Place point on the subject line of the first article.
2187
2188 @item unseen
2189 Place point on the subject line of the first unseen article.
2190
2191 @item unseen-or-unread
2192 Place point on the subject line of the first unseen article, and if
2193 there is no such article, place point on the subject line of the first
2194 unread article.
2195
2196 @item best
2197 Place point on the subject line of the highest-scored unread article.
2198
2199 @end table
2200
2201 This variable can also be a function.  In that case, that function
2202 will be called to place point on a subject line.
2203
2204 If you want to prevent automatic selection in some group (say, in a
2205 binary group with Huge articles) you can set the
2206 @code{gnus-auto-select-first} variable to @code{nil} in
2207 @code{gnus-select-group-hook}, which is called when a group is
2208 selected.
2209
2210
2211 @node Subscription Commands
2212 @section Subscription Commands
2213 @cindex subscription
2214
2215 @table @kbd
2216
2217 @item S t
2218 @itemx u
2219 @kindex S t (Group)
2220 @kindex u (Group)
2221 @findex gnus-group-unsubscribe-current-group
2222 @c @icon{gnus-group-unsubscribe}
2223 Toggle subscription to the current group
2224 (@code{gnus-group-unsubscribe-current-group}).
2225
2226 @item S s
2227 @itemx U
2228 @kindex S s (Group)
2229 @kindex U (Group)
2230 @findex gnus-group-unsubscribe-group
2231 Prompt for a group to subscribe, and then subscribe it.  If it was
2232 subscribed already, unsubscribe it instead
2233 (@code{gnus-group-unsubscribe-group}).
2234
2235 @item S k
2236 @itemx C-k
2237 @kindex S k (Group)
2238 @kindex C-k (Group)
2239 @findex gnus-group-kill-group
2240 @c @icon{gnus-group-kill-group}
2241 Kill the current group (@code{gnus-group-kill-group}).
2242
2243 @item S y
2244 @itemx C-y
2245 @kindex S y (Group)
2246 @kindex C-y (Group)
2247 @findex gnus-group-yank-group
2248 Yank the last killed group (@code{gnus-group-yank-group}).
2249
2250 @item C-x C-t
2251 @kindex C-x C-t (Group)
2252 @findex gnus-group-transpose-groups
2253 Transpose two groups (@code{gnus-group-transpose-groups}).  This isn't
2254 really a subscription command, but you can use it instead of a
2255 kill-and-yank sequence sometimes.
2256
2257 @item S w
2258 @itemx C-w
2259 @kindex S w (Group)
2260 @kindex C-w (Group)
2261 @findex gnus-group-kill-region
2262 Kill all groups in the region (@code{gnus-group-kill-region}).
2263
2264 @item S z
2265 @kindex S z (Group)
2266 @findex gnus-group-kill-all-zombies
2267 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
2268
2269 @item S C-k
2270 @kindex S C-k (Group)
2271 @findex gnus-group-kill-level
2272 Kill all groups on a certain level (@code{gnus-group-kill-level}).
2273 These groups can't be yanked back after killing, so this command should
2274 be used with some caution.  The only time where this command comes in
2275 really handy is when you have a @file{.newsrc} with lots of unsubscribed
2276 groups that you want to get rid off.  @kbd{S C-k} on level 7 will
2277 kill off all unsubscribed groups that do not have message numbers in the
2278 @file{.newsrc} file.
2279
2280 @end table
2281
2282 Also @pxref{Group Levels}.
2283
2284
2285 @node Group Data
2286 @section Group Data
2287
2288 @table @kbd
2289
2290 @item c
2291 @kindex c (Group)
2292 @findex gnus-group-catchup-current
2293 @vindex gnus-group-catchup-group-hook
2294 @c @icon{gnus-group-catchup-current}
2295 Mark all unticked articles in this group as read
2296 (@code{gnus-group-catchup-current}).
2297 @code{gnus-group-catchup-group-hook} is called when catching up a group from
2298 the group buffer.
2299
2300 @item C
2301 @kindex C (Group)
2302 @findex gnus-group-catchup-current-all
2303 Mark all articles in this group, even the ticked ones, as read
2304 (@code{gnus-group-catchup-current-all}).
2305
2306 @item M-c
2307 @kindex M-c (Group)
2308 @findex gnus-group-clear-data
2309 Clear the data from the current group---nix out marks and the list of
2310 read articles (@code{gnus-group-clear-data}).
2311
2312 @item M-x gnus-group-clear-data-on-native-groups
2313 @kindex M-x gnus-group-clear-data-on-native-groups
2314 @findex gnus-group-clear-data-on-native-groups
2315 If you have switched from one @acronym{NNTP} server to another, all your marks
2316 and read ranges have become worthless.  You can use this command to
2317 clear out all data that you have on your native groups.  Use with
2318 caution.
2319
2320 @end table
2321
2322
2323 @node Group Levels
2324 @section Group Levels
2325 @cindex group level
2326 @cindex level
2327
2328 All groups have a level of @dfn{subscribedness}.  For instance, if a
2329 group is on level 2, it is more subscribed than a group on level 5.  You
2330 can ask Gnus to just list groups on a given level or lower
2331 (@pxref{Listing Groups}), or to just check for new articles in groups on
2332 a given level or lower (@pxref{Scanning New Messages}).
2333
2334 Remember:  The higher the level of the group, the less important it is.
2335
2336 @table @kbd
2337
2338 @item S l
2339 @kindex S l (Group)
2340 @findex gnus-group-set-current-level
2341 Set the level of the current group.  If a numeric prefix is given, the
2342 next @var{n} groups will have their levels set.  The user will be
2343 prompted for a level.
2344 @end table
2345
2346 @vindex gnus-level-killed
2347 @vindex gnus-level-zombie
2348 @vindex gnus-level-unsubscribed
2349 @vindex gnus-level-subscribed
2350 Gnus considers groups from levels 1 to
2351 @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed,
2352 @code{gnus-level-subscribed} (exclusive) and
2353 @code{gnus-level-unsubscribed} (inclusive) (default 7) to be
2354 unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
2355 (default 8) and @code{gnus-level-killed} to be killed (completely dead)
2356 (default 9).  Gnus treats subscribed and unsubscribed groups exactly the
2357 same, but zombie and killed groups have no information on what articles
2358 you have read, etc, stored.  This distinction between dead and living
2359 groups isn't done because it is nice or clever, it is done purely for
2360 reasons of efficiency.
2361
2362 It is recommended that you keep all your mail groups (if any) on quite
2363 low levels (e.g. 1 or 2).
2364
2365 Maybe the following description of the default behavior of Gnus helps to
2366 understand what these levels are all about.  By default, Gnus shows you
2367 subscribed nonempty groups, but by hitting @kbd{L} you can have it show
2368 empty subscribed groups and unsubscribed groups, too.  Type @kbd{l} to
2369 go back to showing nonempty subscribed groups again.  Thus, unsubscribed
2370 groups are hidden, in a way.
2371
2372 Zombie and killed groups are similar to unsubscribed groups in that they
2373 are hidden by default.  But they are different from subscribed and
2374 unsubscribed groups in that Gnus doesn't ask the news server for
2375 information (number of messages, number of unread messages) on zombie
2376 and killed groups.  Normally, you use @kbd{C-k} to kill the groups you
2377 aren't interested in.  If most groups are killed, Gnus is faster.
2378
2379 Why does Gnus distinguish between zombie and killed groups?  Well, when
2380 a new group arrives on the server, Gnus by default makes it a zombie
2381 group.  This means that you are normally not bothered with new groups,
2382 but you can type @kbd{A z} to get a list of all new groups.  Subscribe
2383 the ones you like and kill the ones you don't want.  (@kbd{A k} shows a
2384 list of killed groups.)
2385
2386 If you want to play with the level variables, you should show some care.
2387 Set them once, and don't touch them ever again.  Better yet, don't touch
2388 them at all unless you know exactly what you're doing.
2389
2390 @vindex gnus-level-default-unsubscribed
2391 @vindex gnus-level-default-subscribed
2392 Two closely related variables are @code{gnus-level-default-subscribed}
2393 (default 3) and @code{gnus-level-default-unsubscribed} (default 6),
2394 which are the levels that new groups will be put on if they are
2395 (un)subscribed.  These two variables should, of course, be inside the
2396 relevant valid ranges.
2397
2398 @vindex gnus-keep-same-level
2399 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
2400 will only move to groups of the same level (or lower).  In
2401 particular, going from the last article in one group to the next group
2402 will go to the next group of the same level (or lower).  This might be
2403 handy if you want to read the most important groups before you read the
2404 rest.
2405
2406 If this variable is @code{best}, Gnus will make the next newsgroup the
2407 one with the best level.
2408
2409 @vindex gnus-group-default-list-level
2410 All groups with a level less than or equal to
2411 @code{gnus-group-default-list-level} will be listed in the group buffer
2412 by default.
2413
2414 @vindex gnus-group-list-inactive-groups
2415 If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
2416 groups will be listed along with the unread groups.  This variable is
2417 @code{t} by default.  If it is @code{nil}, inactive groups won't be
2418 listed.
2419
2420 @vindex gnus-group-use-permanent-levels
2421 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
2422 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
2423 use this level as the ``work'' level.
2424
2425 @vindex gnus-activate-level
2426 Gnus will normally just activate (i. e., query the server about) groups
2427 on level @code{gnus-activate-level} or less.  If you don't want to
2428 activate unsubscribed groups, for instance, you might set this variable
2429 to 5.  The default is 6.
2430
2431
2432 @node Group Score
2433 @section Group Score
2434 @cindex group score
2435 @cindex group rank
2436 @cindex rank
2437
2438 You would normally keep important groups on high levels, but that scheme
2439 is somewhat restrictive.  Don't you wish you could have Gnus sort the
2440 group buffer according to how often you read groups, perhaps?  Within
2441 reason?
2442
2443 This is what @dfn{group score} is for.  You can have Gnus assign a score
2444 to each group through the mechanism described below.  You can then sort
2445 the group buffer based on this score.  Alternatively, you can sort on
2446 score and then level.  (Taken together, the level and the score is
2447 called the @dfn{rank} of the group.  A group that is on level 4 and has
2448 a score of 1 has a higher rank than a group on level 5 that has a score
2449 of 300.  (The level is the most significant part and the score is the
2450 least significant part.))
2451
2452 @findex gnus-summary-bubble-group
2453 If you want groups you read often to get higher scores than groups you
2454 read seldom you can add the @code{gnus-summary-bubble-group} function to
2455 the @code{gnus-summary-exit-hook} hook.  This will result (after
2456 sorting) in a bubbling sort of action.  If you want to see that in
2457 action after each summary exit, you can add
2458 @code{gnus-group-sort-groups-by-rank} or
2459 @code{gnus-group-sort-groups-by-score} to the same hook, but that will
2460 slow things down somewhat.
2461
2462
2463 @node Marking Groups
2464 @section Marking Groups
2465 @cindex marking groups
2466
2467 If you want to perform some command on several groups, and they appear
2468 subsequently in the group buffer, you would normally just give a
2469 numerical prefix to the command.  Most group commands will then do your
2470 bidding on those groups.
2471
2472 However, if the groups are not in sequential order, you can still
2473 perform a command on several groups.  You simply mark the groups first
2474 with the process mark and then execute the command.
2475
2476 @table @kbd
2477
2478 @item #
2479 @kindex # (Group)
2480 @itemx M m
2481 @kindex M m (Group)
2482 @findex gnus-group-mark-group
2483 Set the mark on the current group (@code{gnus-group-mark-group}).
2484
2485 @item M-#
2486 @kindex M-# (Group)
2487 @itemx M u
2488 @kindex M u (Group)
2489 @findex gnus-group-unmark-group
2490 Remove the mark from the current group
2491 (@code{gnus-group-unmark-group}).
2492
2493 @item M U
2494 @kindex M U (Group)
2495 @findex gnus-group-unmark-all-groups
2496 Remove the mark from all groups (@code{gnus-group-unmark-all-groups}).
2497
2498 @item M w
2499 @kindex M w (Group)
2500 @findex gnus-group-mark-region
2501 Mark all groups between point and mark (@code{gnus-group-mark-region}).
2502
2503 @item M b
2504 @kindex M b (Group)
2505 @findex gnus-group-mark-buffer
2506 Mark all groups in the buffer (@code{gnus-group-mark-buffer}).
2507
2508 @item M r
2509 @kindex M r (Group)
2510 @findex gnus-group-mark-regexp
2511 Mark all groups that match some regular expression
2512 (@code{gnus-group-mark-regexp}).
2513 @end table
2514
2515 Also @pxref{Process/Prefix}.
2516
2517 @findex gnus-group-universal-argument
2518 If you want to execute some command on all groups that have been marked
2519 with the process mark, you can use the @kbd{M-&}
2520 (@code{gnus-group-universal-argument}) command.  It will prompt you for
2521 the command to be executed.
2522
2523
2524 @node Foreign Groups
2525 @section Foreign Groups
2526 @cindex foreign groups
2527
2528 Below are some group mode commands for making and editing general foreign
2529 groups, as well as commands to ease the creation of a few
2530 special-purpose groups.  All these commands insert the newly created
2531 groups under point---@code{gnus-subscribe-newsgroup-method} is not
2532 consulted.
2533
2534 Changes from the group editing commands are stored in
2535 @file{~/.newsrc.eld} (@code{gnus-startup-file}).  An alternative is the
2536 variable @code{gnus-parameters}, @xref{Group Parameters}.
2537
2538 @table @kbd
2539
2540 @item G m
2541 @kindex G m (Group)
2542 @findex gnus-group-make-group
2543 @cindex making groups
2544 Make a new group (@code{gnus-group-make-group}).  Gnus will prompt you
2545 for a name, a method and possibly an @dfn{address}.  For an easier way
2546 to subscribe to @acronym{NNTP} groups (@pxref{Browse Foreign Server}).
2547
2548 @item G M
2549 @kindex G M (Group)
2550 @findex gnus-group-read-ephemeral-group
2551 Make an ephemeral group (@code{gnus-group-read-ephemeral-group}).  Gnus
2552 will prompt you for a name, a method and an @dfn{address}.
2553
2554 @item G r
2555 @kindex G r (Group)
2556 @findex gnus-group-rename-group
2557 @cindex renaming groups
2558 Rename the current group to something else
2559 (@code{gnus-group-rename-group}).  This is valid only on some
2560 groups---mail groups mostly.  This command might very well be quite slow
2561 on some back ends.
2562
2563 @item G c
2564 @kindex G c (Group)
2565 @cindex customizing
2566 @findex gnus-group-customize
2567 Customize the group parameters (@code{gnus-group-customize}).
2568
2569 @item G e
2570 @kindex G e (Group)
2571 @findex gnus-group-edit-group-method
2572 @cindex renaming groups
2573 Enter a buffer where you can edit the select method of the current
2574 group (@code{gnus-group-edit-group-method}).
2575
2576 @item G p
2577 @kindex G p (Group)
2578 @findex gnus-group-edit-group-parameters
2579 Enter a buffer where you can edit the group parameters
2580 (@code{gnus-group-edit-group-parameters}).
2581
2582 @item G E
2583 @kindex G E (Group)
2584 @findex gnus-group-edit-group
2585 Enter a buffer where you can edit the group info
2586 (@code{gnus-group-edit-group}).
2587
2588 @item G d
2589 @kindex G d (Group)
2590 @findex gnus-group-make-directory-group
2591 @cindex nndir
2592 Make a directory group (@pxref{Directory Groups}).  You will be prompted
2593 for a directory name (@code{gnus-group-make-directory-group}).
2594
2595 @item G h
2596 @kindex G h (Group)
2597 @cindex help group
2598 @findex gnus-group-make-help-group
2599 Make the Gnus help group (@code{gnus-group-make-help-group}).
2600
2601 @item G a
2602 @kindex G a (Group)
2603 @cindex (ding) archive
2604 @cindex archive group
2605 @findex gnus-group-make-archive-group
2606 @vindex gnus-group-archive-directory
2607 @vindex gnus-group-recent-archive-directory
2608 Make a Gnus archive group (@code{gnus-group-make-archive-group}).  By
2609 default a group pointing to the most recent articles will be created
2610 (@code{gnus-group-recent-archive-directory}), but given a prefix, a full
2611 group will be created from @code{gnus-group-archive-directory}.
2612
2613 @item G k
2614 @kindex G k (Group)
2615 @findex gnus-group-make-kiboze-group
2616 @cindex nnkiboze
2617 Make a kiboze group.  You will be prompted for a name, for a regexp to
2618 match groups to be ``included'' in the kiboze group, and a series of
2619 strings to match on headers (@code{gnus-group-make-kiboze-group}).
2620 @xref{Kibozed Groups}.
2621
2622 @item G D
2623 @kindex G D (Group)
2624 @findex gnus-group-enter-directory
2625 @cindex nneething
2626 Read an arbitrary directory as if it were a newsgroup with the
2627 @code{nneething} back end (@code{gnus-group-enter-directory}).
2628 @xref{Anything Groups}.
2629
2630 @item G f
2631 @kindex G f (Group)
2632 @findex gnus-group-make-doc-group
2633 @cindex ClariNet Briefs
2634 @cindex nndoc
2635 Make a group based on some file or other
2636 (@code{gnus-group-make-doc-group}).  If you give a prefix to this
2637 command, you will be prompted for a file name and a file type.
2638 Currently supported types are @code{mbox}, @code{babyl},
2639 @code{digest}, @code{news}, @code{rnews}, @code{mmdf}, @code{forward},
2640 @code{rfc934}, @code{rfc822-forward}, @code{mime-parts},
2641 @code{standard-digest}, @code{slack-digest}, @code{clari-briefs},
2642 @code{nsmail}, @code{outlook}, @code{oe-dbx}, and @code{mailman}.  If
2643 you run this command without a prefix, Gnus will guess at the file
2644 type.  @xref{Document Groups}.
2645
2646 @item G u
2647 @kindex G u (Group)
2648 @vindex gnus-useful-groups
2649 @findex gnus-group-make-useful-group
2650 Create one of the groups mentioned in @code{gnus-useful-groups}
2651 (@code{gnus-group-make-useful-group}).
2652
2653 @item G w
2654 @kindex G w (Group)
2655 @findex gnus-group-make-web-group
2656 @cindex Google
2657 @cindex nnweb
2658 @cindex gmane
2659 Make an ephemeral group based on a web search
2660 (@code{gnus-group-make-web-group}).  If you give a prefix to this
2661 command, make a solid group instead.  You will be prompted for the
2662 search engine type and the search string.  Valid search engine types
2663 include @code{google}, @code{dejanews}, and @code{gmane}.
2664 @xref{Web Searches}.
2665
2666 If you use the @code{google} search engine, you can limit the search
2667 to a particular group by using a match string like
2668 @samp{shaving group:alt.sysadmin.recovery}.
2669
2670 @item G R
2671 @kindex G R (Group)
2672 @findex gnus-group-make-rss-group
2673 Make a group based on an @acronym{RSS} feed
2674 (@code{gnus-group-make-rss-group}).  You will be prompted for an URL.
2675 @xref{RSS}.
2676
2677 @item G DEL
2678 @kindex G DEL (Group)
2679 @findex gnus-group-delete-group
2680 This function will delete the current group
2681 (@code{gnus-group-delete-group}).  If given a prefix, this function will
2682 actually delete all the articles in the group, and forcibly remove the
2683 group itself from the face of the Earth.  Use a prefix only if you are
2684 absolutely sure of what you are doing.  This command can't be used on
2685 read-only groups (like @code{nntp} groups), though.
2686
2687 @item G V
2688 @kindex G V (Group)
2689 @findex gnus-group-make-empty-virtual
2690 Make a new, fresh, empty @code{nnvirtual} group
2691 (@code{gnus-group-make-empty-virtual}).  @xref{Virtual Groups}.
2692
2693 @item G v
2694 @kindex G v (Group)
2695 @findex gnus-group-add-to-virtual
2696 Add the current group to an @code{nnvirtual} group
2697 (@code{gnus-group-add-to-virtual}).  Uses the process/prefix convention.
2698 @end table
2699
2700 @xref{Select Methods}, for more information on the various select
2701 methods.
2702
2703 @vindex gnus-activate-foreign-newsgroups
2704 If @code{gnus-activate-foreign-newsgroups} is a positive number,
2705 Gnus will check all foreign groups with this level or lower at startup.
2706 This might take quite a while, especially if you subscribe to lots of
2707 groups from different @acronym{NNTP} servers.  Also @pxref{Group Levels};
2708 @code{gnus-activate-level} also affects activation of foreign
2709 newsgroups.
2710
2711
2712 @node Group Parameters
2713 @section Group Parameters
2714 @cindex group parameters
2715
2716 The group parameters store information local to a particular group.
2717 Here's an example group parameter list:
2718
2719 @example
2720 ((to-address . "ding@@gnus.org")
2721  (auto-expire . t))
2722 @end example
2723
2724 We see that each element consists of a ``dotted pair''---the thing before
2725 the dot is the key, while the thing after the dot is the value.  All the
2726 parameters have this form @emph{except} local variable specs, which are
2727 not dotted pairs, but proper lists.
2728
2729 Some parameters have correspondent customizable variables, each of which
2730 is an alist of regexps and values.
2731
2732 The following group parameters can be used:
2733
2734 @table @code
2735 @item to-address
2736 @cindex to-address
2737 Address used by when doing followups and new posts.
2738
2739 @example
2740 (to-address . "some@@where.com")
2741 @end example
2742
2743 This is primarily useful in mail groups that represent closed mailing
2744 lists---mailing lists where it's expected that everybody that writes to
2745 the mailing list is subscribed to it.  Since using this parameter
2746 ensures that the mail only goes to the mailing list itself, it means
2747 that members won't receive two copies of your followups.
2748
2749 Using @code{to-address} will actually work whether the group is foreign
2750 or not.  Let's say there's a group on the server that is called
2751 @samp{fa.4ad-l}.  This is a real newsgroup, but the server has gotten
2752 the articles from a mail-to-news gateway.  Posting directly to this
2753 group is therefore impossible---you have to send mail to the mailing
2754 list address instead.
2755
2756 See also @code{gnus-parameter-to-address-alist}.
2757
2758 @item to-list
2759 @cindex to-list
2760 Address used when doing @kbd{a} in that group.
2761
2762 @example
2763 (to-list . "some@@where.com")
2764 @end example
2765
2766 It is totally ignored
2767 when doing a followup---except that if it is present in a news group,
2768 you'll get mail group semantics when doing @kbd{f}.
2769
2770 If you do an @kbd{a} command in a mail group and you have neither a
2771 @code{to-list} group parameter nor a @code{to-address} group parameter,
2772 then a @code{to-list} group parameter will be added automatically upon
2773 sending the message if @code{gnus-add-to-list} is set to @code{t}.
2774 @vindex gnus-add-to-list
2775
2776 @findex gnus-mailing-list-mode
2777 @cindex mail list groups
2778 If this variable is set, @code{gnus-mailing-list-mode} is turned on when
2779 entering summary buffer.
2780
2781 See also @code{gnus-parameter-to-list-alist}.
2782
2783 @anchor{subscribed}
2784 @item subscribed
2785 @cindex subscribed
2786 @cindex Mail-Followup-To
2787 @findex gnus-find-subscribed-addresses
2788 If this parameter is set to @code{t}, Gnus will consider the
2789 to-address and to-list parameters for this group as addresses of
2790 mailing lists you are subscribed to.  Giving Gnus this information is
2791 (only) a first step in getting it to generate correct Mail-Followup-To
2792 headers for your posts to these lists.  The second step is to put the
2793 following in your @file{.gnus.el}
2794
2795 @lisp
2796 (setq message-subscribed-address-functions
2797       '(gnus-find-subscribed-addresses))
2798 @end lisp
2799
2800 @xref{Mailing Lists, ,Mailing Lists, message, The Message Manual}, for
2801 a complete treatment of available MFT support.
2802
2803 @item visible
2804 @cindex visible
2805 If the group parameter list has the element @code{(visible . t)},
2806 that group will always be visible in the Group buffer, regardless
2807 of whether it has any unread articles.
2808
2809 This parameter cannot be set via @code{gnus-parameters}. See
2810 @code{gnus-permanently-visible-groups} as an alternative.
2811
2812 @item broken-reply-to
2813 @cindex broken-reply-to
2814 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
2815 headers in this group are to be ignored, and for the header to be hidden
2816 if @code{reply-to} is part of @code{gnus-boring-article-headers}.  This
2817 can be useful if you're reading a mailing list group where the listserv
2818 has inserted @code{Reply-To} headers that point back to the listserv
2819 itself.  That is broken behavior.  So there!
2820
2821 @item to-group
2822 @cindex to-group
2823 Elements like @code{(to-group . "some.group.name")} means that all
2824 posts in that group will be sent to @code{some.group.name}.
2825
2826 @item newsgroup
2827 @cindex newsgroup
2828 If you have @code{(newsgroup . t)} in the group parameter list, Gnus
2829 will treat all responses as if they were responses to news articles.
2830 This can be useful if you have a mail group that's really a mirror of a
2831 news group.
2832
2833 @item gcc-self
2834 @cindex gcc-self
2835 If @code{(gcc-self . t)} is present in the group parameter list, newly
2836 composed messages will be @code{Gcc}'d to the current group.  If
2837 @code{(gcc-self . none)} is present, no @code{Gcc:} header will be
2838 generated, if @code{(gcc-self . "string")} is present, this string will
2839 be inserted literally as a @code{gcc} header.  This parameter takes
2840 precedence over any default @code{Gcc} rules as described later
2841 (@pxref{Archived Messages}).
2842
2843 @strong{Caveat}: Adding @code{(gcc-self . t)} to the parameter list of
2844 @code{nntp} groups (or the like) isn't valid.  An @code{nntp} server
2845 doesn't accept articles.
2846
2847 @item auto-expire
2848 @cindex auto-expire
2849 @cindex expiring mail
2850 If the group parameter has an element that looks like @code{(auto-expire
2851 . t)}, all articles read will be marked as expirable.  For an
2852 alternative approach, @pxref{Expiring Mail}.
2853
2854 See also @code{gnus-auto-expirable-newsgroups}.
2855
2856 @item total-expire
2857 @cindex total-expire
2858 @cindex expiring mail
2859 If the group parameter has an element that looks like
2860 @code{(total-expire . t)}, all read articles will be put through the
2861 expiry process, even if they are not marked as expirable.  Use with
2862 caution.  Unread, ticked and dormant articles are not eligible for
2863 expiry.
2864
2865 See also @code{gnus-total-expirable-newsgroups}.
2866
2867 @item expiry-wait
2868 @cindex expiry-wait
2869 @vindex nnmail-expiry-wait-function
2870 If the group parameter has an element that looks like
2871 @code{(expiry-wait . 10)}, this value will override any
2872 @code{nnmail-expiry-wait} and @code{nnmail-expiry-wait-function}
2873 (@pxref{Expiring Mail}) when expiring expirable messages.  The value
2874 can either be a number of days (not necessarily an integer) or the
2875 symbols @code{never} or @code{immediate}.
2876
2877 @item expiry-target
2878 @cindex expiry-target
2879 Where expired messages end up.  This parameter overrides
2880 @code{nnmail-expiry-target}.
2881
2882 @item score-file
2883 @cindex score file group parameter
2884 Elements that look like @code{(score-file . "file")} will make
2885 @file{file} into the current score file for the group in question.  All
2886 interactive score entries will be put into this file.
2887
2888 @item adapt-file
2889 @cindex adapt file group parameter
2890 Elements that look like @code{(adapt-file . "file")} will make
2891 @file{file} into the current adaptive file for the group in question.
2892 All adaptive score entries will be put into this file.
2893
2894 @item admin-address
2895 @cindex admin-address
2896 When unsubscribing from a mailing list you should never send the
2897 unsubscription notice to the mailing list itself.  Instead, you'd send
2898 messages to the administrative address.  This parameter allows you to
2899 put the admin address somewhere convenient.
2900
2901 @item display
2902 @cindex display
2903 Elements that look like @code{(display . MODE)} say which articles to
2904 display on entering the group.  Valid values are:
2905
2906 @table @code
2907 @item all
2908 Display all articles, both read and unread.
2909
2910 @item an integer
2911 Display the last @var{integer} articles in the group.  This is the same as
2912 entering the group with @kbd{C-u @var{integer}}.
2913
2914 @item default
2915 Display the default visible articles, which normally includes unread and
2916 ticked articles.
2917
2918 @item an array
2919 Display articles that satisfy a predicate.
2920
2921 Here are some examples:
2922
2923 @table @code
2924 @item [unread]
2925 Display only unread articles.
2926
2927 @item [not expire]
2928 Display everything except expirable articles.
2929
2930 @item [and (not reply) (not expire)]
2931 Display everything except expirable and articles you've already
2932 responded to.
2933 @end table
2934
2935 The available operators are @code{not}, @code{and} and @code{or}.
2936 Predicates include @code{tick}, @code{unsend}, @code{undownload},
2937 @code{unread}, @code{dormant}, @code{expire}, @code{reply},
2938 @code{killed}, @code{bookmark}, @code{score}, @code{save},
2939 @code{cache}, @code{forward}, @code{unseen} and @code{recent}.
2940
2941 @end table
2942
2943 The @code{display} parameter works by limiting the summary buffer to
2944 the subset specified.  You can pop the limit by using the @kbd{/ w}
2945 command (@pxref{Limiting}).
2946
2947 @item comment
2948 @cindex comment
2949 Elements that look like @code{(comment . "This is a comment")} are
2950 arbitrary comments on the group.  You can display comments in the
2951 group line (@pxref{Group Line Specification}).
2952
2953 @item charset
2954 @cindex charset
2955 Elements that look like @code{(charset . iso-8859-1)} will make
2956 @code{iso-8859-1} the default charset; that is, the charset that will be
2957 used for all articles that do not specify a charset.
2958
2959 See also @code{gnus-group-charset-alist}.
2960
2961 @item ignored-charsets
2962 @cindex ignored-charset
2963 Elements that look like @code{(ignored-charsets x-unknown iso-8859-1)}
2964 will make @code{iso-8859-1} and @code{x-unknown} ignored; that is, the
2965 default charset will be used for decoding articles.
2966
2967 See also @code{gnus-group-ignored-charsets-alist}.
2968
2969 @item posting-style
2970 @cindex posting-style
2971 You can store additional posting style information for this group
2972 here (@pxref{Posting Styles}).  The format is that of an entry in the
2973 @code{gnus-posting-styles} alist, except that there's no regexp matching
2974 the group name (of course).  Style elements in this group parameter will
2975 take precedence over the ones found in @code{gnus-posting-styles}.
2976
2977 For instance, if you want a funky name and signature in this group only,
2978 instead of hacking @code{gnus-posting-styles}, you could put something
2979 like this in the group parameters:
2980
2981 @example
2982 (posting-style
2983   (name "Funky Name")
2984   ("X-My-Header" "Funky Value")
2985   (signature "Funky Signature"))
2986 @end example
2987
2988 If you're using topics to organize your group buffer
2989 (@pxref{Group Topics}), note that posting styles can also be set in
2990 the topics parameters. Posting styles in topic parameters apply to all
2991 groups in this topic. More precisely, the posting-style settings for a
2992 group result from the hierarchical merging of all posting-style
2993 entries in the parameters of this group and all the topics it belongs
2994 to.
2995
2996
2997 @item post-method
2998 @cindex post-method
2999 If it is set, the value is used as the method for posting message
3000 instead of @code{gnus-post-method}.
3001
3002 @item banner
3003 @cindex banner
3004 An item like @code{(banner . @var{regexp})} causes any part of an article
3005 that matches the regular expression @var{regexp} to be stripped.  Instead of
3006 @var{regexp}, you can also use the symbol @code{signature} which strips the
3007 last signature or any of the elements of the alist
3008 @code{gnus-article-banner-alist}.
3009
3010 @item sieve
3011 @cindex sieve
3012 This parameter contains a Sieve test that should match incoming mail
3013 that should be placed in this group.  From this group parameter, a
3014 Sieve @samp{IF} control structure is generated, having the test as the
3015 condition and @samp{fileinto "group.name";} as the body.
3016
3017 For example, if the @samp{INBOX.list.sieve} group has the @code{(sieve
3018 address "sender" "sieve-admin@@extundo.com")} group parameter, when
3019 translating the group parameter into a Sieve script (@pxref{Sieve
3020 Commands}) the following Sieve code is generated:
3021
3022 @example
3023 if address "sender" "sieve-admin@@extundo.com" @{
3024         fileinto "INBOX.list.sieve";
3025 @}
3026 @end example
3027
3028 To generate tests for multiple email-addresses use a group parameter
3029 like @code{(sieve address "sender" ("name@@one.org" else@@two.org"))}.
3030 When generating a sieve script (@pxref{Sieve Commands}) Sieve code
3031 like the following is generated:
3032
3033 @example
3034 if address "sender" ["name@@one.org", "else@@two.org"] @{
3035         fileinto "INBOX.list.sieve";
3036 @}
3037 @end example
3038
3039 See @pxref{Sieve Commands} for commands and variables that might be of
3040 interest in relation to the sieve parameter.
3041
3042 The Sieve language is described in RFC 3028.  @xref{Top, Emacs Sieve,
3043 Top, sieve, Emacs Sieve}.
3044
3045 @item (agent parameters)
3046 If the agent has been enabled, you can set any of the its parameters
3047 to control the behavior of the agent in individual groups. See Agent
3048 Parameters in @ref{Category Syntax}.  Most users will choose to set
3049 agent parameters in either an agent category or group topic to
3050 minimize the configuration effort.
3051
3052 @item (@var{variable} @var{form})
3053 You can use the group parameters to set variables local to the group you
3054 are entering.  If you want to turn threading off in @samp{news.answers},
3055 you could put @code{(gnus-show-threads nil)} in the group parameters of
3056 that group.  @code{gnus-show-threads} will be made into a local variable
3057 in the summary buffer you enter, and the form @code{nil} will be
3058 @code{eval}ed there.
3059
3060 Note that this feature sets the variable locally to the summary buffer.
3061 But some variables are evaluated in the article buffer, or in the
3062 message buffer (of a reply or followup or otherwise newly created
3063 message).  As a workaround, it might help to add the variable in
3064 question to @code{gnus-newsgroup-variables}.  @xref{Various Summary
3065 Stuff}.  So if you want to set @code{message-from-style} via the group
3066 parameters, then you may need the following statement elsewhere in your
3067 @file{~/.gnus} file:
3068
3069 @lisp
3070 (add-to-list 'gnus-newsgroup-variables 'message-from-style)
3071 @end lisp
3072
3073 @vindex gnus-list-identifiers
3074 A use for this feature is to remove a mailing list identifier tag in
3075 the subject fields of articles.  E.g. if the news group
3076
3077 @example
3078 nntp+news.gnus.org:gmane.text.docbook.apps
3079 @end example
3080
3081 has the tag @samp{DOC-BOOK-APPS:} in the subject of all articles, this
3082 tag can be removed from the article subjects in the summary buffer for
3083 the group by putting @code{(gnus-list-identifiers "DOCBOOK-APPS:")}
3084 into the group parameters for the group.
3085
3086 This can also be used as a group-specific hook function.  If you want to
3087 hear a beep when you enter a group, you could put something like
3088 @code{(dummy-variable (ding))} in the parameters of that group.
3089 @code{dummy-variable} will be set to the (meaningless) result of the
3090 @code{(ding)} form.
3091
3092 Alternatively, since the VARIABLE becomes local to the group, this
3093 pattern can be used to temporarily change a hook.  For example, if the
3094 following is added to a group parameter
3095
3096 @lisp
3097 (gnus-summary-prepared-hook
3098   '(lambda nil (local-set-key "d" (local-key-binding "n"))))
3099 @end lisp
3100
3101 when the group is entered, the 'd' key will not mark the article as
3102 expired.
3103
3104 @end table
3105
3106 Use the @kbd{G p} or the @kbd{G c} command to edit group parameters of a
3107 group.  (@kbd{G p} presents you with a Lisp-based interface, @kbd{G c}
3108 presents you with a Customize-like interface.  The latter helps avoid
3109 silly Lisp errors.)  You might also be interested in reading about topic
3110 parameters (@pxref{Topic Parameters}).
3111
3112 @vindex gnus-parameters
3113 Group parameters can be set via the @code{gnus-parameters} variable too.
3114 But some variables, such as @code{visible}, have no effect (For this
3115 case see @code{gnus-permanently-visible-groups} as an alternative.).
3116 For example:
3117
3118 @lisp
3119 (setq gnus-parameters
3120       '(("mail\\..*"
3121          (gnus-show-threads nil)
3122          (gnus-use-scoring nil)
3123          (gnus-summary-line-format
3124           "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n")
3125          (gcc-self . t)
3126          (display . all))
3127
3128         ("^nnimap:\\(foo.bar\\)$"
3129          (to-group . "\\1"))
3130
3131         ("mail\\.me"
3132          (gnus-use-scoring  t))
3133
3134         ("list\\..*"
3135          (total-expire . t)
3136          (broken-reply-to . t))))
3137 @end lisp
3138
3139 String value of parameters will be subjected to regexp substitution, as
3140 the @code{to-group} example shows.
3141
3142 @vindex gnus-parameters-case-fold-search
3143 By default, whether comparing the group name and one of those regexps
3144 specified in @code{gnus-parameters} is done in a case-sensitive manner
3145 or a case-insensitive manner depends on the value of
3146 @code{case-fold-search} at the time when the comparison is done.  The
3147 value of @code{case-fold-search} is typically @code{t}; it means, for
3148 example, the element @code{("INBOX\\.FOO" (total-expire . t))} might be
3149 applied to both the @samp{INBOX.FOO} group and the @samp{INBOX.foo}
3150 group.  If you want to make those regexps always case-sensitive, set the
3151 value of the @code{gnus-parameters-case-fold-search} variable to
3152 @code{nil}.  Otherwise, set it to @code{t} if you want to compare them
3153 always in a case-insensitive manner.
3154
3155 You can define different sorting to different groups via
3156 @code{gnus-parameters}.  Here is an example to sort an @acronym{NNTP}
3157 group by reverse date to see the latest news at the top and an
3158 @acronym{RSS} group by subject.  In this example, the first group is the
3159 Debian daily news group @code{gmane.linux.debian.user.news} from
3160 news.gmane.org.  The @acronym{RSS} group corresponds to the Debian
3161 weekly news RSS feed
3162 @url{http://packages.debian.org/unstable/newpkg_main.en.rdf},
3163 @xref{RSS}.
3164
3165 @lisp
3166 (setq
3167  gnus-parameters
3168  '(("nntp.*gmane\\.debian\\.user\\.news"
3169     (gnus-show-threads nil)
3170     (gnus-article-sort-functions '((not gnus-article-sort-by-date)))
3171     (gnus-use-adaptive-scoring nil)
3172     (gnus-use-scoring nil))
3173    ("nnrss.*debian"
3174     (gnus-show-threads nil)
3175     (gnus-article-sort-functions 'gnus-article-sort-by-subject)
3176     (gnus-use-adaptive-scoring nil)
3177     (gnus-use-scoring t)
3178     (gnus-score-find-score-files-function 'gnus-score-find-single)
3179     (gnus-summary-line-format "%U%R%z%d %I%(%[ %s %]%)\n"))))
3180 @end lisp
3181
3182
3183 @node Listing Groups
3184 @section Listing Groups
3185 @cindex group listing
3186
3187 These commands all list various slices of the groups available.
3188
3189 @table @kbd
3190
3191 @item l
3192 @itemx A s
3193 @kindex A s (Group)
3194 @kindex l (Group)
3195 @findex gnus-group-list-groups
3196 List all groups that have unread articles
3197 (@code{gnus-group-list-groups}).  If the numeric prefix is used, this
3198 command will list only groups of level ARG and lower.  By default, it
3199 only lists groups of level five (i.e.,
3200 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed
3201 groups).
3202
3203 @item L
3204 @itemx A u
3205 @kindex A u (Group)
3206 @kindex L (Group)
3207 @findex gnus-group-list-all-groups
3208 List all groups, whether they have unread articles or not
3209 (@code{gnus-group-list-all-groups}).  If the numeric prefix is used,
3210 this command will list only groups of level ARG and lower.  By default,
3211 it lists groups of level seven or lower (i.e., just subscribed and
3212 unsubscribed groups).
3213
3214 @item A l
3215 @kindex A l (Group)
3216 @findex gnus-group-list-level
3217 List all unread groups on a specific level
3218 (@code{gnus-group-list-level}).  If given a prefix, also list the groups
3219 with no unread articles.
3220
3221 @item A k
3222 @kindex A k (Group)
3223 @findex gnus-group-list-killed
3224 List all killed groups (@code{gnus-group-list-killed}).  If given a
3225 prefix argument, really list all groups that are available, but aren't
3226 currently (un)subscribed.  This could entail reading the active file
3227 from the server.
3228
3229 @item A z
3230 @kindex A z (Group)
3231 @findex gnus-group-list-zombies
3232 List all zombie groups (@code{gnus-group-list-zombies}).
3233
3234 @item A m
3235 @kindex A m (Group)
3236 @findex gnus-group-list-matching
3237 List all unread, subscribed groups with names that match a regexp
3238 (@code{gnus-group-list-matching}).
3239
3240 @item A M
3241 @kindex A M (Group)
3242 @findex gnus-group-list-all-matching
3243 List groups that match a regexp (@code{gnus-group-list-all-matching}).
3244
3245 @item A A
3246 @kindex A A (Group)
3247 @findex gnus-group-list-active
3248 List absolutely all groups in the active file(s) of the
3249 server(s) you are connected to (@code{gnus-group-list-active}).  This
3250 might very well take quite a while.  It might actually be a better idea
3251 to do a @kbd{A M} to list all matching, and just give @samp{.} as the
3252 thing to match on.  Also note that this command may list groups that
3253 don't exist (yet)---these will be listed as if they were killed groups.
3254 Take the output with some grains of salt.
3255
3256 @item A a
3257 @kindex A a (Group)
3258 @findex gnus-group-apropos
3259 List all groups that have names that match a regexp
3260 (@code{gnus-group-apropos}).
3261
3262 @item A d
3263 @kindex A d (Group)
3264 @findex gnus-group-description-apropos
3265 List all groups that have names or descriptions that match a regexp
3266 (@code{gnus-group-description-apropos}).
3267
3268 @item A c
3269 @kindex A c (Group)
3270 @findex gnus-group-list-cached
3271 List all groups with cached articles (@code{gnus-group-list-cached}).
3272
3273 @item A ?
3274 @kindex A ? (Group)
3275 @findex gnus-group-list-dormant
3276 List all groups with dormant articles (@code{gnus-group-list-dormant}).
3277
3278 @item A /
3279 @kindex A / (Group)
3280 @findex gnus-group-list-limit
3281 List groups limited within the current selection
3282 (@code{gnus-group-list-limit}).
3283
3284 @item A f
3285 @kindex A f (Group)
3286 @findex gnus-group-list-flush
3287 Flush groups from the current selection (@code{gnus-group-list-flush}).
3288
3289 @item A p
3290 @kindex A p (Group)
3291 @findex gnus-group-list-plus
3292 List groups plus the current selection (@code{gnus-group-list-plus}).
3293
3294 @end table
3295
3296 @vindex gnus-permanently-visible-groups
3297 @cindex visible group parameter
3298 Groups that match the @code{gnus-permanently-visible-groups} regexp will
3299 always be shown, whether they have unread articles or not.  You can also
3300 add the @code{visible} element to the group parameters in question to
3301 get the same effect.
3302
3303 @vindex gnus-list-groups-with-ticked-articles
3304 Groups that have just ticked articles in it are normally listed in the
3305 group buffer.  If @code{gnus-list-groups-with-ticked-articles} is
3306 @code{nil}, these groups will be treated just like totally empty
3307 groups.  It is @code{t} by default.
3308
3309
3310 @node Sorting Groups
3311 @section Sorting Groups
3312 @cindex sorting groups
3313
3314 @kindex C-c C-s (Group)
3315 @findex gnus-group-sort-groups
3316 @vindex gnus-group-sort-function
3317 The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
3318 group buffer according to the function(s) given by the
3319 @code{gnus-group-sort-function} variable.  Available sorting functions
3320 include:
3321
3322 @table @code
3323
3324 @item gnus-group-sort-by-alphabet
3325 @findex gnus-group-sort-by-alphabet
3326 Sort the group names alphabetically.  This is the default.
3327
3328 @item gnus-group-sort-by-real-name
3329 @findex gnus-group-sort-by-real-name
3330 Sort the group alphabetically on the real (unprefixed) group names.
3331
3332 @item gnus-group-sort-by-level
3333 @findex gnus-group-sort-by-level
3334 Sort by group level.
3335
3336 @item gnus-group-sort-by-score
3337 @findex gnus-group-sort-by-score
3338 Sort by group score.  @xref{Group Score}.
3339
3340 @item gnus-group-sort-by-rank
3341 @findex gnus-group-sort-by-rank
3342 Sort by group score and then the group level.  The level and the score
3343 are, when taken together, the group's @dfn{rank}.  @xref{Group Score}.
3344
3345 @item gnus-group-sort-by-unread
3346 @findex gnus-group-sort-by-unread
3347 Sort by number of unread articles.
3348
3349 @item gnus-group-sort-by-method
3350 @findex gnus-group-sort-by-method
3351 Sort alphabetically on the select method.
3352
3353 @item gnus-group-sort-by-server
3354 @findex gnus-group-sort-by-server
3355 Sort alphabetically on the Gnus server name.
3356
3357
3358 @end table
3359
3360 @code{gnus-group-sort-function} can also be a list of sorting
3361 functions.  In that case, the most significant sort key function must be
3362 the last one.
3363
3364
3365 There are also a number of commands for sorting directly according to
3366 some sorting criteria:
3367
3368 @table @kbd
3369 @item G S a
3370 @kindex G S a (Group)
3371 @findex gnus-group-sort-groups-by-alphabet
3372 Sort the group buffer alphabetically by group name
3373 (@code{gnus-group-sort-groups-by-alphabet}).
3374
3375 @item G S u
3376 @kindex G S u (Group)
3377 @findex gnus-group-sort-groups-by-unread
3378 Sort the group buffer by the number of unread articles
3379 (@code{gnus-group-sort-groups-by-unread}).
3380
3381 @item G S l
3382 @kindex G S l (Group)
3383 @findex gnus-group-sort-groups-by-level
3384 Sort the group buffer by group level
3385 (@code{gnus-group-sort-groups-by-level}).
3386
3387 @item G S v
3388 @kindex G S v (Group)
3389 @findex gnus-group-sort-groups-by-score
3390 Sort the group buffer by group score
3391 (@code{gnus-group-sort-groups-by-score}).  @xref{Group Score}.
3392
3393 @item G S r
3394 @kindex G S r (Group)
3395 @findex gnus-group-sort-groups-by-rank
3396 Sort the group buffer by group rank
3397 (@code{gnus-group-sort-groups-by-rank}).  @xref{Group Score}.
3398
3399 @item G S m
3400 @kindex G S m (Group)
3401 @findex gnus-group-sort-groups-by-method
3402 Sort the group buffer alphabetically by back end name@*
3403 (@code{gnus-group-sort-groups-by-method}).
3404
3405 @item G S n
3406 @kindex G S n (Group)
3407 @findex gnus-group-sort-groups-by-real-name
3408 Sort the group buffer alphabetically by real (unprefixed) group name
3409 (@code{gnus-group-sort-groups-by-real-name}).
3410
3411 @end table
3412
3413 All the commands below obey the process/prefix convention
3414 (@pxref{Process/Prefix}).
3415
3416 When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
3417 commands will sort in reverse order.
3418
3419 You can also sort a subset of the groups:
3420
3421 @table @kbd
3422 @item G P a
3423 @kindex G P a (Group)
3424 @findex gnus-group-sort-selected-groups-by-alphabet
3425 Sort the groups alphabetically by group name
3426 (@code{gnus-group-sort-selected-groups-by-alphabet}).
3427
3428 @item G P u
3429 @kindex G P u (Group)
3430 @findex gnus-group-sort-selected-groups-by-unread
3431 Sort the groups by the number of unread articles
3432 (@code{gnus-group-sort-selected-groups-by-unread}).
3433
3434 @item G P l
3435 @kindex G P l (Group)
3436 @findex gnus-group-sort-selected-groups-by-level
3437 Sort the groups by group level
3438 (@code{gnus-group-sort-selected-groups-by-level}).
3439
3440 @item G P v
3441 @kindex G P v (Group)
3442 @findex gnus-group-sort-selected-groups-by-score
3443 Sort the groups by group score
3444 (@code{gnus-group-sort-selected-groups-by-score}).  @xref{Group Score}.
3445
3446 @item G P r
3447 @kindex G P r (Group)
3448 @findex gnus-group-sort-selected-groups-by-rank
3449 Sort the groups by group rank
3450 (@code{gnus-group-sort-selected-groups-by-rank}).  @xref{Group Score}.
3451
3452 @item G P m
3453 @kindex G P m (Group)
3454 @findex gnus-group-sort-selected-groups-by-method
3455 Sort the groups alphabetically by back end name@*
3456 (@code{gnus-group-sort-selected-groups-by-method}).
3457
3458 @item G P n
3459 @kindex G P n (Group)
3460 @findex gnus-group-sort-selected-groups-by-real-name
3461 Sort the groups alphabetically by real (unprefixed) group name
3462 (@code{gnus-group-sort-selected-groups-by-real-name}).
3463
3464 @item G P s
3465 @kindex G P s (Group)
3466 @findex gnus-group-sort-selected-groups
3467 Sort the groups according to @code{gnus-group-sort-function}.
3468
3469 @end table
3470
3471 And finally, note that you can use @kbd{C-k} and @kbd{C-y} to manually
3472 move groups around.
3473
3474
3475 @node Group Maintenance
3476 @section Group Maintenance
3477 @cindex bogus groups
3478
3479 @table @kbd
3480 @item b
3481 @kindex b (Group)
3482 @findex gnus-group-check-bogus-groups
3483 Find bogus groups and delete them
3484 (@code{gnus-group-check-bogus-groups}).
3485
3486 @item F
3487 @kindex F (Group)
3488 @findex gnus-group-find-new-groups
3489 Find new groups and process them (@code{gnus-group-find-new-groups}).
3490 With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
3491 for new groups.  With 2 @kbd{C-u}'s, use most complete method possible
3492 to query the server for new groups, and subscribe the new groups as
3493 zombies.
3494
3495 @item C-c C-x
3496 @kindex C-c C-x (Group)
3497 @findex gnus-group-expire-articles
3498 @cindex expiring mail
3499 Run all expirable articles in the current group through the expiry
3500 process (if any) (@code{gnus-group-expire-articles}).  That is, delete
3501 all expirable articles in the group that have been around for a while.
3502 (@pxref{Expiring Mail}).
3503
3504 @item C-c C-M-x
3505 @kindex C-c C-M-x (Group)
3506 @findex gnus-group-expire-all-groups
3507 @cindex expiring mail
3508 Run all expirable articles in all groups through the expiry process
3509 (@code{gnus-group-expire-all-groups}).
3510
3511 @end table
3512
3513
3514 @node Browse Foreign Server
3515 @section Browse Foreign Server
3516 @cindex foreign servers
3517 @cindex browsing servers
3518
3519 @table @kbd
3520 @item B
3521 @kindex B (Group)
3522 @findex gnus-group-browse-foreign-server
3523 You will be queried for a select method and a server name.  Gnus will
3524 then attempt to contact this server and let you browse the groups there
3525 (@code{gnus-group-browse-foreign-server}).
3526 @end table
3527
3528 @findex gnus-browse-mode
3529 A new buffer with a list of available groups will appear.  This buffer
3530 will use the @code{gnus-browse-mode}.  This buffer looks a bit (well,
3531 a lot) like a normal group buffer.
3532
3533 Here's a list of keystrokes available in the browse mode:
3534
3535 @table @kbd
3536 @item n
3537 @kindex n (Browse)
3538 @findex gnus-group-next-group
3539 Go to the next group (@code{gnus-group-next-group}).
3540
3541 @item p
3542 @kindex p (Browse)
3543 @findex gnus-group-prev-group
3544 Go to the previous group (@code{gnus-group-prev-group}).
3545
3546 @item SPACE
3547 @kindex SPACE (Browse)
3548 @findex gnus-browse-read-group
3549 Enter the current group and display the first article
3550 (@code{gnus-browse-read-group}).
3551
3552 @item RET
3553 @kindex RET (Browse)
3554 @findex gnus-browse-select-group
3555 Enter the current group (@code{gnus-browse-select-group}).
3556
3557 @item u
3558 @kindex u (Browse)
3559 @findex gnus-browse-unsubscribe-current-group
3560 Unsubscribe to the current group, or, as will be the case here,
3561 subscribe to it (@code{gnus-browse-unsubscribe-current-group}).
3562
3563 @item l
3564 @itemx q
3565 @kindex q (Browse)
3566 @kindex l (Browse)
3567 @findex gnus-browse-exit
3568 Exit browse mode (@code{gnus-browse-exit}).
3569
3570 @item d
3571 @kindex d (Browse)
3572 @findex gnus-browse-describe-group
3573 Describe the current group (@code{gnus-browse-describe-group}).
3574
3575 @item ?
3576 @kindex ? (Browse)
3577 @findex gnus-browse-describe-briefly
3578 Describe browse mode briefly (well, there's not much to describe, is
3579 there) (@code{gnus-browse-describe-briefly}).
3580 @end table
3581
3582
3583 @node Exiting Gnus
3584 @section Exiting Gnus
3585 @cindex exiting Gnus
3586
3587 Yes, Gnus is ex(c)iting.
3588
3589 @table @kbd
3590 @item z
3591 @kindex z (Group)
3592 @findex gnus-group-suspend
3593 Suspend Gnus (@code{gnus-group-suspend}).  This doesn't really exit Gnus,
3594 but it kills all buffers except the Group buffer.  I'm not sure why this
3595 is a gain, but then who am I to judge?
3596
3597 @item q
3598 @kindex q (Group)
3599 @findex gnus-group-exit
3600 @c @icon{gnus-group-exit}
3601 Quit Gnus (@code{gnus-group-exit}).
3602
3603 @item Q
3604 @kindex Q (Group)
3605 @findex gnus-group-quit
3606 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
3607 The dribble file will be saved, though (@pxref{Auto Save}).
3608 @end table
3609
3610 @vindex gnus-exit-gnus-hook
3611 @vindex gnus-suspend-gnus-hook
3612 @vindex gnus-after-exiting-gnus-hook
3613 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
3614 @code{gnus-exit-gnus-hook} is called when you quit Gnus, while
3615 @code{gnus-after-exiting-gnus-hook} is called as the final item when
3616 exiting Gnus.
3617
3618 Note:
3619
3620 @quotation
3621 Miss Lisa Cannifax, while sitting in English class, felt her feet go
3622 numbly heavy and herself fall into a hazy trance as the boy sitting
3623 behind her drew repeated lines with his pencil across the back of her
3624 plastic chair.
3625 @end quotation
3626
3627
3628 @node Group Topics
3629 @section Group Topics
3630 @cindex topics
3631
3632 If you read lots and lots of groups, it might be convenient to group
3633 them hierarchically according to topics.  You put your Emacs groups over
3634 here, your sex groups over there, and the rest (what, two groups or so?)
3635 you put in some misc section that you never bother with anyway.  You can
3636 even group the Emacs sex groups as a sub-topic to either the Emacs
3637 groups or the sex groups---or both!  Go wild!
3638
3639 @iftex
3640 @iflatex
3641 \gnusfigure{Group Topics}{400}{
3642 \put(75,50){\epsfig{figure=ps/group-topic,height=9cm}}
3643 }
3644 @end iflatex
3645 @end iftex
3646
3647 Here's an example:
3648
3649 @example
3650 Gnus
3651   Emacs -- I wuw it!
3652      3: comp.emacs
3653      2: alt.religion.emacs
3654     Naughty Emacs
3655      452: alt.sex.emacs
3656        0: comp.talk.emacs.recovery
3657   Misc
3658      8: comp.binaries.fractals
3659     13: comp.sources.unix
3660 @end example
3661
3662 @findex gnus-topic-mode
3663 @kindex t (Group)
3664 To get this @emph{fab} functionality you simply turn on (ooh!) the
3665 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer.  (This
3666 is a toggling command.)
3667
3668 Go ahead, just try it.  I'll still be here when you get back.  La de
3669 dum@dots{} Nice tune, that@dots{} la la la@dots{} What, you're back?
3670 Yes, and now press @kbd{l}.  There.  All your groups are now listed
3671 under @samp{misc}.  Doesn't that make you feel all warm and fuzzy?
3672 Hot and bothered?
3673
3674 If you want this permanently enabled, you should add that minor mode to
3675 the hook for the group mode.  Put the following line in your
3676 @file{~/.gnus.el} file:
3677
3678 @lisp
3679 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
3680 @end lisp
3681
3682 @menu
3683 * Topic Commands::              Interactive E-Z commands.
3684 * Topic Variables::             How to customize the topics the Lisp Way.
3685 * Topic Sorting::               Sorting each topic individually.
3686 * Topic Topology::              A map of the world.
3687 * Topic Parameters::            Parameters that apply to all groups in a topic.
3688 @end menu
3689
3690
3691 @node Topic Commands
3692 @subsection Topic Commands
3693 @cindex topic commands
3694
3695 When the topic minor mode is turned on, a new @kbd{T} submap will be
3696 available.  In addition, a few of the standard keys change their
3697 definitions slightly.
3698
3699 In general, the following kinds of operations are possible on topics.
3700 First of all, you want to create topics.  Secondly, you want to put
3701 groups in topics and to move them around until you have an order you
3702 like.  The third kind of operation is to show/hide parts of the whole
3703 shebang.  You might want to hide a topic including its subtopics and
3704 groups, to get a better overview of the other groups.
3705
3706 Here is a list of the basic keys that you might need to set up topics
3707 the way you like.
3708
3709 @table @kbd
3710
3711 @item T n
3712 @kindex T n (Topic)
3713 @findex gnus-topic-create-topic
3714 Prompt for a new topic name and create it
3715 (@code{gnus-topic-create-topic}).
3716
3717 @item T TAB
3718 @itemx TAB
3719 @kindex T TAB (Topic)
3720 @kindex TAB (Topic)
3721 @findex gnus-topic-indent
3722 ``Indent'' the current topic so that it becomes a sub-topic of the
3723 previous topic (@code{gnus-topic-indent}).  If given a prefix,
3724 ``un-indent'' the topic instead.
3725
3726 @item M-TAB
3727 @kindex M-TAB (Topic)
3728 @findex gnus-topic-unindent
3729 ``Un-indent'' the current topic so that it becomes a sub-topic of the
3730 parent of its current parent (@code{gnus-topic-unindent}).
3731
3732 @end table
3733
3734 The following two keys can be used to move groups and topics around.
3735 They work like the well-known cut and paste.  @kbd{C-k} is like cut and
3736 @kbd{C-y} is like paste.  Of course, this being Emacs, we use the terms
3737 kill and yank rather than cut and paste.
3738
3739 @table @kbd
3740
3741 @item C-k
3742 @kindex C-k (Topic)
3743 @findex gnus-topic-kill-group
3744 Kill a group or topic (@code{gnus-topic-kill-group}).  All groups in the
3745 topic will be removed along with the topic.
3746
3747 @item C-y
3748 @kindex C-y (Topic)
3749 @findex gnus-topic-yank-group
3750 Yank the previously killed group or topic
3751 (@code{gnus-topic-yank-group}).  Note that all topics will be yanked
3752 before all groups.
3753
3754 So, to move a topic to the beginning of the list of topics, just hit
3755 @kbd{C-k} on it.  This is like the ``cut'' part of cut and paste.  Then,
3756 move the cursor to the beginning of the buffer (just below the ``Gnus''
3757 topic) and hit @kbd{C-y}.  This is like the ``paste'' part of cut and
3758 paste.  Like I said -- E-Z.
3759
3760 You can use @kbd{C-k} and @kbd{C-y} on groups as well as on topics.  So
3761 you can move topics around as well as groups.
3762
3763 @end table
3764
3765 After setting up the topics the way you like them, you might wish to
3766 hide a topic, or to show it again.  That's why we have the following
3767 key.
3768
3769 @table @kbd
3770
3771 @item RET
3772 @kindex RET (Topic)
3773 @findex gnus-topic-select-group
3774 @itemx SPACE
3775 Either select a group or fold a topic (@code{gnus-topic-select-group}).
3776 When you perform this command on a group, you'll enter the group, as
3777 usual.  When done on a topic line, the topic will be folded (if it was
3778 visible) or unfolded (if it was folded already).  So it's basically a
3779 toggling command on topics.  In addition, if you give a numerical
3780 prefix, group on that level (and lower) will be displayed.
3781
3782 @end table
3783
3784 Now for a list of other commands, in no particular order.
3785
3786 @table @kbd
3787
3788 @item T m
3789 @kindex T m (Topic)
3790 @findex gnus-topic-move-group
3791 Move the current group to some other topic
3792 (@code{gnus-topic-move-group}).  This command uses the process/prefix
3793 convention (@pxref{Process/Prefix}).
3794
3795 @item T j
3796 @kindex T j (Topic)
3797 @findex gnus-topic-jump-to-topic
3798 Go to a topic (@code{gnus-topic-jump-to-topic}).
3799
3800 @item T c
3801 @kindex T c (Topic)
3802 @findex gnus-topic-copy-group
3803 Copy the current group to some other topic
3804 (@code{gnus-topic-copy-group}).  This command uses the process/prefix
3805 convention (@pxref{Process/Prefix}).
3806
3807 @item T h
3808 @kindex T h (Topic)
3809 @findex gnus-topic-hide-topic
3810 Hide the current topic (@code{gnus-topic-hide-topic}).  If given
3811 a prefix, hide the topic permanently.
3812
3813 @item T s
3814 @kindex T s (Topic)
3815 @findex gnus-topic-show-topic
3816 Show the current topic (@code{gnus-topic-show-topic}).  If given
3817 a prefix, show the topic permanently.
3818
3819 @item T D
3820 @kindex T D (Topic)
3821 @findex gnus-topic-remove-group
3822 Remove a group from the current topic (@code{gnus-topic-remove-group}).
3823 This command is mainly useful if you have the same group in several
3824 topics and wish to remove it from one of the topics.  You may also
3825 remove a group from all topics, but in that case, Gnus will add it to
3826 the root topic the next time you start Gnus.  In fact, all new groups
3827 (which, naturally, don't belong to any topic) will show up in the root
3828 topic.
3829
3830 This command uses the process/prefix convention
3831 (@pxref{Process/Prefix}).
3832
3833 @item T M
3834 @kindex T M (Topic)
3835 @findex gnus-topic-move-matching
3836 Move all groups that match some regular expression to a topic
3837 (@code{gnus-topic-move-matching}).
3838
3839 @item T C
3840 @kindex T C (Topic)
3841 @findex gnus-topic-copy-matching
3842 Copy all groups that match some regular expression to a topic
3843 (@code{gnus-topic-copy-matching}).
3844
3845 @item T H
3846 @kindex T H (Topic)
3847 @findex gnus-topic-toggle-display-empty-topics
3848 Toggle hiding empty topics
3849 (@code{gnus-topic-toggle-display-empty-topics}).
3850
3851 @item T #
3852 @kindex T # (Topic)
3853 @findex gnus-topic-mark-topic
3854 Mark all groups in the current topic with the process mark
3855 (@code{gnus-topic-mark-topic}).  This command works recursively on
3856 sub-topics unless given a prefix.
3857
3858 @item T M-#
3859 @kindex T M-# (Topic)
3860 @findex gnus-topic-unmark-topic
3861 Remove the process mark from all groups in the current topic
3862 (@code{gnus-topic-unmark-topic}).  This command works recursively on
3863 sub-topics unless given a prefix.
3864
3865 @item C-c C-x
3866 @kindex C-c C-x (Topic)
3867 @findex gnus-topic-expire-articles
3868 @cindex expiring mail
3869 Run all expirable articles in the current group or topic through the
3870 expiry process (if any)
3871 (@code{gnus-topic-expire-articles}).  (@pxref{Expiring Mail}).
3872
3873 @item T r
3874 @kindex T r (Topic)
3875 @findex gnus-topic-rename
3876 Rename a topic (@code{gnus-topic-rename}).
3877
3878 @item T DEL
3879 @kindex T DEL (Topic)
3880 @findex gnus-topic-delete
3881 Delete an empty topic (@code{gnus-topic-delete}).
3882
3883 @item A T
3884 @kindex A T (Topic)
3885 @findex gnus-topic-list-active
3886 List all groups that Gnus knows about in a topics-ified way
3887 (@code{gnus-topic-list-active}).
3888
3889 @item T M-n
3890 @kindex T M-n (Topic)
3891 @findex gnus-topic-goto-next-topic
3892 Go to the next topic (@code{gnus-topic-goto-next-topic}).
3893
3894 @item T M-p
3895 @kindex T M-p (Topic)
3896 @findex gnus-topic-goto-previous-topic
3897 Go to the previous topic (@code{gnus-topic-goto-previous-topic}).
3898
3899 @item G p
3900 @kindex G p (Topic)
3901 @findex gnus-topic-edit-parameters
3902 @cindex group parameters
3903 @cindex topic parameters
3904 @cindex parameters
3905 Edit the topic parameters (@code{gnus-topic-edit-parameters}).
3906 @xref{Topic Parameters}.
3907
3908 @end table
3909
3910
3911 @node Topic Variables
3912 @subsection Topic Variables
3913 @cindex topic variables
3914
3915 The previous section told you how to tell Gnus which topics to display.
3916 This section explains how to tell Gnus what to display about each topic.
3917
3918 @vindex gnus-topic-line-format
3919 The topic lines themselves are created according to the
3920 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
3921 Valid elements are:
3922
3923 @table @samp
3924 @item i
3925 Indentation.
3926 @item n
3927 Topic name.
3928 @item v
3929 Visibility.
3930 @item l
3931 Level.
3932 @item g
3933 Number of groups in the topic.
3934 @item a
3935 Number of unread articles in the topic.
3936 @item A
3937 Number of unread articles in the topic and all its subtopics.
3938 @end table
3939
3940 @vindex gnus-topic-indent-level
3941 Each sub-topic (and the groups in the sub-topics) will be indented with
3942 @code{gnus-topic-indent-level} times the topic level number of spaces.
3943 The default is 2.
3944
3945 @vindex gnus-topic-mode-hook
3946 @code{gnus-topic-mode-hook} is called in topic minor mode buffers.
3947
3948 @vindex gnus-topic-display-empty-topics
3949 The @code{gnus-topic-display-empty-topics} says whether to display even
3950 topics that have no unread articles in them.  The default is @code{t}.
3951
3952
3953 @node Topic Sorting
3954 @subsection Topic Sorting
3955 @cindex topic sorting
3956
3957 You can sort the groups in each topic individually with the following
3958 commands:
3959
3960
3961 @table @kbd
3962 @item T S a
3963 @kindex T S a (Topic)
3964 @findex gnus-topic-sort-groups-by-alphabet
3965 Sort the current topic alphabetically by group name
3966 (@code{gnus-topic-sort-groups-by-alphabet}).
3967
3968 @item T S u
3969 @kindex T S u (Topic)
3970 @findex gnus-topic-sort-groups-by-unread
3971 Sort the current topic by the number of unread articles
3972 (@code{gnus-topic-sort-groups-by-unread}).
3973
3974 @item T S l
3975 @kindex T S l (Topic)
3976 @findex gnus-topic-sort-groups-by-level
3977 Sort the current topic by group level
3978 (@code{gnus-topic-sort-groups-by-level}).
3979
3980 @item T S v
3981 @kindex T S v (Topic)
3982 @findex gnus-topic-sort-groups-by-score
3983 Sort the current topic by group score
3984 (@code{gnus-topic-sort-groups-by-score}).  @xref{Group Score}.
3985
3986 @item T S r
3987 @kindex T S r (Topic)
3988 @findex gnus-topic-sort-groups-by-rank
3989 Sort the current topic by group rank
3990 (@code{gnus-topic-sort-groups-by-rank}).  @xref{Group Score}.
3991
3992 @item T S m
3993 @kindex T S m (Topic)
3994 @findex gnus-topic-sort-groups-by-method
3995 Sort the current topic alphabetically by back end name
3996 (@code{gnus-topic-sort-groups-by-method}).
3997
3998 @item T S e
3999 @kindex T S e (Topic)
4000 @findex gnus-topic-sort-groups-by-server
4001 Sort the current topic alphabetically by server name
4002 (@code{gnus-topic-sort-groups-by-server}).
4003
4004 @item T S s
4005 @kindex T S s (Topic)
4006 @findex gnus-topic-sort-groups
4007 Sort the current topic according to the function(s) given by the
4008 @code{gnus-group-sort-function} variable
4009 (@code{gnus-topic-sort-groups}).
4010
4011 @end table
4012
4013 When given a prefix argument, all these commands will sort in reverse
4014 order.  @xref{Sorting Groups}, for more information about group
4015 sorting.
4016
4017
4018 @node Topic Topology
4019 @subsection Topic Topology
4020 @cindex topic topology
4021 @cindex topology
4022
4023 So, let's have a look at an example group buffer:
4024
4025 @example
4026 @group
4027 Gnus
4028   Emacs -- I wuw it!
4029      3: comp.emacs
4030      2: alt.religion.emacs
4031     Naughty Emacs
4032      452: alt.sex.emacs
4033        0: comp.talk.emacs.recovery
4034   Misc
4035      8: comp.binaries.fractals
4036     13: comp.sources.unix
4037 @end group
4038 @end example
4039
4040 So, here we have one top-level topic (@samp{Gnus}), two topics under
4041 that, and one sub-topic under one of the sub-topics.  (There is always
4042 just one (1) top-level topic).  This topology can be expressed as
4043 follows:
4044
4045 @lisp
4046 (("Gnus" visible)
4047  (("Emacs -- I wuw it!" visible)
4048   (("Naughty Emacs" visible)))
4049  (("Misc" visible)))
4050 @end lisp
4051
4052 @vindex gnus-topic-topology
4053 This is in fact how the variable @code{gnus-topic-topology} would look
4054 for the display above.  That variable is saved in the @file{.newsrc.eld}
4055 file, and shouldn't be messed with manually---unless you really want
4056 to.  Since this variable is read from the @file{.newsrc.eld} file,
4057 setting it in any other startup files will have no effect.
4058
4059 This topology shows what topics are sub-topics of what topics (right),
4060 and which topics are visible.  Two settings are currently
4061 allowed---@code{visible} and @code{invisible}.
4062
4063
4064 @node Topic Parameters
4065 @subsection Topic Parameters
4066 @cindex topic parameters
4067
4068 All groups in a topic will inherit group parameters from the parent
4069 (and ancestor) topic parameters.  All valid group parameters are valid
4070 topic parameters (@pxref{Group Parameters}).  When the agent is
4071 enabled, all agent parameters (See Agent Parameters in @ref{Category
4072 Syntax}) are also valid topic parameters.
4073
4074 In addition, the following parameters are only valid as topic
4075 parameters:
4076
4077 @table @code
4078 @item subscribe
4079 When subscribing new groups by topic (@pxref{Subscription Methods}), the
4080 @code{subscribe} topic parameter says what groups go in what topic.  Its
4081 value should be a regexp to match the groups that should go in that
4082 topic.
4083
4084 @item subscribe-level
4085 When subscribing new groups by topic (see the @code{subscribe} parameter),
4086 the group will be subscribed with the level specified in the
4087 @code{subscribe-level} instead of @code{gnus-level-default-subscribed}.
4088
4089 @end table
4090
4091 Group parameters (of course) override topic parameters, and topic
4092 parameters in sub-topics override topic parameters in super-topics.  You
4093 know.  Normal inheritance rules.  (@dfn{Rules} is here a noun, not a
4094 verb, although you may feel free to disagree with me here.)
4095
4096 @example
4097 @group
4098 Gnus
4099   Emacs
4100      3: comp.emacs
4101      2: alt.religion.emacs
4102    452: alt.sex.emacs
4103     Relief
4104      452: alt.sex.emacs
4105        0: comp.talk.emacs.recovery
4106   Misc
4107      8: comp.binaries.fractals
4108     13: comp.sources.unix
4109    452: alt.sex.emacs
4110 @end group
4111 @end example
4112
4113 The @samp{Emacs} topic has the topic parameter @code{(score-file
4114 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
4115 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
4116 topic parameter @code{(score-file . "emacs.SCORE")}.  In addition,
4117 @* @samp{alt.religion.emacs} has the group parameter @code{(score-file
4118 . "religion.SCORE")}.
4119
4120 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
4121 will get the @file{relief.SCORE} home score file.  If you enter the same
4122 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
4123 score file.  If you enter the group @samp{alt.religion.emacs}, you'll
4124 get the @file{religion.SCORE} home score file.
4125
4126 This seems rather simple and self-evident, doesn't it?  Well, yes.  But
4127 there are some problems, especially with the @code{total-expiry}
4128 parameter.  Say you have a mail group in two topics; one with
4129 @code{total-expiry} and one without.  What happens when you do @kbd{M-x
4130 gnus-expire-all-expirable-groups}?  Gnus has no way of telling which one
4131 of these topics you mean to expire articles from, so anything may
4132 happen.  In fact, I hereby declare that it is @dfn{undefined} what
4133 happens.  You just have to be careful if you do stuff like that.
4134
4135
4136 @node Misc Group Stuff
4137 @section Misc Group Stuff
4138
4139 @menu
4140 * Scanning New Messages::       Asking Gnus to see whether new messages have arrived.
4141 * Group Information::           Information and help on groups and Gnus.
4142 * Group Timestamp::             Making Gnus keep track of when you last read a group.
4143 * File Commands::               Reading and writing the Gnus files.
4144 * Sieve Commands::              Managing Sieve scripts.
4145 @end menu
4146
4147 @table @kbd
4148
4149 @item v
4150 @kindex v (Group)
4151 @cindex keys, reserved for users (Group)
4152 The key @kbd{v} is reserved for users.  You can bind it key to some
4153 function or better use it as a prefix key.  For example:
4154
4155 @lisp
4156 (define-key gnus-group-mode-map (kbd "v j d")
4157   (lambda ()
4158     (interactive)
4159     (gnus-group-jump-to-group "nndraft:drafts")))
4160 @end lisp
4161
4162 On keys reserved for users in Emacs and on keybindings in general
4163 @xref{Keymaps, Keymaps, , emacs, The Emacs Editor}.
4164
4165 @item ^
4166 @kindex ^ (Group)
4167 @findex gnus-group-enter-server-mode
4168 Enter the server buffer (@code{gnus-group-enter-server-mode}).
4169 @xref{Server Buffer}.
4170
4171 @item a
4172 @kindex a (Group)
4173 @findex gnus-group-post-news
4174 Start composing a message (a news by default)
4175 (@code{gnus-group-post-news}).  If given a prefix, post to the group
4176 under the point.  If the prefix is 1, prompt for a group to post to.
4177 Contrary to what the name of this function suggests, the prepared
4178 article might be a mail instead of a news, if a mail group is specified
4179 with the prefix argument.  @xref{Composing Messages}.
4180
4181 @item m
4182 @kindex m (Group)
4183 @findex gnus-group-mail
4184 Mail a message somewhere (@code{gnus-group-mail}).  If given a prefix,
4185 use the posting style of the group under the point.  If the prefix is 1,
4186 prompt for a group name to find the posting style.
4187 @xref{Composing Messages}.
4188
4189 @item i
4190 @kindex i (Group)
4191 @findex gnus-group-news
4192 Start composing a news (@code{gnus-group-news}).  If given a prefix,
4193 post to the group under the point.  If the prefix is 1, prompt
4194 for group to post to.  @xref{Composing Messages}.
4195
4196 This function actually prepares a news even when using mail groups.
4197 This is useful for ``posting'' messages to mail groups without actually
4198 sending them over the network: they're just saved directly to the group
4199 in question.  The corresponding back end must have a request-post method
4200 for this to work though.
4201
4202 @item G z
4203 @kindex G z (Group)
4204 @findex gnus-group-compact-group
4205
4206 Compact the group under point (@code{gnus-group-compact-group}).
4207 Currently implemented only in nnml @pxref{Mail Spool}.  This removes
4208 gaps between article numbers, hence getting a correct total article
4209 count.
4210
4211 @end table
4212
4213 Variables for the group buffer:
4214
4215 @table @code
4216
4217 @item gnus-group-mode-hook
4218 @vindex gnus-group-mode-hook
4219 is called after the group buffer has been
4220 created.
4221
4222 @item gnus-group-prepare-hook
4223 @vindex gnus-group-prepare-hook
4224 is called after the group buffer is
4225 generated.  It may be used to modify the buffer in some strange,
4226 unnatural way.
4227
4228 @item gnus-group-prepared-hook
4229 @vindex gnus-group-prepare-hook
4230 is called as the very last thing after the group buffer has been
4231 generated.  It may be used to move point around, for instance.
4232
4233 @item gnus-permanently-visible-groups
4234 @vindex gnus-permanently-visible-groups
4235 Groups matching this regexp will always be listed in the group buffer,
4236 whether they are empty or not.
4237
4238 @item gnus-group-name-charset-method-alist
4239 @vindex gnus-group-name-charset-method-alist
4240 An alist of method and the charset for group names.  It is used to show
4241 non-@acronym{ASCII} group names.
4242
4243 For example:
4244 @lisp
4245 (setq gnus-group-name-charset-method-alist
4246     '(((nntp "news.com.cn") . cn-gb-2312)))
4247 @end lisp
4248
4249 @item gnus-group-name-charset-group-alist
4250 @cindex UTF-8 group names
4251 @vindex gnus-group-name-charset-group-alist
4252 An alist of regexp of group name and the charset for group names.  It
4253 is used to show non-@acronym{ASCII} group names.  @code{((".*"
4254 utf-8))} is the default value if UTF-8 is supported, otherwise the
4255 default is @code{nil}.
4256
4257 For example:
4258 @lisp
4259 (setq gnus-group-name-charset-group-alist
4260     '(("\\.com\\.cn:" . cn-gb-2312)))
4261 @end lisp
4262
4263 @end table
4264
4265 @node Scanning New Messages
4266 @subsection Scanning New Messages
4267 @cindex new messages
4268 @cindex scanning new news
4269
4270 @table @kbd
4271
4272 @item g
4273 @kindex g (Group)
4274 @findex gnus-group-get-new-news
4275 @c @icon{gnus-group-get-new-news}
4276 Check the server(s) for new articles.  If the numerical prefix is used,
4277 this command will check only groups of level @var{arg} and lower
4278 (@code{gnus-group-get-new-news}).  If given a non-numerical prefix, this
4279 command will force a total re-reading of the active file(s) from the
4280 back end(s).
4281
4282 @item M-g
4283 @kindex M-g (Group)
4284 @findex gnus-group-get-new-news-this-group
4285 @vindex gnus-goto-next-group-when-activating
4286 @c @icon{gnus-group-get-new-news-this-group}
4287 Check whether new articles have arrived in the current group
4288 (@code{gnus-group-get-new-news-this-group}).
4289 @code{gnus-goto-next-group-when-activating} says whether this command is
4290 to move point to the next group or not.  It is @code{t} by default.
4291
4292 @findex gnus-activate-all-groups
4293 @cindex activating groups
4294 @item C-c M-g
4295 @kindex C-c M-g (Group)
4296 Activate absolutely all groups (@code{gnus-activate-all-groups}).
4297
4298 @item R
4299 @kindex R (Group)
4300 @cindex restarting
4301 @findex gnus-group-restart
4302 Restart Gnus (@code{gnus-group-restart}).  This saves the @file{.newsrc}
4303 file(s), closes the connection to all servers, clears up all run-time
4304 Gnus variables, and then starts Gnus all over again.
4305
4306 @end table
4307
4308 @vindex gnus-get-new-news-hook
4309 @code{gnus-get-new-news-hook} is run just before checking for new news.
4310
4311 @vindex gnus-after-getting-new-news-hook
4312 @code{gnus-after-getting-new-news-hook} is run after checking for new
4313 news.
4314
4315
4316 @node Group Information
4317 @subsection Group Information
4318 @cindex group information
4319 @cindex information on groups
4320
4321 @table @kbd
4322
4323
4324 @item H f
4325 @kindex H f (Group)
4326 @findex gnus-group-fetch-faq
4327 @vindex gnus-group-faq-directory
4328 @cindex FAQ
4329 @cindex ange-ftp
4330 Try to fetch the @acronym{FAQ} for the current group
4331 (@code{gnus-group-fetch-faq}).  Gnus will try to get the @acronym{FAQ}
4332 from @code{gnus-group-faq-directory}, which is usually a directory on
4333 a remote machine.  This variable can also be a list of directories.
4334 In that case, giving a prefix to this command will allow you to choose
4335 between the various sites.  @code{ange-ftp} (or @code{efs}) will be
4336 used for fetching the file.
4337
4338 If fetching from the first site is unsuccessful, Gnus will attempt to go
4339 through @code{gnus-group-faq-directory} and try to open them one by one.
4340
4341 @item H c
4342 @kindex H c (Group)
4343 @findex gnus-group-fetch-charter
4344 @vindex gnus-group-charter-alist
4345 @cindex charter
4346 Try to open the charter for the current group in a web browser
4347 (@code{gnus-group-fetch-charter}).  Query for a group if given a
4348 prefix argument.
4349
4350 Gnus will use @code{gnus-group-charter-alist} to find the location of
4351 the charter.  If no location is known, Gnus will fetch the control
4352 messages for the group, which in some cases includes the charter.
4353
4354 @item H C
4355 @kindex H C (Group)
4356 @findex gnus-group-fetch-control
4357 @vindex gnus-group-fetch-control-use-browse-url
4358 @cindex control message
4359 Fetch the control messages for the group from the archive at
4360 @code{ftp.isc.org} (@code{gnus-group-fetch-control}).  Query for a
4361 group if given a prefix argument.
4362
4363 If @code{gnus-group-fetch-control-use-browse-url} is non-@code{nil},
4364 Gnus will open the control messages in a browser using
4365 @code{browse-url}.  Otherwise they are fetched using @code{ange-ftp}
4366 and displayed in an ephemeral group.
4367
4368 Note that the control messages are compressed.  To use this command
4369 you need to turn on @code{auto-compression-mode} (@pxref{Compressed
4370 Files, ,Compressed Files, emacs, The Emacs Manual}).
4371
4372 @item H d
4373 @itemx C-c C-d
4374 @c @icon{gnus-group-describe-group}
4375 @kindex H d (Group)
4376 @kindex C-c C-d (Group)
4377 @cindex describing groups
4378 @cindex group description
4379 @findex gnus-group-describe-group
4380 Describe the current group (@code{gnus-group-describe-group}).  If given
4381 a prefix, force Gnus to re-read the description from the server.
4382
4383 @item M-d
4384 @kindex M-d (Group)
4385 @findex gnus-group-describe-all-groups
4386 Describe all groups (@code{gnus-group-describe-all-groups}).  If given a
4387 prefix, force Gnus to re-read the description file from the server.
4388
4389 @item H v
4390 @itemx V
4391 @kindex V (Group)
4392 @kindex H v (Group)
4393 @cindex version
4394 @findex gnus-version
4395 Display current Gnus version numbers (@code{gnus-version}).
4396
4397 @item ?
4398 @kindex ? (Group)
4399 @findex gnus-group-describe-briefly
4400 Give a very short help message (@code{gnus-group-describe-briefly}).
4401
4402 @item C-c C-i
4403 @kindex C-c C-i (Group)
4404 @cindex info
4405 @cindex manual
4406 @findex gnus-info-find-node
4407 Go to the Gnus info node (@code{gnus-info-find-node}).
4408 @end table
4409
4410
4411 @node Group Timestamp
4412 @subsection Group Timestamp
4413 @cindex timestamps
4414 @cindex group timestamps
4415
4416 It can be convenient to let Gnus keep track of when you last read a
4417 group.  To set the ball rolling, you should add
4418 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
4419
4420 @lisp
4421 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
4422 @end lisp
4423
4424 After doing this, each time you enter a group, it'll be recorded.
4425
4426 This information can be displayed in various ways---the easiest is to
4427 use the @samp{%d} spec in the group line format:
4428
4429 @lisp
4430 (setq gnus-group-line-format
4431       "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
4432 @end lisp
4433
4434 This will result in lines looking like:
4435
4436 @example
4437 *        0: mail.ding                                19961002T012943
4438          0: custom                                   19961002T012713
4439 @end example
4440
4441 As you can see, the date is displayed in compact ISO 8601 format.  This
4442 may be a bit too much, so to just display the date, you could say
4443 something like:
4444
4445 @lisp
4446 (setq gnus-group-line-format
4447       "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
4448 @end lisp
4449
4450 If you would like greater control of the time format, you can use a
4451 user-defined format spec.  Something like the following should do the
4452 trick:
4453
4454 @lisp
4455 (setq gnus-group-line-format
4456       "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n")
4457 (defun gnus-user-format-function-d (headers)
4458   (let ((time (gnus-group-timestamp gnus-tmp-group)))
4459     (if time
4460         (format-time-string "%b %d  %H:%M" time)
4461       "")))
4462 @end lisp
4463
4464
4465 @node File Commands
4466 @subsection File Commands
4467 @cindex file commands
4468
4469 @table @kbd
4470
4471 @item r
4472 @kindex r (Group)
4473 @findex gnus-group-read-init-file
4474 @vindex gnus-init-file
4475 @cindex reading init file
4476 Re-read the init file (@code{gnus-init-file}, which defaults to
4477 @file{~/.gnus.el}) (@code{gnus-group-read-init-file}).
4478
4479 @item s
4480 @kindex s (Group)
4481 @findex gnus-group-save-newsrc
4482 @cindex saving .newsrc
4483 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
4484 (@code{gnus-group-save-newsrc}).  If given a prefix, force saving the
4485 file(s) whether Gnus thinks it is necessary or not.
4486
4487 @c @item Z
4488 @c @kindex Z (Group)
4489 @c @findex gnus-group-clear-dribble
4490 @c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
4491
4492 @end table
4493
4494
4495 @node Sieve Commands
4496 @subsection Sieve Commands
4497 @cindex group sieve commands
4498
4499 Sieve is a server-side mail filtering language.  In Gnus you can use
4500 the @code{sieve} group parameter (@pxref{Group Parameters}) to specify
4501 sieve rules that should apply to each group.  Gnus provides two
4502 commands to translate all these group parameters into a proper Sieve
4503 script that can be transfered to the server somehow.
4504
4505 @vindex gnus-sieve-file
4506 @vindex gnus-sieve-region-start
4507 @vindex gnus-sieve-region-end
4508 The generated Sieve script is placed in @code{gnus-sieve-file} (by
4509 default @file{~/.sieve}).  The Sieve code that Gnus generate is placed
4510 between two delimiters, @code{gnus-sieve-region-start} and
4511 @code{gnus-sieve-region-end}, so you may write additional Sieve code
4512 outside these delimiters that will not be removed the next time you
4513 regenerate the Sieve script.
4514
4515 @vindex gnus-sieve-crosspost
4516 The variable @code{gnus-sieve-crosspost} controls how the Sieve script
4517 is generated.  If it is non-@code{nil} (the default) articles is
4518 placed in all groups that have matching rules, otherwise the article
4519 is only placed in the group with the first matching rule.  For
4520 example, the group parameter @samp{(sieve address "sender"
4521 "owner-ding@@hpc.uh.edu")} will generate the following piece of Sieve
4522 code if @code{gnus-sieve-crosspost} is @code{nil}.  (When
4523 @code{gnus-sieve-crosspost} is non-@code{nil}, it looks the same
4524 except that the line containing the call to @code{stop} is removed.)
4525
4526 @example
4527 if address "sender" "owner-ding@@hpc.uh.edu" @{
4528         fileinto "INBOX.ding";
4529         stop;
4530 @}
4531 @end example
4532
4533 @xref{Top, Emacs Sieve, Top, sieve, Emacs Sieve}.
4534
4535 @table @kbd
4536
4537 @item D g
4538 @kindex D g (Group)
4539 @findex gnus-sieve-generate
4540 @vindex gnus-sieve-file
4541 @cindex generating sieve script
4542 Regenerate a Sieve script from the @code{sieve} group parameters and
4543 put you into the @code{gnus-sieve-file} without saving it.
4544
4545 @item D u
4546 @kindex D u (Group)
4547 @findex gnus-sieve-update
4548 @vindex gnus-sieve-file
4549 @cindex updating sieve script
4550 Regenerates the Gnus managed part of @code{gnus-sieve-file} using the
4551 @code{sieve} group parameters, save the file and upload it to the
4552 server using the @code{sieveshell} program.
4553
4554 @end table
4555
4556
4557 @node Summary Buffer
4558 @chapter Summary Buffer
4559 @cindex summary buffer
4560
4561 A line for each article is displayed in the summary buffer.  You can
4562 move around, read articles, post articles and reply to articles.
4563
4564 The most common way to a summary buffer is to select a group from the
4565 group buffer (@pxref{Selecting a Group}).
4566
4567 You can have as many summary buffers open as you wish.
4568
4569 You can customize the Summary Mode tool bar, see @kbd{M-x
4570 customize-apropos RET gnus-summary-tool-bar}.  This feature is only
4571 available in Emacs.
4572
4573 @kindex v (Summary)
4574 @cindex keys, reserved for users (Summary)
4575 The key @kbd{v} is reserved for users.  You can bind it key to some
4576 function or better use it as a prefix key.  For example:
4577 @lisp
4578 (define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
4579 @end lisp
4580
4581 @menu
4582 * Summary Buffer Format::       Deciding how the summary buffer is to look.
4583 * Summary Maneuvering::         Moving around the summary buffer.
4584 * Choosing Articles::           Reading articles.
4585 * Paging the Article::          Scrolling the current article.
4586 * Reply Followup and Post::     Posting articles.
4587 * Delayed Articles::            Send articles at a later time.
4588 * Marking Articles::            Marking articles as read, expirable, etc.
4589 * Limiting::                    You can limit the summary buffer.
4590 * Threading::                   How threads are made.
4591 * Sorting the Summary Buffer::  How articles and threads are sorted.
4592 * Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
4593 * Article Caching::             You may store articles in a cache.
4594 * Persistent Articles::         Making articles expiry-resistant.
4595 * Article Backlog::             Having already read articles hang around.
4596 * Saving Articles::             Ways of customizing article saving.
4597 * Decoding Articles::           Gnus can treat series of (uu)encoded articles.
4598 * Article Treatment::           The article buffer can be mangled at will.
4599 * MIME Commands::               Doing MIMEy things with the articles.
4600 * Charsets::                    Character set issues.
4601 * Article Commands::            Doing various things with the article buffer.
4602 * Summary Sorting::             Sorting the summary buffer in various ways.
4603 * Finding the Parent::          No child support? Get the parent.
4604 * Alternative Approaches::      Reading using non-default summaries.
4605 * Tree Display::                A more visual display of threads.
4606 * Mail Group Commands::         Some commands can only be used in mail groups.
4607 * Various Summary Stuff::       What didn't fit anywhere else.
4608 * Exiting the Summary Buffer::  Returning to the Group buffer,
4609                                 or reselecting the current group.
4610 * Crosspost Handling::          How crossposted articles are dealt with.
4611 * Duplicate Suppression::       An alternative when crosspost handling fails.
4612 * Security::                    Decrypt and Verify.
4613 * Mailing List::                Mailing list minor mode.
4614 @end menu
4615
4616
4617 @node Summary Buffer Format
4618 @section Summary Buffer Format
4619 @cindex summary buffer format
4620
4621 @iftex
4622 @iflatex
4623 \gnusfigure{The Summary Buffer}{180}{
4624 \put(0,0){\epsfig{figure=ps/summary,width=7.5cm}}
4625 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-article,width=7.5cm}}}
4626 }
4627 @end iflatex
4628 @end iftex
4629
4630 @menu
4631 * Summary Buffer Lines::        You can specify how summary lines should look.
4632 * To From Newsgroups::          How to not display your own name.
4633 * Summary Buffer Mode Line::    You can say how the mode line should look.
4634 * Summary Highlighting::        Making the summary buffer all pretty and nice.
4635 @end menu
4636
4637 @findex mail-extract-address-components
4638 @findex gnus-extract-address-components
4639 @vindex gnus-extract-address-components
4640 Gnus will use the value of the @code{gnus-extract-address-components}
4641 variable as a function for getting the name and address parts of a
4642 @code{From} header.  Two pre-defined functions exist:
4643 @code{gnus-extract-address-components}, which is the default, quite
4644 fast, and too simplistic solution; and
4645 @code{mail-extract-address-components}, which works very nicely, but is
4646 slower.  The default function will return the wrong answer in 5% of the
4647 cases.  If this is unacceptable to you, use the other function instead:
4648
4649 @lisp
4650 (setq gnus-extract-address-components
4651       'mail-extract-address-components)
4652 @end lisp
4653
4654 @vindex gnus-summary-same-subject
4655 @code{gnus-summary-same-subject} is a string indicating that the current
4656 article has the same subject as the previous.  This string will be used
4657 with those specs that require it.  The default is @code{""}.
4658
4659
4660 @node Summary Buffer Lines
4661 @subsection Summary Buffer Lines
4662
4663 @vindex gnus-summary-line-format
4664 You can change the format of the lines in the summary buffer by changing
4665 the @code{gnus-summary-line-format} variable.  It works along the same
4666 lines as a normal @code{format} string, with some extensions
4667 (@pxref{Formatting Variables}).
4668
4669 There should always be a colon or a point position marker on the line;
4670 the cursor always moves to the point position marker or the colon after
4671 performing an operation.  (Of course, Gnus wouldn't be Gnus if it wasn't
4672 possible to change this.  Just write a new function
4673 @code{gnus-goto-colon} which does whatever you like with the cursor.)
4674 @xref{Positioning Point}.
4675
4676 The default string is @samp{%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n}.
4677
4678 The following format specification characters and extended format
4679 specification(s) are understood:
4680
4681 @table @samp
4682 @item N
4683 Article number.
4684 @item S
4685 Subject string.  List identifiers stripped,
4686 @code{gnus-list-identifiers}.  @xref{Article Hiding}.
4687 @item s
4688 Subject if the article is the root of the thread or the previous article
4689 had a different subject, @code{gnus-summary-same-subject} otherwise.
4690 (@code{gnus-summary-same-subject} defaults to @code{""}.)
4691 @item F
4692 Full @code{From} header.
4693 @item n
4694 The name (from the @code{From} header).
4695 @item f
4696 The name, @code{To} header or the @code{Newsgroups} header (@pxref{To
4697 From Newsgroups}).
4698 @item a
4699 The name (from the @code{From} header).  This differs from the @code{n}
4700 spec in that it uses the function designated by the
4701 @code{gnus-extract-address-components} variable, which is slower, but
4702 may be more thorough.
4703 @item A
4704 The address (from the @code{From} header).  This works the same way as
4705 the @code{a} spec.
4706 @item L
4707 Number of lines in the article.
4708 @item c
4709 Number of characters in the article.  This specifier is not supported
4710 in some methods (like nnfolder).
4711 @item k
4712 Pretty-printed version of the number of characters in the article;
4713 for example, @samp{1.2k} or @samp{0.4M}.
4714 @item I
4715 Indentation based on thread level (@pxref{Customizing Threading}).
4716 @item B
4717 A complex trn-style thread tree, showing response-connecting trace
4718 lines.  A thread could be drawn like this:
4719
4720 @example
4721 >
4722 +->
4723 | +->
4724 | | \->
4725 | |   \->
4726 | \->
4727 +->
4728 \->
4729 @end example
4730
4731 You can customize the appearance with the following options.  Note
4732 that it is possible to make the thread display look really neat by
4733 replacing the default @acronym{ASCII} characters with graphic
4734 line-drawing glyphs.
4735 @table @code
4736 @item gnus-sum-thread-tree-root
4737 @vindex gnus-sum-thread-tree-root
4738 Used for the root of a thread.  If @code{nil}, use subject
4739 instead.  The default is @samp{> }.
4740
4741 @item gnus-sum-thread-tree-false-root
4742 @vindex gnus-sum-thread-tree-false-root
4743 Used for the false root of a thread (@pxref{Loose Threads}).  If
4744 @code{nil}, use subject instead.  The default is @samp{> }.
4745
4746 @item gnus-sum-thread-tree-single-indent
4747 @vindex gnus-sum-thread-tree-single-indent
4748 Used for a thread with just one message.  If @code{nil}, use subject
4749 instead.  The default is @samp{}.
4750
4751 @item gnus-sum-thread-tree-vertical
4752 @vindex gnus-sum-thread-tree-vertical
4753 Used for drawing a vertical line.  The default is @samp{| }.
4754
4755 @item gnus-sum-thread-tree-indent
4756 @vindex gnus-sum-thread-tree-indent
4757 Used for indenting.  The default is @samp{  }.
4758
4759 @item gnus-sum-thread-tree-leaf-with-other
4760 @vindex gnus-sum-thread-tree-leaf-with-other
4761 Used for a leaf with brothers.  The default is @samp{+-> }.
4762
4763 @item gnus-sum-thread-tree-single-leaf
4764 @vindex gnus-sum-thread-tree-single-leaf
4765 Used for a leaf without brothers.  The default is @samp{\-> }
4766
4767 @end table
4768
4769 @item T
4770 Nothing if the article is a root and lots of spaces if it isn't (it
4771 pushes everything after it off the screen).
4772 @item [
4773 Opening bracket, which is normally @samp{[}, but can also be @samp{<}
4774 for adopted articles (@pxref{Customizing Threading}).
4775 @item ]
4776 Closing bracket, which is normally @samp{]}, but can also be @samp{>}
4777 for adopted articles.
4778 @item >
4779 One space for each thread level.
4780 @item <
4781 Twenty minus thread level spaces.
4782 @item U
4783 Unread.  @xref{Read Articles}.
4784
4785 @item R
4786 This misleadingly named specifier is the @dfn{secondary mark}.  This
4787 mark will say whether the article has been replied to, has been cached,
4788 or has been saved.  @xref{Other Marks}.
4789
4790 @item i
4791 Score as a number (@pxref{Scoring}).
4792 @item z
4793 @vindex gnus-summary-zcore-fuzz
4794 Zcore, @samp{+} if above the default level and @samp{-} if below the
4795 default level.  If the difference between
4796 @code{gnus-summary-default-score} and the score is less than
4797 @code{gnus-summary-zcore-fuzz}, this spec will not be used.
4798 @item V
4799 Total thread score.
4800 @item x
4801 @code{Xref}.
4802 @item D
4803 @code{Date}.
4804 @item d
4805 The @code{Date} in @code{DD-MMM} format.
4806 @item o
4807 The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format.
4808 @item M
4809 @code{Message-ID}.
4810 @item r
4811 @code{References}.
4812 @item t
4813 Number of articles in the current sub-thread.  Using this spec will slow
4814 down summary buffer generation somewhat.
4815 @item e
4816 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
4817 article has any children.
4818 @item P
4819 The line number.
4820 @item O
4821 Download mark.
4822 @item *
4823 Desired cursor position (instead of after first colon).
4824 @item &user-date;
4825 Age sensitive date format.  Various date format is defined in
4826 @code{gnus-user-date-format-alist}.
4827 @item u
4828 User defined specifier.  The next character in the format string should
4829 be a letter.  Gnus will call the function
4830 @code{gnus-user-format-function-@var{x}}, where @var{x} is the letter
4831 following @samp{%u}.  The function will be passed the current header as
4832 argument.  The function should return a string, which will be inserted
4833 into the summary just like information from any other summary specifier.
4834 @end table
4835
4836 Text between @samp{%(} and @samp{%)} will be highlighted with
4837 @code{gnus-mouse-face} when the mouse point is placed inside the area.
4838 There can only be one such area.
4839
4840 The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
4841 have to be handled with care.  For reasons of efficiency, Gnus will
4842 compute what column these characters will end up in, and ``hard-code''
4843 that.  This means that it is invalid to have these specs after a
4844 variable-length spec.  Well, you might not be arrested, but your summary
4845 buffer will look strange, which is bad enough.
4846
4847 The smart choice is to have these specs as far to the left as possible.
4848 (Isn't that the case with everything, though?  But I digress.)
4849
4850 This restriction may disappear in later versions of Gnus.
4851
4852
4853 @node To From Newsgroups
4854 @subsection To From Newsgroups
4855 @cindex To
4856 @cindex Newsgroups
4857
4858 In some groups (particularly in archive groups), the @code{From} header
4859 isn't very interesting, since all the articles there are written by
4860 you.  To display the information in the @code{To} or @code{Newsgroups}
4861 headers instead, you need to decide three things: What information to
4862 gather; where to display it; and when to display it.
4863
4864 @enumerate
4865 @item
4866 @vindex gnus-extra-headers
4867 The reading of extra header information is controlled by the
4868 @code{gnus-extra-headers}.  This is a list of header symbols.  For
4869 instance:
4870
4871 @lisp
4872 (setq gnus-extra-headers
4873       '(To Newsgroups X-Newsreader))
4874 @end lisp
4875
4876 This will result in Gnus trying to obtain these three headers, and
4877 storing it in header structures for later easy retrieval.
4878
4879 @item
4880 @findex gnus-extra-header
4881 The value of these extra headers can be accessed via the
4882 @code{gnus-extra-header} function.  Here's a format line spec that will
4883 access the @code{X-Newsreader} header:
4884
4885 @example
4886 "%~(form (gnus-extra-header 'X-Newsreader))@@"
4887 @end example
4888
4889 @item
4890 @vindex gnus-ignored-from-addresses
4891 The @code{gnus-ignored-from-addresses} variable says when the @samp{%f}
4892 summary line spec returns the @code{To}, @code{Newsreader} or
4893 @code{From} header.  If this regexp matches the contents of the
4894 @code{From} header, the value of the @code{To} or @code{Newsreader}
4895 headers are used instead.
4896
4897 To distinguish regular articles from those where the @code{From} field
4898 has been swapped, a string is prefixed to the @code{To} or
4899 @code{Newsgroups} header in the summary line.  By default the string is
4900 @samp{-> } for @code{To} and @samp{=> } for @code{Newsgroups}, you can
4901 customize these strings with @code{gnus-summary-to-prefix} and
4902 @code{gnus-summary-newsgroup-prefix}.
4903
4904 @end enumerate
4905
4906 @vindex nnmail-extra-headers
4907 A related variable is @code{nnmail-extra-headers}, which controls when
4908 to include extra headers when generating overview (@acronym{NOV}) files.
4909 If you have old overview files, you should regenerate them after
4910 changing this variable, by entering the server buffer using @kbd{^},
4911 and then @kbd{g} on the appropriate mail server (e.g. nnml) to cause
4912 regeneration.
4913
4914 @vindex gnus-summary-line-format
4915 You also have to instruct Gnus to display the data by changing the
4916 @code{%n} spec to the @code{%f} spec in the
4917 @code{gnus-summary-line-format} variable.
4918
4919 In summary, you'd typically put something like the following in
4920 @file{~/.gnus.el}:
4921
4922 @lisp
4923 (setq gnus-extra-headers
4924       '(To Newsgroups))
4925 (setq nnmail-extra-headers gnus-extra-headers)
4926 (setq gnus-summary-line-format
4927       "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
4928 (setq gnus-ignored-from-addresses
4929       "Your Name Here")
4930 @end lisp
4931
4932 (The values listed above are the default values in Gnus.  Alter them
4933 to fit your needs.)
4934
4935 A note for news server administrators, or for users who wish to try to
4936 convince their news server administrator to provide some additional
4937 support:
4938
4939 The above is mostly useful for mail groups, where you have control over
4940 the @acronym{NOV} files that are created.  However, if you can persuade your
4941 nntp admin to add (in the usual implementation, notably INN):
4942
4943 @example
4944 Newsgroups:full
4945 @end example
4946
4947 to the end of her @file{overview.fmt} file, then you can use that just
4948 as you would the extra headers from the mail groups.
4949
4950
4951 @node Summary Buffer Mode Line
4952 @subsection Summary Buffer Mode Line
4953
4954 @vindex gnus-summary-mode-line-format
4955 You can also change the format of the summary mode bar (@pxref{Mode Line
4956 Formatting}).  Set @code{gnus-summary-mode-line-format} to whatever you
4957 like.  The default is @samp{Gnus: %%b [%A] %Z}.
4958
4959 Here are the elements you can play with:
4960
4961 @table @samp
4962 @item G
4963 Group name.
4964 @item p
4965 Unprefixed group name.
4966 @item A
4967 Current article number.
4968 @item z
4969 Current article score.
4970 @item V
4971 Gnus version.
4972 @item U
4973 Number of unread articles in this group.
4974 @item e
4975 Number of unread articles in this group that aren't displayed in the
4976 summary buffer.
4977 @item Z
4978 A string with the number of unread and unselected articles represented
4979 either as @samp{<%U(+%e) more>} if there are both unread and unselected
4980 articles, and just as @samp{<%U more>} if there are just unread articles
4981 and no unselected ones.
4982 @item g
4983 Shortish group name.  For instance, @samp{rec.arts.anime} will be
4984 shortened to @samp{r.a.anime}.
4985 @item S
4986 Subject of the current article.
4987 @item u
4988 User-defined spec (@pxref{User-Defined Specs}).
4989 @item s
4990 Name of the current score file (@pxref{Scoring}).
4991 @item d
4992 Number of dormant articles (@pxref{Unread Articles}).
4993 @item t
4994 Number of ticked articles (@pxref{Unread Articles}).
4995 @item r
4996 Number of articles that have been marked as read in this session.
4997 @item E
4998 Number of articles expunged by the score files.
4999 @end table
5000
5001
5002 @node Summary Highlighting
5003 @subsection Summary Highlighting
5004
5005 @table @code
5006
5007 @item gnus-visual-mark-article-hook
5008 @vindex gnus-visual-mark-article-hook
5009 This hook is run after selecting an article.  It is meant to be used for
5010 highlighting the article in some way.  It is not run if
5011 @code{gnus-visual} is @code{nil}.
5012
5013 @item gnus-summary-update-hook
5014 @vindex gnus-summary-update-hook
5015 This hook is called when a summary line is changed.  It is not run if
5016 @code{gnus-visual} is @code{nil}.
5017
5018 @item gnus-summary-selected-face
5019 @vindex gnus-summary-selected-face
5020 This is the face (or @dfn{font} as some people call it) used to
5021 highlight the current article in the summary buffer.
5022
5023 @item gnus-summary-highlight
5024 @vindex gnus-summary-highlight
5025 Summary lines are highlighted according to this variable, which is a
5026 list where the elements are of the format @code{(@var{form}
5027 . @var{face})}.  If you would, for instance, like ticked articles to be
5028 italic and high-scored articles to be bold, you could set this variable
5029 to something like
5030 @lisp
5031 (((eq mark gnus-ticked-mark) . italic)
5032  ((> score default) . bold))
5033 @end lisp
5034 As you may have guessed, if @var{form} returns a non-@code{nil} value,
5035 @var{face} will be applied to the line.
5036 @end table
5037
5038
5039 @node Summary Maneuvering
5040 @section Summary Maneuvering
5041 @cindex summary movement
5042
5043 All the straight movement commands understand the numeric prefix and
5044 behave pretty much as you'd expect.
5045
5046 None of these commands select articles.
5047
5048 @table @kbd
5049 @item G M-n
5050 @itemx M-n
5051 @kindex M-n (Summary)
5052 @kindex G M-n (Summary)
5053 @findex gnus-summary-next-unread-subject
5054 Go to the next summary line of an unread article
5055 (@code{gnus-summary-next-unread-subject}).
5056
5057 @item G M-p
5058 @itemx M-p
5059 @kindex M-p (Summary)
5060 @kindex G M-p (Summary)
5061 @findex gnus-summary-prev-unread-subject
5062 Go to the previous summary line of an unread article
5063 (@code{gnus-summary-prev-unread-subject}).
5064
5065 @item G g
5066 @kindex G g (Summary)
5067 @findex gnus-summary-goto-subject
5068 Ask for an article number and then go to the summary line of that article
5069 without displaying the article (@code{gnus-summary-goto-subject}).
5070 @end table
5071
5072 If Gnus asks you to press a key to confirm going to the next group, you
5073 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
5074 buffer, searching for the next group to read without actually returning
5075 to the group buffer.
5076
5077 Variables related to summary movement:
5078
5079 @table @code
5080
5081 @vindex gnus-auto-select-next
5082 @item gnus-auto-select-next
5083 If you issue one of the movement commands (like @kbd{n}) and there are
5084 no more unread articles after the current one, Gnus will offer to go to
5085 the next group.  If this variable is @code{t} and the next group is
5086 empty, Gnus will exit summary mode and return to the group buffer.  If
5087 this variable is neither @code{t} nor @code{nil}, Gnus will select the
5088 next group with unread articles.  As a special case, if this variable
5089 is @code{quietly}, Gnus will select the next group without asking for
5090 confirmation.  If this variable is @code{almost-quietly}, the same
5091 will happen only if you are located on the last article in the group.
5092 Finally, if this variable is @code{slightly-quietly}, the @kbd{Z n}
5093 command will go to the next group without confirmation.  Also
5094 @pxref{Group Levels}.
5095
5096 @item gnus-auto-select-same
5097 @vindex gnus-auto-select-same
5098 If non-@code{nil}, all the movement commands will try to go to the next
5099 article with the same subject as the current.  (@dfn{Same} here might
5100 mean @dfn{roughly equal}.  See @code{gnus-summary-gather-subject-limit}
5101 for details (@pxref{Customizing Threading}).)  If there are no more
5102 articles with the same subject, go to the first unread article.
5103
5104 This variable is not particularly useful if you use a threaded display.
5105
5106 @item gnus-summary-check-current
5107 @vindex gnus-summary-check-current
5108 If non-@code{nil}, all the ``unread'' movement commands will not proceed
5109 to the next (or previous) article if the current article is unread.
5110 Instead, they will choose the current article.
5111
5112 @item gnus-auto-center-summary
5113 @vindex gnus-auto-center-summary
5114 If non-@code{nil}, Gnus will keep the point in the summary buffer
5115 centered at all times.  This makes things quite tidy, but if you have a
5116 slow network connection, or simply do not like this un-Emacsism, you can
5117 set this variable to @code{nil} to get the normal Emacs scrolling
5118 action.  This will also inhibit horizontal re-centering of the summary
5119 buffer, which might make it more inconvenient to read extremely long
5120 threads.
5121
5122 This variable can also be a number.  In that case, center the window at
5123 the given number of lines from the top.
5124
5125 @end table
5126
5127
5128 @node Choosing Articles
5129 @section Choosing Articles
5130 @cindex selecting articles
5131
5132 @menu
5133 * Choosing Commands::           Commands for choosing articles.
5134 * Choosing Variables::          Variables that influence these commands.
5135 @end menu
5136
5137
5138 @node Choosing Commands
5139 @subsection Choosing Commands
5140
5141 None of the following movement commands understand the numeric prefix,
5142 and they all select and display an article.
5143
5144 If you want to fetch new articles or redisplay the group, see
5145 @ref{Exiting the Summary Buffer}.
5146
5147 @table @kbd
5148 @item SPACE
5149 @kindex SPACE (Summary)
5150 @findex gnus-summary-next-page
5151 Select the current article, or, if that one's read already, the next
5152 unread article (@code{gnus-summary-next-page}).
5153
5154 If you have an article window open already and you press @kbd{SPACE}
5155 again, the article will be scrolled.  This lets you conveniently
5156 @kbd{SPACE} through an entire newsgroup.  @xref{Paging the Article}.
5157
5158 @item G n
5159 @itemx n
5160 @kindex n (Summary)
5161 @kindex G n (Summary)
5162 @findex gnus-summary-next-unread-article
5163 @c @icon{gnus-summary-next-unread}
5164 Go to next unread article (@code{gnus-summary-next-unread-article}).
5165
5166 @item G p
5167 @itemx p
5168 @kindex p (Summary)
5169 @findex gnus-summary-prev-unread-article
5170 @c @icon{gnus-summary-prev-unread}
5171 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
5172
5173 @item G N
5174 @itemx N
5175 @kindex N (Summary)
5176 @kindex G N (Summary)
5177 @findex gnus-summary-next-article
5178 Go to the next article (@code{gnus-summary-next-article}).
5179
5180 @item G P
5181 @itemx P
5182 @kindex P (Summary)
5183 @kindex G P (Summary)
5184 @findex gnus-summary-prev-article
5185 Go to the previous article (@code{gnus-summary-prev-article}).
5186
5187 @item G C-n
5188 @kindex G C-n (Summary)
5189 @findex gnus-summary-next-same-subject
5190 Go to the next article with the same subject
5191 (@code{gnus-summary-next-same-subject}).
5192
5193 @item G C-p
5194 @kindex G C-p (Summary)
5195 @findex gnus-summary-prev-same-subject
5196 Go to the previous article with the same subject
5197 (@code{gnus-summary-prev-same-subject}).
5198
5199 @item G f
5200 @itemx .
5201 @kindex G f  (Summary)
5202 @kindex .  (Summary)
5203 @findex gnus-summary-first-unread-article
5204 Go to the first unread article
5205 (@code{gnus-summary-first-unread-article}).
5206
5207 @item G b
5208 @itemx ,
5209 @kindex G b (Summary)
5210 @kindex , (Summary)
5211 @findex gnus-summary-best-unread-article
5212 Go to the unread article with the highest score
5213 (@code{gnus-summary-best-unread-article}).  If given a prefix argument,
5214 go to the first unread article that has a score over the default score.
5215
5216 @item G l
5217 @itemx l
5218 @kindex l (Summary)
5219 @kindex G l (Summary)
5220 @findex gnus-summary-goto-last-article
5221 Go to the previous article read (@code{gnus-summary-goto-last-article}).
5222
5223 @item G o
5224 @kindex G o (Summary)
5225 @findex gnus-summary-pop-article
5226 @cindex history
5227 @cindex article history
5228 Pop an article off the summary history and go to this article
5229 (@code{gnus-summary-pop-article}).  This command differs from the
5230 command above in that you can pop as many previous articles off the
5231 history as you like, while @kbd{l} toggles the two last read articles.
5232 For a somewhat related issue (if you use these commands a lot),
5233 @pxref{Article Backlog}.
5234
5235 @item G j
5236 @itemx j
5237 @kindex j (Summary)
5238 @kindex G j (Summary)
5239 @findex gnus-summary-goto-article
5240 Ask for an article number or @code{Message-ID}, and then go to that
5241 article (@code{gnus-summary-goto-article}).
5242
5243 @end table
5244
5245
5246 @node Choosing Variables
5247 @subsection Choosing Variables
5248
5249 Some variables relevant for moving and selecting articles:
5250
5251 @table @code
5252 @item gnus-auto-extend-newsgroup
5253 @vindex gnus-auto-extend-newsgroup
5254 All the movement commands will try to go to the previous (or next)
5255 article, even if that article isn't displayed in the Summary buffer if
5256 this variable is non-@code{nil}.  Gnus will then fetch the article from
5257 the server and display it in the article buffer.
5258
5259 @item gnus-select-article-hook
5260 @vindex gnus-select-article-hook
5261 This hook is called whenever an article is selected.  The default is
5262 @code{nil}.  If you would like each article to be saved in the Agent as
5263 you read it, putting @code{gnus-agent-fetch-selected-article} on this
5264 hook will do so.
5265
5266 @item gnus-mark-article-hook
5267 @vindex gnus-mark-article-hook
5268 @findex gnus-summary-mark-unread-as-read
5269 @findex gnus-summary-mark-read-and-unread-as-read
5270 @findex gnus-unread-mark
5271 This hook is called whenever an article is selected.  It is intended to
5272 be used for marking articles as read.  The default value is
5273 @code{gnus-summary-mark-read-and-unread-as-read}, and will change the
5274 mark of almost any article you read to @code{gnus-read-mark}.  The only
5275 articles not affected by this function are ticked, dormant, and
5276 expirable articles.  If you'd instead like to just have unread articles
5277 marked as read, you can use @code{gnus-summary-mark-unread-as-read}
5278 instead.  It will leave marks like @code{gnus-low-score-mark},
5279 @code{gnus-del-mark} (and so on) alone.
5280
5281 @end table
5282
5283
5284 @node Paging the Article
5285 @section Scrolling the Article
5286 @cindex article scrolling
5287
5288 @table @kbd
5289
5290 @item SPACE
5291 @kindex SPACE (Summary)
5292 @findex gnus-summary-next-page
5293 Pressing @kbd{SPACE} will scroll the current article forward one page,
5294 or, if you have come to the end of the current article, will choose the
5295 next article (@code{gnus-summary-next-page}).
5296
5297 @vindex gnus-article-boring-faces
5298 @vindex gnus-article-skip-boring
5299 If @code{gnus-article-skip-boring} is non-@code{nil} and the rest of
5300 the article consists only of citations and signature, then it will be
5301 skipped; the next article will be shown instead.  You can customize
5302 what is considered uninteresting with
5303 @code{gnus-article-boring-faces}.  You can manually view the article's
5304 pages, no matter how boring, using @kbd{C-M-v}.
5305
5306 @item DEL
5307 @kindex DEL (Summary)
5308 @findex gnus-summary-prev-page
5309 Scroll the current article back one page (@code{gnus-summary-prev-page}).
5310
5311 @item RET
5312 @kindex RET (Summary)
5313 @findex gnus-summary-scroll-up
5314 Scroll the current article one line forward
5315 (@code{gnus-summary-scroll-up}).
5316
5317 @item M-RET
5318 @kindex M-RET (Summary)
5319 @findex gnus-summary-scroll-down
5320 Scroll the current article one line backward
5321 (@code{gnus-summary-scroll-down}).
5322
5323 @item A g
5324 @itemx g
5325 @kindex A g (Summary)
5326 @kindex g (Summary)
5327 @findex gnus-summary-show-article
5328 @vindex gnus-summary-show-article-charset-alist
5329 (Re)fetch the current article (@code{gnus-summary-show-article}).  If
5330 given a prefix, fetch the current article, but don't run any of the
5331 article treatment functions.  This will give you a ``raw'' article, just
5332 the way it came from the server.
5333
5334 If given a numerical prefix, you can do semi-manual charset stuff.
5335 @kbd{C-u 0 g cn-gb-2312 RET} will decode the message as if it were
5336 encoded in the @code{cn-gb-2312} charset.  If you have
5337
5338 @lisp
5339 (setq gnus-summary-show-article-charset-alist
5340       '((1 . cn-gb-2312)
5341         (2 . big5)))
5342 @end lisp
5343
5344 then you can say @kbd{C-u 1 g} to get the same effect.
5345
5346 @item A <
5347 @itemx <
5348 @kindex < (Summary)
5349 @kindex A < (Summary)
5350 @findex gnus-summary-beginning-of-article
5351 Scroll to the beginning of the article
5352 (@code{gnus-summary-beginning-of-article}).
5353
5354 @item A >
5355 @itemx >
5356 @kindex > (Summary)
5357 @kindex A > (Summary)
5358 @findex gnus-summary-end-of-article
5359 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
5360
5361 @item A s
5362 @itemx s
5363 @kindex A s (Summary)
5364 @kindex s (Summary)
5365 @findex gnus-summary-isearch-article
5366 Perform an isearch in the article buffer
5367 (@code{gnus-summary-isearch-article}).
5368
5369 @item h
5370 @kindex h (Summary)
5371 @findex gnus-summary-select-article-buffer
5372 Select the article buffer (@code{gnus-summary-select-article-buffer}).
5373
5374 @end table
5375
5376
5377 @node Reply Followup and Post
5378 @section Reply, Followup and Post
5379
5380 @menu
5381 * Summary Mail Commands::       Sending mail.
5382 * Summary Post Commands::       Sending news.
5383 * Summary Message Commands::    Other Message-related commands.
5384 * Canceling and Superseding::
5385 @end menu
5386
5387
5388 @node Summary Mail Commands
5389 @subsection Summary Mail Commands
5390 @cindex mail
5391 @cindex composing mail
5392
5393 Commands for composing a mail message:
5394
5395 @table @kbd
5396
5397 @item S r
5398 @itemx r
5399 @kindex S r (Summary)
5400 @kindex r (Summary)
5401 @findex gnus-summary-reply
5402 @c @icon{gnus-summary-mail-reply}
5403 @c @icon{gnus-summary-reply}
5404 Mail a reply to the author of the current article
5405 (@code{gnus-summary-reply}).
5406
5407 @item S R
5408 @itemx R
5409 @kindex R (Summary)
5410 @kindex S R (Summary)
5411 @findex gnus-summary-reply-with-original
5412 @c @icon{gnus-summary-reply-with-original}
5413 Mail a reply to the author of the current article and include the
5414 original message (@code{gnus-summary-reply-with-original}).  This
5415 command uses the process/prefix convention.
5416
5417 @item S w
5418 @kindex S w (Summary)
5419 @findex gnus-summary-wide-reply
5420 Mail a wide reply to the author of the current article
5421 (@code{gnus-summary-wide-reply}).  A @dfn{wide reply} is a reply that
5422 goes out to all people listed in the @code{To}, @code{From} (or
5423 @code{Reply-to}) and @code{Cc} headers.  If @code{Mail-Followup-To} is
5424 present, that's used instead.
5425
5426 @item S W
5427 @kindex S W (Summary)
5428 @findex gnus-summary-wide-reply-with-original
5429 Mail a wide reply to the current article and include the original
5430 message (@code{gnus-summary-wide-reply-with-original}).  This command uses
5431 the process/prefix convention.
5432
5433 @item S v
5434 @kindex S v (Summary)
5435 @findex gnus-summary-very-wide-reply
5436 Mail a very wide reply to the author of the current article
5437 (@code{gnus-summary-wide-reply}).  A @dfn{very wide reply} is a reply
5438 that goes out to all people listed in the @code{To}, @code{From} (or
5439 @code{Reply-to}) and @code{Cc} headers in all the process/prefixed
5440 articles.  This command uses the process/prefix convention.
5441
5442 @item S V
5443 @kindex S V (Summary)
5444 @findex gnus-summary-very-wide-reply-with-original
5445 Mail a very wide reply to the author of the current article and include the
5446 original message (@code{gnus-summary-very-wide-reply-with-original}).  This
5447 command uses the process/prefix convention.
5448
5449 @item S B r
5450 @kindex S B r (Summary)
5451 @findex gnus-summary-reply-broken-reply-to
5452 Mail a reply to the author of the current article but ignore the
5453 @code{Reply-To} field (@code{gnus-summary-reply-broken-reply-to}).
5454 If you need this because a mailing list incorrectly sets a
5455 @code{Reply-To} header pointing to the list, you probably want to set
5456 the @code{broken-reply-to} group parameter instead, so things will work
5457 correctly.  @xref{Group Parameters}.
5458
5459 @item S B R
5460 @kindex S B R (Summary)
5461 @findex gnus-summary-reply-broken-reply-to-with-original
5462 Mail a reply to the author of the current article and include the
5463 original message but ignore the @code{Reply-To} field
5464 (@code{gnus-summary-reply-broken-reply-to-with-original}).
5465
5466 @item S o m
5467 @itemx C-c C-f
5468 @kindex S o m (Summary)
5469 @kindex C-c C-f (Summary)
5470 @findex gnus-summary-mail-forward
5471 @c @icon{gnus-summary-mail-forward}
5472 Forward the current article to some other person
5473 (@code{gnus-summary-mail-forward}).  If no prefix is given, the message
5474 is forwarded according to the value of (@code{message-forward-as-mime})
5475 and (@code{message-forward-show-mml}); if the prefix is 1, decode the
5476 message and forward directly inline; if the prefix is 2, forward message
5477 as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5478 forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
5479 directly inline; otherwise, the message is forwarded as no prefix given
5480 but use the flipped value of (@code{message-forward-as-mime}).  By
5481 default, the message is decoded and forwarded as an rfc822 @acronym{MIME}
5482 section.
5483
5484 @item S m
5485 @itemx m
5486 @kindex m (Summary)
5487 @kindex S m (Summary)
5488 @findex gnus-summary-mail-other-window
5489 @c @icon{gnus-summary-mail-originate}
5490 Prepare a mail (@code{gnus-summary-mail-other-window}).  By default, use
5491 the posting style of the current group.  If given a prefix, disable that.
5492 If the prefix is 1, prompt for a group name to find the posting style.
5493
5494 @item S i
5495 @itemx i
5496 @kindex i (Summary)
5497 @kindex S i (Summary)
5498 @findex gnus-summary-news-other-window
5499 Prepare a news (@code{gnus-summary-news-other-window}).  By default,
5500 post to the current group.  If given a prefix, disable that.  If the
5501 prefix is 1, prompt for a group to post to.
5502
5503 This function actually prepares a news even when using mail groups.
5504 This is useful for ``posting'' messages to mail groups without actually
5505 sending them over the network: they're just saved directly to the group
5506 in question.  The corresponding back end must have a request-post method
5507 for this to work though.
5508
5509 @item S D b
5510 @kindex S D b (Summary)
5511 @findex gnus-summary-resend-bounced-mail
5512 @cindex bouncing mail
5513 If you have sent a mail, but the mail was bounced back to you for some
5514 reason (wrong address, transient failure), you can use this command to
5515 resend that bounced mail (@code{gnus-summary-resend-bounced-mail}).  You
5516 will be popped into a mail buffer where you can edit the headers before
5517 sending the mail off again.  If you give a prefix to this command, and
5518 the bounced mail is a reply to some other mail, Gnus will try to fetch
5519 that mail and display it for easy perusal of its headers.  This might
5520 very well fail, though.
5521
5522 @item S D r
5523 @kindex S D r (Summary)
5524 @findex gnus-summary-resend-message
5525 Not to be confused with the previous command,
5526 @code{gnus-summary-resend-message} will prompt you for an address to
5527 send the current message off to, and then send it to that place.  The
5528 headers of the message won't be altered---but lots of headers that say
5529 @code{Resent-To}, @code{Resent-From} and so on will be added.  This
5530 means that you actually send a mail to someone that has a @code{To}
5531 header that (probably) points to yourself.  This will confuse people.
5532 So, natcherly you'll only do that if you're really eVIl.
5533
5534 This command is mainly used if you have several accounts and want to
5535 ship a mail to a different account of yours.  (If you're both
5536 @code{root} and @code{postmaster} and get a mail for @code{postmaster}
5537 to the @code{root} account, you may want to resend it to
5538 @code{postmaster}.  Ordnung muss sein!
5539
5540 This command understands the process/prefix convention
5541 (@pxref{Process/Prefix}).
5542
5543 @item S D e
5544 @kindex S D e (Summary)
5545 @findex gnus-summary-resend-message-edit
5546
5547 Like the previous command, but will allow you to edit the message as
5548 if it were a new message before resending.
5549
5550 @item S O m
5551 @kindex S O m (Summary)
5552 @findex gnus-uu-digest-mail-forward
5553 Digest the current series (@pxref{Decoding Articles}) and forward the
5554 result using mail (@code{gnus-uu-digest-mail-forward}).  This command
5555 uses the process/prefix convention (@pxref{Process/Prefix}).
5556
5557 @item S M-c
5558 @kindex S M-c (Summary)
5559 @findex gnus-summary-mail-crosspost-complaint
5560 @cindex crossposting
5561 @cindex excessive crossposting
5562 Send a complaint about excessive crossposting to the author of the
5563 current article (@code{gnus-summary-mail-crosspost-complaint}).
5564
5565 @findex gnus-crosspost-complaint
5566 This command is provided as a way to fight back against the current
5567 crossposting pandemic that's sweeping Usenet.  It will compose a reply
5568 using the @code{gnus-crosspost-complaint} variable as a preamble.  This
5569 command understands the process/prefix convention
5570 (@pxref{Process/Prefix}) and will prompt you before sending each mail.
5571
5572 @end table
5573
5574 Also @xref{Header Commands, ,Header Commands, message, The Message
5575 Manual}, for more information.
5576
5577
5578 @node Summary Post Commands
5579 @subsection Summary Post Commands
5580 @cindex post
5581 @cindex composing news
5582
5583 Commands for posting a news article:
5584
5585 @table @kbd
5586 @item S p
5587 @itemx a
5588 @kindex a (Summary)
5589 @kindex S p (Summary)
5590 @findex gnus-summary-post-news
5591 @c @icon{gnus-summary-post-news}
5592 Prepare for posting an article (@code{gnus-summary-post-news}).  By
5593 default, post to the current group.  If given a prefix, disable that.
5594 If the prefix is 1, prompt for another group instead.
5595
5596 @item S f
5597 @itemx f
5598 @kindex f (Summary)
5599 @kindex S f (Summary)
5600 @findex gnus-summary-followup
5601 @c @icon{gnus-summary-followup}
5602 Post a followup to the current article (@code{gnus-summary-followup}).
5603
5604 @item S F
5605 @itemx F
5606 @kindex S F (Summary)
5607 @kindex F (Summary)
5608 @c @icon{gnus-summary-followup-with-original}
5609 @findex gnus-summary-followup-with-original
5610 Post a followup to the current article and include the original message
5611 (@code{gnus-summary-followup-with-original}).  This command uses the
5612 process/prefix convention.
5613
5614 @item S n
5615 @kindex S n (Summary)
5616 @findex gnus-summary-followup-to-mail
5617 Post a followup to the current article via news, even if you got the
5618 message through mail (@code{gnus-summary-followup-to-mail}).
5619
5620 @item S N
5621 @kindex S N (Summary)
5622 @findex gnus-summary-followup-to-mail-with-original
5623 Post a followup to the current article via news, even if you got the
5624 message through mail and include the original message
5625 (@code{gnus-summary-followup-to-mail-with-original}).  This command uses
5626 the process/prefix convention.
5627
5628 @item S o p
5629 @kindex S o p (Summary)
5630 @findex gnus-summary-post-forward
5631 Forward the current article to a newsgroup
5632 (@code{gnus-summary-post-forward}).
5633  If no prefix is given, the message is forwarded according to the value
5634 of (@code{message-forward-as-mime}) and
5635 (@code{message-forward-show-mml}); if the prefix is 1, decode the
5636 message and forward directly inline; if the prefix is 2, forward message
5637 as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5638 forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
5639 directly inline; otherwise, the message is forwarded as no prefix given
5640 but use the flipped value of (@code{message-forward-as-mime}).  By
5641 default, the message is decoded and forwarded as an rfc822 @acronym{MIME} section.
5642
5643 @item S O p
5644 @kindex S O p (Summary)
5645 @findex gnus-uu-digest-post-forward
5646 @cindex digests
5647 @cindex making digests
5648 Digest the current series and forward the result to a newsgroup
5649 (@code{gnus-uu-digest-post-forward}).  This command uses the
5650 process/prefix convention.
5651
5652 @item S u
5653 @kindex S u (Summary)
5654 @findex gnus-uu-post-news
5655 @c @icon{gnus-uu-post-news}
5656 Uuencode a file, split it into parts, and post it as a series
5657 (@code{gnus-uu-post-news}).  (@pxref{Uuencoding and Posting}).
5658 @end table
5659
5660 Also @xref{Header Commands, ,Header Commands, message, The Message
5661 Manual}, for more information.
5662
5663
5664 @node Summary Message Commands
5665 @subsection Summary Message Commands
5666
5667 @table @kbd
5668 @item S y
5669 @kindex S y (Summary)
5670 @findex gnus-summary-yank-message
5671 Yank the current article into an already existing Message composition
5672 buffer (@code{gnus-summary-yank-message}).  This command prompts for
5673 what message buffer you want to yank into, and understands the
5674 process/prefix convention (@pxref{Process/Prefix}).
5675
5676 @end table
5677
5678
5679 @node Canceling and Superseding
5680 @subsection Canceling Articles
5681 @cindex canceling articles
5682 @cindex superseding articles
5683
5684 Have you ever written something, and then decided that you really,
5685 really, really wish you hadn't posted that?
5686
5687 Well, you can't cancel mail, but you can cancel posts.
5688
5689 @findex gnus-summary-cancel-article
5690 @kindex C (Summary)
5691 @c @icon{gnus-summary-cancel-article}
5692 Find the article you wish to cancel (you can only cancel your own
5693 articles, so don't try any funny stuff).  Then press @kbd{C} or @kbd{S
5694 c} (@code{gnus-summary-cancel-article}).  Your article will be
5695 canceled---machines all over the world will be deleting your article.
5696 This command uses the process/prefix convention (@pxref{Process/Prefix}).
5697
5698 Be aware, however, that not all sites honor cancels, so your article may
5699 live on here and there, while most sites will delete the article in
5700 question.
5701
5702 Gnus will use the ``current'' select method when canceling.  If you
5703 want to use the standard posting method, use the @samp{a} symbolic
5704 prefix (@pxref{Symbolic Prefixes}).
5705
5706 Gnus ensures that only you can cancel your own messages using a
5707 @code{Cancel-Lock} header (@pxref{Canceling News, Canceling News, ,
5708 message, Message Manual}).
5709
5710 If you discover that you have made some mistakes and want to do some
5711 corrections, you can post a @dfn{superseding} article that will replace
5712 your original article.
5713
5714 @findex gnus-summary-supersede-article
5715 @kindex S (Summary)
5716 Go to the original article and press @kbd{S s}
5717 (@code{gnus-summary-supersede-article}).  You will be put in a buffer
5718 where you can edit the article all you want before sending it off the
5719 usual way.
5720
5721 The same goes for superseding as for canceling, only more so: Some
5722 sites do not honor superseding.  On those sites, it will appear that you
5723 have posted almost the same article twice.
5724
5725 If you have just posted the article, and change your mind right away,
5726 there is a trick you can use to cancel/supersede the article without
5727 waiting for the article to appear on your site first.  You simply return
5728 to the post buffer (which is called @code{*sent ...*}).  There you will
5729 find the article you just posted, with all the headers intact.  Change
5730 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
5731 header by substituting one of those words for the word
5732 @code{Message-ID}.  Then just press @kbd{C-c C-c} to send the article as
5733 you would do normally.  The previous article will be
5734 canceled/superseded.
5735
5736 Just remember, kids: There is no 'c' in 'supersede'.
5737
5738 @node Delayed Articles
5739 @section Delayed Articles
5740 @cindex delayed sending
5741 @cindex send delayed
5742
5743 Sometimes, you might wish to delay the sending of a message.  For
5744 example, you might wish to arrange for a message to turn up just in time
5745 to remind your about the birthday of your Significant Other.  For this,
5746 there is the @code{gnus-delay} package.  Setup is simple:
5747
5748 @lisp
5749 (gnus-delay-initialize)
5750 @end lisp
5751
5752 @findex gnus-delay-article
5753 Normally, to send a message you use the @kbd{C-c C-c} command from
5754 Message mode.  To delay a message, use @kbd{C-c C-j}
5755 (@code{gnus-delay-article}) instead.  This will ask you for how long the
5756 message should be delayed.  Possible answers are:
5757
5758 @itemize @bullet
5759 @item
5760 A time span.  Consists of an integer and a letter.  For example,
5761 @code{42d} means to delay for 42 days.  Available letters are @code{m}
5762 (minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M}
5763 (months) and @code{Y} (years).
5764
5765 @item
5766 A specific date.  Looks like @code{YYYY-MM-DD}.  The message will be
5767 delayed until that day, at a specific time (eight o'clock by default).
5768 See also @code{gnus-delay-default-hour}.
5769
5770 @item
5771 A specific time of day.  Given in @code{hh:mm} format, 24h, no am/pm
5772 stuff.  The deadline will be at that time today, except if that time has
5773 already passed, then it's at the given time tomorrow.  So if it's ten
5774 o'clock in the morning and you specify @code{11:15}, then the deadline
5775 is one hour and fifteen minutes hence.  But if you specify @code{9:20},
5776 that means a time tomorrow.
5777 @end itemize
5778
5779 The action of the @code{gnus-delay-article} command is influenced by a
5780 couple of variables:
5781
5782 @table @code
5783 @item gnus-delay-default-hour
5784 @vindex gnus-delay-default-hour
5785 When you specify a specific date, the message will be due on that hour
5786 on the given date.  Possible values are integers 0 through 23.
5787
5788 @item gnus-delay-default-delay
5789 @vindex gnus-delay-default-delay
5790 This is a string and gives the default delay.  It can be of any of the
5791 formats described above.
5792
5793 @item gnus-delay-group
5794 @vindex gnus-delay-group
5795 Delayed articles will be kept in this group on the drafts server until
5796 they are due.  You probably don't need to change this.  The default
5797 value is @code{"delayed"}.
5798
5799 @item gnus-delay-header
5800 @vindex gnus-delay-header
5801 The deadline for each article will be stored in a header.  This variable
5802 is a string and gives the header name.  You probably don't need to
5803 change this.  The default value is @code{"X-Gnus-Delayed"}.
5804 @end table
5805
5806 The way delaying works is like this: when you use the
5807 @code{gnus-delay-article} command, you give a certain delay.  Gnus
5808 calculates the deadline of the message and stores it in the
5809 @code{X-Gnus-Delayed} header and puts the message in the
5810 @code{nndraft:delayed} group.
5811
5812 @findex gnus-delay-send-queue
5813 And whenever you get new news, Gnus looks through the group for articles
5814 which are due and sends them.  It uses the @code{gnus-delay-send-queue}
5815 function for this.  By default, this function is added to the hook
5816 @code{gnus-get-new-news-hook}.  But of course, you can change this.
5817 Maybe you want to use the demon to send drafts?  Just tell the demon to
5818 execute the @code{gnus-delay-send-queue} function.
5819
5820 @table @code
5821 @item gnus-delay-initialize
5822 @findex gnus-delay-initialize
5823 By default, this function installs @code{gnus-delay-send-queue} in
5824 @code{gnus-get-new-news-hook}.  But it accepts the optional second
5825 argument @code{no-check}.  If it is non-@code{nil},
5826 @code{gnus-get-new-news-hook} is not changed.  The optional first
5827 argument is ignored.
5828
5829 For example, @code{(gnus-delay-initialize nil t)} means to do nothing.
5830 Presumably, you want to use the demon for sending due delayed articles.
5831 Just don't forget to set that up :-)
5832 @end table
5833
5834
5835 @node Marking Articles
5836 @section Marking Articles
5837 @cindex article marking
5838 @cindex article ticking
5839 @cindex marks
5840
5841 There are several marks you can set on an article.
5842
5843 You have marks that decide the @dfn{readedness} (whoo, neato-keano
5844 neologism ohoy!) of the article.  Alphabetic marks generally mean
5845 @dfn{read}, while non-alphabetic characters generally mean @dfn{unread}.
5846
5847 In addition, you also have marks that do not affect readedness.
5848
5849 @ifinfo
5850 There's a plethora of commands for manipulating these marks.
5851 @end ifinfo
5852
5853 @menu
5854 * Unread Articles::             Marks for unread articles.
5855 * Read Articles::               Marks for read articles.
5856 * Other Marks::                 Marks that do not affect readedness.
5857 * Setting Marks::               How to set and remove marks.
5858 * Generic Marking Commands::    How to customize the marking.
5859 * Setting Process Marks::       How to mark articles for later processing.
5860 @end menu
5861
5862
5863 @node Unread Articles
5864 @subsection Unread Articles
5865
5866 The following marks mark articles as (kinda) unread, in one form or
5867 other.
5868
5869 @table @samp
5870 @item !
5871 @vindex gnus-ticked-mark
5872 Marked as ticked (@code{gnus-ticked-mark}).
5873
5874 @dfn{Ticked articles} are articles that will remain visible always.  If
5875 you see an article that you find interesting, or you want to put off
5876 reading it, or replying to it, until sometime later, you'd typically
5877 tick it.  However, articles can be expired (from news servers by the
5878 news server software, Gnus itself never expires ticked messages), so if
5879 you want to keep an article forever, you'll have to make it persistent
5880 (@pxref{Persistent Articles}).
5881
5882 @item ?
5883 @vindex gnus-dormant-mark
5884 Marked as dormant (@code{gnus-dormant-mark}).
5885
5886 @dfn{Dormant articles} will only appear in the summary buffer if there
5887 are followups to it.  If you want to see them even if they don't have
5888 followups, you can use the @kbd{/ D} command (@pxref{Limiting}).
5889 Otherwise (except for the visibility issue), they are just like ticked
5890 messages.
5891
5892 @item SPACE
5893 @vindex gnus-unread-mark
5894 Marked as unread (@code{gnus-unread-mark}).
5895
5896 @dfn{Unread articles} are articles that haven't been read at all yet.
5897 @end table
5898
5899
5900 @node Read Articles
5901 @subsection Read Articles
5902 @cindex expirable mark
5903
5904 All the following marks mark articles as read.
5905
5906 @table @samp
5907
5908 @item r
5909 @vindex gnus-del-mark
5910 These are articles that the user has marked as read with the @kbd{d}
5911 command manually, more or less (@code{gnus-del-mark}).
5912
5913 @item R
5914 @vindex gnus-read-mark
5915 Articles that have actually been read (@code{gnus-read-mark}).
5916
5917 @item O
5918 @vindex gnus-ancient-mark
5919 Articles that were marked as read in previous sessions and are now
5920 @dfn{old} (@code{gnus-ancient-mark}).
5921
5922 @item K
5923 @vindex gnus-killed-mark
5924 Marked as killed (@code{gnus-killed-mark}).
5925
5926 @item X
5927 @vindex gnus-kill-file-mark
5928 Marked as killed by kill files (@code{gnus-kill-file-mark}).
5929
5930 @item Y
5931 @vindex gnus-low-score-mark
5932 Marked as read by having too low a score (@code{gnus-low-score-mark}).
5933
5934 @item C
5935 @vindex gnus-catchup-mark
5936 Marked as read by a catchup (@code{gnus-catchup-mark}).
5937
5938 @item G
5939 @vindex gnus-canceled-mark
5940 Canceled article (@code{gnus-canceled-mark})
5941
5942 @item F
5943 @vindex gnus-souped-mark
5944 @sc{soup}ed article (@code{gnus-souped-mark}).  @xref{SOUP}.
5945
5946 @item Q
5947 @vindex gnus-sparse-mark
5948 Sparsely reffed article (@code{gnus-sparse-mark}).  @xref{Customizing
5949 Threading}.
5950
5951 @item M
5952 @vindex gnus-duplicate-mark
5953 Article marked as read by duplicate suppression
5954 (@code{gnus-duplicate-mark}).  @xref{Duplicate Suppression}.
5955
5956 @end table
5957
5958 All these marks just mean that the article is marked as read, really.
5959 They are interpreted differently when doing adaptive scoring, though.
5960
5961 One more special mark, though:
5962
5963 @table @samp
5964 @item E
5965 @vindex gnus-expirable-mark
5966 Marked as expirable (@code{gnus-expirable-mark}).
5967
5968 Marking articles as @dfn{expirable} (or have them marked as such
5969 automatically) doesn't make much sense in normal groups---a user doesn't
5970 control expiring of news articles, but in mail groups, for instance,
5971 articles marked as @dfn{expirable} can be deleted by Gnus at
5972 any time.
5973 @end table
5974
5975
5976 @node Other Marks
5977 @subsection Other Marks
5978 @cindex process mark
5979 @cindex bookmarks
5980
5981 There are some marks that have nothing to do with whether the article is
5982 read or not.
5983
5984 @itemize @bullet
5985
5986 @item
5987 You can set a bookmark in the current article.  Say you are reading a
5988 long thesis on cats' urinary tracts, and have to go home for dinner
5989 before you've finished reading the thesis.  You can then set a bookmark
5990 in the article, and Gnus will jump to this bookmark the next time it
5991 encounters the article.  @xref{Setting Marks}.
5992
5993 @item
5994 @vindex gnus-replied-mark
5995 All articles that you have replied to or made a followup to (i.e., have
5996 answered) will be marked with an @samp{A} in the second column
5997 (@code{gnus-replied-mark}).
5998
5999 @item
6000 @vindex gnus-forwarded-mark
6001 All articles that you have forwarded will be marked with an @samp{F} in
6002 the second column (@code{gnus-forwarded-mark}).
6003
6004 @item
6005 @vindex gnus-cached-mark
6006 Articles stored in the article cache will be marked with an @samp{*} in
6007 the second column (@code{gnus-cached-mark}).  @xref{Article Caching}.
6008
6009 @item
6010 @vindex gnus-saved-mark
6011 Articles ``saved'' (in some manner or other; not necessarily
6012 religiously) are marked with an @samp{S} in the second column
6013 (@code{gnus-saved-mark}).
6014
6015 @item
6016 @vindex gnus-recent-mark
6017 Articles that according to the server haven't been shown to the user
6018 before are marked with a @samp{N} in the second column
6019 (@code{gnus-recent-mark}).  Note that not all servers support this
6020 mark, in which case it simply never appears.  Compare with
6021 @code{gnus-unseen-mark}.
6022
6023 @item
6024 @vindex gnus-unseen-mark
6025 Articles that haven't been seen before in Gnus by the user are marked
6026 with a @samp{.} in the second column (@code{gnus-unseen-mark}).
6027 Compare with @code{gnus-recent-mark}.
6028
6029 @item
6030 @vindex gnus-downloaded-mark
6031 When using the Gnus agent (@pxref{Agent Basics}), articles may be
6032 downloaded for unplugged (offline) viewing.  If you are using the
6033 @samp{%O} spec, these articles get the @samp{+} mark in that spec.
6034 (The variable @code{gnus-downloaded-mark} controls which character to
6035 use.)
6036
6037 @item
6038 @vindex gnus-undownloaded-mark
6039 When using the Gnus agent (@pxref{Agent Basics}), some articles might
6040 not have been downloaded.  Such articles cannot be viewed while you
6041 are unplugged (offline).  If you are using the @samp{%O} spec, these
6042 articles get the @samp{-} mark in that spec.  (The variable
6043 @code{gnus-undownloaded-mark} controls which character to use.)
6044
6045 @item
6046 @vindex gnus-downloadable-mark
6047 The Gnus agent (@pxref{Agent Basics}) downloads some articles
6048 automatically, but it is also possible to explicitly mark articles for
6049 download, even if they would not be downloaded automatically.  Such
6050 explicitly-marked articles get the @samp{%} mark in the first column.
6051 (The variable @code{gnus-downloadable-mark} controls which character to
6052 use.)
6053
6054 @item
6055 @vindex gnus-not-empty-thread-mark
6056 @vindex gnus-empty-thread-mark
6057 If the @samp{%e} spec is used, the presence of threads or not will be
6058 marked with @code{gnus-not-empty-thread-mark} and
6059 @code{gnus-empty-thread-mark} in the third column, respectively.
6060
6061 @item
6062 @vindex gnus-process-mark
6063 Finally we have the @dfn{process mark} (@code{gnus-process-mark}).  A
6064 variety of commands react to the presence of the process mark.  For
6065 instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view
6066 all articles that have been marked with the process mark.  Articles
6067 marked with the process mark have a @samp{#} in the second column.
6068
6069 @end itemize
6070
6071 You might have noticed that most of these ``non-readedness'' marks
6072 appear in the second column by default.  So if you have a cached, saved,
6073 replied article that you have process-marked, what will that look like?
6074
6075 Nothing much.  The precedence rules go as follows: process -> cache ->
6076 replied -> saved.  So if the article is in the cache and is replied,
6077 you'll only see the cache mark and not the replied mark.
6078
6079
6080 @node Setting Marks
6081 @subsection Setting Marks
6082 @cindex setting marks
6083
6084 All the marking commands understand the numeric prefix.
6085
6086 @table @kbd
6087 @item M c
6088 @itemx M-u
6089 @kindex M c (Summary)
6090 @kindex M-u (Summary)
6091 @findex gnus-summary-clear-mark-forward
6092 @cindex mark as unread
6093 Clear all readedness-marks from the current article
6094 (@code{gnus-summary-clear-mark-forward}).  In other words, mark the
6095 article as unread.
6096
6097 @item M t
6098 @itemx !
6099 @kindex ! (Summary)
6100 @kindex M t (Summary)
6101 @findex gnus-summary-tick-article-forward
6102 Tick the current article (@code{gnus-summary-tick-article-forward}).
6103 @xref{Article Caching}.
6104
6105 @item M ?
6106 @itemx ?
6107 @kindex ? (Summary)
6108 @kindex M ? (Summary)
6109 @findex gnus-summary-mark-as-dormant
6110 Mark the current article as dormant
6111 (@code{gnus-summary-mark-as-dormant}).  @xref{Article Caching}.
6112
6113 @item M d
6114 @itemx d
6115 @kindex M d (Summary)
6116 @kindex d (Summary)
6117 @findex gnus-summary-mark-as-read-forward
6118 Mark the current article as read
6119 (@code{gnus-summary-mark-as-read-forward}).
6120
6121 @item D
6122 @kindex D (Summary)
6123 @findex gnus-summary-mark-as-read-backward
6124 Mark the current article as read and move point to the previous line
6125 (@code{gnus-summary-mark-as-read-backward}).
6126
6127 @item M k
6128 @itemx k
6129 @kindex k (Summary)
6130 @kindex M k (Summary)
6131 @findex gnus-summary-kill-same-subject-and-select
6132 Mark all articles that have the same subject as the current one as read,
6133 and then select the next unread article
6134 (@code{gnus-summary-kill-same-subject-and-select}).
6135
6136 @item M K
6137 @itemx C-k
6138 @kindex M K (Summary)
6139 @kindex C-k (Summary)
6140 @findex gnus-summary-kill-same-subject
6141 Mark all articles that have the same subject as the current one as read
6142 (@code{gnus-summary-kill-same-subject}).
6143
6144 @item M C
6145 @kindex M C (Summary)
6146 @findex gnus-summary-catchup
6147 @c @icon{gnus-summary-catchup}
6148 Mark all unread articles as read (@code{gnus-summary-catchup}).
6149
6150 @item M C-c
6151 @kindex M C-c (Summary)
6152 @findex gnus-summary-catchup-all
6153 Mark all articles in the group as read---even the ticked and dormant
6154 articles (@code{gnus-summary-catchup-all}).
6155
6156 @item M H
6157 @kindex M H (Summary)
6158 @findex gnus-summary-catchup-to-here
6159 Catchup the current group to point (before the point)
6160 (@code{gnus-summary-catchup-to-here}).
6161
6162 @item M h
6163 @kindex M h (Summary)
6164 @findex gnus-summary-catchup-from-here
6165 Catchup the current group from point (after the point)
6166 (@code{gnus-summary-catchup-from-here}).
6167
6168 @item C-w
6169 @kindex C-w (Summary)
6170 @findex gnus-summary-mark-region-as-read
6171 Mark all articles between point and mark as read
6172 (@code{gnus-summary-mark-region-as-read}).
6173
6174 @item M V k
6175 @kindex M V k (Summary)
6176 @findex gnus-summary-kill-below
6177 Kill all articles with scores below the default score (or below the
6178 numeric prefix) (@code{gnus-summary-kill-below}).
6179
6180 @item M e
6181 @itemx E
6182 @kindex M e (Summary)
6183 @kindex E (Summary)
6184 @findex gnus-summary-mark-as-expirable
6185 Mark the current article as expirable
6186 (@code{gnus-summary-mark-as-expirable}).
6187
6188 @item M b
6189 @kindex M b (Summary)
6190 @findex gnus-summary-set-bookmark
6191 Set a bookmark in the current article
6192 (@code{gnus-summary-set-bookmark}).
6193
6194 @item M B
6195 @kindex M B (Summary)
6196 @findex gnus-summary-remove-bookmark
6197 Remove the bookmark from the current article
6198 (@code{gnus-summary-remove-bookmark}).
6199
6200 @item M V c
6201 @kindex M V c (Summary)
6202 @findex gnus-summary-clear-above
6203 Clear all marks from articles with scores over the default score (or
6204 over the numeric prefix) (@code{gnus-summary-clear-above}).
6205
6206 @item M V u
6207 @kindex M V u (Summary)
6208 @findex gnus-summary-tick-above
6209 Tick all articles with scores over the default score (or over the
6210 numeric prefix) (@code{gnus-summary-tick-above}).
6211
6212 @item M V m
6213 @kindex M V m (Summary)
6214 @findex gnus-summary-mark-above
6215 Prompt for a mark, and mark all articles with scores over the default
6216 score (or over the numeric prefix) with this mark
6217 (@code{gnus-summary-clear-above}).
6218 @end table
6219
6220 @vindex gnus-summary-goto-unread
6221 The @code{gnus-summary-goto-unread} variable controls what action should
6222 be taken after setting a mark.  If non-@code{nil}, point will move to
6223 the next/previous unread article.  If @code{nil}, point will just move
6224 one line up or down.  As a special case, if this variable is
6225 @code{never}, all the marking commands as well as other commands (like
6226 @kbd{SPACE}) will move to the next article, whether it is unread or not.
6227 The default is @code{t}.
6228
6229
6230 @node Generic Marking Commands
6231 @subsection Generic Marking Commands
6232
6233 Some people would like the command that ticks an article (@kbd{!}) go to
6234 the next article.  Others would like it to go to the next unread
6235 article.  Yet others would like it to stay on the current article.  And
6236 even though I haven't heard of anybody wanting it to go to the
6237 previous (unread) article, I'm sure there are people that want that as
6238 well.
6239
6240 Multiply these five behaviors with five different marking commands, and
6241 you get a potentially complex set of variable to control what each
6242 command should do.
6243
6244 To sidestep that mess, Gnus provides commands that do all these
6245 different things.  They can be found on the @kbd{M M} map in the summary
6246 buffer.  Type @kbd{M M C-h} to see them all---there are too many of them
6247 to list in this manual.
6248
6249 While you can use these commands directly, most users would prefer
6250 altering the summary mode keymap.  For instance, if you would like the
6251 @kbd{!} command to go to the next article instead of the next unread
6252 article, you could say something like:
6253
6254 @lisp
6255 @group
6256 (add-hook 'gnus-summary-mode-hook 'my-alter-summary-map)
6257 (defun my-alter-summary-map ()
6258   (local-set-key "!" 'gnus-summary-put-mark-as-ticked-next))
6259 @end group
6260 @end lisp
6261
6262 @noindent
6263 or
6264
6265 @lisp
6266 (defun my-alter-summary-map ()
6267   (local-set-key "!" "MM!n"))
6268 @end lisp
6269
6270
6271 @node Setting Process Marks
6272 @subsection Setting Process Marks
6273 @cindex setting process marks
6274
6275 Process marks are displayed as @code{#} in the summary buffer, and are
6276 used for marking articles in such a way that other commands will
6277 process these articles.  For instance, if you process mark four
6278 articles and then use the @kbd{*} command, Gnus will enter these four
6279 articles into the cache.  For more information,
6280 @pxref{Process/Prefix}.
6281
6282 @table @kbd
6283
6284 @item M P p
6285 @itemx #
6286 @kindex # (Summary)
6287 @kindex M P p (Summary)
6288 @findex gnus-summary-mark-as-processable
6289 Mark the current article with the process mark
6290 (@code{gnus-summary-mark-as-processable}).
6291 @findex gnus-summary-unmark-as-processable
6292
6293 @item M P u
6294 @itemx M-#
6295 @kindex M P u (Summary)
6296 @kindex M-# (Summary)
6297 Remove the process mark, if any, from the current article
6298 (@code{gnus-summary-unmark-as-processable}).
6299
6300 @item M P U
6301 @kindex M P U (Summary)
6302 @findex gnus-summary-unmark-all-processable
6303 Remove the process mark from all articles
6304 (@code{gnus-summary-unmark-all-processable}).
6305
6306 @item M P i
6307 @kindex M P i (Summary)
6308 @findex gnus-uu-invert-processable
6309 Invert the list of process marked articles
6310 (@code{gnus-uu-invert-processable}).
6311
6312 @item M P R
6313 @kindex M P R (Summary)
6314 @findex gnus-uu-mark-by-regexp
6315 Mark articles that have a @code{Subject} header that matches a regular
6316 expression (@code{gnus-uu-mark-by-regexp}).
6317
6318 @item M P G
6319 @kindex M P G (Summary)
6320 @findex gnus-uu-unmark-by-regexp
6321 Unmark articles that have a @code{Subject} header that matches a regular
6322 expression (@code{gnus-uu-unmark-by-regexp}).
6323
6324 @item M P r
6325 @kindex M P r (Summary)
6326 @findex gnus-uu-mark-region
6327 Mark articles in region (@code{gnus-uu-mark-region}).
6328
6329 @item M P g
6330 @kindex M P g (Summary)
6331 @findex gnus-uu-unmark-region
6332 Unmark articles in region (@code{gnus-uu-unmark-region}).
6333
6334 @item M P t
6335 @kindex M P t (Summary)
6336 @findex gnus-uu-mark-thread
6337 Mark all articles in the current (sub)thread
6338 (@code{gnus-uu-mark-thread}).
6339
6340 @item M P T
6341 @kindex M P T (Summary)
6342 @findex gnus-uu-unmark-thread
6343 Unmark all articles in the current (sub)thread
6344 (@code{gnus-uu-unmark-thread}).
6345
6346 @item M P v
6347 @kindex M P v (Summary)
6348 @findex gnus-uu-mark-over
6349 Mark all articles that have a score above the prefix argument
6350 (@code{gnus-uu-mark-over}).
6351
6352 @item M P s
6353 @kindex M P s (Summary)
6354 @findex gnus-uu-mark-series
6355 Mark all articles in the current series (@code{gnus-uu-mark-series}).
6356
6357 @item M P S
6358 @kindex M P S (Summary)
6359 @findex gnus-uu-mark-sparse
6360 Mark all series that have already had some articles marked
6361 (@code{gnus-uu-mark-sparse}).
6362
6363 @item M P a
6364 @kindex M P a (Summary)
6365 @findex gnus-uu-mark-all
6366 Mark all articles in series order (@code{gnus-uu-mark-all}).
6367
6368 @item M P b
6369 @kindex M P b (Summary)
6370 @findex gnus-uu-mark-buffer
6371 Mark all articles in the buffer in the order they appear
6372 (@code{gnus-uu-mark-buffer}).
6373
6374 @item M P k
6375 @kindex M P k (Summary)
6376 @findex gnus-summary-kill-process-mark
6377 Push the current process mark set onto the stack and unmark all articles
6378 (@code{gnus-summary-kill-process-mark}).
6379
6380 @item M P y
6381 @kindex M P y (Summary)
6382 @findex gnus-summary-yank-process-mark
6383 Pop the previous process mark set from the stack and restore it
6384 (@code{gnus-summary-yank-process-mark}).
6385
6386 @item M P w
6387 @kindex M P w (Summary)
6388 @findex gnus-summary-save-process-mark
6389 Push the current process mark set onto the stack
6390 (@code{gnus-summary-save-process-mark}).
6391
6392 @end table
6393
6394 Also see the @kbd{&} command in @ref{Searching for Articles}, for how to
6395 set process marks based on article body contents.
6396
6397
6398 @node Limiting
6399 @section Limiting
6400 @cindex limiting
6401
6402 It can be convenient to limit the summary buffer to just show some
6403 subset of the articles currently in the group.  The effect most limit
6404 commands have is to remove a few (or many) articles from the summary
6405 buffer.
6406
6407 All limiting commands work on subsets of the articles already fetched
6408 from the servers.  None of these commands query the server for
6409 additional articles.
6410
6411 @table @kbd
6412
6413 @item / /
6414 @itemx / s
6415 @kindex / / (Summary)
6416 @findex gnus-summary-limit-to-subject
6417 Limit the summary buffer to articles that match some subject
6418 (@code{gnus-summary-limit-to-subject}).  If given a prefix, exclude
6419 matching articles.
6420
6421 @item / a
6422 @kindex / a (Summary)
6423 @findex gnus-summary-limit-to-author
6424 Limit the summary buffer to articles that match some author
6425 (@code{gnus-summary-limit-to-author}).  If given a prefix, exclude
6426 matching articles.
6427
6428 @item / R
6429 @kindex / R (Summary)
6430 @findex gnus-summary-limit-to-recipient
6431 Limit the summary buffer to articles that match some recipient
6432 (@code{gnus-summary-limit-to-recipient}).  If given a prefix, exclude
6433 matching articles.
6434
6435 @item / S
6436 @kindex / S (Summary)
6437 @findex gnus-summary-limit-to-singletons
6438 Limit the summary buffer to articles that aren't part of any displayed
6439 threads (@code{gnus-summary-limit-to-singletons}).  If given a prefix,
6440 limit to articles that are part of displayed threads.
6441
6442 @item / x
6443 @kindex / x (Summary)
6444 @findex gnus-summary-limit-to-extra
6445 Limit the summary buffer to articles that match one of the ``extra''
6446 headers (@pxref{To From Newsgroups})
6447 (@code{gnus-summary-limit-to-extra}).  If given a prefix, exclude
6448 matching articles.
6449
6450 @item / u
6451 @itemx x
6452 @kindex / u (Summary)
6453 @kindex x (Summary)
6454 @findex gnus-summary-limit-to-unread
6455 Limit the summary buffer to articles not marked as read
6456 (@code{gnus-summary-limit-to-unread}).  If given a prefix, limit the
6457 buffer to articles strictly unread.  This means that ticked and
6458 dormant articles will also be excluded.
6459
6460 @item / m
6461 @kindex / m (Summary)
6462 @findex gnus-summary-limit-to-marks
6463 Ask for a mark and then limit to all articles that have been marked
6464 with that mark (@code{gnus-summary-limit-to-marks}).
6465
6466 @item / t
6467 @kindex / t (Summary)
6468 @findex gnus-summary-limit-to-age
6469 Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days
6470 (@code{gnus-summary-limit-to-age}).  If given a prefix, limit to
6471 articles younger than that number of days.
6472
6473 @item / n
6474 @kindex / n (Summary)
6475 @findex gnus-summary-limit-to-articles
6476 With prefix @samp{n}, limit the summary buffer to the next @samp{n}
6477 articles.  If not given a prefix, use the process marked articles
6478 instead.  (@code{gnus-summary-limit-to-articles}).
6479
6480 @item / w
6481 @kindex / w (Summary)
6482 @findex gnus-summary-pop-limit
6483 Pop the previous limit off the stack and restore it
6484 (@code{gnus-summary-pop-limit}).  If given a prefix, pop all limits off
6485 the stack.
6486
6487 @item / .
6488 @kindex / . (Summary)
6489 @findex gnus-summary-limit-to-unseen
6490 Limit the summary buffer to the unseen articles
6491 (@code{gnus-summary-limit-to-unseen}).
6492
6493 @item / v
6494 @kindex / v (Summary)
6495 @findex gnus-summary-limit-to-score
6496 Limit the summary buffer to articles that have a score at or above some
6497 score (@code{gnus-summary-limit-to-score}).
6498
6499 @item / p
6500 @kindex / p (Summary)
6501 @findex gnus-summary-limit-to-display-predicate
6502 Limit the summary buffer to articles that satisfy the @code{display}
6503 group parameter predicate
6504 (@code{gnus-summary-limit-to-display-predicate}).  @xref{Group
6505 Parameters}, for more on this predicate.
6506
6507 @item / r
6508 @kindex / r (Summary)
6509 @findex gnus-summary-limit-to-replied
6510 Limit the summary buffer to replied articles
6511 (@code{gnus-summary-limit-to-replied}).  If given a prefix, exclude
6512 replied articles.
6513
6514 @item / E
6515 @itemx M S
6516 @kindex M S (Summary)
6517 @kindex / E (Summary)
6518 @findex gnus-summary-limit-include-expunged
6519 Include all expunged articles in the limit
6520 (@code{gnus-summary-limit-include-expunged}).
6521
6522 @item / D
6523 @kindex / D (Summary)
6524 @findex gnus-summary-limit-include-dormant
6525 Include all dormant articles in the limit
6526 (@code{gnus-summary-limit-include-dormant}).
6527
6528 @item / *
6529 @kindex / * (Summary)
6530 @findex gnus-summary-limit-include-cached
6531 Include all cached articles in the limit
6532 (@code{gnus-summary-limit-include-cached}).
6533
6534 @item / d
6535 @kindex / d (Summary)
6536 @findex gnus-summary-limit-exclude-dormant
6537 Exclude all dormant articles from the limit
6538 (@code{gnus-summary-limit-exclude-dormant}).
6539
6540 @item / M
6541 @kindex / M (Summary)
6542 @findex gnus-summary-limit-exclude-marks
6543 Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}).
6544
6545 @item / T
6546 @kindex / T (Summary)
6547 @findex gnus-summary-limit-include-thread
6548 Include all the articles in the current thread in the limit.
6549
6550 @item / c
6551 @kindex / c (Summary)
6552 @findex gnus-summary-limit-exclude-childless-dormant
6553 Exclude all dormant articles that have no children from the limit@*
6554 (@code{gnus-summary-limit-exclude-childless-dormant}).
6555
6556 @item / C
6557 @kindex / C (Summary)
6558 @findex gnus-summary-limit-mark-excluded-as-read
6559 Mark all excluded unread articles as read
6560 (@code{gnus-summary-limit-mark-excluded-as-read}).  If given a prefix,
6561 also mark excluded ticked and dormant articles as read.
6562
6563 @item / N
6564 @kindex / N (Summary)
6565 @findex gnus-summary-insert-new-articles
6566 Insert all new articles in the summary buffer.  It scans for new emails
6567 if @var{back-end}@code{-get-new-mail} is non-@code{nil}.
6568
6569 @item / o
6570 @kindex / o (Summary)
6571 @findex gnus-summary-insert-old-articles
6572 Insert all old articles in the summary buffer.  If given a numbered
6573 prefix, fetch this number of articles.
6574
6575 @item / b
6576 @kindex / b (Summary)
6577 @findex gnus-summary-limit-to-bodies
6578 Limit the summary buffer to articles that have bodies that match a
6579 certain regexp (@code{gnus-summary-limit-to-bodies}).  If given a
6580 prefix, reverse the limit.  This command is quite slow since it
6581 requires selecting each article to find the matches.
6582
6583 @item / h
6584 @kindex / h (Summary)
6585 @findex gnus-summary-limit-to-headers
6586 Like the previous command, only limit to headers instead
6587 (@code{gnus-summary-limit-to-headers}).
6588
6589 @end table
6590
6591
6592 @node Threading
6593 @section Threading
6594 @cindex threading
6595 @cindex article threading
6596
6597 Gnus threads articles by default.  @dfn{To thread} is to put responses
6598 to articles directly after the articles they respond to---in a
6599 hierarchical fashion.
6600
6601 Threading is done by looking at the @code{References} headers of the
6602 articles.  In a perfect world, this would be enough to build pretty
6603 trees, but unfortunately, the @code{References} header is often broken
6604 or simply missing.  Weird news propagation exacerbates the problem,
6605 so one has to employ other heuristics to get pleasing results.  A
6606 plethora of approaches exists, as detailed in horrible detail in
6607 @ref{Customizing Threading}.
6608
6609 First, a quick overview of the concepts:
6610
6611 @table @dfn
6612 @item root
6613 The top-most article in a thread; the first article in the thread.
6614
6615 @item thread
6616 A tree-like article structure.
6617
6618 @item sub-thread
6619 A small(er) section of this tree-like structure.
6620
6621 @item loose threads
6622 Threads often lose their roots due to article expiry, or due to the root
6623 already having been read in a previous session, and not displayed in the
6624 summary buffer.  We then typically have many sub-threads that really
6625 belong to one thread, but are without connecting roots.  These are
6626 called loose threads.
6627
6628 @item thread gathering
6629 An attempt to gather loose threads into bigger threads.
6630
6631 @item sparse threads
6632 A thread where the missing articles have been ``guessed'' at, and are
6633 displayed as empty lines in the summary buffer.
6634
6635 @end table
6636
6637
6638 @menu
6639 * Customizing Threading::       Variables you can change to affect the threading.
6640 * Thread Commands::             Thread based commands in the summary buffer.
6641 @end menu
6642
6643
6644 @node Customizing Threading
6645 @subsection Customizing Threading
6646 @cindex customizing threading
6647
6648 @menu
6649 * Loose Threads::               How Gnus gathers loose threads into bigger threads.
6650 * Filling In Threads::          Making the threads displayed look fuller.
6651 * More Threading::              Even more variables for fiddling with threads.
6652 * Low-Level Threading::         You thought it was over@dots{} but you were wrong!
6653 @end menu
6654
6655
6656 @node Loose Threads
6657 @subsubsection Loose Threads
6658 @cindex <
6659 @cindex >
6660 @cindex loose threads
6661
6662 @table @code
6663 @item gnus-summary-make-false-root
6664 @vindex gnus-summary-make-false-root
6665 If non-@code{nil}, Gnus will gather all loose subtrees into one big tree
6666 and create a dummy root at the top.  (Wait a minute.  Root at the top?
6667 Yup.)  Loose subtrees occur when the real root has expired, or you've
6668 read or killed the root in a previous session.
6669
6670 When there is no real root of a thread, Gnus will have to fudge
6671 something.  This variable says what fudging method Gnus should use.
6672 There are four possible values:
6673
6674 @iftex
6675 @iflatex
6676 \gnusfigure{The Summary Buffer}{390}{
6677 \put(0,0){\epsfig{figure=ps/summary-adopt,width=7.5cm}}
6678 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-empty,width=7.5cm}}}
6679 \put(0,400){\makebox(0,0)[tl]{\epsfig{figure=ps/summary-none,width=7.5cm}}}
6680 \put(445,400){\makebox(0,0)[tr]{\epsfig{figure=ps/summary-dummy,width=7.5cm}}}
6681 }
6682 @end iflatex
6683 @end iftex
6684
6685 @cindex adopting articles
6686
6687 @table @code
6688
6689 @item adopt
6690 Gnus will make the first of the orphaned articles the parent.  This
6691 parent will adopt all the other articles.  The adopted articles will be
6692 marked as such by pointy brackets (@samp{<>}) instead of the standard
6693 square brackets (@samp{[]}).  This is the default method.
6694
6695 @item dummy
6696 @vindex gnus-summary-dummy-line-format
6697 @vindex gnus-summary-make-false-root-always
6698 Gnus will create a dummy summary line that will pretend to be the
6699 parent.  This dummy line does not correspond to any real article, so
6700 selecting it will just select the first real article after the dummy
6701 article.  @code{gnus-summary-dummy-line-format} is used to specify the
6702 format of the dummy roots.  It accepts only one format spec:  @samp{S},
6703 which is the subject of the article.  @xref{Formatting Variables}.
6704 If you want all threads to have a dummy root, even the non-gathered
6705 ones, set @code{gnus-summary-make-false-root-always} to @code{t}.
6706
6707 @item empty
6708 Gnus won't actually make any article the parent, but simply leave the
6709 subject field of all orphans except the first empty.  (Actually, it will
6710 use @code{gnus-summary-same-subject} as the subject (@pxref{Summary
6711 Buffer Format}).)
6712
6713 @item none
6714 Don't make any article parent at all.  Just gather the threads and
6715 display them after one another.
6716
6717 @item nil
6718 Don't gather loose threads.
6719 @end table
6720
6721 @item gnus-summary-gather-subject-limit
6722 @vindex gnus-summary-gather-subject-limit
6723 Loose threads are gathered by comparing subjects of articles.  If this
6724 variable is @code{nil}, Gnus requires an exact match between the
6725 subjects of the loose threads before gathering them into one big
6726 super-thread.  This might be too strict a requirement, what with the
6727 presence of stupid newsreaders that chop off long subject lines.  If
6728 you think so, set this variable to, say, 20 to require that only the
6729 first 20 characters of the subjects have to match.  If you set this
6730 variable to a really low number, you'll find that Gnus will gather
6731 everything in sight into one thread, which isn't very helpful.
6732
6733 @cindex fuzzy article gathering
6734 If you set this variable to the special value @code{fuzzy}, Gnus will
6735 use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
6736 Matching}).
6737
6738 @item gnus-simplify-subject-fuzzy-regexp
6739 @vindex gnus-simplify-subject-fuzzy-regexp
6740 This can either be a regular expression or list of regular expressions
6741 that match strings that will be removed from subjects if fuzzy subject
6742 simplification is used.
6743
6744 @item gnus-simplify-ignored-prefixes
6745 @vindex gnus-simplify-ignored-prefixes
6746 If you set @code{gnus-summary-gather-subject-limit} to something as low
6747 as 10, you might consider setting this variable to something sensible:
6748
6749 @c Written by Michael Ernst <mernst@cs.rice.edu>
6750 @lisp
6751 (setq gnus-simplify-ignored-prefixes
6752       (concat
6753        "\\`\\[?\\("
6754        (mapconcat
6755         'identity
6756         '("looking"
6757           "wanted" "followup" "summary\\( of\\)?"
6758           "help" "query" "problem" "question"
6759           "answer" "reference" "announce"
6760           "How can I" "How to" "Comparison of"
6761           ;; ...
6762           )
6763         "\\|")
6764        "\\)\\s *\\("
6765        (mapconcat 'identity
6766                   '("for" "for reference" "with" "about")
6767                   "\\|")
6768        "\\)?\\]?:?[ \t]*"))
6769 @end lisp
6770
6771 All words that match this regexp will be removed before comparing two
6772 subjects.
6773
6774 @item gnus-simplify-subject-functions
6775 @vindex gnus-simplify-subject-functions
6776 If non-@code{nil}, this variable overrides
6777 @code{gnus-summary-gather-subject-limit}.  This variable should be a
6778 list of functions to apply to the @code{Subject} string iteratively to
6779 arrive at the simplified version of the string.
6780
6781 Useful functions to put in this list include:
6782
6783 @table @code
6784 @item gnus-simplify-subject-re
6785 @findex gnus-simplify-subject-re
6786 Strip the leading @samp{Re:}.
6787
6788 @item gnus-simplify-subject-fuzzy
6789 @findex gnus-simplify-subject-fuzzy
6790 Simplify fuzzily.
6791
6792 @item gnus-simplify-whitespace
6793 @findex gnus-simplify-whitespace
6794 Remove excessive whitespace.
6795
6796 @item gnus-simplify-all-whitespace
6797 @findex gnus-simplify-all-whitespace
6798 Remove all whitespace.
6799 @end table
6800
6801 You may also write your own functions, of course.
6802
6803
6804 @item gnus-summary-gather-exclude-subject
6805 @vindex gnus-summary-gather-exclude-subject
6806 Since loose thread gathering is done on subjects only, that might lead
6807 to many false hits, especially with certain common subjects like
6808 @samp{} and @samp{(none)}.  To make the situation slightly better,
6809 you can use the regexp @code{gnus-summary-gather-exclude-subject} to say
6810 what subjects should be excluded from the gathering process.@*
6811 The default is @samp{^ *$\\|^(none)$}.
6812
6813 @item gnus-summary-thread-gathering-function
6814 @vindex gnus-summary-thread-gathering-function
6815 Gnus gathers threads by looking at @code{Subject} headers.  This means
6816 that totally unrelated articles may end up in the same ``thread'', which
6817 is confusing.  An alternate approach is to look at all the
6818 @code{Message-ID}s in all the @code{References} headers to find matches.
6819 This will ensure that no gathered threads ever include unrelated
6820 articles, but it also means that people who have posted with broken
6821 newsreaders won't be gathered properly.  The choice is yours---plague or
6822 cholera:
6823
6824 @table @code
6825 @item gnus-gather-threads-by-subject
6826 @findex gnus-gather-threads-by-subject
6827 This function is the default gathering function and looks at
6828 @code{Subject}s exclusively.
6829
6830 @item gnus-gather-threads-by-references
6831 @findex gnus-gather-threads-by-references
6832 This function looks at @code{References} headers exclusively.
6833 @end table
6834
6835 If you want to test gathering by @code{References}, you could say
6836 something like:
6837
6838 @lisp
6839 (setq gnus-summary-thread-gathering-function
6840       'gnus-gather-threads-by-references)
6841 @end lisp
6842
6843 @end table
6844
6845
6846 @node Filling In Threads
6847 @subsubsection Filling In Threads
6848
6849 @table @code
6850 @item gnus-fetch-old-headers
6851 @vindex gnus-fetch-old-headers
6852 If non-@code{nil}, Gnus will attempt to build old threads by fetching
6853 more old headers---headers to articles marked as read.  If you would
6854 like to display as few summary lines as possible, but still connect as
6855 many loose threads as possible, you should set this variable to
6856 @code{some} or a number.  If you set it to a number, no more than that
6857 number of extra old headers will be fetched.  In either case, fetching
6858 old headers only works if the back end you are using carries overview
6859 files---this would normally be @code{nntp}, @code{nnspool},
6860 @code{nnml}, and @code{nnmaildir}.  Also remember that if the root of
6861 the thread has been expired by the server, there's not much Gnus can
6862 do about that.
6863
6864 This variable can also be set to @code{invisible}.  This won't have any
6865 visible effects, but is useful if you use the @kbd{A T} command a lot
6866 (@pxref{Finding the Parent}).
6867
6868 @item gnus-fetch-old-ephemeral-headers
6869 @vindex gnus-fetch-old-ephemeral-headers
6870 Same as @code{gnus-fetch-old-headers}, but only used for ephemeral
6871 newsgroups.
6872
6873 @item gnus-build-sparse-threads
6874 @vindex gnus-build-sparse-threads
6875 Fetching old headers can be slow.  A low-rent similar effect can be
6876 gotten by setting this variable to @code{some}.  Gnus will then look at
6877 the complete @code{References} headers of all articles and try to string
6878 together articles that belong in the same thread.  This will leave
6879 @dfn{gaps} in the threading display where Gnus guesses that an article
6880 is missing from the thread.  (These gaps appear like normal summary
6881 lines.  If you select a gap, Gnus will try to fetch the article in
6882 question.)  If this variable is @code{t}, Gnus will display all these
6883 ``gaps'' without regard for whether they are useful for completing the
6884 thread or not.  Finally, if this variable is @code{more}, Gnus won't cut
6885 off sparse leaf nodes that don't lead anywhere.  This variable is
6886 @code{nil} by default.
6887
6888 @item gnus-read-all-available-headers
6889 @vindex gnus-read-all-available-headers
6890 This is a rather obscure variable that few will find useful.  It's
6891 intended for those non-news newsgroups where the back end has to fetch
6892 quite a lot to present the summary buffer, and where it's impossible to
6893 go back to parents of articles.  This is mostly the case in the
6894 web-based groups, like the @code{nnultimate} groups.
6895
6896 If you don't use those, then it's safe to leave this as the default
6897 @code{nil}.  If you want to use this variable, it should be a regexp
6898 that matches the group name, or @code{t} for all groups.
6899
6900 @end table
6901
6902
6903 @node More Threading
6904 @subsubsection More Threading
6905
6906 @table @code
6907 @item gnus-show-threads
6908 @vindex gnus-show-threads
6909 If this variable is @code{nil}, no threading will be done, and all of
6910 the rest of the variables here will have no effect.  Turning threading
6911 off will speed group selection up a bit, but it is sure to make reading
6912 slower and more awkward.
6913
6914 @item gnus-thread-hide-subtree
6915 @vindex gnus-thread-hide-subtree
6916 If non-@code{nil}, all threads will be hidden when the summary buffer is
6917 generated.
6918
6919 This can also be a predicate specifier (@pxref{Predicate Specifiers}).
6920 Available predicates are @code{gnus-article-unread-p} and
6921 @code{gnus-article-unseen-p}.
6922
6923 Here's an example:
6924
6925 @lisp
6926 (setq gnus-thread-hide-subtree
6927       '(or gnus-article-unread-p
6928            gnus-article-unseen-p))
6929 @end lisp
6930
6931 (It's a pretty nonsensical example, since all unseen articles are also
6932 unread, but you get my drift.)
6933
6934
6935 @item gnus-thread-expunge-below
6936 @vindex gnus-thread-expunge-below
6937 All threads that have a total score (as defined by
6938 @code{gnus-thread-score-function}) less than this number will be
6939 expunged.  This variable is @code{nil} by default, which means that no
6940 threads are expunged.
6941
6942 @item gnus-thread-hide-killed
6943 @vindex gnus-thread-hide-killed
6944 if you kill a thread and this variable is non-@code{nil}, the subtree
6945 will be hidden.
6946
6947 @item gnus-thread-ignore-subject
6948 @vindex gnus-thread-ignore-subject
6949 Sometimes somebody changes the subject in the middle of a thread.  If
6950 this variable is non-@code{nil}, which is the default, the subject
6951 change is ignored.  If it is @code{nil}, a change in the subject will
6952 result in a new thread.
6953
6954 @item gnus-thread-indent-level
6955 @vindex gnus-thread-indent-level
6956 This is a number that says how much each sub-thread should be indented.
6957 The default is 4.
6958
6959 @item gnus-sort-gathered-threads-function
6960 @vindex gnus-sort-gathered-threads-function
6961 Sometimes, particularly with mailing lists, the order in which mails
6962 arrive locally is not necessarily the same as the order in which they
6963 arrived on the mailing list.  Consequently, when sorting sub-threads
6964 using the default @code{gnus-thread-sort-by-number}, responses can end
6965 up appearing before the article to which they are responding to.
6966 Setting this variable to an alternate value
6967 (e.g. @code{gnus-thread-sort-by-date}), in a group's parameters or in an
6968 appropriate hook (e.g. @code{gnus-summary-generate-hook}) can produce a
6969 more logical sub-thread ordering in such instances.
6970
6971 @end table
6972
6973
6974 @node Low-Level Threading
6975 @subsubsection Low-Level Threading
6976
6977 @table @code
6978
6979 @item gnus-parse-headers-hook
6980 @vindex gnus-parse-headers-hook
6981 Hook run before parsing any headers.
6982
6983 @item gnus-alter-header-function
6984 @vindex gnus-alter-header-function
6985 If non-@code{nil}, this function will be called to allow alteration of
6986 article header structures.  The function is called with one parameter,
6987 the article header vector, which it may alter in any way.  For instance,
6988 if you have a mail-to-news gateway which alters the @code{Message-ID}s
6989 in systematic ways (by adding prefixes and such), you can use this
6990 variable to un-scramble the @code{Message-ID}s so that they are more
6991 meaningful.  Here's one example:
6992
6993 @lisp
6994 (setq gnus-alter-header-function 'my-alter-message-id)
6995
6996 (defun my-alter-message-id (header)
6997   (let ((id (mail-header-id header)))
6998     (when (string-match
6999            "\\(<[^<>@@]*\\)\\.?cygnus\\..*@@\\([^<>@@]*>\\)" id)
7000       (mail-header-set-id
7001        (concat (match-string 1 id) "@@" (match-string 2 id))
7002        header))))
7003 @end lisp
7004
7005 @end table
7006
7007
7008 @node Thread Commands
7009 @subsection Thread Commands
7010 @cindex thread commands
7011
7012 @table @kbd
7013
7014 @item T k
7015 @itemx C-M-k
7016 @kindex T k (Summary)
7017 @kindex C-M-k (Summary)
7018 @findex gnus-summary-kill-thread
7019 Mark all articles in the current (sub-)thread as read
7020 (@code{gnus-summary-kill-thread}).  If the prefix argument is positive,
7021 remove all marks instead.  If the prefix argument is negative, tick
7022 articles instead.
7023
7024 @item T l
7025 @itemx C-M-l
7026 @kindex T l (Summary)
7027 @kindex C-M-l (Summary)
7028 @findex gnus-summary-lower-thread
7029 Lower the score of the current (sub-)thread
7030 (@code{gnus-summary-lower-thread}).
7031
7032 @item T i
7033 @kindex T i (Summary)
7034 @findex gnus-summary-raise-thread
7035 Increase the score of the current (sub-)thread
7036 (@code{gnus-summary-raise-thread}).
7037
7038 @item T #
7039 @kindex T # (Summary)
7040 @findex gnus-uu-mark-thread
7041 Set the process mark on the current (sub-)thread
7042 (@code{gnus-uu-mark-thread}).
7043
7044 @item T M-#
7045 @kindex T M-# (Summary)
7046 @findex gnus-uu-unmark-thread
7047 Remove the process mark from the current (sub-)thread
7048 (@code{gnus-uu-unmark-thread}).
7049
7050 @item T T
7051 @kindex T T (Summary)
7052 @findex gnus-summary-toggle-threads
7053 Toggle threading (@code{gnus-summary-toggle-threads}).
7054
7055 @item T s
7056 @kindex T s (Summary)
7057 @findex gnus-summary-show-thread
7058 Expose the (sub-)thread hidden under the current article, if any@*
7059 (@code{gnus-summary-show-thread}).
7060
7061 @item T h
7062 @kindex T h (Summary)
7063 @findex gnus-summary-hide-thread
7064 Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
7065
7066 @item T S
7067 @kindex T S (Summary)
7068 @findex gnus-summary-show-all-threads
7069 Expose all hidden threads (@code{gnus-summary-show-all-threads}).
7070
7071 @item T H
7072 @kindex T H (Summary)
7073 @findex gnus-summary-hide-all-threads
7074 Hide all threads (@code{gnus-summary-hide-all-threads}).
7075
7076 @item T t
7077 @kindex T t (Summary)
7078 @findex gnus-summary-rethread-current
7079 Re-thread the current article's thread
7080 (@code{gnus-summary-rethread-current}).  This works even when the
7081 summary buffer is otherwise unthreaded.
7082
7083 @item T ^
7084 @kindex T ^ (Summary)
7085 @findex gnus-summary-reparent-thread
7086 Make the current article the child of the marked (or previous) article
7087 (@code{gnus-summary-reparent-thread}).
7088
7089 @item T M-^
7090 @kindex T M-^ (Summary)
7091 @findex gnus-summary-reparent-children
7092 Make the current article the parent of the marked articles
7093 (@code{gnus-summary-reparent-children}).
7094
7095 @end table
7096
7097 The following commands are thread movement commands.  They all
7098 understand the numeric prefix.
7099
7100 @table @kbd
7101
7102 @item T n
7103 @kindex T n (Summary)
7104 @itemx C-M-f
7105 @kindex C-M-n (Summary)
7106 @itemx M-down
7107 @kindex M-down (Summary)
7108 @findex gnus-summary-next-thread
7109 Go to the next thread (@code{gnus-summary-next-thread}).
7110
7111 @item T p
7112 @kindex T p (Summary)
7113 @itemx C-M-b
7114 @kindex C-M-p (Summary)
7115 @itemx M-up
7116 @kindex M-up (Summary)
7117 @findex gnus-summary-prev-thread
7118 Go to the previous thread (@code{gnus-summary-prev-thread}).
7119
7120 @item T d
7121 @kindex T d (Summary)
7122 @findex gnus-summary-down-thread
7123 Descend the thread (@code{gnus-summary-down-thread}).
7124
7125 @item T u
7126 @kindex T u (Summary)
7127 @findex gnus-summary-up-thread
7128 Ascend the thread (@code{gnus-summary-up-thread}).
7129
7130 @item T o
7131 @kindex T o (Summary)
7132 @findex gnus-summary-top-thread
7133 Go to the top of the thread (@code{gnus-summary-top-thread}).
7134 @end table
7135
7136 @vindex gnus-thread-operation-ignore-subject
7137 If you ignore subject while threading, you'll naturally end up with
7138 threads that have several different subjects in them.  If you then issue
7139 a command like @kbd{T k} (@code{gnus-summary-kill-thread}) you might not
7140 wish to kill the entire thread, but just those parts of the thread that
7141 have the same subject as the current article.  If you like this idea,
7142 you can fiddle with @code{gnus-thread-operation-ignore-subject}.  If it
7143 is non-@code{nil} (which it is by default), subjects will be ignored
7144 when doing thread commands.  If this variable is @code{nil}, articles in
7145 the same thread with different subjects will not be included in the
7146 operation in question.  If this variable is @code{fuzzy}, only articles
7147 that have subjects fuzzily equal will be included (@pxref{Fuzzy
7148 Matching}).
7149
7150
7151 @node Sorting the Summary Buffer
7152 @section Sorting the Summary Buffer
7153
7154 @findex gnus-thread-sort-by-total-score
7155 @findex gnus-thread-sort-by-date
7156 @findex gnus-thread-sort-by-date-reverse
7157 @findex gnus-thread-sort-by-score
7158 @findex gnus-thread-sort-by-subject
7159 @findex gnus-thread-sort-by-author
7160 @findex gnus-thread-sort-by-recipient
7161 @findex gnus-thread-sort-by-number
7162 @findex gnus-thread-sort-by-random
7163 @vindex gnus-thread-sort-functions
7164 @findex gnus-thread-sort-by-most-recent-number
7165 @findex gnus-thread-sort-by-most-recent-date
7166 If you are using a threaded summary display, you can sort the threads by
7167 setting @code{gnus-thread-sort-functions}, which can be either a single
7168 function, a list of functions, or a list containing functions and
7169 @code{(not some-function)} elements.
7170
7171 By default, sorting is done on article numbers.  Ready-made sorting
7172 predicate functions include @code{gnus-thread-sort-by-number},
7173 @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-recipient},
7174 @code{gnus-thread-sort-by-subject},
7175 @code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-date-reverse},
7176 @code{gnus-thread-sort-by-score},
7177 @code{gnus-thread-sort-by-most-recent-number},
7178 @code{gnus-thread-sort-by-most-recent-date},
7179 @code{gnus-thread-sort-by-random} and
7180 @code{gnus-thread-sort-by-total-score}.
7181
7182 Each function takes two threads and returns non-@code{nil} if the first
7183 thread should be sorted before the other.  Note that sorting really is
7184 normally done by looking only at the roots of each thread.
7185
7186 If you use more than one function, the primary sort key should be the
7187 last function in the list.  You should probably always include
7188 @code{gnus-thread-sort-by-number} in the list of sorting
7189 functions---preferably first.  This will ensure that threads that are
7190 equal with respect to the other sort criteria will be displayed in
7191 ascending article order.
7192
7193 If you would like to sort by reverse score, then by subject, and finally
7194 by number, you could do something like:
7195
7196 @lisp
7197 (setq gnus-thread-sort-functions
7198       '(gnus-thread-sort-by-number
7199         gnus-thread-sort-by-subject
7200         (not gnus-thread-sort-by-total-score)))
7201 @end lisp
7202
7203 The threads that have highest score will be displayed first in the
7204 summary buffer.  When threads have the same score, they will be sorted
7205 alphabetically.  The threads that have the same score and the same
7206 subject will be sorted by number, which is (normally) the sequence in
7207 which the articles arrived.
7208
7209 If you want to sort by score and then reverse arrival order, you could
7210 say something like:
7211
7212 @lisp
7213 (setq gnus-thread-sort-functions
7214       '((not gnus-thread-sort-by-number)
7215         gnus-thread-sort-by-score))
7216 @end lisp
7217
7218 @vindex gnus-thread-score-function
7219 The function in the @code{gnus-thread-score-function} variable (default
7220 @code{+}) is used for calculating the total score of a thread.  Useful
7221 functions might be @code{max}, @code{min}, or squared means, or whatever
7222 tickles your fancy.
7223
7224 @findex gnus-article-sort-functions
7225 @findex gnus-article-sort-by-date
7226 @findex gnus-article-sort-by-score
7227 @findex gnus-article-sort-by-subject
7228 @findex gnus-article-sort-by-author
7229 @findex gnus-article-sort-by-random
7230 @findex gnus-article-sort-by-number
7231 If you are using an unthreaded display for some strange reason or
7232 other, you have to fiddle with the @code{gnus-article-sort-functions}
7233 variable.  It is very similar to the
7234 @code{gnus-thread-sort-functions}, except that it uses slightly
7235 different functions for article comparison.  Available sorting
7236 predicate functions are @code{gnus-article-sort-by-number},
7237 @code{gnus-article-sort-by-author},
7238 @code{gnus-article-sort-by-subject}, @code{gnus-article-sort-by-date},
7239 @code{gnus-article-sort-by-random}, and
7240 @code{gnus-article-sort-by-score}.
7241
7242 If you want to sort an unthreaded summary display by subject, you could
7243 say something like:
7244
7245 @lisp
7246 (setq gnus-article-sort-functions
7247       '(gnus-article-sort-by-number
7248         gnus-article-sort-by-subject))
7249 @end lisp
7250
7251 You can define group specific sorting via @code{gnus-parameters},
7252 @xref{Group Parameters}.
7253
7254
7255 @node Asynchronous Fetching
7256 @section Asynchronous Article Fetching
7257 @cindex asynchronous article fetching
7258 @cindex article pre-fetch
7259 @cindex pre-fetch
7260
7261 If you read your news from an @acronym{NNTP} server that's far away, the
7262 network latencies may make reading articles a chore.  You have to wait
7263 for a while after pressing @kbd{n} to go to the next article before the
7264 article appears.  Why can't Gnus just go ahead and fetch the article
7265 while you are reading the previous one?  Why not, indeed.
7266
7267 First, some caveats.  There are some pitfalls to using asynchronous
7268 article fetching, especially the way Gnus does it.
7269
7270 Let's say you are reading article 1, which is short, and article 2 is
7271 quite long, and you are not interested in reading that.  Gnus does not
7272 know this, so it goes ahead and fetches article 2.  You decide to read
7273 article 3, but since Gnus is in the process of fetching article 2, the
7274 connection is blocked.
7275
7276 To avoid these situations, Gnus will open two (count 'em two)
7277 connections to the server.  Some people may think this isn't a very nice
7278 thing to do, but I don't see any real alternatives.  Setting up that
7279 extra connection takes some time, so Gnus startup will be slower.
7280
7281 Gnus will fetch more articles than you will read.  This will mean that
7282 the link between your machine and the @acronym{NNTP} server will become more
7283 loaded than if you didn't use article pre-fetch.  The server itself will
7284 also become more loaded---both with the extra article requests, and the
7285 extra connection.
7286
7287 Ok, so now you know that you shouldn't really use this thing@dots{} unless
7288 you really want to.
7289
7290 @vindex gnus-asynchronous
7291 Here's how:  Set @code{gnus-asynchronous} to @code{t}.  The rest should
7292 happen automatically.
7293
7294 @vindex gnus-use-article-prefetch
7295 You can control how many articles are to be pre-fetched by setting
7296 @code{gnus-use-article-prefetch}.  This is 30 by default, which means
7297 that when you read an article in the group, the back end will pre-fetch
7298 the next 30 articles.  If this variable is @code{t}, the back end will
7299 pre-fetch all the articles it can without bound.  If it is
7300 @code{nil}, no pre-fetching will be done.
7301
7302 @vindex gnus-async-prefetch-article-p
7303 @findex gnus-async-read-p
7304 There are probably some articles that you don't want to pre-fetch---read
7305 articles, for instance.  The @code{gnus-async-prefetch-article-p}
7306 variable controls whether an article is to be pre-fetched.  This
7307 function should return non-@code{nil} when the article in question is
7308 to be pre-fetched.  The default is @code{gnus-async-read-p}, which
7309 returns @code{nil} on read articles.  The function is called with an
7310 article data structure as the only parameter.
7311
7312 If, for instance, you wish to pre-fetch only unread articles shorter
7313 than 100 lines, you could say something like:
7314
7315 @lisp
7316 (defun my-async-short-unread-p (data)
7317   "Return non-nil for short, unread articles."
7318   (and (gnus-data-unread-p data)
7319        (< (mail-header-lines (gnus-data-header data))
7320           100)))
7321
7322 (setq gnus-async-prefetch-article-p 'my-async-short-unread-p)
7323 @end lisp
7324
7325 These functions will be called many, many times, so they should
7326 preferably be short and sweet to avoid slowing down Gnus too much.
7327 It's probably a good idea to byte-compile things like this.
7328
7329 @vindex gnus-prefetched-article-deletion-strategy
7330 Articles have to be removed from the asynch buffer sooner or later.  The
7331 @code{gnus-prefetched-article-deletion-strategy} says when to remove
7332 articles.  This is a list that may contain the following elements:
7333
7334 @table @code
7335 @item read
7336 Remove articles when they are read.
7337
7338 @item exit
7339 Remove articles when exiting the group.
7340 @end table
7341
7342 The default value is @code{(read exit)}.
7343
7344 @c @vindex gnus-use-header-prefetch
7345 @c If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
7346 @c from the next group.
7347
7348
7349 @node Article Caching
7350 @section Article Caching
7351 @cindex article caching
7352 @cindex caching
7353
7354 If you have an @emph{extremely} slow @acronym{NNTP} connection, you may
7355 consider turning article caching on.  Each article will then be stored
7356 locally under your home directory.  As you may surmise, this could
7357 potentially use @emph{huge} amounts of disk space, as well as eat up all
7358 your inodes so fast it will make your head swim.  In vodka.
7359
7360 Used carefully, though, it could be just an easier way to save articles.
7361
7362 @vindex gnus-use-long-file-name
7363 @vindex gnus-cache-directory
7364 @vindex gnus-use-cache
7365 To turn caching on, set @code{gnus-use-cache} to @code{t}.  By default,
7366 all articles ticked or marked as dormant will then be copied
7367 over to your local cache (@code{gnus-cache-directory}).  Whether this
7368 cache is flat or hierarchical is controlled by the
7369 @code{gnus-use-long-file-name} variable, as usual.
7370
7371 When re-selecting a ticked or dormant article, it will be fetched from the
7372 cache instead of from the server.  As articles in your cache will never
7373 expire, this might serve as a method of saving articles while still
7374 keeping them where they belong.  Just mark all articles you want to save
7375 as dormant, and don't worry.
7376
7377 When an article is marked as read, is it removed from the cache.
7378
7379 @vindex gnus-cache-remove-articles
7380 @vindex gnus-cache-enter-articles
7381 The entering/removal of articles from the cache is controlled by the
7382 @code{gnus-cache-enter-articles} and @code{gnus-cache-remove-articles}
7383 variables.  Both are lists of symbols.  The first is @code{(ticked
7384 dormant)} by default, meaning that ticked and dormant articles will be
7385 put in the cache.  The latter is @code{(read)} by default, meaning that
7386 articles marked as read are removed from the cache.  Possibly
7387 symbols in these two lists are @code{ticked}, @code{dormant},
7388 @code{unread} and @code{read}.
7389
7390 @findex gnus-jog-cache
7391 So where does the massive article-fetching and storing come into the
7392 picture?  The @code{gnus-jog-cache} command will go through all
7393 subscribed newsgroups, request all unread articles, score them, and
7394 store them in the cache.  You should only ever, ever ever ever, use this
7395 command if 1) your connection to the @acronym{NNTP} server is really, really,
7396 really slow and 2) you have a really, really, really huge disk.
7397 Seriously.  One way to cut down on the number of articles downloaded is
7398 to score unwanted articles down and have them marked as read.  They will
7399 not then be downloaded by this command.
7400
7401 @vindex gnus-uncacheable-groups
7402 @vindex gnus-cacheable-groups
7403 It is likely that you do not want caching on all groups.  For instance,
7404 if your @code{nnml} mail is located under your home directory, it makes no
7405 sense to cache it somewhere else under your home directory.  Unless you
7406 feel that it's neat to use twice as much space.
7407
7408 To limit the caching, you could set @code{gnus-cacheable-groups} to a
7409 regexp of groups to cache, @samp{^nntp} for instance, or set the
7410 @code{gnus-uncacheable-groups} regexp to @samp{^nnml}, for instance.
7411 Both variables are @code{nil} by default.  If a group matches both
7412 variables, the group is not cached.
7413
7414 @findex gnus-cache-generate-nov-databases
7415 @findex gnus-cache-generate-active
7416 @vindex gnus-cache-active-file
7417 The cache stores information on what articles it contains in its active
7418 file (@code{gnus-cache-active-file}).  If this file (or any other parts
7419 of the cache) becomes all messed up for some reason or other, Gnus
7420 offers two functions that will try to set things right.  @kbd{M-x
7421 gnus-cache-generate-nov-databases} will (re)build all the @acronym{NOV}
7422 files, and @kbd{gnus-cache-generate-active} will (re)generate the active
7423 file.
7424
7425 @findex gnus-cache-move-cache
7426 @code{gnus-cache-move-cache} will move your whole
7427 @code{gnus-cache-directory} to some other location.  You get asked to
7428 where, isn't that cool?
7429
7430 @node Persistent Articles
7431 @section Persistent Articles
7432 @cindex persistent articles
7433
7434 Closely related to article caching, we have @dfn{persistent articles}.
7435 In fact, it's just a different way of looking at caching, and much more
7436 useful in my opinion.
7437
7438 Say you're reading a newsgroup, and you happen on to some valuable gem
7439 that you want to keep and treasure forever.  You'd normally just save it
7440 (using one of the many saving commands) in some file.  The problem with
7441 that is that it's just, well, yucky.  Ideally you'd prefer just having
7442 the article remain in the group where you found it forever; untouched by
7443 the expiry going on at the news server.
7444
7445 This is what a @dfn{persistent article} is---an article that just won't
7446 be deleted.  It's implemented using the normal cache functions, but
7447 you use two explicit commands for managing persistent articles:
7448
7449 @table @kbd
7450
7451 @item *
7452 @kindex * (Summary)
7453 @findex gnus-cache-enter-article
7454 Make the current article persistent (@code{gnus-cache-enter-article}).
7455
7456 @item M-*
7457 @kindex M-* (Summary)
7458 @findex gnus-cache-remove-article
7459 Remove the current article from the persistent articles
7460 (@code{gnus-cache-remove-article}).  This will normally delete the
7461 article.
7462 @end table
7463
7464 Both these commands understand the process/prefix convention.
7465
7466 To avoid having all ticked articles (and stuff) entered into the cache,
7467 you should set @code{gnus-use-cache} to @code{passive} if you're just
7468 interested in persistent articles:
7469
7470 @lisp
7471 (setq gnus-use-cache 'passive)
7472 @end lisp
7473
7474
7475 @node Article Backlog
7476 @section Article Backlog
7477 @cindex backlog
7478 @cindex article backlog
7479
7480 If you have a slow connection, but the idea of using caching seems
7481 unappealing to you (and it is, really), you can help the situation some
7482 by switching on the @dfn{backlog}.  This is where Gnus will buffer
7483 already read articles so that it doesn't have to re-fetch articles
7484 you've already read.  This only helps if you are in the habit of
7485 re-selecting articles you've recently read, of course.  If you never do
7486 that, turning the backlog on will slow Gnus down a little bit, and
7487 increase memory usage some.
7488
7489 @vindex gnus-keep-backlog
7490 If you set @code{gnus-keep-backlog} to a number @var{n}, Gnus will store
7491 at most @var{n} old articles in a buffer for later re-fetching.  If this
7492 variable is non-@code{nil} and is not a number, Gnus will store
7493 @emph{all} read articles, which means that your Emacs will grow without
7494 bound before exploding and taking your machine down with you.  I put
7495 that in there just to keep y'all on your toes.
7496
7497 The default value is 20.
7498
7499
7500 @node Saving Articles
7501 @section Saving Articles
7502 @cindex saving articles
7503
7504 Gnus can save articles in a number of ways.  Below is the documentation
7505 for saving articles in a fairly straight-forward fashion (i.e., little
7506 processing of the article is done before it is saved).  For a different
7507 approach (uudecoding, unsharing) you should use @code{gnus-uu}
7508 (@pxref{Decoding Articles}).
7509
7510 For the commands listed here, the target is a file.  If you want to
7511 save to a group, see the @kbd{B c} (@code{gnus-summary-copy-article})
7512 command (@pxref{Mail Group Commands}).
7513
7514 @vindex gnus-save-all-headers
7515 If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete
7516 unwanted headers before saving the article.
7517
7518 @vindex gnus-saved-headers
7519 If the preceding variable is @code{nil}, all headers that match the
7520 @code{gnus-saved-headers} regexp will be kept, while the rest will be
7521 deleted before saving.
7522
7523 @table @kbd
7524
7525 @item O o
7526 @itemx o
7527 @kindex O o (Summary)
7528 @kindex o (Summary)
7529 @findex gnus-summary-save-article
7530 @c @icon{gnus-summary-save-article}
7531 Save the current article using the default article saver
7532 (@code{gnus-summary-save-article}).
7533
7534 @item O m
7535 @kindex O m (Summary)
7536 @findex gnus-summary-save-article-mail
7537 Save the current article in a Unix mail box (mbox) file
7538 (@code{gnus-summary-save-article-mail}).
7539
7540 @item O r
7541 @kindex O r (Summary)
7542 @findex gnus-summary-save-article-rmail
7543 Save the current article in Rmail format
7544 (@code{gnus-summary-save-article-rmail}).
7545
7546 @item O f
7547 @kindex O f (Summary)
7548 @findex gnus-summary-save-article-file
7549 @c @icon{gnus-summary-save-article-file}
7550 Save the current article in plain file format
7551 (@code{gnus-summary-save-article-file}).
7552
7553 @item O F
7554 @kindex O F (Summary)
7555 @findex gnus-summary-write-article-file
7556 Write the current article in plain file format, overwriting any previous
7557 file contents (@code{gnus-summary-write-article-file}).
7558
7559 @item O b
7560 @kindex O b (Summary)
7561 @findex gnus-summary-save-article-body-file
7562 Save the current article body in plain file format
7563 (@code{gnus-summary-save-article-body-file}).
7564
7565 @item O h
7566 @kindex O h (Summary)
7567 @findex gnus-summary-save-article-folder
7568 Save the current article in mh folder format
7569 (@code{gnus-summary-save-article-folder}).
7570
7571 @item O v
7572 @kindex O v (Summary)
7573 @findex gnus-summary-save-article-vm
7574 Save the current article in a VM folder
7575 (@code{gnus-summary-save-article-vm}).
7576
7577 @item O p
7578 @itemx |
7579 @kindex O p (Summary)
7580 @kindex | (Summary)
7581 @findex gnus-summary-pipe-output
7582 Save the current article in a pipe.  Uhm, like, what I mean is---Pipe
7583 the current article to a process (@code{gnus-summary-pipe-output}).
7584 If given a symbolic prefix (@pxref{Symbolic Prefixes}), include the
7585 complete headers in the piped output.
7586
7587 @item O P
7588 @kindex O P (Summary)
7589 @findex gnus-summary-muttprint
7590 @vindex gnus-summary-muttprint-program
7591 Save the current article into muttprint.  That is, print it using the
7592 external program @uref{http://muttprint.sourceforge.net/,
7593 Muttprint}.  The program name and options to use is controlled by the
7594 variable @code{gnus-summary-muttprint-program}.
7595 (@code{gnus-summary-muttprint}).
7596
7597 @end table
7598
7599 @vindex gnus-prompt-before-saving
7600 All these commands use the process/prefix convention
7601 (@pxref{Process/Prefix}).  If you save bunches of articles using these
7602 functions, you might get tired of being prompted for files to save each
7603 and every article in.  The prompting action is controlled by
7604 the @code{gnus-prompt-before-saving} variable, which is @code{always} by
7605 default, giving you that excessive prompting action you know and
7606 loathe.  If you set this variable to @code{t} instead, you'll be prompted
7607 just once for each series of articles you save.  If you like to really
7608 have Gnus do all your thinking for you, you can even set this variable
7609 to @code{nil}, which means that you will never be prompted for files to
7610 save articles in.  Gnus will simply save all the articles in the default
7611 files.
7612
7613
7614 @vindex gnus-default-article-saver
7615 You can customize the @code{gnus-default-article-saver} variable to make
7616 Gnus do what you want it to.  You can use any of the eight ready-made
7617 functions below, or you can create your own.
7618
7619 @table @code
7620
7621 @item gnus-summary-save-in-rmail
7622 @findex gnus-summary-save-in-rmail
7623 @vindex gnus-rmail-save-name
7624 @findex gnus-plain-save-name
7625 This is the default format, @dfn{Babyl}.  Uses the function in the
7626 @code{gnus-rmail-save-name} variable to get a file name to save the
7627 article in.  The default is @code{gnus-plain-save-name}.
7628
7629 @item gnus-summary-save-in-mail
7630 @findex gnus-summary-save-in-mail
7631 @vindex gnus-mail-save-name
7632 Save in a Unix mail (mbox) file.  Uses the function in the
7633 @code{gnus-mail-save-name} variable to get a file name to save the
7634 article in.  The default is @code{gnus-plain-save-name}.
7635
7636 @item gnus-summary-save-in-file
7637 @findex gnus-summary-save-in-file
7638 @vindex gnus-file-save-name
7639 @findex gnus-numeric-save-name
7640 Append the article straight to an ordinary file.  Uses the function in
7641 the @code{gnus-file-save-name} variable to get a file name to save the
7642 article in.  The default is @code{gnus-numeric-save-name}.
7643
7644 @item gnus-summary-write-to-file
7645 @findex gnus-summary-write-to-file
7646 Write the article straight to an ordinary file.  The file is
7647 overwritten if it exists.  Uses the function in the
7648 @code{gnus-file-save-name} variable to get a file name to save the
7649 article in.  The default is @code{gnus-numeric-save-name}.
7650
7651 @item gnus-summary-save-body-in-file
7652 @findex gnus-summary-save-body-in-file
7653 Append the article body to an ordinary file.  Uses the function in the
7654 @code{gnus-file-save-name} variable to get a file name to save the
7655 article in.  The default is @code{gnus-numeric-save-name}.
7656
7657 @item gnus-summary-write-body-to-file
7658 @findex gnus-summary-write-body-to-file
7659 Write the article body straight to an ordinary file.  The file is
7660 overwritten if it exists.  Uses the function in the
7661 @code{gnus-file-save-name} variable to get a file name to save the
7662 article in.  The default is @code{gnus-numeric-save-name}.
7663
7664 @item gnus-summary-save-in-folder
7665 @findex gnus-summary-save-in-folder
7666 @findex gnus-folder-save-name
7667 @findex gnus-Folder-save-name
7668 @vindex gnus-folder-save-name
7669 @cindex rcvstore
7670 @cindex MH folders
7671 Save the article to an MH folder using @code{rcvstore} from the MH
7672 library.  Uses the function in the&n