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