(Subscription Methods): Link to "Group Levels" to explain killed groups.
[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.18}
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.18
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.18
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
1171 the list of groups (@pxref{Group Levels}) from the active file(s) with
1172 the lists of subscribed and dead groups.  This isn't a particularly
1173 fast method.  If @code{gnus-check-new-newsgroups} is
1174 @code{ask-server}, Gnus will ask the server for new groups since the
1175 last time.  This is both faster and cheaper.  This also means that you
1176 can get rid of the list of killed groups altogether, so you may set
1177 @code{gnus-save-killed-list} to @code{nil}, which will save time both
1178 at startup, at exit, and all over.  Saves disk space, too.  Why isn't
1179 this the default, then?  Unfortunately, not all servers support this
1180 command.
1181
1182 I bet I know what you're thinking now: How do I find out whether my
1183 server supports @code{ask-server}?  No?  Good, because I don't have a
1184 fail-safe answer.  I would suggest just setting this variable to
1185 @code{ask-server} and see whether any new groups appear within the next
1186 few days.  If any do, then it works.  If none do, then it doesn't
1187 work.  I could write a function to make Gnus guess whether the server
1188 supports @code{ask-server}, but it would just be a guess.  So I won't.
1189 You could @code{telnet} to the server and say @code{HELP} and see
1190 whether it lists @samp{NEWGROUPS} among the commands it understands.  If
1191 it does, then it might work.  (But there are servers that lists
1192 @samp{NEWGROUPS} without supporting the function properly.)
1193
1194 This variable can also be a list of select methods.  If so, Gnus will
1195 issue an @code{ask-server} command to each of the select methods, and
1196 subscribe them (or not) using the normal methods.  This might be handy
1197 if you are monitoring a few servers for new groups.  A side effect is
1198 that startup will take much longer, so you can meditate while waiting.
1199 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
1200
1201
1202 @node Subscription Methods
1203 @subsection Subscription Methods
1204
1205 @vindex gnus-subscribe-newsgroup-method
1206 What Gnus does when it encounters a new group is determined by the
1207 @code{gnus-subscribe-newsgroup-method} variable.
1208
1209 This variable should contain a function.  This function will be called
1210 with the name of the new group as the only parameter.
1211
1212 Some handy pre-fab functions are:
1213
1214 @table @code
1215
1216 @item gnus-subscribe-zombies
1217 @vindex gnus-subscribe-zombies
1218 Make all new groups zombies (@pxref{Group Levels}).  This is the
1219 default.  You can browse the zombies later (with @kbd{A z}) and either
1220 kill them all off properly (with @kbd{S z}), or subscribe to them
1221 (with @kbd{u}).
1222
1223 @item gnus-subscribe-randomly
1224 @vindex gnus-subscribe-randomly
1225 Subscribe all new groups in arbitrary order.  This really means that all
1226 new groups will be added at ``the top'' of the group buffer.
1227
1228 @item gnus-subscribe-alphabetically
1229 @vindex gnus-subscribe-alphabetically
1230 Subscribe all new groups in alphabetical order.
1231
1232 @item gnus-subscribe-hierarchically
1233 @vindex gnus-subscribe-hierarchically
1234 Subscribe all new groups hierarchically.  The difference between this
1235 function and @code{gnus-subscribe-alphabetically} is slight.
1236 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
1237 alphabetical fashion, while this function will enter groups into its
1238 hierarchy.  So if you want to have the @samp{rec} hierarchy before the
1239 @samp{comp} hierarchy, this function will not mess that configuration
1240 up.  Or something like that.
1241
1242 @item gnus-subscribe-interactively
1243 @vindex gnus-subscribe-interactively
1244 Subscribe new groups interactively.  This means that Gnus will ask
1245 you about @strong{all} new groups.  The groups you choose to subscribe
1246 to will be subscribed hierarchically.
1247
1248 @item gnus-subscribe-killed
1249 @vindex gnus-subscribe-killed
1250 Kill all new groups.
1251
1252 @item gnus-subscribe-topics
1253 @vindex gnus-subscribe-topics
1254 Put the groups into the topic that has a matching @code{subscribe} topic
1255 parameter (@pxref{Topic Parameters}).  For instance, a @code{subscribe}
1256 topic parameter that looks like
1257
1258 @example
1259 "nnml"
1260 @end example
1261
1262 will mean that all groups that match that regex will be subscribed under
1263 that topic.
1264
1265 If no topics match the groups, the groups will be subscribed in the
1266 top-level topic.
1267
1268 @end table
1269
1270 @vindex gnus-subscribe-hierarchical-interactive
1271 A closely related variable is
1272 @code{gnus-subscribe-hierarchical-interactive}.  (That's quite a
1273 mouthful.)  If this variable is non-@code{nil}, Gnus will ask you in a
1274 hierarchical fashion whether to subscribe to new groups or not.  Gnus
1275 will ask you for each sub-hierarchy whether you want to descend the
1276 hierarchy or not.
1277
1278 One common mistake is to set the variable a few paragraphs above
1279 (@code{gnus-subscribe-newsgroup-method}) to
1280 @code{gnus-subscribe-hierarchical-interactive}.  This is an error.  This
1281 will not work.  This is ga-ga.  So don't do it.
1282
1283
1284 @node Filtering New Groups
1285 @subsection Filtering New Groups
1286
1287 A nice and portable way to control which new newsgroups should be
1288 subscribed (or ignored) is to put an @dfn{options} line at the start of
1289 the @file{.newsrc} file.  Here's an example:
1290
1291 @example
1292 options -n !alt.all !rec.all sci.all
1293 @end example
1294
1295 @vindex gnus-subscribe-options-newsgroup-method
1296 This line obviously belongs to a serious-minded intellectual scientific
1297 person (or she may just be plain old boring), because it says that all
1298 groups that have names beginning with @samp{alt} and @samp{rec} should
1299 be ignored, and all groups with names beginning with @samp{sci} should
1300 be subscribed.  Gnus will not use the normal subscription method for
1301 subscribing these groups.
1302 @code{gnus-subscribe-options-newsgroup-method} is used instead.  This
1303 variable defaults to @code{gnus-subscribe-alphabetically}.
1304
1305 @vindex gnus-options-not-subscribe
1306 @vindex gnus-options-subscribe
1307 If you don't want to mess with your @file{.newsrc} file, you can just
1308 set the two variables @code{gnus-options-subscribe} and
1309 @code{gnus-options-not-subscribe}.  These two variables do exactly the
1310 same as the @file{.newsrc} @samp{options -n} trick.  Both are regexps,
1311 and if the new group matches the former, it will be unconditionally
1312 subscribed, and if it matches the latter, it will be ignored.
1313
1314 @vindex gnus-auto-subscribed-groups
1315 Yet another variable that meddles here is
1316 @code{gnus-auto-subscribed-groups}.  It works exactly like
1317 @code{gnus-options-subscribe}, and is therefore really superfluous,
1318 but I thought it would be nice to have two of these.  This variable is
1319 more meant for setting some ground rules, while the other variable is
1320 used more for user fiddling.  By default this variable makes all new
1321 groups that come from mail back ends (@code{nnml}, @code{nnbabyl},
1322 @code{nnfolder}, @code{nnmbox}, @code{nnmh}, @code{nnimap}, and
1323 @code{nnmaildir}) subscribed.  If you don't like that, just set this
1324 variable to @code{nil}.
1325
1326 @vindex gnus-auto-subscribed-categories
1327 As if that wasn't enough, @code{gnus-auto-subscribed-categories} also
1328 allows you to specify that new groups should be subcribed based on the
1329 category their select methods belong to.  The default is @samp{(mail
1330 post-mail)}, meaning that all new groups from mail-like backends
1331 should be subscribed automatically.
1332
1333 New groups that match these variables are subscribed using
1334 @code{gnus-subscribe-options-newsgroup-method}.
1335
1336
1337 @node Changing Servers
1338 @section Changing Servers
1339 @cindex changing servers
1340
1341 Sometimes it is necessary to move from one @acronym{NNTP} server to another.
1342 This happens very rarely, but perhaps you change jobs, or one server is
1343 very flaky and you want to use another.
1344
1345 Changing the server is pretty easy, right?  You just change
1346 @code{gnus-select-method} to point to the new server?
1347
1348 @emph{Wrong!}
1349
1350 Article numbers are not (in any way) kept synchronized between different
1351 @acronym{NNTP} servers, and the only way Gnus keeps track of what articles
1352 you have read is by keeping track of article numbers.  So when you
1353 change @code{gnus-select-method}, your @file{.newsrc} file becomes
1354 worthless.
1355
1356 @kindex M-x gnus-group-clear-data-on-native-groups
1357 @findex gnus-group-clear-data-on-native-groups
1358 You can use the @kbd{M-x gnus-group-clear-data-on-native-groups}
1359 command to clear out all data that you have on your native groups.
1360 Use with caution.
1361
1362 @kindex M-x gnus-group-clear-data
1363 @findex gnus-group-clear-data
1364 Clear the data from the current group only---nix out marks and the
1365 list of read articles (@code{gnus-group-clear-data}).
1366
1367 After changing servers, you @strong{must} move the cache hierarchy away,
1368 since the cached articles will have wrong article numbers, which will
1369 affect which articles Gnus thinks are read.
1370 @code{gnus-group-clear-data-on-native-groups} will ask you if you want
1371 to have it done automatically; for @code{gnus-group-clear-data}, you
1372 can use @kbd{M-x gnus-cache-move-cache} (but beware, it will move the
1373 cache for all groups).
1374
1375
1376 @node Startup Files
1377 @section Startup Files
1378 @cindex startup files
1379 @cindex .newsrc
1380 @cindex .newsrc.el
1381 @cindex .newsrc.eld
1382
1383 Most common Unix news readers use a shared startup file called
1384 @file{.newsrc}.  This file contains all the information about what
1385 groups are subscribed, and which articles in these groups have been
1386 read.
1387
1388 Things got a bit more complicated with @sc{gnus}.  In addition to
1389 keeping the @file{.newsrc} file updated, it also used a file called
1390 @file{.newsrc.el} for storing all the information that didn't fit into
1391 the @file{.newsrc} file.  (Actually, it also duplicated everything in
1392 the @file{.newsrc} file.)  @sc{gnus} would read whichever one of these
1393 files was the most recently saved, which enabled people to swap between
1394 @sc{gnus} and other newsreaders.
1395
1396 That was kinda silly, so Gnus went one better: In addition to the
1397 @file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
1398 @file{.newsrc.eld}.  It will read whichever of these files that are most
1399 recent, but it will never write a @file{.newsrc.el} file.  You should
1400 never delete the @file{.newsrc.eld} file---it contains much information
1401 not stored in the @file{.newsrc} file.
1402
1403 @vindex gnus-save-newsrc-file
1404 @vindex gnus-read-newsrc-file
1405 You can turn off writing the @file{.newsrc} file by setting
1406 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
1407 the file and save some space, as well as exiting from Gnus faster.
1408 However, this will make it impossible to use other newsreaders than
1409 Gnus.  But hey, who would want to, right?  Similarly, setting
1410 @code{gnus-read-newsrc-file} to @code{nil} makes Gnus ignore the
1411 @file{.newsrc} file and any @file{.newsrc-SERVER} files, which can be
1412 convenient if you use a different news reader occasionally, and you
1413 want to read a different subset of the available groups with that
1414 news reader.
1415
1416 @vindex gnus-save-killed-list
1417 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
1418 will not save the list of killed groups to the startup file.  This will
1419 save both time (when starting and quitting) and space (on disk).  It
1420 will also mean that Gnus has no record of what groups are new or old,
1421 so the automatic new groups subscription methods become meaningless.
1422 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
1423 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
1424 Groups}).  This variable can also be a regular expression.  If that's
1425 the case, remove all groups that do not match this regexp before
1426 saving.  This can be useful in certain obscure situations that involve
1427 several servers where not all servers support @code{ask-server}.
1428
1429 @vindex gnus-startup-file
1430 @vindex gnus-backup-startup-file
1431 @vindex version-control
1432 The @code{gnus-startup-file} variable says where the startup files are.
1433 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
1434 file being whatever that one is, with a @samp{.eld} appended.
1435 If you want to keep multiple numbered backups of this file, set
1436 @code{gnus-backup-startup-file}.  It respects the same values as the
1437 @code{version-control} variable.
1438
1439 @vindex gnus-save-newsrc-hook
1440 @vindex gnus-save-quick-newsrc-hook
1441 @vindex gnus-save-standard-newsrc-hook
1442 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc
1443 files, while @code{gnus-save-quick-newsrc-hook} is called just before
1444 saving the @file{.newsrc.eld} file, and
1445 @code{gnus-save-standard-newsrc-hook} is called just before saving the
1446 @file{.newsrc} file.  The latter two are commonly used to turn version
1447 control on or off.  Version control is on by default when saving the
1448 startup files.  If you want to turn backup creation off, say something like:
1449
1450 @lisp
1451 (defun turn-off-backup ()
1452   (set (make-local-variable 'backup-inhibited) t))
1453
1454 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
1455 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
1456 @end lisp
1457
1458 @vindex gnus-init-file
1459 @vindex gnus-site-init-file
1460 When Gnus starts, it will read the @code{gnus-site-init-file}
1461 (@file{.../site-lisp/gnus-init} by default) and @code{gnus-init-file}
1462 (@file{~/.gnus} by default) files.  These are normal Emacs Lisp files
1463 and can be used to avoid cluttering your @file{~/.emacs} and
1464 @file{site-init} files with Gnus stuff.  Gnus will also check for files
1465 with the same names as these, but with @file{.elc} and @file{.el}
1466 suffixes.  In other words, if you have set @code{gnus-init-file} to
1467 @file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
1468 and finally @file{~/.gnus} (in this order).  If Emacs was invoked with
1469 the @option{-q} or @option{--no-init-file} options (@pxref{Initial
1470 Options, ,Initial Options, emacs, The Emacs Manual}), Gnus doesn't read
1471 @code{gnus-init-file}.
1472
1473
1474 @node Auto Save
1475 @section Auto Save
1476 @cindex dribble file
1477 @cindex auto-save
1478
1479 Whenever you do something that changes the Gnus data (reading articles,
1480 catching up, killing/subscribing groups), the change is added to a
1481 special @dfn{dribble buffer}.  This buffer is auto-saved the normal
1482 Emacs way.  If your Emacs should crash before you have saved the
1483 @file{.newsrc} files, all changes you have made can be recovered from
1484 this file.
1485
1486 If Gnus detects this file at startup, it will ask the user whether to
1487 read it.  The auto save file is deleted whenever the real startup file is
1488 saved.
1489
1490 @vindex gnus-use-dribble-file
1491 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
1492 maintain a dribble buffer.  The default is @code{t}.
1493
1494 @vindex gnus-dribble-directory
1495 Gnus will put the dribble file(s) in @code{gnus-dribble-directory}.  If
1496 this variable is @code{nil}, which it is by default, Gnus will dribble
1497 into the directory where the @file{.newsrc} file is located.  (This is
1498 normally the user's home directory.)  The dribble file will get the same
1499 file permissions as the @file{.newsrc} file.
1500
1501 @vindex gnus-always-read-dribble-file
1502 If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will
1503 read the dribble file on startup without querying the user.
1504
1505
1506 @node The Active File
1507 @section The Active File
1508 @cindex active file
1509 @cindex ignored groups
1510
1511 When Gnus starts, or indeed whenever it tries to determine whether new
1512 articles have arrived, it reads the active file.  This is a very large
1513 file that lists all the active groups and articles on the server.
1514
1515 @vindex gnus-ignored-newsgroups
1516 Before examining the active file, Gnus deletes all lines that match the
1517 regexp @code{gnus-ignored-newsgroups}.  This is done primarily to reject
1518 any groups with bogus names, but you can use this variable to make Gnus
1519 ignore hierarchies you aren't ever interested in.  However, this is not
1520 recommended.  In fact, it's highly discouraged.  Instead, @pxref{New
1521 Groups} for an overview of other variables that can be used instead.
1522
1523 @c This variable is
1524 @c @code{nil} by default, and will slow down active file handling somewhat
1525 @c if you set it to anything else.
1526
1527 @vindex gnus-read-active-file
1528 @c @head
1529 The active file can be rather Huge, so if you have a slow network, you
1530 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
1531 reading the active file.  This variable is @code{some} by default.
1532
1533 Gnus will try to make do by getting information just on the groups that
1534 you actually subscribe to.
1535
1536 Note that if you subscribe to lots and lots of groups, setting this
1537 variable to @code{nil} will probably make Gnus slower, not faster.  At
1538 present, having this variable @code{nil} will slow Gnus down
1539 considerably, unless you read news over a 2400 baud modem.
1540
1541 This variable can also have the value @code{some}.  Gnus will then
1542 attempt to read active info only on the subscribed groups.  On some
1543 servers this is quite fast (on sparkling, brand new INN servers that
1544 support the @code{LIST ACTIVE group} command), on others this isn't fast
1545 at all.  In any case, @code{some} should be faster than @code{nil}, and
1546 is certainly faster than @code{t} over slow lines.
1547
1548 Some news servers (old versions of Leafnode and old versions of INN, for
1549 instance) do not support the @code{LIST ACTIVE group}.  For these
1550 servers, @code{nil} is probably the most efficient value for this
1551 variable.
1552
1553 If this variable is @code{nil}, Gnus will ask for group info in total
1554 lock-step, which isn't very fast.  If it is @code{some} and you use an
1555 @acronym{NNTP} server, Gnus will pump out commands as fast as it can, and
1556 read all the replies in one swoop.  This will normally result in better
1557 performance, but if the server does not support the aforementioned
1558 @code{LIST ACTIVE group} command, this isn't very nice to the server.
1559
1560 If you think that starting up Gnus takes too long, try all the three
1561 different values for this variable and see what works best for you.
1562
1563 In any case, if you use @code{some} or @code{nil}, you should definitely
1564 kill all groups that you aren't interested in to speed things up.
1565
1566 Note that this variable also affects active file retrieval from
1567 secondary select methods.
1568
1569
1570 @node Startup Variables
1571 @section Startup Variables
1572
1573 @table @code
1574
1575 @item gnus-load-hook
1576 @vindex gnus-load-hook
1577 A hook run while Gnus is being loaded.  Note that this hook will
1578 normally be run just once in each Emacs session, no matter how many
1579 times you start Gnus.
1580
1581 @item gnus-before-startup-hook
1582 @vindex gnus-before-startup-hook
1583 A hook called as the first thing when Gnus is started.
1584
1585 @item gnus-startup-hook
1586 @vindex gnus-startup-hook
1587 A hook run as the very last thing after starting up Gnus
1588
1589 @item gnus-started-hook
1590 @vindex gnus-started-hook
1591 A hook that is run as the very last thing after starting up Gnus
1592 successfully.
1593
1594 @item gnus-setup-news-hook
1595 @vindex gnus-setup-news-hook
1596 A hook that is run after reading the @file{.newsrc} file(s), but before
1597 generating the group buffer.
1598
1599 @item gnus-check-bogus-newsgroups
1600 @vindex gnus-check-bogus-newsgroups
1601 If non-@code{nil}, Gnus will check for and delete all bogus groups at
1602 startup.  A @dfn{bogus group} is a group that you have in your
1603 @file{.newsrc} file, but doesn't exist on the news server.  Checking for
1604 bogus groups can take quite a while, so to save time and resources it's
1605 best to leave this option off, and do the checking for bogus groups once
1606 in a while from the group buffer instead (@pxref{Group Maintenance}).
1607
1608 @item gnus-inhibit-startup-message
1609 @vindex gnus-inhibit-startup-message
1610 If non-@code{nil}, the startup message won't be displayed.  That way,
1611 your boss might not notice as easily that you are reading news instead
1612 of doing your job.  Note that this variable is used before
1613 @file{~/.gnus.el} is loaded, so it should be set in @file{.emacs} instead.
1614
1615 @item gnus-no-groups-message
1616 @vindex gnus-no-groups-message
1617 Message displayed by Gnus when no groups are available.
1618
1619 @item gnus-use-backend-marks
1620 @vindex gnus-use-backend-marks
1621 If non-@code{nil}, Gnus will store article marks both in the
1622 @file{.newsrc.eld} file and in the backends.  This will slow down
1623 group operation some.
1624
1625 @end table
1626
1627
1628 @node Group Buffer
1629 @chapter Group Buffer
1630 @cindex group buffer
1631
1632 @c Alex Schroeder suggests to rearrange this as follows:
1633 @c
1634 @c <kensanata> ok, just save it for reference.  I'll go to bed in a minute.
1635 @c   1. Selecting a Group, 2. (new) Finding a Group, 3. Group Levels,
1636 @c   4. Subscription Commands, 5. Group Maneuvering, 6. Group Data,
1637 @c   7. Group Score, 8. Group Buffer Format
1638 @c <kensanata> Group Levels should have more information on levels 5 to 9.  I
1639 @c   suggest to split the 4th paragraph ("Gnus considers groups...") as follows:
1640 @c <kensanata> First, "Gnus considers groups... (default 9)."
1641 @c <kensanata> New, a table summarizing what levels 1 to 9 mean.
1642 @c <kensanata> Third, "Gnus treats subscribed ... reasons of efficiency"
1643 @c <kensanata> Then expand the next paragraph or add some more to it.
1644 @c    This short one sentence explains levels 1 and 2, therefore I understand
1645 @c    that I should keep important news at 3 and boring news at 4.
1646 @c    Say so!  Then go on to explain why I should bother with levels 6 to 9.
1647 @c    Maybe keep those that you don't want to read temporarily at 6,
1648 @c    those that you never want to read at 8, those that offend your
1649 @c    human rights at 9...
1650
1651
1652 The @dfn{group buffer} lists all (or parts) of the available groups.  It
1653 is the first buffer shown when Gnus starts, and will never be killed as
1654 long as Gnus is active.
1655
1656 @iftex
1657 @iflatex
1658 \gnusfigure{The Group Buffer}{320}{
1659 \put(75,50){\epsfig{figure=ps/group,height=9cm}}
1660 \put(120,37){\makebox(0,0)[t]{Buffer name}}
1661 \put(120,38){\vector(1,2){10}}
1662 \put(40,60){\makebox(0,0)[r]{Mode line}}
1663 \put(40,58){\vector(1,0){30}}
1664 \put(200,28){\makebox(0,0)[t]{Native select method}}
1665 \put(200,26){\vector(-1,2){15}}
1666 }
1667 @end iflatex
1668 @end iftex
1669
1670 @menu
1671 * Group Buffer Format::         Information listed and how you can change it.
1672 * Group Maneuvering::           Commands for moving in the group buffer.
1673 * Selecting a Group::           Actually reading news.
1674 * Subscription Commands::       Unsubscribing, killing, subscribing.
1675 * Group Data::                  Changing the info for a group.
1676 * Group Levels::                Levels? What are those, then?
1677 * Group Score::                 A mechanism for finding out what groups you like.
1678 * Marking Groups::              You can mark groups for later processing.
1679 * Foreign Groups::              Creating and editing groups.
1680 * Group Parameters::            Each group may have different parameters set.
1681 * Listing Groups::              Gnus can list various subsets of the groups.
1682 * Sorting Groups::              Re-arrange the group order.
1683 * Group Maintenance::           Maintaining a tidy @file{.newsrc} file.
1684 * Browse Foreign Server::       You can browse a server.  See what it has to offer.
1685 * Exiting Gnus::                Stop reading news and get some work done.
1686 * Group Topics::                A folding group mode divided into topics.
1687 * Non-ASCII Group Names::       Accessing groups of non-English names.
1688 * Misc Group Stuff::            Other stuff that you can to do.
1689 @end menu
1690
1691
1692 @node Group Buffer Format
1693 @section Group Buffer Format
1694
1695 @menu
1696 * Group Line Specification::    Deciding how the group buffer is to look.
1697 * Group Mode Line Specification::  The group buffer mode line.
1698 * Group Highlighting::          Having nice colors in the group buffer.
1699 @end menu
1700
1701 You can customize the Group Mode tool bar, see @kbd{M-x
1702 customize-apropos RET gnus-group-tool-bar}.  This feature is only
1703 available in Emacs.
1704
1705 The tool bar icons are now (de)activated correctly depending on the
1706 cursor position.  Therefore, moving around in the Group Buffer is
1707 slower.  You can disable this via the variable
1708 @code{gnus-group-update-tool-bar}.  Its default value depends on your
1709 Emacs version.
1710
1711 @node Group Line Specification
1712 @subsection Group Line Specification
1713 @cindex group buffer format
1714
1715 The default format of the group buffer is nice and dull, but you can
1716 make it as exciting and ugly as you feel like.
1717
1718 Here's a couple of example group lines:
1719
1720 @example
1721      25: news.announce.newusers
1722  *    0: alt.fan.andrea-dworkin
1723 @end example
1724
1725 Quite simple, huh?
1726
1727 You can see that there are 25 unread articles in
1728 @samp{news.announce.newusers}.  There are no unread articles, but some
1729 ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
1730 asterisk at the beginning of the line?).
1731
1732 @vindex gnus-group-line-format
1733 You can change that format to whatever you want by fiddling with the
1734 @code{gnus-group-line-format} variable.  This variable works along the
1735 lines of a @code{format} specification, which is pretty much the same as
1736 a @code{printf} specifications, for those of you who use (feh!) C.
1737 @xref{Formatting Variables}.
1738
1739 @samp{%M%S%5y:%B%(%g%)\n} is the value that produced those lines above.
1740
1741 There should always be a colon on the line; the cursor always moves to
1742 the colon after performing an operation.  @xref{Positioning
1743 Point}.  Nothing else is required---not even the group name.  All
1744 displayed text is just window dressing, and is never examined by Gnus.
1745 Gnus stores all real information it needs using text properties.
1746
1747 (Note that if you make a really strange, wonderful, spreadsheet-like
1748 layout, everybody will believe you are hard at work with the accounting
1749 instead of wasting time reading news.)
1750
1751 Here's a list of all available format characters:
1752
1753 @table @samp
1754
1755 @item M
1756 An asterisk if the group only has marked articles.
1757
1758 @item S
1759 Whether the group is subscribed.
1760
1761 @item L
1762 Level of subscribedness.
1763
1764 @item N
1765 Number of unread articles.
1766
1767 @item I
1768 Number of dormant articles.
1769
1770 @item T
1771 Number of ticked articles.
1772
1773 @item R
1774 Number of read articles.
1775
1776 @item U
1777 Number of unseen articles.
1778
1779 @item t
1780 Estimated total number of articles.  (This is really @var{max-number}
1781 minus @var{min-number} plus 1.)
1782
1783 Gnus uses this estimation because the @acronym{NNTP} protocol provides
1784 efficient access to @var{max-number} and @var{min-number} but getting
1785 the true unread message count is not possible efficiently.  For
1786 hysterical raisins, even the mail back ends, where the true number of
1787 unread messages might be available efficiently, use the same limited
1788 interface.  To remove this restriction from Gnus means that the back
1789 end interface has to be changed, which is not an easy job.
1790
1791 The nnml backend (@pxref{Mail Spool}) has a feature called ``group
1792 compaction'' which circumvents this deficiency: the idea is to
1793 renumber all articles from 1, removing all gaps between numbers, hence
1794 getting a correct total count.  Other backends may support this in the
1795 future.  In order to keep your total article count relatively up to
1796 date, you might want to compact your groups (or even directly your
1797 server) from time to time. @xref{Misc Group Stuff}, @xref{Server Commands}.
1798
1799 @item y
1800 Number of unread, unticked, non-dormant articles.
1801
1802 @item i
1803 Number of ticked and dormant articles.
1804
1805 @item g
1806 Full group name.
1807
1808 @item G
1809 Group name.
1810
1811 @item C
1812 Group comment (@pxref{Group Parameters}) or group name if there is no
1813 comment element in the group parameters.
1814
1815 @item D
1816 Newsgroup description.  You need to read the group descriptions
1817 before these will appear, and to do that, you either have to set
1818 @code{gnus-read-active-file} or use the group buffer @kbd{M-d}
1819 command.
1820
1821 @item o
1822 @samp{m} if moderated.
1823
1824 @item O
1825 @samp{(m)} if moderated.
1826
1827 @item s
1828 Select method.
1829
1830 @item B
1831 If the summary buffer for the group is open or not.
1832
1833 @item n
1834 Select from where.
1835
1836 @item z
1837 A string that looks like @samp{<%s:%n>} if a foreign select method is
1838 used.
1839
1840 @item P
1841 Indentation based on the level of the topic (@pxref{Group Topics}).
1842
1843 @item c
1844 @vindex gnus-group-uncollapsed-levels
1845 Short (collapsed) group name.  The @code{gnus-group-uncollapsed-levels}
1846 variable says how many levels to leave at the end of the group name.
1847 The default is 1---this will mean that group names like
1848 @samp{gnu.emacs.gnus} will be shortened to @samp{g.e.gnus}.
1849
1850 @item m
1851 @vindex gnus-new-mail-mark
1852 @cindex %
1853 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1854 the group lately.
1855
1856 @item p
1857 @samp{#} (@code{gnus-process-mark}) if the group is process marked.
1858
1859 @item d
1860 A string that says when you last read the group (@pxref{Group
1861 Timestamp}).
1862
1863 @item F
1864 The disk space used by the articles fetched by both the cache and
1865 agent.  The value is automatically scaled to bytes(B), kilobytes(K),
1866 megabytes(M), or gigabytes(G) to minimize the column width.  A format
1867 of %7F is sufficient for a fixed-width column.
1868
1869 @item u
1870 User defined specifier.  The next character in the format string should
1871 be a letter.  Gnus will call the function
1872 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
1873 following @samp{%u}.  The function will be passed a single dummy
1874 parameter as argument.  The function should return a string, which will
1875 be inserted into the buffer just like information from any other
1876 specifier.
1877 @end table
1878
1879 @cindex *
1880 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
1881 if no info is available---for instance, if it is a non-activated foreign
1882 group, or a bogus native group.
1883
1884
1885 @node Group Mode Line Specification
1886 @subsection Group Mode Line Specification
1887 @cindex group mode line
1888
1889 @vindex gnus-group-mode-line-format
1890 The mode line can be changed by setting
1891 @code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}).  It
1892 doesn't understand that many format specifiers:
1893
1894 @table @samp
1895 @item S
1896 The native news server.
1897 @item M
1898 The native select method.
1899 @end table
1900
1901
1902 @node Group Highlighting
1903 @subsection Group Highlighting
1904 @cindex highlighting
1905 @cindex group highlighting
1906
1907 @vindex gnus-group-highlight
1908 Highlighting in the group buffer is controlled by the
1909 @code{gnus-group-highlight} variable.  This is an alist with elements
1910 that look like @code{(@var{form} . @var{face})}.  If @var{form} evaluates to
1911 something non-@code{nil}, the @var{face} will be used on the line.
1912
1913 Here's an example value for this variable that might look nice if the
1914 background is dark:
1915
1916 @lisp
1917 (cond (window-system
1918        (setq custom-background-mode 'light)
1919        (defface my-group-face-1
1920          '((t (:foreground "Red" :bold t))) "First group face")
1921        (defface my-group-face-2
1922          '((t (:foreground "DarkSeaGreen4" :bold t)))
1923          "Second group face")
1924        (defface my-group-face-3
1925          '((t (:foreground "Green4" :bold t))) "Third group face")
1926        (defface my-group-face-4
1927          '((t (:foreground "SteelBlue" :bold t))) "Fourth group face")
1928        (defface my-group-face-5
1929          '((t (:foreground "Blue" :bold t))) "Fifth group face")))
1930
1931 (setq gnus-group-highlight
1932       '(((> unread 200) . my-group-face-1)
1933         ((and (< level 3) (zerop unread)) . my-group-face-2)
1934         ((< level 3) . my-group-face-3)
1935         ((zerop unread) . my-group-face-4)
1936         (t . my-group-face-5)))
1937 @end lisp
1938
1939 Also @pxref{Faces and Fonts}.
1940
1941 Variables that are dynamically bound when the forms are evaluated
1942 include:
1943
1944 @table @code
1945 @item group
1946 The group name.
1947 @item unread
1948 The number of unread articles in the group.
1949 @item method
1950 The select method.
1951 @item mailp
1952 Whether the group is a mail group.
1953 @item level
1954 The level of the group.
1955 @item score
1956 The score of the group.
1957 @item ticked
1958 The number of ticked articles in the group.
1959 @item total
1960 The total number of articles in the group.  Or rather,
1961 @var{max-number} minus @var{min-number} plus one.
1962 @item topic
1963 When using the topic minor mode, this variable is bound to the current
1964 topic being inserted.
1965 @end table
1966
1967 When the forms are @code{eval}ed, point is at the beginning of the line
1968 of the group in question, so you can use many of the normal Gnus
1969 functions for snarfing info on the group.
1970
1971 @vindex gnus-group-update-hook
1972 @findex gnus-group-highlight-line
1973 @code{gnus-group-update-hook} is called when a group line is changed.
1974 It will not be called when @code{gnus-visual} is @code{nil}.
1975
1976
1977 @node Group Maneuvering
1978 @section Group Maneuvering
1979 @cindex group movement
1980
1981 All movement commands understand the numeric prefix and will behave as
1982 expected, hopefully.
1983
1984 @table @kbd
1985
1986 @item n
1987 @kindex n (Group)
1988 @findex gnus-group-next-unread-group
1989 Go to the next group that has unread articles
1990 (@code{gnus-group-next-unread-group}).
1991
1992 @item p
1993 @itemx DEL
1994 @kindex DEL (Group)
1995 @kindex p (Group)
1996 @findex gnus-group-prev-unread-group
1997 Go to the previous group that has unread articles
1998 (@code{gnus-group-prev-unread-group}).
1999
2000 @item N
2001 @kindex N (Group)
2002 @findex gnus-group-next-group
2003 Go to the next group (@code{gnus-group-next-group}).
2004
2005 @item P
2006 @kindex P (Group)
2007 @findex gnus-group-prev-group
2008 Go to the previous group (@code{gnus-group-prev-group}).
2009
2010 @item M-n
2011 @kindex M-n (Group)
2012 @findex gnus-group-next-unread-group-same-level
2013 Go to the next unread group on the same (or lower) level
2014 (@code{gnus-group-next-unread-group-same-level}).
2015
2016 @item M-p
2017 @kindex M-p (Group)
2018 @findex gnus-group-prev-unread-group-same-level
2019 Go to the previous unread group on the same (or lower) level
2020 (@code{gnus-group-prev-unread-group-same-level}).
2021 @end table
2022
2023 Three commands for jumping to groups:
2024
2025 @table @kbd
2026
2027 @item j
2028 @kindex j (Group)
2029 @findex gnus-group-jump-to-group
2030 Jump to a group (and make it visible if it isn't already)
2031 (@code{gnus-group-jump-to-group}).  Killed groups can be jumped to, just
2032 like living groups.
2033
2034 @item ,
2035 @kindex , (Group)
2036 @findex gnus-group-best-unread-group
2037 Jump to the unread group with the lowest level
2038 (@code{gnus-group-best-unread-group}).
2039
2040 @item .
2041 @kindex . (Group)
2042 @findex gnus-group-first-unread-group
2043 Jump to the first group with unread articles
2044 (@code{gnus-group-first-unread-group}).
2045 @end table
2046
2047 @vindex gnus-group-goto-unread
2048 If @code{gnus-group-goto-unread} is @code{nil}, all the movement
2049 commands will move to the next group, not the next unread group.  Even
2050 the commands that say they move to the next unread group.  The default
2051 is @code{t}.
2052
2053 @vindex gnus-summary-next-group-on-exit
2054 If @code{gnus-summary-next-group-on-exit} is @code{t}, when a summary is
2055 exited, the point in the group buffer is moved to the next unread group.
2056 Otherwise, the point is set to the group just exited.  The default is
2057 @code{t}.
2058
2059 @node Selecting a Group
2060 @section Selecting a Group
2061 @cindex group selection
2062
2063 @table @kbd
2064
2065 @item SPACE
2066 @kindex SPACE (Group)
2067 @findex gnus-group-read-group
2068 Select the current group, switch to the summary buffer and display the
2069 first unread article (@code{gnus-group-read-group}).  If there are no
2070 unread articles in the group, or if you give a non-numerical prefix to
2071 this command, Gnus will offer to fetch all the old articles in this
2072 group from the server.  If you give a numerical prefix @var{n}, @var{n}
2073 determines the number of articles Gnus will fetch.  If @var{n} is
2074 positive, Gnus fetches the @var{n} newest articles, if @var{n} is
2075 negative, Gnus fetches the @code{abs(@var{n})} oldest articles.
2076
2077 Thus, @kbd{SPC} enters the group normally, @kbd{C-u SPC} offers old
2078 articles, @kbd{C-u 4 2 SPC} fetches the 42 newest articles, and @kbd{C-u
2079 - 4 2 SPC} fetches the 42 oldest ones.
2080
2081 When you are in the group (in the Summary buffer), you can type
2082 @kbd{M-g} to fetch new articles, or @kbd{C-u M-g} to also show the old
2083 ones.
2084
2085 @item RET
2086 @kindex RET (Group)
2087 @findex gnus-group-select-group
2088 Select the current group and switch to the summary buffer
2089 (@code{gnus-group-select-group}).  Takes the same arguments as
2090 @code{gnus-group-read-group}---the only difference is that this command
2091 does not display the first unread article automatically upon group
2092 entry.
2093
2094 @item M-RET
2095 @kindex M-RET (Group)
2096 @findex gnus-group-quick-select-group
2097 This does the same as the command above, but tries to do it with the
2098 minimum amount of fuzz (@code{gnus-group-quick-select-group}).  No
2099 scoring/killing will be performed, there will be no highlights and no
2100 expunging.  This might be useful if you're in a real hurry and have to
2101 enter some humongous group.  If you give a 0 prefix to this command
2102 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer,
2103 which is useful if you want to toggle threading before generating the
2104 summary buffer (@pxref{Summary Generation Commands}).
2105
2106 @item M-SPACE
2107 @kindex M-SPACE (Group)
2108 @findex gnus-group-visible-select-group
2109 This is yet one more command that does the same as the @kbd{RET}
2110 command, but this one does it without expunging and hiding dormants
2111 (@code{gnus-group-visible-select-group}).
2112
2113 @item C-M-RET
2114 @kindex C-M-RET (Group)
2115 @findex gnus-group-select-group-ephemerally
2116 Finally, this command selects the current group ephemerally without
2117 doing any processing of its contents
2118 (@code{gnus-group-select-group-ephemerally}).  Even threading has been
2119 turned off.  Everything you do in the group after selecting it in this
2120 manner will have no permanent effects.
2121
2122 @end table
2123
2124 @vindex gnus-large-newsgroup
2125 The @code{gnus-large-newsgroup} variable says what Gnus should
2126 consider to be a big group.  If it is @code{nil}, no groups are
2127 considered big.  The default value is 200.  If the group has more
2128 (unread and/or ticked) articles than this, Gnus will query the user
2129 before entering the group.  The user can then specify how many
2130 articles should be fetched from the server.  If the user specifies a
2131 negative number (@var{-n}), the @var{n} oldest articles will be
2132 fetched.  If it is positive, the @var{n} articles that have arrived
2133 most recently will be fetched.
2134
2135 @vindex gnus-large-ephemeral-newsgroup
2136 @code{gnus-large-ephemeral-newsgroup} is the same as
2137 @code{gnus-large-newsgroup}, but is only used for ephemeral
2138 newsgroups.
2139
2140 @vindex gnus-newsgroup-maximum-articles
2141 In groups in some news servers, there might be a big gap between a few
2142 very old articles that will never be expired and the recent ones.  In
2143 such a case, the server will return the data like @code{(1 . 30000000)}
2144 for the @code{LIST ACTIVE group} command, for example.  Even if there
2145 are actually only the articles 1-10 and 29999900-30000000, Gnus doesn't
2146 know it at first and prepares for getting 30000000 articles.  However,
2147 it will consume hundreds megabytes of memories and might make Emacs get
2148 stuck as the case may be.  If you use such news servers, set the
2149 variable @code{gnus-newsgroup-maximum-articles} to a positive number.
2150 The value means that Gnus ignores articles other than this number of the
2151 latest ones in every group.  For instance, the value 10000 makes Gnus
2152 get only the articles 29990001-30000000 (if the latest article number is
2153 30000000 in a group).  Note that setting this variable to a number might
2154 prevent you from reading very old articles.  The default value of the
2155 variable @code{gnus-newsgroup-maximum-articles} is @code{nil}, which
2156 means Gnus never ignores old articles.
2157
2158 @vindex gnus-select-group-hook
2159 @vindex gnus-auto-select-first
2160 @vindex gnus-auto-select-subject
2161 If @code{gnus-auto-select-first} is non-@code{nil}, select an article
2162 automatically when entering a group with the @kbd{SPACE} command.
2163 Which article this is controlled by the
2164 @code{gnus-auto-select-subject} variable.  Valid values for this
2165 variable are:
2166
2167 @table @code
2168
2169 @item unread
2170 Place point on the subject line of the first unread article.
2171
2172 @item first
2173 Place point on the subject line of the first article.
2174
2175 @item unseen
2176 Place point on the subject line of the first unseen article.
2177
2178 @item unseen-or-unread
2179 Place point on the subject line of the first unseen article, and if
2180 there is no such article, place point on the subject line of the first
2181 unread article.
2182
2183 @item best
2184 Place point on the subject line of the highest-scored unread article.
2185
2186 @end table
2187
2188 This variable can also be a function.  In that case, that function
2189 will be called to place point on a subject line.
2190
2191 If you want to prevent automatic selection in some group (say, in a
2192 binary group with Huge articles) you can set the
2193 @code{gnus-auto-select-first} variable to @code{nil} in
2194 @code{gnus-select-group-hook}, which is called when a group is
2195 selected.
2196
2197
2198 @node Subscription Commands
2199 @section Subscription Commands
2200 @cindex subscription
2201
2202 The following commands allow for managing your subscriptions in the
2203 Group buffer.  If you want to subscribe to many groups, it's probably
2204 more convenient to go to the @ref{Server Buffer}, and choose the
2205 server there using @kbd{RET} or @kbd{SPC}.  Then you'll have the
2206 commands listed in @ref{Browse Foreign Server} at hand.
2207
2208 @table @kbd
2209
2210 @item S t
2211 @itemx u
2212 @kindex S t (Group)
2213 @kindex u (Group)
2214 @findex gnus-group-unsubscribe-current-group
2215 @c @icon{gnus-group-unsubscribe}
2216 Toggle subscription to the current group
2217 (@code{gnus-group-unsubscribe-current-group}).
2218
2219 @item S s
2220 @itemx U
2221 @kindex S s (Group)
2222 @kindex U (Group)
2223 @findex gnus-group-unsubscribe-group
2224 Prompt for a group to subscribe, and then subscribe it.  If it was
2225 subscribed already, unsubscribe it instead
2226 (@code{gnus-group-unsubscribe-group}).
2227
2228 @item S k
2229 @itemx C-k
2230 @kindex S k (Group)
2231 @kindex C-k (Group)
2232 @findex gnus-group-kill-group
2233 @c @icon{gnus-group-kill-group}
2234 Kill the current group (@code{gnus-group-kill-group}).
2235
2236 @item S y
2237 @itemx C-y
2238 @kindex S y (Group)
2239 @kindex C-y (Group)
2240 @findex gnus-group-yank-group
2241 Yank the last killed group (@code{gnus-group-yank-group}).
2242
2243 @item C-x C-t
2244 @kindex C-x C-t (Group)
2245 @findex gnus-group-transpose-groups
2246 Transpose two groups (@code{gnus-group-transpose-groups}).  This isn't
2247 really a subscription command, but you can use it instead of a
2248 kill-and-yank sequence sometimes.
2249
2250 @item S w
2251 @itemx C-w
2252 @kindex S w (Group)
2253 @kindex C-w (Group)
2254 @findex gnus-group-kill-region
2255 Kill all groups in the region (@code{gnus-group-kill-region}).
2256
2257 @item S z
2258 @kindex S z (Group)
2259 @findex gnus-group-kill-all-zombies
2260 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
2261
2262 @item S C-k
2263 @kindex S C-k (Group)
2264 @findex gnus-group-kill-level
2265 Kill all groups on a certain level (@code{gnus-group-kill-level}).
2266 These groups can't be yanked back after killing, so this command should
2267 be used with some caution.  The only time where this command comes in
2268 really handy is when you have a @file{.newsrc} with lots of unsubscribed
2269 groups that you want to get rid off.  @kbd{S C-k} on level 7 will
2270 kill off all unsubscribed groups that do not have message numbers in the
2271 @file{.newsrc} file.
2272
2273 @end table
2274
2275 Also @pxref{Group Levels}.
2276
2277
2278 @node Group Data
2279 @section Group Data
2280
2281 @table @kbd
2282
2283 @item c
2284 @kindex c (Group)
2285 @findex gnus-group-catchup-current
2286 @vindex gnus-group-catchup-group-hook
2287 @c @icon{gnus-group-catchup-current}
2288 Mark all unticked articles in this group as read
2289 (@code{gnus-group-catchup-current}).
2290 @code{gnus-group-catchup-group-hook} is called when catching up a group from
2291 the group buffer.
2292
2293 @item C
2294 @kindex C (Group)
2295 @findex gnus-group-catchup-current-all
2296 Mark all articles in this group, even the ticked ones, as read
2297 (@code{gnus-group-catchup-current-all}).
2298
2299 @item M-c
2300 @kindex M-c (Group)
2301 @findex gnus-group-clear-data
2302 Clear the data from the current group---nix out marks and the list of
2303 read articles (@code{gnus-group-clear-data}).
2304
2305 @item M-x gnus-group-clear-data-on-native-groups
2306 @kindex M-x gnus-group-clear-data-on-native-groups
2307 @findex gnus-group-clear-data-on-native-groups
2308 If you have switched from one @acronym{NNTP} server to another, all your marks
2309 and read ranges have become worthless.  You can use this command to
2310 clear out all data that you have on your native groups.  Use with
2311 caution.
2312
2313 @end table
2314
2315
2316 @node Group Levels
2317 @section Group Levels
2318 @cindex group level
2319 @cindex level
2320
2321 All groups have a level of @dfn{subscribedness}.  For instance, if a
2322 group is on level 2, it is more subscribed than a group on level 5.  You
2323 can ask Gnus to just list groups on a given level or lower
2324 (@pxref{Listing Groups}), or to just check for new articles in groups on
2325 a given level or lower (@pxref{Scanning New Messages}).
2326
2327 Remember:  The higher the level of the group, the less important it is.
2328
2329 @table @kbd
2330
2331 @item S l
2332 @kindex S l (Group)
2333 @findex gnus-group-set-current-level
2334 Set the level of the current group.  If a numeric prefix is given, the
2335 next @var{n} groups will have their levels set.  The user will be
2336 prompted for a level.
2337 @end table
2338
2339 @vindex gnus-level-killed
2340 @vindex gnus-level-zombie
2341 @vindex gnus-level-unsubscribed
2342 @vindex gnus-level-subscribed
2343 Gnus considers groups from levels 1 to
2344 @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed,
2345 @code{gnus-level-subscribed} (exclusive) and
2346 @code{gnus-level-unsubscribed} (inclusive) (default 7) to be
2347 unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
2348 (default 8) and @code{gnus-level-killed} to be killed (completely dead)
2349 (default 9).  Gnus treats subscribed and unsubscribed groups exactly the
2350 same, but zombie and killed groups have no information on what articles
2351 you have read, etc, stored.  This distinction between dead and living
2352 groups isn't done because it is nice or clever, it is done purely for
2353 reasons of efficiency.
2354
2355 It is recommended that you keep all your mail groups (if any) on quite
2356 low levels (e.g. 1 or 2).
2357
2358 Maybe the following description of the default behavior of Gnus helps to
2359 understand what these levels are all about.  By default, Gnus shows you
2360 subscribed nonempty groups, but by hitting @kbd{L} you can have it show
2361 empty subscribed groups and unsubscribed groups, too.  Type @kbd{l} to
2362 go back to showing nonempty subscribed groups again.  Thus, unsubscribed
2363 groups are hidden, in a way.
2364
2365 @cindex zombie groups
2366 Zombie and killed groups are similar to unsubscribed groups in that they
2367 are hidden by default.  But they are different from subscribed and
2368 unsubscribed groups in that Gnus doesn't ask the news server for
2369 information (number of messages, number of unread messages) on zombie
2370 and killed groups.  Normally, you use @kbd{C-k} to kill the groups you
2371 aren't interested in.  If most groups are killed, Gnus is faster.
2372
2373 Why does Gnus distinguish between zombie and killed groups?  Well, when
2374 a new group arrives on the server, Gnus by default makes it a zombie
2375 group.  This means that you are normally not bothered with new groups,
2376 but you can type @kbd{A z} to get a list of all new groups.  Subscribe
2377 the ones you like and kill the ones you don't want.  (@kbd{A k} shows a
2378 list of killed groups.)
2379
2380 If you want to play with the level variables, you should show some care.
2381 Set them once, and don't touch them ever again.  Better yet, don't touch
2382 them at all unless you know exactly what you're doing.
2383
2384 @vindex gnus-level-default-unsubscribed
2385 @vindex gnus-level-default-subscribed
2386 Two closely related variables are @code{gnus-level-default-subscribed}
2387 (default 3) and @code{gnus-level-default-unsubscribed} (default 6),
2388 which are the levels that new groups will be put on if they are
2389 (un)subscribed.  These two variables should, of course, be inside the
2390 relevant valid ranges.
2391
2392 @vindex gnus-keep-same-level
2393 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
2394 will only move to groups of the same level (or lower).  In
2395 particular, going from the last article in one group to the next group
2396 will go to the next group of the same level (or lower).  This might be
2397 handy if you want to read the most important groups before you read the
2398 rest.
2399
2400 If this variable is @code{best}, Gnus will make the next newsgroup the
2401 one with the best level.
2402
2403 @vindex gnus-group-default-list-level
2404 All groups with a level less than or equal to
2405 @code{gnus-group-default-list-level} will be listed in the group buffer
2406 by default.
2407 This variable can also be a function.  In that case, that function will
2408 be called and the result will be used as value.
2409
2410
2411 @vindex gnus-group-list-inactive-groups
2412 If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
2413 groups will be listed along with the unread groups.  This variable is
2414 @code{t} by default.  If it is @code{nil}, inactive groups won't be
2415 listed.
2416
2417 @vindex gnus-group-use-permanent-levels
2418 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
2419 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
2420 use this level as the ``work'' level.
2421
2422 @vindex gnus-activate-level
2423 Gnus will normally just activate (i. e., query the server about) groups
2424 on level @code{gnus-activate-level} or less.  If you don't want to
2425 activate unsubscribed groups, for instance, you might set this variable
2426 to 5.  The default is 6.
2427
2428
2429 @node Group Score
2430 @section Group Score
2431 @cindex group score
2432 @cindex group rank
2433 @cindex rank
2434
2435 You would normally keep important groups on high levels, but that scheme
2436 is somewhat restrictive.  Don't you wish you could have Gnus sort the
2437 group buffer according to how often you read groups, perhaps?  Within
2438 reason?
2439
2440 This is what @dfn{group score} is for.  You can have Gnus assign a score
2441 to each group through the mechanism described below.  You can then sort
2442 the group buffer based on this score.  Alternatively, you can sort on
2443 score and then level.  (Taken together, the level and the score is
2444 called the @dfn{rank} of the group.  A group that is on level 4 and has
2445 a score of 1 has a higher rank than a group on level 5 that has a score
2446 of 300.  (The level is the most significant part and the score is the
2447 least significant part.))
2448
2449 @findex gnus-summary-bubble-group
2450 If you want groups you read often to get higher scores than groups you
2451 read seldom you can add the @code{gnus-summary-bubble-group} function to
2452 the @code{gnus-summary-exit-hook} hook.  This will result (after
2453 sorting) in a bubbling sort of action.  If you want to see that in
2454 action after each summary exit, you can add
2455 @code{gnus-group-sort-groups-by-rank} or
2456 @code{gnus-group-sort-groups-by-score} to the same hook, but that will
2457 slow things down somewhat.
2458
2459
2460 @node Marking Groups
2461 @section Marking Groups
2462 @cindex marking groups
2463
2464 If you want to perform some command on several groups, and they appear
2465 subsequently in the group buffer, you would normally just give a
2466 numerical prefix to the command.  Most group commands will then do your
2467 bidding on those groups.
2468
2469 However, if the groups are not in sequential order, you can still
2470 perform a command on several groups.  You simply mark the groups first
2471 with the process mark and then execute the command.
2472
2473 @table @kbd
2474
2475 @item #
2476 @kindex # (Group)
2477 @itemx M m
2478 @kindex M m (Group)
2479 @findex gnus-group-mark-group
2480 Set the mark on the current group (@code{gnus-group-mark-group}).
2481
2482 @item M-#
2483 @kindex M-# (Group)
2484 @itemx M u
2485 @kindex M u (Group)
2486 @findex gnus-group-unmark-group
2487 Remove the mark from the current group
2488 (@code{gnus-group-unmark-group}).
2489
2490 @item M U
2491 @kindex M U (Group)
2492 @findex gnus-group-unmark-all-groups
2493 Remove the mark from all groups (@code{gnus-group-unmark-all-groups}).
2494
2495 @item M w
2496 @kindex M w (Group)
2497 @findex gnus-group-mark-region
2498 Mark all groups between point and mark (@code{gnus-group-mark-region}).
2499
2500 @item M b
2501 @kindex M b (Group)
2502 @findex gnus-group-mark-buffer
2503 Mark all groups in the buffer (@code{gnus-group-mark-buffer}).
2504
2505 @item M r
2506 @kindex M r (Group)
2507 @findex gnus-group-mark-regexp
2508 Mark all groups that match some regular expression
2509 (@code{gnus-group-mark-regexp}).
2510 @end table
2511
2512 Also @pxref{Process/Prefix}.
2513
2514 @findex gnus-group-universal-argument
2515 If you want to execute some command on all groups that have been marked
2516 with the process mark, you can use the @kbd{M-&}
2517 (@code{gnus-group-universal-argument}) command.  It will prompt you for
2518 the command to be executed.
2519
2520
2521 @node Foreign Groups
2522 @section Foreign Groups
2523 @cindex foreign groups
2524
2525 If you recall how to subscribe to servers (@pxref{Finding the News})
2526 you will remember that @code{gnus-secondary-select-methods} and
2527 @code{gnus-select-method} let you write a definition in Emacs Lisp of
2528 what servers you want to see when you start up.  The alternate
2529 approach is to use foreign servers and groups.  ``Foreign'' here means
2530 they are not coming from the select methods.  All foreign server
2531 configuration and subscriptions are stored only in the
2532 @file{~/.newsrc.eld} file.
2533
2534 Below are some group mode commands for making and editing general foreign
2535 groups, as well as commands to ease the creation of a few
2536 special-purpose groups.  All these commands insert the newly created
2537 groups under point---@code{gnus-subscribe-newsgroup-method} is not
2538 consulted.
2539
2540 Changes from the group editing commands are stored in
2541 @file{~/.newsrc.eld} (@code{gnus-startup-file}).  An alternative is the
2542 variable @code{gnus-parameters}, @xref{Group Parameters}.
2543
2544 @table @kbd
2545
2546 @item G m
2547 @kindex G m (Group)
2548 @findex gnus-group-make-group
2549 @cindex making groups
2550 Make a new group (@code{gnus-group-make-group}).  Gnus will prompt you
2551 for a name, a method and possibly an @dfn{address}.  For an easier way
2552 to subscribe to @acronym{NNTP} groups (@pxref{Browse Foreign Server}).
2553
2554 @item G M
2555 @kindex G M (Group)
2556 @findex gnus-group-read-ephemeral-group
2557 Make an ephemeral group (@code{gnus-group-read-ephemeral-group}).  Gnus
2558 will prompt you for a name, a method and an @dfn{address}.
2559
2560 @item G r
2561 @kindex G r (Group)
2562 @findex gnus-group-rename-group
2563 @cindex renaming groups
2564 Rename the current group to something else
2565 (@code{gnus-group-rename-group}).  This is valid only on some
2566 groups---mail groups mostly.  This command might very well be quite slow
2567 on some back ends.
2568
2569 @item G c
2570 @kindex G c (Group)
2571 @cindex customizing
2572 @findex gnus-group-customize
2573 Customize the group parameters (@code{gnus-group-customize}).
2574
2575 @item G e
2576 @kindex G e (Group)
2577 @findex gnus-group-edit-group-method
2578 @cindex renaming groups
2579 Enter a buffer where you can edit the select method of the current
2580 group (@code{gnus-group-edit-group-method}).
2581
2582 @item G p
2583 @kindex G p (Group)
2584 @findex gnus-group-edit-group-parameters
2585 Enter a buffer where you can edit the group parameters
2586 (@code{gnus-group-edit-group-parameters}).
2587
2588 @item G E
2589 @kindex G E (Group)
2590 @findex gnus-group-edit-group
2591 Enter a buffer where you can edit the group info
2592 (@code{gnus-group-edit-group}).
2593
2594 @item G d
2595 @kindex G d (Group)
2596 @findex gnus-group-make-directory-group
2597 @cindex nndir
2598 Make a directory group (@pxref{Directory Groups}).  You will be prompted
2599 for a directory name (@code{gnus-group-make-directory-group}).
2600
2601 @item G h
2602 @kindex G h (Group)
2603 @cindex help group
2604 @findex gnus-group-make-help-group
2605 Make the Gnus help group (@code{gnus-group-make-help-group}).
2606
2607 @item G D
2608 @kindex G D (Group)
2609 @findex gnus-group-enter-directory
2610 @cindex nneething
2611 Read an arbitrary directory as if it were a newsgroup with the
2612 @code{nneething} back end (@code{gnus-group-enter-directory}).
2613 @xref{Anything Groups}.
2614
2615 @item G f
2616 @kindex G f (Group)
2617 @findex gnus-group-make-doc-group
2618 @cindex ClariNet Briefs
2619 @cindex nndoc
2620 Make a group based on some file or other
2621 (@code{gnus-group-make-doc-group}).  If you give a prefix to this
2622 command, you will be prompted for a file name and a file type.
2623 Currently supported types are @code{mbox}, @code{babyl},
2624 @code{digest}, @code{news}, @code{rnews}, @code{mmdf}, @code{forward},
2625 @code{rfc934}, @code{rfc822-forward}, @code{mime-parts},
2626 @code{standard-digest}, @code{slack-digest}, @code{clari-briefs},
2627 @code{nsmail}, @code{outlook}, @code{oe-dbx}, and @code{mailman}.  If
2628 you run this command without a prefix, Gnus will guess at the file
2629 type.  @xref{Document Groups}.
2630
2631 @item G u
2632 @kindex G u (Group)
2633 @vindex gnus-useful-groups
2634 @findex gnus-group-make-useful-group
2635 Create one of the groups mentioned in @code{gnus-useful-groups}
2636 (@code{gnus-group-make-useful-group}).
2637
2638 @item G w
2639 @kindex G w (Group)
2640 @findex gnus-group-make-web-group
2641 @cindex Google
2642 @cindex nnweb
2643 @cindex gmane
2644 Make an ephemeral group based on a web search
2645 (@code{gnus-group-make-web-group}).  If you give a prefix to this
2646 command, make a solid group instead.  You will be prompted for the
2647 search engine type and the search string.  Valid search engine types
2648 include @code{google}, @code{dejanews}, and @code{gmane}.
2649 @xref{Web Searches}.
2650
2651 If you use the @code{google} search engine, you can limit the search
2652 to a particular group by using a match string like
2653 @samp{shaving group:alt.sysadmin.recovery}.
2654
2655 @item G R
2656 @kindex G R (Group)
2657 @findex gnus-group-make-rss-group
2658 Make a group based on an @acronym{RSS} feed
2659 (@code{gnus-group-make-rss-group}).  You will be prompted for an URL.
2660 @xref{RSS}.
2661
2662 @item G DEL
2663 @kindex G DEL (Group)
2664 @findex gnus-group-delete-group
2665 This function will delete the current group
2666 (@code{gnus-group-delete-group}).  If given a prefix, this function will
2667 actually delete all the articles in the group, and forcibly remove the
2668 group itself from the face of the Earth.  Use a prefix only if you are
2669 absolutely sure of what you are doing.  This command can't be used on
2670 read-only groups (like @code{nntp} groups), though.
2671
2672 @item G V
2673 @kindex G V (Group)
2674 @findex gnus-group-make-empty-virtual
2675 Make a new, fresh, empty @code{nnvirtual} group
2676 (@code{gnus-group-make-empty-virtual}).  @xref{Virtual Groups}.
2677
2678 @item G v
2679 @kindex G v (Group)
2680 @findex gnus-group-add-to-virtual
2681 Add the current group to an @code{nnvirtual} group
2682 (@code{gnus-group-add-to-virtual}).  Uses the process/prefix convention.
2683 @end table
2684
2685 @xref{Select Methods}, for more information on the various select
2686 methods.
2687
2688 @vindex gnus-activate-foreign-newsgroups
2689 If @code{gnus-activate-foreign-newsgroups} is a positive number,
2690 Gnus will check all foreign groups with this level or lower at startup.
2691 This might take quite a while, especially if you subscribe to lots of
2692 groups from different @acronym{NNTP} servers.  Also @pxref{Group Levels};
2693 @code{gnus-activate-level} also affects activation of foreign
2694 newsgroups.
2695
2696
2697 The following commands create ephemeral groups.  They can be called not
2698 only from the Group buffer, but in any Gnus buffer.
2699
2700 @table @code
2701 @item gnus-read-ephemeral-gmane-group
2702 @findex gnus-read-ephemeral-gmane-group
2703 @vindex gnus-gmane-group-download-format
2704 Read an ephemeral group on Gmane.org.  The articles are downloaded via
2705 HTTP using the URL specified by @code{gnus-gmane-group-download-format}.
2706 Gnus will prompt you for a group name, the start article number and an
2707 the article range.
2708
2709 @item gnus-read-ephemeral-gmane-group-url
2710 @findex gnus-read-ephemeral-gmane-group-url
2711 This command is similar to @code{gnus-read-ephemeral-gmane-group}, but
2712 the group name and the article number and range are constructed from a
2713 given @acronym{URL}.  Supported @acronym{URL} formats include e.g.
2714 @url{http://thread.gmane.org/gmane.foo.bar/12300/focus=12399},
2715 @url{http://thread.gmane.org/gmane.foo.bar/12345/},
2716 @url{http://article.gmane.org/gmane.foo.bar/12345/},
2717 @url{http://permalink.gmane.org/gmane.foo.bar/12345/}, and
2718 @url{http://news.gmane.org/group/gmane.foo.bar/thread=12345}.
2719
2720 @item gnus-read-ephemeral-emacs-bug-group
2721 @findex gnus-read-ephemeral-emacs-bug-group
2722 Read an Emacs bug report in an ephemeral group.  Gnus will prompt for a
2723 bug number.  The default is the number at point.  The @acronym{URL} is
2724 specified in @code{gnus-bug-group-download-format-alist}.
2725
2726 @item gnus-read-ephemeral-debian-bug-group
2727 @findex gnus-read-ephemeral-debian-bug-group
2728 Read a Debian bug report in an ephemeral group.  Analog to
2729 @code{gnus-read-ephemeral-emacs-bug-group}.
2730 @end table
2731
2732 Some of these command are also useful for article buttons, @xref{Article
2733 Buttons}.
2734
2735 Here is an example:
2736 @lisp
2737 (require 'gnus-art)
2738 (add-to-list
2739  'gnus-button-alist
2740  '("#\\([0-9]+\\)\\>" 1
2741    (string-match "\\<emacs\\>" (or gnus-newsgroup-name ""))
2742    gnus-read-ephemeral-emacs-bug-group 1))
2743 @end lisp
2744
2745
2746 @node Group Parameters
2747 @section Group Parameters
2748 @cindex group parameters
2749
2750 The group parameters store information local to a particular group.
2751
2752 Use the @kbd{G p} or the @kbd{G c} command to edit group parameters of a
2753 group.  (@kbd{G p} presents you with a Lisp-based interface, @kbd{G c}
2754 presents you with a Customize-like interface.  The latter helps avoid
2755 silly Lisp errors.)  You might also be interested in reading about topic
2756 parameters (@pxref{Topic Parameters}).
2757 Additionally, you can set group parameters via the
2758 @code{gnus-parameters} variable, see below.
2759
2760 Here's an example group parameter list:
2761
2762 @example
2763 ((to-address . "ding@@gnus.org")
2764  (auto-expire . t))
2765 @end example
2766
2767 We see that each element consists of a ``dotted pair''---the thing before
2768 the dot is the key, while the thing after the dot is the value.  All the
2769 parameters have this form @emph{except} local variable specs, which are
2770 not dotted pairs, but proper lists.
2771
2772 Some parameters have correspondent customizable variables, each of which
2773 is an alist of regexps and values.
2774
2775 The following group parameters can be used:
2776
2777 @table @code
2778 @item to-address
2779 @cindex to-address
2780 Address used by when doing followups and new posts.
2781
2782 @example
2783 (to-address . "some@@where.com")
2784 @end example
2785
2786 This is primarily useful in mail groups that represent closed mailing
2787 lists---mailing lists where it's expected that everybody that writes to
2788 the mailing list is subscribed to it.  Since using this parameter
2789 ensures that the mail only goes to the mailing list itself, it means
2790 that members won't receive two copies of your followups.
2791
2792 Using @code{to-address} will actually work whether the group is foreign
2793 or not.  Let's say there's a group on the server that is called
2794 @samp{fa.4ad-l}.  This is a real newsgroup, but the server has gotten
2795 the articles from a mail-to-news gateway.  Posting directly to this
2796 group is therefore impossible---you have to send mail to the mailing
2797 list address instead.
2798
2799 See also @code{gnus-parameter-to-address-alist}.
2800
2801 @item to-list
2802 @cindex to-list
2803 Address used when doing @kbd{a} in that group.
2804
2805 @example
2806 (to-list . "some@@where.com")
2807 @end example
2808
2809 It is totally ignored
2810 when doing a followup---except that if it is present in a news group,
2811 you'll get mail group semantics when doing @kbd{f}.
2812
2813 If you do an @kbd{a} command in a mail group and you have neither a
2814 @code{to-list} group parameter nor a @code{to-address} group parameter,
2815 then a @code{to-list} group parameter will be added automatically upon
2816 sending the message if @code{gnus-add-to-list} is set to @code{t}.
2817 @vindex gnus-add-to-list
2818
2819 @findex gnus-mailing-list-mode
2820 @cindex mail list groups
2821 If this variable is set, @code{gnus-mailing-list-mode} is turned on when
2822 entering summary buffer.
2823
2824 See also @code{gnus-parameter-to-list-alist}.
2825
2826 @anchor{subscribed}
2827 @item subscribed
2828 @cindex subscribed
2829 @cindex Mail-Followup-To
2830 @findex gnus-find-subscribed-addresses
2831 If this parameter is set to @code{t}, Gnus will consider the
2832 to-address and to-list parameters for this group as addresses of
2833 mailing lists you are subscribed to.  Giving Gnus this information is
2834 (only) a first step in getting it to generate correct Mail-Followup-To
2835 headers for your posts to these lists.  The second step is to put the
2836 following in your @file{.gnus.el}
2837
2838 @lisp
2839 (setq message-subscribed-address-functions
2840       '(gnus-find-subscribed-addresses))
2841 @end lisp
2842
2843 @xref{Mailing Lists, ,Mailing Lists, message, The Message Manual}, for
2844 a complete treatment of available MFT support.
2845
2846 @item visible
2847 @cindex visible
2848 If the group parameter list has the element @code{(visible . t)},
2849 that group will always be visible in the Group buffer, regardless
2850 of whether it has any unread articles.
2851
2852 This parameter cannot be set via @code{gnus-parameters}. See
2853 @code{gnus-permanently-visible-groups} as an alternative.
2854
2855 @item broken-reply-to
2856 @cindex broken-reply-to
2857 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
2858 headers in this group are to be ignored, and for the header to be hidden
2859 if @code{reply-to} is part of @code{gnus-boring-article-headers}.  This
2860 can be useful if you're reading a mailing list group where the listserv
2861 has inserted @code{Reply-To} headers that point back to the listserv
2862 itself.  That is broken behavior.  So there!
2863
2864 @item to-group
2865 @cindex to-group
2866 Elements like @code{(to-group . "some.group.name")} means that all
2867 posts in that group will be sent to @code{some.group.name}.
2868
2869 @item newsgroup
2870 @cindex newsgroup
2871 If you have @code{(newsgroup . t)} in the group parameter list, Gnus
2872 will treat all responses as if they were responses to news articles.
2873 This can be useful if you have a mail group that's really a mirror of a
2874 news group.
2875
2876 @item gcc-self
2877 @cindex gcc-self
2878 If @code{(gcc-self . t)} is present in the group parameter list, newly
2879 composed messages will be @code{Gcc}'d to the current group.  If
2880 @code{(gcc-self . none)} is present, no @code{Gcc:} header will be
2881 generated, if @code{(gcc-self . "string")} is present, this string will
2882 be inserted literally as a @code{gcc} header.  This parameter takes
2883 precedence over any default @code{Gcc} rules as described later
2884 (@pxref{Archived Messages}).
2885
2886 @strong{Caveat}: Adding @code{(gcc-self . t)} to the parameter list of
2887 @code{nntp} groups (or the like) isn't valid.  An @code{nntp} server
2888 doesn't accept articles.
2889
2890 @item auto-expire
2891 @cindex auto-expire
2892 @cindex expiring mail
2893 If the group parameter has an element that looks like @code{(auto-expire
2894 . t)}, all articles read will be marked as expirable.  For an
2895 alternative approach, @pxref{Expiring Mail}.
2896
2897 See also @code{gnus-auto-expirable-newsgroups}.
2898
2899 @item total-expire
2900 @cindex total-expire
2901 @cindex expiring mail
2902 If the group parameter has an element that looks like
2903 @code{(total-expire . t)}, all read articles will be put through the
2904 expiry process, even if they are not marked as expirable.  Use with
2905 caution.  Unread, ticked and dormant articles are not eligible for
2906 expiry.
2907
2908 See also @code{gnus-total-expirable-newsgroups}.
2909
2910 @item expiry-wait
2911 @cindex expiry-wait
2912 @vindex nnmail-expiry-wait-function
2913 If the group parameter has an element that looks like
2914 @code{(expiry-wait . 10)}, this value will override any
2915 @code{nnmail-expiry-wait} and @code{nnmail-expiry-wait-function}
2916 (@pxref{Expiring Mail}) when expiring expirable messages.  The value
2917 can either be a number of days (not necessarily an integer) or the
2918 symbols @code{never} or @code{immediate}.
2919
2920 @item expiry-target
2921 @cindex expiry-target
2922 Where expired messages end up.  This parameter overrides
2923 @code{nnmail-expiry-target}.
2924
2925 @item score-file
2926 @cindex score file group parameter
2927 Elements that look like @code{(score-file . "file")} will make
2928 @file{file} into the current score file for the group in question.  All
2929 interactive score entries will be put into this file.
2930
2931 @item adapt-file
2932 @cindex adapt file group parameter
2933 Elements that look like @code{(adapt-file . "file")} will make
2934 @file{file} into the current adaptive file for the group in question.
2935 All adaptive score entries will be put into this file.
2936
2937 @item admin-address
2938 @cindex admin-address
2939 When unsubscribing from a mailing list you should never send the
2940 unsubscription notice to the mailing list itself.  Instead, you'd send
2941 messages to the administrative address.  This parameter allows you to
2942 put the admin address somewhere convenient.
2943
2944 @item display
2945 @cindex display
2946 Elements that look like @code{(display . MODE)} say which articles to
2947 display on entering the group.  Valid values are:
2948
2949 @table @code
2950 @item all
2951 Display all articles, both read and unread.
2952
2953 @item an integer
2954 Display the last @var{integer} articles in the group.  This is the same as
2955 entering the group with @kbd{C-u @var{integer}}.
2956
2957 @item default
2958 Display the default visible articles, which normally includes unread and
2959 ticked articles.
2960
2961 @item an array
2962 Display articles that satisfy a predicate.
2963
2964 Here are some examples:
2965
2966 @table @code
2967 @item [unread]
2968 Display only unread articles.
2969
2970 @item [not expire]
2971 Display everything except expirable articles.
2972
2973 @item [and (not reply) (not expire)]
2974 Display everything except expirable and articles you've already
2975 responded to.
2976 @end table
2977
2978 The available operators are @code{not}, @code{and} and @code{or}.
2979 Predicates include @code{tick}, @code{unsend}, @code{undownload},
2980 @code{unread}, @code{dormant}, @code{expire}, @code{reply},
2981 @code{killed}, @code{bookmark}, @code{score}, @code{save},
2982 @code{cache}, @code{forward}, @code{unseen} and @code{recent}.
2983
2984 @end table
2985
2986 The @code{display} parameter works by limiting the summary buffer to
2987 the subset specified.  You can pop the limit by using the @kbd{/ w}
2988 command (@pxref{Limiting}).
2989
2990 @item comment
2991 @cindex comment
2992 Elements that look like @code{(comment . "This is a comment")} are
2993 arbitrary comments on the group.  You can display comments in the
2994 group line (@pxref{Group Line Specification}).
2995
2996 @item charset
2997 @cindex charset
2998 Elements that look like @code{(charset . iso-8859-1)} will make
2999 @code{iso-8859-1} the default charset; that is, the charset that will be
3000 used for all articles that do not specify a charset.
3001
3002 See also @code{gnus-group-charset-alist}.
3003
3004 @item ignored-charsets
3005 @cindex ignored-charset
3006 Elements that look like @code{(ignored-charsets x-unknown iso-8859-1)}
3007 will make @code{iso-8859-1} and @code{x-unknown} ignored; that is, the
3008 default charset will be used for decoding articles.
3009
3010 See also @code{gnus-group-ignored-charsets-alist}.
3011
3012 @item posting-style
3013 @cindex posting-style
3014 You can store additional posting style information for this group
3015 here (@pxref{Posting Styles}).  The format is that of an entry in the
3016 @code{gnus-posting-styles} alist, except that there's no regexp matching
3017 the group name (of course).  Style elements in this group parameter will
3018 take precedence over the ones found in @code{gnus-posting-styles}.
3019
3020 For instance, if you want a funky name and signature in this group only,
3021 instead of hacking @code{gnus-posting-styles}, you could put something
3022 like this in the group parameters:
3023
3024 @example
3025 (posting-style
3026   (name "Funky Name")
3027   ("X-My-Header" "Funky Value")
3028   (signature "Funky Signature"))
3029 @end example
3030
3031 If you're using topics to organize your group buffer
3032 (@pxref{Group Topics}), note that posting styles can also be set in
3033 the topics parameters. Posting styles in topic parameters apply to all
3034 groups in this topic. More precisely, the posting-style settings for a
3035 group result from the hierarchical merging of all posting-style
3036 entries in the parameters of this group and all the topics it belongs
3037 to.
3038
3039
3040 @item post-method
3041 @cindex post-method
3042 If it is set, the value is used as the method for posting message
3043 instead of @code{gnus-post-method}.
3044
3045 @item mail-source
3046 @cindex mail-source
3047 If it is set, and the setting of @code{mail-sources} includes a
3048 @code{group} mail source (@pxref{Mail Sources}), the value is a
3049 mail source for this group.
3050
3051 @item banner
3052 @cindex banner
3053 An item like @code{(banner . @var{regexp})} causes any part of an article
3054 that matches the regular expression @var{regexp} to be stripped.  Instead of
3055 @var{regexp}, you can also use the symbol @code{signature} which strips the
3056 last signature or any of the elements of the alist
3057 @code{gnus-article-banner-alist}.
3058
3059 @item sieve
3060 @cindex sieve
3061 This parameter contains a Sieve test that should match incoming mail
3062 that should be placed in this group.  From this group parameter, a
3063 Sieve @samp{IF} control structure is generated, having the test as the
3064 condition and @samp{fileinto "group.name";} as the body.
3065
3066 For example, if the @samp{INBOX.list.sieve} group has the @code{(sieve
3067 address "sender" "sieve-admin@@extundo.com")} group parameter, when
3068 translating the group parameter into a Sieve script (@pxref{Sieve
3069 Commands}) the following Sieve code is generated:
3070
3071 @example
3072 if address "sender" "sieve-admin@@extundo.com" @{
3073         fileinto "INBOX.list.sieve";
3074 @}
3075 @end example
3076
3077 To generate tests for multiple email-addresses use a group parameter
3078 like @code{(sieve address "sender" ("name@@one.org" else@@two.org"))}.
3079 When generating a sieve script (@pxref{Sieve Commands}) Sieve code
3080 like the following is generated:
3081
3082 @example
3083 if address "sender" ["name@@one.org", "else@@two.org"] @{
3084         fileinto "INBOX.list.sieve";
3085 @}
3086 @end example
3087
3088 See @pxref{Sieve Commands} for commands and variables that might be of
3089 interest in relation to the sieve parameter.
3090
3091 The Sieve language is described in RFC 3028.  @xref{Top, Emacs Sieve,
3092 Top, sieve, Emacs Sieve}.
3093
3094 @item (agent parameters)
3095 If the agent has been enabled, you can set any of its parameters to
3096 control the behavior of the agent in individual groups.  See Agent
3097 Parameters in @ref{Category Syntax}.  Most users will choose to set
3098 agent parameters in either an agent category or group topic to
3099 minimize the configuration effort.
3100
3101 @item (@var{variable} @var{form})
3102 You can use the group parameters to set variables local to the group you
3103 are entering.  If you want to turn threading off in @samp{news.answers},
3104 you could put @code{(gnus-show-threads nil)} in the group parameters of
3105 that group.  @code{gnus-show-threads} will be made into a local variable
3106 in the summary buffer you enter, and the form @code{nil} will be
3107 @code{eval}ed there.
3108
3109 Note that this feature sets the variable locally to the summary buffer
3110 if and only if @var{variable} has been bound as a variable.  Otherwise,
3111 only evaluating the form will take place.  So, you may want to bind the
3112 variable in advance using @code{defvar} or other if the result of the
3113 form needs to be set to it.
3114
3115 But some variables are evaluated in the article buffer, or in the
3116 message buffer (of a reply or followup or otherwise newly created
3117 message).  As a workaround, it might help to add the variable in
3118 question to @code{gnus-newsgroup-variables}.  @xref{Various Summary
3119 Stuff}.  So if you want to set @code{message-from-style} via the group
3120 parameters, then you may need the following statement elsewhere in your
3121 @file{~/.gnus.el} file:
3122
3123 @lisp
3124 (add-to-list 'gnus-newsgroup-variables 'message-from-style)
3125 @end lisp
3126
3127 @vindex gnus-list-identifiers
3128 A use for this feature is to remove a mailing list identifier tag in
3129 the subject fields of articles.  E.g. if the news group
3130
3131 @example
3132 nntp+news.gnus.org:gmane.text.docbook.apps
3133 @end example
3134
3135 has the tag @samp{DOC-BOOK-APPS:} in the subject of all articles, this
3136 tag can be removed from the article subjects in the summary buffer for
3137 the group by putting @code{(gnus-list-identifiers "DOCBOOK-APPS:")}
3138 into the group parameters for the group.
3139
3140 This can also be used as a group-specific hook function.  If you want to
3141 hear a beep when you enter a group, you could put something like
3142 @code{(dummy-variable (ding))} in the parameters of that group.  If
3143 @code{dummy-variable} has been bound (see above), it will be set to the
3144 (meaningless) result of the @code{(ding)} form.
3145
3146 Alternatively, since the VARIABLE becomes local to the group, this
3147 pattern can be used to temporarily change a hook.  For example, if the
3148 following is added to a group parameter
3149
3150 @lisp
3151 (gnus-summary-prepared-hook
3152   '(lambda nil (local-set-key "d" (local-key-binding "n"))))
3153 @end lisp
3154
3155 when the group is entered, the 'd' key will not mark the article as
3156 expired.
3157
3158 @end table
3159
3160 @vindex gnus-parameters
3161 Group parameters can be set via the @code{gnus-parameters} variable too.
3162 But some variables, such as @code{visible}, have no effect (For this
3163 case see @code{gnus-permanently-visible-groups} as an alternative.).
3164 For example:
3165
3166 @lisp
3167 (setq gnus-parameters
3168       '(("mail\\..*"
3169          (gnus-show-threads nil)
3170          (gnus-use-scoring nil)
3171          (gnus-summary-line-format
3172           "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n")
3173          (gcc-self . t)
3174          (display . all))
3175
3176         ("^nnimap:\\(foo.bar\\)$"
3177          (to-group . "\\1"))
3178
3179         ("mail\\.me"
3180          (gnus-use-scoring  t))
3181
3182         ("list\\..*"
3183          (total-expire . t)
3184          (broken-reply-to . t))))
3185 @end lisp
3186
3187 String value of parameters will be subjected to regexp substitution, as
3188 the @code{to-group} example shows.
3189
3190 @vindex gnus-parameters-case-fold-search
3191 By default, whether comparing the group name and one of those regexps
3192 specified in @code{gnus-parameters} is done in a case-sensitive manner
3193 or a case-insensitive manner depends on the value of
3194 @code{case-fold-search} at the time when the comparison is done.  The
3195 value of @code{case-fold-search} is typically @code{t}; it means, for
3196 example, the element @code{("INBOX\\.FOO" (total-expire . t))} might be
3197 applied to both the @samp{INBOX.FOO} group and the @samp{INBOX.foo}
3198 group.  If you want to make those regexps always case-sensitive, set the
3199 value of the @code{gnus-parameters-case-fold-search} variable to
3200 @code{nil}.  Otherwise, set it to @code{t} if you want to compare them
3201 always in a case-insensitive manner.
3202
3203 You can define different sorting to different groups via
3204 @code{gnus-parameters}.  Here is an example to sort an @acronym{NNTP}
3205 group by reverse date to see the latest news at the top and an
3206 @acronym{RSS} group by subject.  In this example, the first group is the
3207 Debian daily news group @code{gmane.linux.debian.user.news} from
3208 news.gmane.org.  The @acronym{RSS} group corresponds to the Debian
3209 weekly news RSS feed
3210 @url{http://packages.debian.org/unstable/newpkg_main.en.rdf},
3211 @xref{RSS}.
3212
3213 @lisp
3214 (setq
3215  gnus-parameters
3216  '(("nntp.*gmane\\.debian\\.user\\.news"
3217     (gnus-show-threads nil)
3218     (gnus-article-sort-functions '((not gnus-article-sort-by-date)))
3219     (gnus-use-adaptive-scoring nil)
3220     (gnus-use-scoring nil))
3221    ("nnrss.*debian"
3222     (gnus-show-threads nil)
3223     (gnus-article-sort-functions 'gnus-article-sort-by-subject)
3224     (gnus-use-adaptive-scoring nil)
3225     (gnus-use-scoring t)
3226     (gnus-score-find-score-files-function 'gnus-score-find-single)
3227     (gnus-summary-line-format "%U%R%z%d %I%(%[ %s %]%)\n"))))
3228 @end lisp
3229
3230
3231 @node Listing Groups
3232 @section Listing Groups
3233 @cindex group listing
3234
3235 These commands all list various slices of the groups available.
3236
3237 @table @kbd
3238
3239 @item l
3240 @itemx A s
3241 @kindex A s (Group)
3242 @kindex l (Group)
3243 @findex gnus-group-list-groups
3244 List all groups that have unread articles
3245 (@code{gnus-group-list-groups}).  If the numeric prefix is used, this
3246 command will list only groups of level ARG and lower.  By default, it
3247 only lists groups of level five (i.e.,
3248 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed
3249 groups).
3250
3251 @item L
3252 @itemx A u
3253 @kindex A u (Group)
3254 @kindex L (Group)
3255 @findex gnus-group-list-all-groups
3256 List all groups, whether they have unread articles or not
3257 (@code{gnus-group-list-all-groups}).  If the numeric prefix is used,
3258 this command will list only groups of level ARG and lower.  By default,
3259 it lists groups of level seven or lower (i.e., just subscribed and
3260 unsubscribed groups).
3261
3262 @item A l
3263 @kindex A l (Group)
3264 @findex gnus-group-list-level
3265 List all unread groups on a specific level
3266 (@code{gnus-group-list-level}).  If given a prefix, also list the groups
3267 with no unread articles.
3268
3269 @item A k
3270 @kindex A k (Group)
3271 @findex gnus-group-list-killed
3272 List all killed groups (@code{gnus-group-list-killed}).  If given a
3273 prefix argument, really list all groups that are available, but aren't
3274 currently (un)subscribed.  This could entail reading the active file
3275 from the server.
3276
3277 @item A z
3278 @kindex A z (Group)
3279 @findex gnus-group-list-zombies
3280 List all zombie groups (@code{gnus-group-list-zombies}).
3281
3282 @item A m
3283 @kindex A m (Group)
3284 @findex gnus-group-list-matching
3285 List all unread, subscribed groups with names that match a regexp
3286 (@code{gnus-group-list-matching}).
3287
3288 @item A M
3289 @kindex A M (Group)
3290 @findex gnus-group-list-all-matching
3291 List groups that match a regexp (@code{gnus-group-list-all-matching}).
3292
3293 @item A A
3294 @kindex A A (Group)
3295 @findex gnus-group-list-active
3296 List absolutely all groups in the active file(s) of the
3297 server(s) you are connected to (@code{gnus-group-list-active}).  This
3298 might very well take quite a while.  It might actually be a better idea
3299 to do a @kbd{A M} to list all matching, and just give @samp{.} as the
3300 thing to match on.  Also note that this command may list groups that
3301 don't exist (yet)---these will be listed as if they were killed groups.
3302 Take the output with some grains of salt.
3303
3304 @item A a
3305 @kindex A a (Group)
3306 @findex gnus-group-apropos
3307 List all groups that have names that match a regexp
3308 (@code{gnus-group-apropos}).
3309
3310 @item A d
3311 @kindex A d (Group)
3312 @findex gnus-group-description-apropos
3313 List all groups that have names or descriptions that match a regexp
3314 (@code{gnus-group-description-apropos}).
3315
3316 @item A c
3317 @kindex A c (Group)
3318 @findex gnus-group-list-cached
3319 List all groups with cached articles (@code{gnus-group-list-cached}).
3320
3321 @item A ?
3322 @kindex A ? (Group)
3323 @findex gnus-group-list-dormant
3324 List all groups with dormant articles (@code{gnus-group-list-dormant}).
3325
3326 @item A !
3327 @kindex A ! (Group)
3328 @findex gnus-group-list-ticked
3329 List all groups with ticked articles (@code{gnus-group-list-ticked}).
3330
3331 @item A /
3332 @kindex A / (Group)
3333 @findex gnus-group-list-limit
3334 List groups limited within the current selection
3335 (@code{gnus-group-list-limit}).
3336
3337 @item A f
3338 @kindex A f (Group)
3339 @findex gnus-group-list-flush
3340 Flush groups from the current selection (@code{gnus-group-list-flush}).
3341
3342 @item A p
3343 @kindex A p (Group)
3344 @findex gnus-group-list-plus
3345 List groups plus the current selection (@code{gnus-group-list-plus}).
3346
3347 @end table
3348
3349 @vindex gnus-permanently-visible-groups
3350 @cindex visible group parameter
3351 Groups that match the @code{gnus-permanently-visible-groups} regexp will
3352 always be shown, whether they have unread articles or not.  You can also
3353 add the @code{visible} element to the group parameters in question to
3354 get the same effect.
3355
3356 @vindex gnus-list-groups-with-ticked-articles
3357 Groups that have just ticked articles in it are normally listed in the
3358 group buffer.  If @code{gnus-list-groups-with-ticked-articles} is
3359 @code{nil}, these groups will be treated just like totally empty
3360 groups.  It is @code{t} by default.
3361
3362
3363 @node Sorting Groups
3364 @section Sorting Groups
3365 @cindex sorting groups
3366
3367 @kindex C-c C-s (Group)
3368 @findex gnus-group-sort-groups
3369 @vindex gnus-group-sort-function
3370 The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
3371 group buffer according to the function(s) given by the
3372 @code{gnus-group-sort-function} variable.  Available sorting functions
3373 include:
3374
3375 @table @code
3376
3377 @item gnus-group-sort-by-alphabet
3378 @findex gnus-group-sort-by-alphabet
3379 Sort the group names alphabetically.  This is the default.
3380
3381 @item gnus-group-sort-by-real-name
3382 @findex gnus-group-sort-by-real-name
3383 Sort the group alphabetically on the real (unprefixed) group names.
3384
3385 @item gnus-group-sort-by-level
3386 @findex gnus-group-sort-by-level
3387 Sort by group level.
3388
3389 @item gnus-group-sort-by-score
3390 @findex gnus-group-sort-by-score
3391 Sort by group score.  @xref{Group Score}.
3392
3393 @item gnus-group-sort-by-rank
3394 @findex gnus-group-sort-by-rank
3395 Sort by group score and then the group level.  The level and the score
3396 are, when taken together, the group's @dfn{rank}.  @xref{Group Score}.
3397
3398 @item gnus-group-sort-by-unread
3399 @findex gnus-group-sort-by-unread
3400 Sort by number of unread articles.
3401
3402 @item gnus-group-sort-by-method
3403 @findex gnus-group-sort-by-method
3404 Sort alphabetically on the select method.
3405
3406 @item gnus-group-sort-by-server
3407 @findex gnus-group-sort-by-server
3408 Sort alphabetically on the Gnus server name.
3409
3410
3411 @end table
3412
3413 @code{gnus-group-sort-function} can also be a list of sorting
3414 functions.  In that case, the most significant sort key function must be
3415 the last one.
3416
3417
3418 There are also a number of commands for sorting directly according to
3419 some sorting criteria:
3420
3421 @table @kbd
3422 @item G S a
3423 @kindex G S a (Group)
3424 @findex gnus-group-sort-groups-by-alphabet
3425 Sort the group buffer alphabetically by group name
3426 (@code{gnus-group-sort-groups-by-alphabet}).
3427
3428 @item G S u
3429 @kindex G S u (Group)
3430 @findex gnus-group-sort-groups-by-unread
3431 Sort the group buffer by the number of unread articles
3432 (@code{gnus-group-sort-groups-by-unread}).
3433
3434 @item G S l
3435 @kindex G S l (Group)
3436 @findex gnus-group-sort-groups-by-level
3437 Sort the group buffer by group level
3438 (@code{gnus-group-sort-groups-by-level}).
3439
3440 @item G S v
3441 @kindex G S v (Group)
3442 @findex gnus-group-sort-groups-by-score
3443 Sort the group buffer by group score
3444 (@code{gnus-group-sort-groups-by-score}).  @xref{Group Score}.
3445
3446 @item G S r
3447 @kindex G S r (Group)
3448 @findex gnus-group-sort-groups-by-rank
3449 Sort the group buffer by group rank
3450 (@code{gnus-group-sort-groups-by-rank}).  @xref{Group Score}.
3451
3452 @item G S m
3453 @kindex G S m (Group)
3454 @findex gnus-group-sort-groups-by-method
3455 Sort the group buffer alphabetically by back end name@*
3456 (@code{gnus-group-sort-groups-by-method}).
3457
3458 @item G S n
3459 @kindex G S n (Group)
3460 @findex gnus-group-sort-groups-by-real-name
3461 Sort the group buffer alphabetically by real (unprefixed) group name
3462 (@code{gnus-group-sort-groups-by-real-name}).
3463
3464 @end table
3465
3466 All the commands below obey the process/prefix convention
3467 (@pxref{Process/Prefix}).
3468
3469 When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
3470 commands will sort in reverse order.
3471
3472 You can also sort a subset of the groups:
3473
3474 @table @kbd
3475 @item G P a
3476 @kindex G P a (Group)
3477 @findex gnus-group-sort-selected-groups-by-alphabet
3478 Sort the groups alphabetically by group name
3479 (@code{gnus-group-sort-selected-groups-by-alphabet}).
3480
3481 @item G P u
3482 @kindex G P u (Group)
3483 @findex gnus-group-sort-selected-groups-by-unread
3484 Sort the groups by the number of unread articles
3485 (@code{gnus-group-sort-selected-groups-by-unread}).
3486
3487 @item G P l
3488 @kindex G P l (Group)
3489 @findex gnus-group-sort-selected-groups-by-level
3490 Sort the groups by group level
3491 (@code{gnus-group-sort-selected-groups-by-level}).
3492
3493 @item G P v
3494 @kindex G P v (Group)
3495 @findex gnus-group-sort-selected-groups-by-score
3496 Sort the groups by group score
3497 (@code{gnus-group-sort-selected-groups-by-score}).  @xref{Group Score}.
3498
3499 @item G P r
3500 @kindex G P r (Group)
3501 @findex gnus-group-sort-selected-groups-by-rank
3502 Sort the groups by group rank
3503 (@code{gnus-group-sort-selected-groups-by-rank}).  @xref{Group Score}.
3504
3505 @item G P m
3506 @kindex G P m (Group)
3507 @findex gnus-group-sort-selected-groups-by-method
3508 Sort the groups alphabetically by back end name@*
3509 (@code{gnus-group-sort-selected-groups-by-method}).
3510
3511 @item G P n
3512 @kindex G P n (Group)
3513 @findex gnus-group-sort-selected-groups-by-real-name
3514 Sort the groups alphabetically by real (unprefixed) group name
3515 (@code{gnus-group-sort-selected-groups-by-real-name}).
3516
3517 @item G P s
3518 @kindex G P s (Group)
3519 @findex gnus-group-sort-selected-groups
3520 Sort the groups according to @code{gnus-group-sort-function}.
3521
3522 @end table
3523
3524 And finally, note that you can use @kbd{C-k} and @kbd{C-y} to manually
3525 move groups around.
3526
3527
3528 @node Group Maintenance
3529 @section Group Maintenance
3530 @cindex bogus groups
3531
3532 @table @kbd
3533 @item b
3534 @kindex b (Group)
3535 @findex gnus-group-check-bogus-groups
3536 Find bogus groups and delete them
3537 (@code{gnus-group-check-bogus-groups}).
3538
3539 @item F
3540 @kindex F (Group)
3541 @findex gnus-group-find-new-groups
3542 Find new groups and process them (@code{gnus-group-find-new-groups}).
3543 With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
3544 for new groups.  With 2 @kbd{C-u}'s, use most complete method possible
3545 to query the server for new groups, and subscribe the new groups as
3546 zombies.
3547
3548 @item C-c C-x
3549 @kindex C-c C-x (Group)
3550 @findex gnus-group-expire-articles
3551 @cindex expiring mail
3552 Run all expirable articles in the current group through the expiry
3553 process (if any) (@code{gnus-group-expire-articles}).  That is, delete
3554 all expirable articles in the group that have been around for a while.
3555 (@pxref{Expiring Mail}).
3556
3557 @item C-c C-M-x
3558 @kindex C-c C-M-x (Group)
3559 @findex gnus-group-expire-all-groups
3560 @cindex expiring mail
3561 Run all expirable articles in all groups through the expiry process
3562 (@code{gnus-group-expire-all-groups}).
3563
3564 @end table
3565
3566
3567 @node Browse Foreign Server
3568 @section Browse Foreign Server
3569 @cindex foreign servers
3570 @cindex browsing servers
3571
3572 @table @kbd
3573 @item B
3574 @kindex B (Group)
3575 @findex gnus-group-browse-foreign-server
3576 You will be queried for a select method and a server name.  Gnus will
3577 then attempt to contact this server and let you browse the groups there
3578 (@code{gnus-group-browse-foreign-server}).
3579 @end table
3580
3581 @findex gnus-browse-mode
3582 A new buffer with a list of available groups will appear.  This buffer
3583 will use the @code{gnus-browse-mode}.  This buffer looks a bit (well,
3584 a lot) like a normal group buffer.
3585
3586 Here's a list of keystrokes available in the browse mode:
3587
3588 @table @kbd
3589 @item n
3590 @kindex n (Browse)
3591 @findex gnus-group-next-group
3592 Go to the next group (@code{gnus-group-next-group}).
3593
3594 @item p
3595 @kindex p (Browse)
3596 @findex gnus-group-prev-group
3597 Go to the previous group (@code{gnus-group-prev-group}).
3598
3599 @item SPACE
3600 @kindex SPACE (Browse)
3601 @findex gnus-browse-read-group
3602 Enter the current group and display the first article
3603 (@code{gnus-browse-read-group}).
3604
3605 @item RET
3606 @kindex RET (Browse)
3607 @findex gnus-browse-select-group
3608 Enter the current group (@code{gnus-browse-select-group}).
3609
3610 @item u
3611 @kindex u (Browse)
3612 @findex gnus-browse-unsubscribe-current-group
3613 @vindex gnus-browse-subscribe-newsgroup-method
3614 Unsubscribe to the current group, or, as will be the case here,
3615 subscribe to it (@code{gnus-browse-unsubscribe-current-group}).  You
3616 can affect the way the new group is entered into the Group buffer
3617 using the variable @code{gnus-browse-subscribe-newsgroup-method}.  See
3618 @pxref{Subscription Methods} for available options.
3619
3620 @item l
3621 @itemx q
3622 @kindex q (Browse)
3623 @kindex l (Browse)
3624 @findex gnus-browse-exit
3625 Exit browse mode (@code{gnus-browse-exit}).
3626
3627 @item d
3628 @kindex d (Browse)
3629 @findex gnus-browse-describe-group
3630 Describe the current group (@code{gnus-browse-describe-group}).
3631
3632 @item ?
3633 @kindex ? (Browse)
3634 @findex gnus-browse-describe-briefly
3635 Describe browse mode briefly (well, there's not much to describe, is
3636 there) (@code{gnus-browse-describe-briefly}).
3637 @end table
3638
3639
3640 @node Exiting Gnus
3641 @section Exiting Gnus
3642 @cindex exiting Gnus
3643
3644 Yes, Gnus is ex(c)iting.
3645
3646 @table @kbd
3647 @item z
3648 @kindex z (Group)
3649 @findex gnus-group-suspend
3650 Suspend Gnus (@code{gnus-group-suspend}).  This doesn't really exit Gnus,
3651 but it kills all buffers except the Group buffer.  I'm not sure why this
3652 is a gain, but then who am I to judge?
3653
3654 @item q
3655 @kindex q (Group)
3656 @findex gnus-group-exit
3657 @c @icon{gnus-group-exit}
3658 Quit Gnus (@code{gnus-group-exit}).
3659
3660 @item Q
3661 @kindex Q (Group)
3662 @findex gnus-group-quit
3663 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
3664 The dribble file will be saved, though (@pxref{Auto Save}).
3665 @end table
3666
3667 @vindex gnus-exit-gnus-hook
3668 @vindex gnus-suspend-gnus-hook
3669 @vindex gnus-after-exiting-gnus-hook
3670 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
3671 @code{gnus-exit-gnus-hook} is called when you quit Gnus, while
3672 @code{gnus-after-exiting-gnus-hook} is called as the final item when
3673 exiting Gnus.
3674
3675 Note:
3676
3677 @quotation
3678 Miss Lisa Cannifax, while sitting in English class, felt her feet go
3679 numbly heavy and herself fall into a hazy trance as the boy sitting
3680 behind her drew repeated lines with his pencil across the back of her
3681 plastic chair.
3682 @end quotation
3683
3684
3685 @node Group Topics
3686 @section Group Topics
3687 @cindex topics
3688
3689 If you read lots and lots of groups, it might be convenient to group
3690 them hierarchically according to topics.  You put your Emacs groups over
3691 here, your sex groups over there, and the rest (what, two groups or so?)
3692 you put in some misc section that you never bother with anyway.  You can
3693 even group the Emacs sex groups as a sub-topic to either the Emacs
3694 groups or the sex groups---or both!  Go wild!
3695
3696 @iftex
3697 @iflatex
3698 \gnusfigure{Group Topics}{400}{
3699 \put(75,50){\epsfig{figure=ps/group-topic,height=9cm}}
3700 }
3701 @end iflatex
3702 @end iftex
3703
3704 Here's an example:
3705
3706 @example
3707 Gnus
3708   Emacs -- I wuw it!
3709      3: comp.emacs
3710      2: alt.religion.emacs
3711     Naughty Emacs
3712      452: alt.sex.emacs
3713        0: comp.talk.emacs.recovery
3714   Misc
3715      8: comp.binaries.fractals
3716     13: comp.sources.unix
3717 @end example
3718
3719 @findex gnus-topic-mode
3720 @kindex t (Group)
3721 To get this @emph{fab} functionality you simply turn on (ooh!) the
3722 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer.  (This
3723 is a toggling command.)
3724
3725 Go ahead, just try it.  I'll still be here when you get back.  La de
3726 dum@dots{} Nice tune, that@dots{} la la la@dots{} What, you're back?
3727 Yes, and now press @kbd{l}.  There.  All your groups are now listed
3728 under @samp{misc}.  Doesn't that make you feel all warm and fuzzy?
3729 Hot and bothered?
3730
3731 If you want this permanently enabled, you should add that minor mode to
3732 the hook for the group mode.  Put the following line in your
3733 @file{~/.gnus.el} file:
3734
3735 @lisp
3736 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
3737 @end lisp
3738
3739 @menu
3740 * Topic Commands::              Interactive E-Z commands.
3741 * Topic Variables::             How to customize the topics the Lisp Way.
3742 * Topic Sorting::               Sorting each topic individually.
3743 * Topic Topology::              A map of the world.
3744 * Topic Parameters::            Parameters that apply to all groups in a topic.
3745 @end menu
3746
3747
3748 @node Topic Commands
3749 @subsection Topic Commands
3750 @cindex topic commands
3751
3752 When the topic minor mode is turned on, a new @kbd{T} submap will be
3753 available.  In addition, a few of the standard keys change their
3754 definitions slightly.
3755
3756 In general, the following kinds of operations are possible on topics.
3757 First of all, you want to create topics.  Secondly, you want to put
3758 groups in topics and to move them around until you have an order you
3759 like.  The third kind of operation is to show/hide parts of the whole
3760 shebang.  You might want to hide a topic including its subtopics and
3761 groups, to get a better overview of the other groups.
3762
3763 Here is a list of the basic keys that you might need to set up topics
3764 the way you like.
3765
3766 @table @kbd
3767
3768 @item T n
3769 @kindex T n (Topic)
3770 @findex gnus-topic-create-topic
3771 Prompt for a new topic name and create it
3772 (@code{gnus-topic-create-topic}).
3773
3774 @item T TAB
3775 @itemx TAB
3776 @kindex T TAB (Topic)
3777 @kindex TAB (Topic)
3778 @findex gnus-topic-indent
3779 ``Indent'' the current topic so that it becomes a sub-topic of the
3780 previous topic (@code{gnus-topic-indent}).  If given a prefix,
3781 ``un-indent'' the topic instead.
3782
3783 @item M-TAB
3784 @kindex M-TAB (Topic)
3785 @findex gnus-topic-unindent
3786 ``Un-indent'' the current topic so that it becomes a sub-topic of the
3787 parent of its current parent (@code{gnus-topic-unindent}).
3788
3789 @end table
3790
3791 The following two keys can be used to move groups and topics around.
3792 They work like the well-known cut and paste.  @kbd{C-k} is like cut and
3793 @kbd{C-y} is like paste.  Of course, this being Emacs, we use the terms
3794 kill and yank rather than cut and paste.
3795
3796 @table @kbd
3797
3798 @item C-k
3799 @kindex C-k (Topic)
3800 @findex gnus-topic-kill-group
3801 Kill a group or topic (@code{gnus-topic-kill-group}).  All groups in the
3802 topic will be removed along with the topic.
3803
3804 @item C-y
3805 @kindex C-y (Topic)
3806 @findex gnus-topic-yank-group
3807 Yank the previously killed group or topic
3808 (@code{gnus-topic-yank-group}).  Note that all topics will be yanked
3809 before all groups.
3810
3811 So, to move a topic to the beginning of the list of topics, just hit
3812 @kbd{C-k} on it.  This is like the ``cut'' part of cut and paste.  Then,
3813 move the cursor to the beginning of the buffer (just below the ``Gnus''
3814 topic) and hit @kbd{C-y}.  This is like the ``paste'' part of cut and
3815 paste.  Like I said -- E-Z.
3816
3817 You can use @kbd{C-k} and @kbd{C-y} on groups as well as on topics.  So
3818 you can move topics around as well as groups.
3819
3820 @end table
3821
3822 After setting up the topics the way you like them, you might wish to
3823 hide a topic, or to show it again.  That's why we have the following
3824 key.
3825
3826 @table @kbd
3827
3828 @item RET
3829 @kindex RET (Topic)
3830 @findex gnus-topic-select-group
3831 @itemx SPACE
3832 Either select a group or fold a topic (@code{gnus-topic-select-group}).
3833 When you perform this command on a group, you'll enter the group, as
3834 usual.  When done on a topic line, the topic will be folded (if it was
3835 visible) or unfolded (if it was folded already).  So it's basically a
3836 toggling command on topics.  In addition, if you give a numerical
3837 prefix, group on that level (and lower) will be displayed.
3838
3839 @end table
3840
3841 Now for a list of other commands, in no particular order.
3842
3843 @table @kbd
3844
3845 @item T m
3846 @kindex T m (Topic)
3847 @findex gnus-topic-move-group
3848 Move the current group to some other topic
3849 (@code{gnus-topic-move-group}).  This command uses the process/prefix
3850 convention (@pxref{Process/Prefix}).
3851
3852 @item T j
3853 @kindex T j (Topic)
3854 @findex gnus-topic-jump-to-topic
3855 Go to a topic (@code{gnus-topic-jump-to-topic}).
3856
3857 @item T c
3858 @kindex T c (Topic)
3859 @findex gnus-topic-copy-group
3860 Copy the current group to some other topic
3861 (@code{gnus-topic-copy-group}).  This command uses the process/prefix
3862 convention (@pxref{Process/Prefix}).
3863
3864 @item T h
3865 @kindex T h (Topic)
3866 @findex gnus-topic-hide-topic
3867 Hide the current topic (@code{gnus-topic-hide-topic}).  If given
3868 a prefix, hide the topic permanently.
3869
3870 @item T s
3871 @kindex T s (Topic)
3872 @findex gnus-topic-show-topic
3873 Show the current topic (@code{gnus-topic-show-topic}).  If given
3874 a prefix, show the topic permanently.
3875
3876 @item T D
3877 @kindex T D (Topic)
3878 @findex gnus-topic-remove-group
3879 Remove a group from the current topic (@code{gnus-topic-remove-group}).
3880 This command is mainly useful if you have the same group in several
3881 topics and wish to remove it from one of the topics.  You may also
3882 remove a group from all topics, but in that case, Gnus will add it to
3883 the root topic the next time you start Gnus.  In fact, all new groups
3884 (which, naturally, don't belong to any topic) will show up in the root
3885 topic.
3886
3887 This command uses the process/prefix convention
3888 (@pxref{Process/Prefix}).
3889
3890 @item T M
3891 @kindex T M (Topic)
3892 @findex gnus-topic-move-matching
3893 Move all groups that match some regular expression to a topic
3894 (@code{gnus-topic-move-matching}).
3895
3896 @item T C
3897 @kindex T C (Topic)
3898 @findex gnus-topic-copy-matching
3899 Copy all groups that match some regular expression to a topic
3900 (@code{gnus-topic-copy-matching}).
3901
3902 @item T H
3903 @kindex T H (Topic)
3904 @findex gnus-topic-toggle-display-empty-topics
3905 Toggle hiding empty topics
3906 (@code{gnus-topic-toggle-display-empty-topics}).
3907
3908 @item T #
3909 @kindex T # (Topic)
3910 @findex gnus-topic-mark-topic
3911 Mark all groups in the current topic with the process mark
3912 (@code{gnus-topic-mark-topic}).  This command works recursively on
3913 sub-topics unless given a prefix.
3914
3915 @item T M-#
3916 @kindex T M-# (Topic)
3917 @findex gnus-topic-unmark-topic
3918 Remove the process mark from all groups in the current topic
3919 (@code{gnus-topic-unmark-topic}).  This command works recursively on
3920 sub-topics unless given a prefix.
3921
3922 @item C-c C-x
3923 @kindex C-c C-x (Topic)
3924 @findex gnus-topic-expire-articles
3925 @cindex expiring mail
3926 Run all expirable articles in the current group or topic through the
3927 expiry process (if any)
3928 (@code{gnus-topic-expire-articles}).  (@pxref{Expiring Mail}).
3929
3930 @item T r
3931 @kindex T r (Topic)
3932 @findex gnus-topic-rename
3933 Rename a topic (@code{gnus-topic-rename}).
3934
3935 @item T DEL
3936 @kindex T DEL (Topic)
3937 @findex gnus-topic-delete
3938 Delete an empty topic (@code{gnus-topic-delete}).
3939
3940 @item A T
3941 @kindex A T (Topic)
3942 @findex gnus-topic-list-active
3943 List all groups that Gnus knows about in a topics-ified way
3944 (@code{gnus-topic-list-active}).
3945
3946 @item T M-n
3947 @kindex T M-n (Topic)
3948 @findex gnus-topic-goto-next-topic
3949 Go to the next topic (@code{gnus-topic-goto-next-topic}).
3950
3951 @item T M-p
3952 @kindex T M-p (Topic)
3953 @findex gnus-topic-goto-previous-topic
3954 Go to the previous topic (@code{gnus-topic-goto-previous-topic}).
3955
3956 @item G p
3957 @kindex G p (Topic)
3958 @findex gnus-topic-edit-parameters
3959 @cindex group parameters
3960 @cindex topic parameters
3961 @cindex parameters
3962 Edit the topic parameters (@code{gnus-topic-edit-parameters}).
3963 @xref{Topic Parameters}.
3964
3965 @end table
3966
3967
3968 @node Topic Variables
3969 @subsection Topic Variables
3970 @cindex topic variables
3971
3972 The previous section told you how to tell Gnus which topics to display.
3973 This section explains how to tell Gnus what to display about each topic.
3974
3975 @vindex gnus-topic-line-format
3976 The topic lines themselves are created according to the
3977 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
3978 Valid elements are:
3979
3980 @table @samp
3981 @item i
3982 Indentation.
3983 @item n
3984 Topic name.
3985 @item v
3986 Visibility.
3987 @item l
3988 Level.
3989 @item g
3990 Number of groups in the topic.
3991 @item a
3992 Number of unread articles in the topic.
3993 @item A
3994 Number of unread articles in the topic and all its subtopics.
3995 @end table
3996
3997 @vindex gnus-topic-indent-level
3998 Each sub-topic (and the groups in the sub-topics) will be indented with
3999 @code{gnus-topic-indent-level} times the topic level number of spaces.
4000 The default is 2.
4001
4002 @vindex gnus-topic-mode-hook
4003 @code{gnus-topic-mode-hook} is called in topic minor mode buffers.
4004
4005 @vindex gnus-topic-display-empty-topics
4006 The @code{gnus-topic-display-empty-topics} says whether to display even
4007 topics that have no unread articles in them.  The default is @code{t}.
4008
4009
4010 @node Topic Sorting
4011 @subsection Topic Sorting
4012 @cindex topic sorting
4013
4014 You can sort the groups in each topic individually with the following
4015 commands:
4016
4017
4018 @table @kbd
4019 @item T S a
4020 @kindex T S a (Topic)
4021 @findex gnus-topic-sort-groups-by-alphabet
4022 Sort the current topic alphabetically by group name
4023 (@code{gnus-topic-sort-groups-by-alphabet}).
4024
4025 @item T S u
4026 @kindex T S u (Topic)
4027 @findex gnus-topic-sort-groups-by-unread
4028 Sort the current topic by the number of unread articles
4029 (@code{gnus-topic-sort-groups-by-unread}).
4030
4031 @item T S l
4032 @kindex T S l (Topic)
4033 @findex gnus-topic-sort-groups-by-level
4034 Sort the current topic by group level
4035 (@code{gnus-topic-sort-groups-by-level}).
4036
4037 @item T S v
4038 @kindex T S v (Topic)
4039 @findex gnus-topic-sort-groups-by-score
4040 Sort the current topic by group score
4041 (@code{gnus-topic-sort-groups-by-score}).  @xref{Group Score}.
4042
4043 @item T S r
4044 @kindex T S r (Topic)
4045 @findex gnus-topic-sort-groups-by-rank
4046 Sort the current topic by group rank
4047 (@code{gnus-topic-sort-groups-by-rank}).  @xref{Group Score}.
4048
4049 @item T S m
4050 @kindex T S m (Topic)
4051 @findex gnus-topic-sort-groups-by-method
4052 Sort the current topic alphabetically by back end name
4053 (@code{gnus-topic-sort-groups-by-method}).
4054
4055 @item T S e
4056 @kindex T S e (Topic)
4057 @findex gnus-topic-sort-groups-by-server
4058 Sort the current topic alphabetically by server name
4059 (@code{gnus-topic-sort-groups-by-server}).
4060
4061 @item T S s
4062 @kindex T S s (Topic)
4063 @findex gnus-topic-sort-groups
4064 Sort the current topic according to the function(s) given by the
4065 @code{gnus-group-sort-function} variable
4066 (@code{gnus-topic-sort-groups}).
4067
4068 @end table
4069
4070 When given a prefix argument, all these commands will sort in reverse
4071 order.  @xref{Sorting Groups}, for more information about group
4072 sorting.
4073
4074
4075 @node Topic Topology
4076 @subsection Topic Topology
4077 @cindex topic topology
4078 @cindex topology
4079
4080 So, let's have a look at an example group buffer:
4081
4082 @example
4083 @group
4084 Gnus
4085   Emacs -- I wuw it!
4086      3: comp.emacs
4087      2: alt.religion.emacs
4088     Naughty Emacs
4089      452: alt.sex.emacs
4090        0: comp.talk.emacs.recovery
4091   Misc
4092      8: comp.binaries.fractals
4093     13: comp.sources.unix
4094 @end group
4095 @end example
4096
4097 So, here we have one top-level topic (@samp{Gnus}), two topics under
4098 that, and one sub-topic under one of the sub-topics.  (There is always
4099 just one (1) top-level topic).  This topology can be expressed as
4100 follows:
4101
4102 @lisp
4103 (("Gnus" visible)
4104  (("Emacs -- I wuw it!" visible)
4105   (("Naughty Emacs" visible)))
4106  (("Misc" visible)))
4107 @end lisp
4108
4109 @vindex gnus-topic-topology
4110 This is in fact how the variable @code{gnus-topic-topology} would look
4111 for the display above.  That variable is saved in the @file{.newsrc.eld}
4112 file, and shouldn't be messed with manually---unless you really want
4113 to.  Since this variable is read from the @file{.newsrc.eld} file,
4114 setting it in any other startup files will have no effect.
4115
4116 This topology shows what topics are sub-topics of what topics (right),
4117 and which topics are visible.  Two settings are currently
4118 allowed---@code{visible} and @code{invisible}.
4119
4120
4121 @node Topic Parameters
4122 @subsection Topic Parameters
4123 @cindex topic parameters
4124
4125 All groups in a topic will inherit group parameters from the parent
4126 (and ancestor) topic parameters.  All valid group parameters are valid
4127 topic parameters (@pxref{Group Parameters}).  When the agent is
4128 enabled, all agent parameters (See Agent Parameters in @ref{Category
4129 Syntax}) are also valid topic parameters.
4130
4131 In addition, the following parameters are only valid as topic
4132 parameters:
4133
4134 @table @code
4135 @item subscribe
4136 When subscribing new groups by topic (@pxref{Subscription Methods}), the
4137 @code{subscribe} topic parameter says what groups go in what topic.  Its
4138 value should be a regexp to match the groups that should go in that
4139 topic.
4140
4141 @item subscribe-level
4142 When subscribing new groups by topic (see the @code{subscribe} parameter),
4143 the group will be subscribed with the level specified in the
4144 @code{subscribe-level} instead of @code{gnus-level-default-subscribed}.
4145
4146 @end table
4147
4148 Group parameters (of course) override topic parameters, and topic
4149 parameters in sub-topics override topic parameters in super-topics.  You
4150 know.  Normal inheritance rules.  (@dfn{Rules} is here a noun, not a
4151 verb, although you may feel free to disagree with me here.)
4152
4153 @example
4154 @group
4155 Gnus
4156   Emacs
4157      3: comp.emacs
4158      2: alt.religion.emacs
4159    452: alt.sex.emacs
4160     Relief
4161      452: alt.sex.emacs
4162        0: comp.talk.emacs.recovery
4163   Misc
4164      8: comp.binaries.fractals
4165     13: comp.sources.unix
4166    452: alt.sex.emacs
4167 @end group
4168 @end example
4169
4170 The @samp{Emacs} topic has the topic parameter @code{(score-file
4171 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
4172 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
4173 topic parameter @code{(score-file . "emacs.SCORE")}.  In addition,
4174 @* @samp{alt.religion.emacs} has the group parameter @code{(score-file
4175 . "religion.SCORE")}.
4176
4177 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
4178 will get the @file{relief.SCORE} home score file.  If you enter the same
4179 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
4180 score file.  If you enter the group @samp{alt.religion.emacs}, you'll
4181 get the @file{religion.SCORE} home score file.
4182
4183 This seems rather simple and self-evident, doesn't it?  Well, yes.  But
4184 there are some problems, especially with the @code{total-expiry}
4185 parameter.  Say you have a mail group in two topics; one with
4186 @code{total-expiry} and one without.  What happens when you do @kbd{M-x
4187 gnus-expire-all-expirable-groups}?  Gnus has no way of telling which one
4188 of these topics you mean to expire articles from, so anything may
4189 happen.  In fact, I hereby declare that it is @dfn{undefined} what
4190 happens.  You just have to be careful if you do stuff like that.
4191
4192
4193 @node Non-ASCII Group Names
4194 @section Accessing groups of non-English names
4195 @cindex non-ascii group names
4196
4197 There are some news servers that provide groups of which the names are
4198 expressed with their native languages in the world.  For instance, in a
4199 certain news server there are some newsgroups of which the names are
4200 spelled in Chinese, where people are talking in Chinese.  You can, of
4201 course, subscribe to such news groups using Gnus.  Currently Gnus
4202 supports non-@acronym{ASCII} group names not only with the @code{nntp}
4203 back end but also with the @code{nnml} back end and the @code{nnrss}
4204 back end.
4205
4206 Every such group name is encoded by a certain charset in the server
4207 side (in an @acronym{NNTP} server its administrator determines the
4208 charset, but for groups in the other back ends it is determined by you).
4209 Gnus has to display the decoded ones for you in the group buffer and the
4210 article buffer, and needs to use the encoded ones when communicating
4211 with servers.  However, Gnus doesn't know what charset is used for each
4212 non-@acronym{ASCII} group name.  The following two variables are just
4213 the ones for telling Gnus what charset should be used for each group:
4214
4215 @table @code
4216 @item gnus-group-name-charset-method-alist
4217 @vindex gnus-group-name-charset-method-alist
4218 An alist of select methods and charsets.  The default value is
4219 @code{nil}.  The names of groups in the server specified by that select
4220 method are all supposed to use the corresponding charset.  For example:
4221
4222 @lisp
4223 (setq gnus-group-name-charset-method-alist
4224       '(((nntp "news.com.cn") . cn-gb-2312)))
4225 @end lisp
4226
4227 Charsets specified for groups with this variable are preferred to the
4228 ones specified for the same groups with the
4229 @code{gnus-group-name-charset-group-alist} variable (see below).
4230
4231 A select method can be very long, like:
4232
4233 @lisp
4234 (nntp "gmane"
4235       (nntp-address "news.gmane.org")
4236       (nntp-end-of-line "\n")
4237       (nntp-open-connection-function
4238        nntp-open-via-rlogin-and-telnet)
4239       (nntp-via-rlogin-command "ssh")
4240       (nntp-via-rlogin-command-switches
4241        ("-C" "-t" "-e" "none"))
4242       (nntp-via-address @dots{}))
4243 @end lisp
4244
4245 In that case, you can truncate it into @code{(nntp "gmane")} in this
4246 variable.  That is, it is enough to contain only the back end name and
4247 the server name.
4248
4249 @item gnus-group-name-charset-group-alist
4250 @cindex UTF-8 group names
4251 @vindex gnus-group-name-charset-group-alist
4252 An alist of regexp of group name and the charset for group names.
4253 @code{((".*" . utf-8))} is the default value if UTF-8 is supported,
4254 otherwise the default is @code{nil}.  For example:
4255
4256 @lisp
4257 (setq gnus-group-name-charset-group-alist
4258       '(("\\.com\\.cn:" . cn-gb-2312)
4259         (".*" . utf-8)))
4260 @end lisp
4261
4262 Note that this variable is ignored if the match is made with
4263 @code{gnus-group-name-charset-method-alist}.
4264 @end table
4265
4266 Those two variables are used also to determine the charset for encoding
4267 and decoding non-@acronym{ASCII} group names that are in the back ends
4268 other than @code{nntp}.  It means that it is you who determine it.  If
4269 you do nothing, the charset used for group names in those back ends will
4270 all be @code{utf-8} because of the last element of
4271 @code{gnus-group-name-charset-group-alist}.
4272
4273 There is one more important variable for non-@acronym{ASCII} group
4274 names:
4275
4276 @table @code
4277 @item nnmail-pathname-coding-system
4278 @vindex nnmail-pathname-coding-system
4279 The value of this variable should be a coding system or @code{nil}.  The
4280 default is @code{nil} in Emacs, or is the aliasee of the coding system
4281 named @code{file-name} (a certain coding system of which an alias is
4282 @code{file-name}) in XEmacs.
4283
4284 The @code{nnml} back end, the @code{nnrss} back end, the @acronym{NNTP}
4285 marks feature (@pxref{NNTP marks}), the agent, and the cache use
4286 non-@acronym{ASCII} group names in those files and directories.  This
4287 variable overrides the value of @code{file-name-coding-system} which
4288 specifies the coding system used when encoding and decoding those file
4289 names and directory names.
4290
4291 In XEmacs (with the @code{mule} feature), @code{file-name-coding-system}
4292 is the only means to specify the coding system used to encode and decode
4293 file names.  On the other hand, Emacs uses the value of
4294 @code{default-file-name-coding-system} if @code{file-name-coding-system}
4295 is @code{nil} or it is bound to the value of
4296 @code{nnmail-pathname-coding-system} which is @code{nil}.
4297
4298 Normally the value of @code{default-file-name-coding-system} in Emacs or
4299 @code{nnmail-pathname-coding-system} in XEmacs is initialized according
4300 to the locale, so you will need to do nothing if the value is suitable
4301 to encode and decode non-@acronym{ASCII} group names.
4302
4303 The value of this variable (or @code{default-file-name-coding-system})
4304 does not necessarily need to be the same value that is determined by
4305 @code{gnus-group-name-charset-method-alist} and
4306 @code{gnus-group-name-charset-group-alist}.
4307
4308 If @code{default-file-name-coding-system} or this variable is
4309 initialized by default to @code{iso-latin-1} for example, although you
4310 want to subscribe to the groups spelled in Chinese, that is the most
4311 typical case where you have to customize
4312 @code{nnmail-pathname-coding-system}.  The @code{utf-8} coding system is
4313 a good candidate for it.  Otherwise, you may change the locale in your
4314 system so that @code{default-file-name-coding-system} or this variable
4315 may be initialized to an appropriate value.
4316 @end table
4317
4318 Note that when you copy or move articles from a non-@acronym{ASCII}
4319 group to another group, the charset used to encode and decode group
4320 names should be the same in both groups.  Otherwise the Newsgroups
4321 header will be displayed incorrectly in the article buffer.
4322
4323
4324 @node Misc Group Stuff
4325 @section Misc Group Stuff
4326
4327 @menu
4328 * Scanning New Messages::       Asking Gnus to see whether new messages have arrived.
4329 * Group Information::           Information and help on groups and Gnus.
4330 * Group Timestamp::             Making Gnus keep track of when you last read a group.
4331 * File Commands::               Reading and writing the Gnus files.
4332 * Sieve Commands::              Managing Sieve scripts.
4333 @end menu
4334
4335 @table @kbd
4336
4337 @item v
4338 @kindex v (Group)
4339 @cindex keys, reserved for users (Group)
4340 The key @kbd{v} is reserved for users.  You can bind it to some
4341 command or better use it as a prefix key.  For example:
4342
4343 @lisp
4344 (define-key gnus-group-mode-map (kbd "v j d")
4345   (lambda ()
4346     (interactive)
4347     (gnus-group-jump-to-group "nndraft:drafts")))
4348 @end lisp
4349
4350 On keys reserved for users in Emacs and on keybindings in general
4351 @xref{Keymaps, Keymaps, , emacs, The Emacs Editor}.
4352
4353 @item ^
4354 @kindex ^ (Group)
4355 @findex gnus-group-enter-server-mode
4356 Enter the server buffer (@code{gnus-group-enter-server-mode}).
4357 @xref{Server Buffer}.
4358
4359 @item a
4360 @kindex a (Group)
4361 @findex gnus-group-post-news
4362 Start composing a message (a news by default)
4363 (@code{gnus-group-post-news}).  If given a prefix, post to the group
4364 under the point.  If the prefix is 1, prompt for a group to post to.
4365 Contrary to what the name of this function suggests, the prepared
4366 article might be a mail instead of a news, if a mail group is specified
4367 with the prefix argument.  @xref{Composing Messages}.
4368
4369 @item m
4370 @kindex m (Group)
4371 @findex gnus-group-mail
4372 Mail a message somewhere (@code{gnus-group-mail}).  If given a prefix,
4373 use the posting style of the group under the point.  If the prefix is 1,
4374 prompt for a group name to find the posting style.
4375 @xref{Composing Messages}.
4376
4377 @item i
4378 @kindex i (Group)
4379 @findex gnus-group-news
4380 Start composing a news (@code{gnus-group-news}).  If given a prefix,
4381 post to the group under the point.  If the prefix is 1, prompt
4382 for group to post to.  @xref{Composing Messages}.
4383
4384 This function actually prepares a news even when using mail groups.
4385 This is useful for ``posting'' messages to mail groups without actually
4386 sending them over the network: they're just saved directly to the group
4387 in question.  The corresponding back end must have a request-post method
4388 for this to work though.
4389
4390 @item G z
4391 @kindex G z (Group)
4392 @findex gnus-group-compact-group
4393
4394 Compact the group under point (@code{gnus-group-compact-group}).
4395 Currently implemented only in nnml (@pxref{Mail Spool}).  This removes
4396 gaps between article numbers, hence getting a correct total article
4397 count.
4398
4399 @end table
4400
4401 Variables for the group buffer:
4402
4403 @table @code
4404
4405 @item gnus-group-mode-hook
4406 @vindex gnus-group-mode-hook
4407 is called after the group buffer has been
4408 created.
4409
4410 @item gnus-group-prepare-hook
4411 @vindex gnus-group-prepare-hook
4412 is called after the group buffer is
4413 generated.  It may be used to modify the buffer in some strange,
4414 unnatural way.
4415
4416 @item gnus-group-prepared-hook
4417 @vindex gnus-group-prepare-hook
4418 is called as the very last thing after the group buffer has been
4419 generated.  It may be used to move point around, for instance.
4420
4421 @item gnus-permanently-visible-groups
4422 @vindex gnus-permanently-visible-groups
4423 Groups matching this regexp will always be listed in the group buffer,
4424 whether they are empty or not.
4425
4426 @end table
4427
4428 @node Scanning New Messages
4429 @subsection Scanning New Messages
4430 @cindex new messages
4431 @cindex scanning new news
4432
4433 @table @kbd
4434
4435 @item g
4436 @kindex g (Group)
4437 @findex gnus-group-get-new-news
4438 @c @icon{gnus-group-get-new-news}
4439 Check the server(s) for new articles.  If the numerical prefix is used,
4440 this command will check only groups of level @var{arg} and lower
4441 (@code{gnus-group-get-new-news}).  If given a non-numerical prefix, this
4442 command will force a total re-reading of the active file(s) from the
4443 back end(s).
4444
4445 @item M-g
4446 @kindex M-g (Group)
4447 @findex gnus-group-get-new-news-this-group
4448 @vindex gnus-goto-next-group-when-activating
4449 @c @icon{gnus-group-get-new-news-this-group}
4450 Check whether new articles have arrived in the current group
4451 (@code{gnus-group-get-new-news-this-group}).
4452 @code{gnus-goto-next-group-when-activating} says whether this command is
4453 to move point to the next group or not.  It is @code{t} by default.
4454
4455 @findex gnus-activate-all-groups
4456 @cindex activating groups
4457 @item C-c M-g
4458 @kindex C-c M-g (Group)
4459 Activate absolutely all groups (@code{gnus-activate-all-groups}).
4460
4461 @item R
4462 @kindex R (Group)
4463 @cindex restarting
4464 @findex gnus-group-restart
4465 Restart Gnus (@code{gnus-group-restart}).  This saves the @file{.newsrc}
4466 file(s), closes the connection to all servers, clears up all run-time
4467 Gnus variables, and then starts Gnus all over again.
4468
4469 @end table
4470
4471 @vindex gnus-get-new-news-hook
4472 @code{gnus-get-new-news-hook} is run just before checking for new news.
4473
4474 @vindex gnus-after-getting-new-news-hook
4475 @code{gnus-after-getting-new-news-hook} is run after checking for new
4476 news.
4477
4478
4479 @node Group Information
4480 @subsection Group Information
4481 @cindex group information
4482 @cindex information on groups
4483
4484 @table @kbd
4485
4486
4487 @item H f
4488 @kindex H f (Group)
4489 @findex gnus-group-fetch-faq
4490 @vindex gnus-group-faq-directory
4491 @cindex FAQ
4492 @cindex ange-ftp
4493 Try to fetch the @acronym{FAQ} for the current group
4494 (@code{gnus-group-fetch-faq}).  Gnus will try to get the @acronym{FAQ}
4495 from @code{gnus-group-faq-directory}, which is usually a directory on
4496 a remote machine.  This variable can also be a list of directories.
4497 In that case, giving a prefix to this command will allow you to choose
4498 between the various sites.  @code{ange-ftp} (or @code{efs}) will be
4499 used for fetching the file.
4500
4501 If fetching from the first site is unsuccessful, Gnus will attempt to go
4502 through @code{gnus-group-faq-directory} and try to open them one by one.
4503
4504 @item H d
4505 @itemx C-c C-d
4506 @c @icon{gnus-group-describe-group}
4507 @kindex H d (Group)
4508 @kindex C-c C-d (Group)
4509 @cindex describing groups
4510 @cindex group description
4511 @findex gnus-group-describe-group
4512 Describe the current group (@code{gnus-group-describe-group}).  If given
4513 a prefix, force Gnus to re-read the description from the server.
4514
4515 @item M-d
4516 @kindex M-d (Group)
4517 @findex gnus-group-describe-all-groups
4518 Describe all groups (@code{gnus-group-describe-all-groups}).  If given a
4519 prefix, force Gnus to re-read the description file from the server.
4520
4521 @item H v
4522 @itemx V
4523 @kindex V (Group)
4524 @kindex H v (Group)
4525 @cindex version
4526 @findex gnus-version
4527 Display current Gnus version numbers (@code{gnus-version}).
4528
4529 @item ?
4530 @kindex ? (Group)
4531 @findex gnus-group-describe-briefly
4532 Give a very short help message (@code{gnus-group-describe-briefly}).
4533
4534 @item C-c C-i
4535 @kindex C-c C-i (Group)
4536 @cindex info
4537 @cindex manual
4538 @findex gnus-info-find-node
4539 Go to the Gnus info node (@code{gnus-info-find-node}).
4540 @end table
4541
4542
4543 @node Group Timestamp
4544 @subsection Group Timestamp
4545 @cindex timestamps
4546 @cindex group timestamps
4547
4548 It can be convenient to let Gnus keep track of when you last read a
4549 group.  To set the ball rolling, you should add
4550 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
4551
4552 @lisp
4553 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
4554 @end lisp
4555
4556 After doing this, each time you enter a group, it'll be recorded.
4557
4558 This information can be displayed in various ways---the easiest is to
4559 use the @samp{%d} spec in the group line format:
4560
4561 @lisp
4562 (setq gnus-group-line-format
4563       "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
4564 @end lisp
4565
4566 This will result in lines looking like:
4567
4568 @example
4569 *        0: mail.ding                                19961002T012943
4570          0: custom                                   19961002T012713
4571 @end example
4572
4573 As you can see, the date is displayed in compact ISO 8601 format.  This
4574 may be a bit too much, so to just display the date, you could say
4575 something like:
4576
4577 @lisp
4578 (setq gnus-group-line-format
4579       "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
4580 @end lisp
4581
4582 If you would like greater control of the time format, you can use a
4583 user-defined format spec.  Something like the following should do the
4584 trick:
4585
4586 @lisp
4587 (setq gnus-group-line-format
4588       "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n")
4589 (defun gnus-user-format-function-d (headers)
4590   (let ((time (gnus-group-timestamp gnus-tmp-group)))
4591     (if time
4592         (format-time-string "%b %d  %H:%M" time)
4593       "")))
4594 @end lisp
4595
4596
4597 @node File Commands
4598 @subsection File Commands
4599 @cindex file commands
4600
4601 @table @kbd
4602
4603 @item r
4604 @kindex r (Group)
4605 @findex gnus-group-read-init-file
4606 @vindex gnus-init-file
4607 @cindex reading init file
4608 Re-read the init file (@code{gnus-init-file}, which defaults to
4609 @file{~/.gnus.el}) (@code{gnus-group-read-init-file}).
4610
4611 @item s
4612 @kindex s (Group)
4613 @findex gnus-group-save-newsrc
4614 @cindex saving .newsrc
4615 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
4616 (@code{gnus-group-save-newsrc}).  If given a prefix, force saving the
4617 file(s) whether Gnus thinks it is necessary or not.
4618
4619 @c @item Z
4620 @c @kindex Z (Group)
4621 @c @findex gnus-group-clear-dribble
4622 @c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
4623
4624 @end table
4625
4626
4627 @node Sieve Commands
4628 @subsection Sieve Commands
4629 @cindex group sieve commands
4630
4631 Sieve is a server-side mail filtering language.  In Gnus you can use
4632 the @code{sieve} group parameter (@pxref{Group Parameters}) to specify
4633 sieve rules that should apply to each group.  Gnus provides two
4634 commands to translate all these group parameters into a proper Sieve
4635 script that can be transfered to the server somehow.
4636
4637 @vindex gnus-sieve-file
4638 @vindex gnus-sieve-region-start
4639 @vindex gnus-sieve-region-end
4640 The generated Sieve script is placed in @code{gnus-sieve-file} (by
4641 default @file{~/.sieve}).  The Sieve code that Gnus generate is placed
4642 between two delimiters, @code{gnus-sieve-region-start} and
4643 @code{gnus-sieve-region-end}, so you may write additional Sieve code
4644 outside these delimiters that will not be removed the next time you
4645 regenerate the Sieve script.
4646
4647 @vindex gnus-sieve-crosspost
4648 The variable @code{gnus-sieve-crosspost} controls how the Sieve script
4649 is generated.  If it is non-@code{nil} (the default) articles is
4650 placed in all groups that have matching rules, otherwise the article
4651 is only placed in the group with the first matching rule.  For
4652 example, the group parameter @samp{(sieve address "sender"
4653 "owner-ding@@hpc.uh.edu")} will generate the following piece of Sieve
4654 code if @code{gnus-sieve-crosspost} is @code{nil}.  (When
4655 @code{gnus-sieve-crosspost} is non-@code{nil}, it looks the same
4656 except that the line containing the call to @code{stop} is removed.)
4657
4658 @example
4659 if address "sender" "owner-ding@@hpc.uh.edu" @{
4660         fileinto "INBOX.ding";
4661         stop;
4662 @}
4663 @end example
4664
4665 @xref{Top, Emacs Sieve, Top, sieve, Emacs Sieve}.
4666
4667 @table @kbd
4668
4669 @item D g
4670 @kindex D g (Group)
4671 @findex gnus-sieve-generate
4672 @vindex gnus-sieve-file
4673 @cindex generating sieve script
4674 Regenerate a Sieve script from the @code{sieve} group parameters and
4675 put you into the @code{gnus-sieve-file} without saving it.
4676
4677 @item D u
4678 @kindex D u (Group)
4679 @findex gnus-sieve-update
4680 @vindex gnus-sieve-file
4681 @cindex updating sieve script
4682 Regenerates the Gnus managed part of @code{gnus-sieve-file} using the
4683 @code{sieve} group parameters, save the file and upload it to the
4684 server using the @code{sieveshell} program.
4685
4686 @end table
4687
4688
4689 @node Summary Buffer
4690 @chapter Summary Buffer
4691 @cindex summary buffer
4692
4693 A line for each article is displayed in the summary buffer.  You can
4694 move around, read articles, post articles and reply to articles.
4695
4696 The most common way to a summary buffer is to select a group from the
4697 group buffer (@pxref{Selecting a Group}).
4698
4699 You can have as many summary buffers open as you wish.
4700
4701 You can customize the Summary Mode tool bar, see @kbd{M-x
4702 customize-apropos RET gnus-summary-tool-bar}.  This feature is only
4703 available in Emacs.
4704
4705 @kindex v (Summary)
4706 @cindex keys, reserved for users (Summary)
4707 The key @kbd{v} is reserved for users.  You can bind it to some
4708 command or better use it as a prefix key.  For example:
4709 @lisp
4710 (define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
4711 @end lisp
4712
4713 @menu
4714 * Summary Buffer Format::       Deciding how the summary buffer is to look.
4715 * Summary Maneuvering::         Moving around the summary buffer.
4716 * Choosing Articles::           Reading articles.
4717 * Paging the Article::          Scrolling the current article.
4718 * Reply Followup and Post::     Posting articles.
4719 * Delayed Articles::            Send articles at a later time.
4720 * Marking Articles::            Marking articles as read, expirable, etc.
4721 * Limiting::                    You can limit the summary buffer.
4722 * Threading::                   How threads are made.
4723 * Sorting the Summary Buffer::  How articles and threads are sorted.
4724 * Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
4725 * Article Caching::             You may store articles in a cache.
4726 * Persistent Articles::         Making articles expiry-resistant.
4727 * Sticky Articles::             Article buffers that are not reused.
4728 * Article Backlog::             Having already read articles hang around.
4729 * Saving Articles::             Ways of customizing article saving.
4730 * Decoding Articles::           Gnus can treat series of (uu)encoded articles.
4731 * Article Treatment::           The article buffer can be mangled at will.
4732 * MIME Commands::               Doing MIMEy things with the articles.
4733 * Charsets::                    Character set issues.
4734 * Article Commands::            Doing various things with the article buffer.
4735 * Summary Sorting::             Sorting the summary buffer in various ways.
4736 * Finding the Parent::          No child support? Get the parent.
4737 * Alternative Approaches::      Reading using non-default summaries.
4738 * Tree Display::                A more visual display of threads.
4739 * Mail Group Commands::         Some commands can only be used in mail groups.
4740 * Various Summary Stuff::       What didn't fit anywhere else.
4741 * Exiting the Summary Buffer::  Returning to the Group buffer,
4742                                 or reselecting the current group.
4743 * Crosspost Handling::          How crossposted articles are dealt with.
4744 * Duplicate Suppression::       An alternative when crosspost handling fails.
4745 * Security::                    Decrypt and Verify.
4746 * Mailing List::                Mailing list minor mode.
4747 @end menu
4748
4749
4750 @node Summary Buffer Format
4751 @section Summary Buffer Format
4752 @cindex summary buffer format
4753
4754 @iftex
4755 @iflatex
4756 \gnusfigure{The Summary Buffer}{180}{
4757 \put(0,0){\epsfig{figure=ps/summary,width=7.5cm}}
4758 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-article,width=7.5cm}}}
4759 }
4760 @end iflatex
4761 @end iftex
4762
4763 @menu
4764 * Summary Buffer Lines::        You can specify how summary lines should look.
4765 * To From Newsgroups::          How to not display your own name.
4766 * Summary Buffer Mode Line::    You can say how the mode line should look.
4767 * Summary Highlighting::        Making the summary buffer all pretty and nice.
4768 @end menu
4769
4770 @findex mail-extract-address-components
4771 @findex gnus-extract-address-components
4772 @vindex gnus-extract-address-components
4773 Gnus will use the value of the @code{gnus-extract-address-components}
4774 variable as a function for getting the name and address parts of a
4775 @code{From} header.  Two pre-defined functions exist:
4776 @code{gnus-extract-address-components}, which is the default, quite
4777 fast, and too simplistic solution; and
4778 @code{mail-extract-address-components}, which works very nicely, but is
4779 slower.  The default function will return the wrong answer in 5% of the
4780 cases.  If this is unacceptable to you, use the other function instead:
4781
4782 @lisp
4783 (setq gnus-extract-address-components
4784       'mail-extract-address-components)
4785 @end lisp
4786
4787 @vindex gnus-summary-same-subject
4788 @code{gnus-summary-same-subject} is a string indicating that the current
4789 article has the same subject as the previous.  This string will be used
4790 with those specs that require it.  The default is @code{""}.
4791
4792
4793 @node Summary Buffer Lines
4794 @subsection Summary Buffer Lines
4795
4796 @vindex gnus-summary-line-format
4797 You can change the format of the lines in the summary buffer by changing
4798 the @code{gnus-summary-line-format} variable.  It works along the same
4799 lines as a normal @code{format} string, with some extensions
4800 (@pxref{Formatting Variables}).
4801
4802 There should always be a colon or a point position marker on the line;
4803 the cursor always moves to the point position marker or the colon after
4804 performing an operation.  (Of course, Gnus wouldn't be Gnus if it wasn't
4805 possible to change this.  Just write a new function
4806 @code{gnus-goto-colon} which does whatever you like with the cursor.)
4807 @xref{Positioning Point}.
4808
4809 The default string is @samp{%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n}.
4810
4811 The following format specification characters and extended format
4812 specification(s) are understood:
4813
4814 @table @samp
4815 @item N
4816 Article number.
4817 @item S
4818 Subject string.  List identifiers stripped,
4819 @code{gnus-list-identifiers}.  @xref{Article Hiding}.
4820 @item s
4821 Subject if the article is the root of the thread or the previous article
4822 had a different subject, @code{gnus-summary-same-subject} otherwise.
4823 (@code{gnus-summary-same-subject} defaults to @code{""}.)
4824 @item F
4825 Full @code{From} header.
4826 @item n
4827 The name (from the @code{From} header).
4828 @item f
4829 The name, @code{To} header or the @code{Newsgroups} header (@pxref{To
4830 From Newsgroups}).
4831 @item a
4832 The name (from the @code{From} header).  This differs from the @code{n}
4833 spec in that it uses the function designated by the
4834 @code{gnus-extract-address-components} variable, which is slower, but
4835 may be more thorough.
4836 @item A
4837 The address (from the @code{From} header).  This works the same way as
4838 the @code{a} spec.
4839 @item L
4840 Number of lines in the article.
4841 @item c
4842 Number of characters in the article.  This specifier is not supported
4843 in some methods (like nnfolder).
4844 @item k
4845 Pretty-printed version of the number of characters in the article;
4846 for example, @samp{1.2k} or @samp{0.4M}.
4847 @item I
4848 Indentation based on thread level (@pxref{Customizing Threading}).
4849 @item B
4850 A complex trn-style thread tree, showing response-connecting trace
4851 lines.  A thread could be drawn like this:
4852
4853 @example
4854 >
4855 +->
4856 | +->
4857 | | \->
4858 | |   \->
4859 | \->
4860 +->
4861 \->
4862 @end example
4863
4864 You can customize the appearance with the following options.  Note
4865 that it is possible to make the thread display look really neat by
4866 replacing the default @acronym{ASCII} characters with graphic
4867 line-drawing glyphs.
4868 @table @code
4869 @item gnus-sum-thread-tree-root
4870 @vindex gnus-sum-thread-tree-root
4871 Used for the root of a thread.  If @code{nil}, use subject
4872 instead.  The default is @samp{> }.
4873
4874 @item gnus-sum-thread-tree-false-root
4875 @vindex gnus-sum-thread-tree-false-root
4876 Used for the false root of a thread (@pxref{Loose Threads}).  If
4877 @code{nil}, use subject instead.  The default is @samp{> }.
4878
4879 @item gnus-sum-thread-tree-single-indent
4880 @vindex gnus-sum-thread-tree-single-indent
4881 Used for a thread with just one message.  If @code{nil}, use subject
4882 instead.  The default is @samp{}.
4883
4884 @item gnus-sum-thread-tree-vertical
4885 @vindex gnus-sum-thread-tree-vertical
4886 Used for drawing a vertical line.  The default is @samp{| }.
4887
4888 @item gnus-sum-thread-tree-indent
4889 @vindex gnus-sum-thread-tree-indent
4890 Used for indenting.  The default is @samp{  }.
4891
4892 @item gnus-sum-thread-tree-leaf-with-other
4893 @vindex gnus-sum-thread-tree-leaf-with-other
4894 Used for a leaf with brothers.  The default is @samp{+-> }.
4895
4896 @item gnus-sum-thread-tree-single-leaf
4897 @vindex gnus-sum-thread-tree-single-leaf
4898 Used for a leaf without brothers.  The default is @samp{\-> }
4899
4900 @end table
4901
4902 @item T
4903 Nothing if the article is a root and lots of spaces if it isn't (it
4904 pushes everything after it off the screen).
4905 @item [
4906 Opening bracket, which is normally @samp{[}, but can also be @samp{<}
4907 for adopted articles (@pxref{Customizing Threading}).
4908 @item ]
4909 Closing bracket, which is normally @samp{]}, but can also be @samp{>}
4910 for adopted articles.
4911 @item >
4912 One space for each thread level.
4913 @item <
4914 Twenty minus thread level spaces.
4915 @item U
4916 Unread.  @xref{Read Articles}.
4917
4918 @item R
4919 This misleadingly named specifier is the @dfn{secondary mark}.  This
4920 mark will say whether the article has been replied to, has been cached,
4921 or has been saved.  @xref{Other Marks}.
4922
4923 @item i
4924 Score as a number (@pxref{Scoring}).
4925 @item z
4926 @vindex gnus-summary-zcore-fuzz
4927 Zcore, @samp{+} if above the default level and @samp{-} if below the
4928 default level.  If the difference between
4929 @code{gnus-summary-default-score} and the score is less than
4930 @code{gnus-summary-zcore-fuzz}, this spec will not be used.
4931 @item V
4932 Total thread score.
4933 @item x
4934 @code{Xref}.
4935 @item D
4936 @code{Date}.
4937 @item d
4938 The @code{Date} in @code{DD-MMM} format.
4939 @item o
4940 The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format.
4941 @item M
4942 @code{Message-ID}.
4943 @item r
4944 @code{References}.
4945 @item t
4946 Number of articles in the current sub-thread.  Using this spec will slow
4947 down summary buffer generation somewhat.
4948 @item e
4949 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
4950 article has any children.
4951 @item P
4952 The line number.
4953 @item O
4954 Download mark.
4955 @item *
4956 Desired cursor position (instead of after first colon).
4957 @item &user-date;
4958 Age sensitive date format.  Various date format is defined in
4959 @code{gnus-user-date-format-alist}.
4960 @item u
4961 User defined specifier.  The next character in the format string should
4962 be a letter.  Gnus will call the function
4963 @code{gnus-user-format-function-@var{x}}, where @var{x} is the letter
4964 following @samp{%u}.  The function will be passed the current header as
4965 argument.  The function should return a string, which will be inserted
4966 into the summary just like information from any other summary specifier.
4967 @end table
4968
4969 Text between @samp{%(} and @samp{%)} will be highlighted with
4970 @code{gnus-mouse-face} when the mouse point is placed inside the area.
4971 There can only be one such area.
4972
4973 The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
4974 have to be handled with care.  For reasons of efficiency, Gnus will
4975 compute what column these characters will end up in, and ``hard-code''
4976 that.  This means that it is invalid to have these specs after a
4977 variable-length spec.  Well, you might not be arrested, but your summary
4978 buffer will look strange, which is bad enough.
4979
4980 The smart choice is to have these specs as far to the left as possible.
4981 (Isn't that the case with everything, though?  But I digress.)
4982
4983 This restriction may disappear in later versions of Gnus.
4984
4985
4986 @node To From Newsgroups
4987 @subsection To From Newsgroups
4988 @cindex To
4989 @cindex Newsgroups
4990
4991 In some groups (particularly in archive groups), the @code{From} header
4992 isn't very interesting, since all the articles there are written by
4993 you.  To display the information in the @code{To} or @code{Newsgroups}
4994 headers instead, you need to decide three things: What information to
4995 gather; where to display it; and when to display it.
4996
4997 @enumerate
4998 @item
4999 @vindex gnus-extra-headers
5000 The reading of extra header information is controlled by the
5001 @code{gnus-extra-headers}.  This is a list of header symbols.  For
5002 instance:
5003
5004 @lisp
5005 (setq gnus-extra-headers
5006       '(To Newsgroups X-Newsreader))
5007 @end lisp
5008
5009 This will result in Gnus trying to obtain these three headers, and
5010 storing it in header structures for later easy retrieval.
5011
5012 @item
5013 @findex gnus-extra-header
5014 The value of these extra headers can be accessed via the
5015 @code{gnus-extra-header} function.  Here's a format line spec that will
5016 access the @code{X-Newsreader} header:
5017
5018 @example
5019 "%~(form (gnus-extra-header 'X-Newsreader))@@"
5020 @end example
5021
5022 @item
5023 @vindex gnus-ignored-from-addresses
5024 The @code{gnus-ignored-from-addresses} variable says when the @samp{%f}
5025 summary line spec returns the @code{To}, @code{Newsreader} or
5026 @code{From} header.  If this regexp matches the contents of the
5027 @code{From} header, the value of the @code{To} or @code{Newsreader}
5028 headers are used instead.
5029
5030 To distinguish regular articles from those where the @code{From} field
5031 has been swapped, a string is prefixed to the @code{To} or
5032 @code{Newsgroups} header in the summary line.  By default the string is
5033 @samp{-> } for @code{To} and @samp{=> } for @code{Newsgroups}, you can
5034 customize these strings with @code{gnus-summary-to-prefix} and
5035 @code{gnus-summary-newsgroup-prefix}.
5036
5037 @end enumerate
5038
5039 @vindex nnmail-extra-headers
5040 A related variable is @code{nnmail-extra-headers}, which controls when
5041 to include extra headers when generating overview (@acronym{NOV}) files.
5042 If you have old overview files, you should regenerate them after
5043 changing this variable, by entering the server buffer using @kbd{^},
5044 and then @kbd{g} on the appropriate mail server (e.g. nnml) to cause
5045 regeneration.
5046
5047 @vindex gnus-summary-line-format
5048 You also have to instruct Gnus to display the data by changing the
5049 @code{%n} spec to the @code{%f} spec in the
5050 @code{gnus-summary-line-format} variable.
5051
5052 In summary, you'd typically put something like the following in
5053 @file{~/.gnus.el}:
5054
5055 @lisp
5056 (setq gnus-extra-headers
5057       '(To Newsgroups))
5058 (setq nnmail-extra-headers gnus-extra-headers)
5059 (setq gnus-summary-line-format
5060       "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
5061 (setq gnus-ignored-from-addresses
5062       "Your Name Here")
5063 @end lisp
5064
5065 (The values listed above are the default values in Gnus.  Alter them
5066 to fit your needs.)
5067
5068 A note for news server administrators, or for users who wish to try to
5069 convince their news server administrator to provide some additional
5070 support:
5071
5072 The above is mostly useful for mail groups, where you have control over
5073 the @acronym{NOV} files that are created.  However, if you can persuade your
5074 nntp admin to add (in the usual implementation, notably INN):
5075
5076 @example
5077 Newsgroups:full
5078 @end example
5079
5080 to the end of her @file{overview.fmt} file, then you can use that just
5081 as you would the extra headers from the mail groups.
5082
5083
5084 @node Summary Buffer Mode Line
5085 @subsection Summary Buffer Mode Line
5086
5087 @vindex gnus-summary-mode-line-format
5088 You can also change the format of the summary mode bar (@pxref{Mode Line
5089 Formatting}).  Set @code{gnus-summary-mode-line-format} to whatever you
5090 like.  The default is @samp{Gnus: %%b [%A] %Z}.
5091
5092 Here are the elements you can play with:
5093
5094 @table @samp
5095 @item G
5096 Group name.
5097 @item p
5098 Unprefixed group name.
5099 @item A
5100 Current article number.
5101 @item z
5102 Current article score.
5103 @item V
5104 Gnus version.
5105 @item U
5106 Number of unread articles in this group.
5107 @item e
5108 Number of unread articles in this group that aren't displayed in the
5109 summary buffer.
5110 @item Z
5111 A string with the number of unread and unselected articles represented
5112 either as @samp{<%U(+%e) more>} if there are both unread and unselected
5113 articles, and just as @samp{<%U more>} if there are just unread articles
5114 and no unselected ones.
5115 @item g
5116 Shortish group name.  For instance, @samp{rec.arts.anime} will be
5117 shortened to @samp{r.a.anime}.
5118 @item S
5119 Subject of the current article.
5120 @item u
5121 User-defined spec (@pxref{User-Defined Specs}).
5122 @item s
5123 Name of the current score file (@pxref{Scoring}).
5124 @item d
5125 Number of dormant articles (@pxref{Unread Articles}).
5126 @item t
5127 Number of ticked articles (@pxref{Unread Articles}).
5128 @item r
5129 Number of articles that have been marked as read in this session.
5130 @item E
5131 Number of articles expunged by the score files.
5132 @end table
5133
5134
5135 @node Summary Highlighting
5136 @subsection Summary Highlighting
5137
5138 @table @code
5139
5140 @item gnus-visual-mark-article-hook
5141 @vindex gnus-visual-mark-article-hook
5142 This hook is run after selecting an article.  It is meant to be used for
5143 highlighting the article in some way.  It is not run if
5144 @code{gnus-visual} is @code{nil}.
5145
5146 @item gnus-summary-update-hook
5147 @vindex gnus-summary-update-hook
5148 This hook is called when a summary line is changed.  It is not run if
5149 @code{gnus-visual} is @code{nil}.
5150
5151 @item gnus-summary-selected-face
5152 @vindex gnus-summary-selected-face
5153 This is the face (or @dfn{font} as some people call it) used to
5154 highlight the current article in the summary buffer.
5155
5156 @item gnus-summary-highlight
5157 @vindex gnus-summary-highlight
5158 Summary lines are highlighted according to this variable, which is a
5159 list where the elements are of the format @code{(@var{form}
5160 . @var{face})}.  If you would, for instance, like ticked articles to be
5161 italic and high-scored articles to be bold, you could set this variable
5162 to something like
5163 @lisp
5164 (((eq mark gnus-ticked-mark) . italic)
5165  ((> score default) . bold))
5166 @end lisp
5167 As you may have guessed, if @var{form} returns a non-@code{nil} value,
5168 @var{face} will be applied to the line.
5169 @end table
5170
5171
5172 @node Summary Maneuvering
5173 @section Summary Maneuvering
5174 @cindex summary movement
5175
5176 All the straight movement commands understand the numeric prefix and
5177 behave pretty much as you'd expect.
5178
5179 None of these commands select articles.
5180
5181 @table @kbd
5182 @item G M-n
5183 @itemx M-n
5184 @kindex M-n (Summary)
5185 @kindex G M-n (Summary)
5186 @findex gnus-summary-next-unread-subject
5187 Go to the next summary line of an unread article
5188 (@code{gnus-summary-next-unread-subject}).
5189
5190 @item G M-p
5191 @itemx M-p
5192 @kindex M-p (Summary)
5193 @kindex G M-p (Summary)
5194 @findex gnus-summary-prev-unread-subject
5195 Go to the previous summary line of an unread article
5196 (@code{gnus-summary-prev-unread-subject}).
5197
5198 @item G g
5199 @kindex G g (Summary)
5200 @findex gnus-summary-goto-subject
5201 Ask for an article number and then go to the summary line of that article
5202 without displaying the article (@code{gnus-summary-goto-subject}).
5203 @end table
5204
5205 If Gnus asks you to press a key to confirm going to the next group, you
5206 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
5207 buffer, searching for the next group to read without actually returning
5208 to the group buffer.
5209
5210 Variables related to summary movement:
5211
5212 @table @code
5213
5214 @vindex gnus-auto-select-next
5215 @item gnus-auto-select-next
5216 If you issue one of the movement commands (like @kbd{n}) and there are
5217 no more unread articles after the current one, Gnus will offer to go to
5218 the next group.  If this variable is @code{t} and the next group is
5219 empty, Gnus will exit summary mode and return to the group buffer.  If
5220 this variable is neither @code{t} nor @code{nil}, Gnus will select the
5221 next group with unread articles.  As a special case, if this variable
5222 is @code{quietly}, Gnus will select the next group without asking for
5223 confirmation.  If this variable is @code{almost-quietly}, the same
5224 will happen only if you are located on the last article in the group.
5225 Finally, if this variable is @code{slightly-quietly}, the @kbd{Z n}
5226 command will go to the next group without confirmation.  Also
5227 @pxref{Group Levels}.
5228
5229 @item gnus-auto-select-same
5230 @vindex gnus-auto-select-same
5231 If non-@code{nil}, all the movement commands will try to go to the next
5232 article with the same subject as the current.  (@dfn{Same} here might
5233 mean @dfn{roughly equal}.  See @code{gnus-summary-gather-subject-limit}
5234 for details (@pxref{Customizing Threading}).)  If there are no more
5235 articles with the same subject, go to the first unread article.
5236
5237 This variable is not particularly useful if you use a threaded display.
5238
5239 @item gnus-summary-check-current
5240 @vindex gnus-summary-check-current
5241 If non-@code{nil}, all the ``unread'' movement commands will not proceed
5242 to the next (or previous) article if the current article is unread.
5243 Instead, they will choose the current article.
5244
5245 @item gnus-auto-center-summary
5246 @vindex gnus-auto-center-summary
5247 If non-@code{nil}, Gnus will keep the point in the summary buffer
5248 centered at all times.  This makes things quite tidy, but if you have a
5249 slow network connection, or simply do not like this un-Emacsism, you can
5250 set this variable to @code{nil} to get the normal Emacs scrolling
5251 action.  This will also inhibit horizontal re-centering of the summary
5252 buffer, which might make it more inconvenient to read extremely long
5253 threads.
5254
5255 This variable can also be a number.  In that case, center the window at
5256 the given number of lines from the top.
5257
5258 @item gnus-summary-stop-at-end-of-message
5259 @vindex gnus-summary-stop-at-end-of-message
5260 If non-@code{nil}, don't go to the next article when hitting
5261 @kbd{SPC}, and you're at the end of the article.
5262
5263 @end table
5264
5265
5266 @node Choosing Articles
5267 @section Choosing Articles
5268 @cindex selecting articles
5269
5270 @menu
5271 * Choosing Commands::           Commands for choosing articles.
5272 * Choosing Variables::          Variables that influence these commands.
5273 @end menu
5274
5275
5276 @node Choosing Commands
5277 @subsection Choosing Commands
5278
5279 None of the following movement commands understand the numeric prefix,
5280 and they all select and display an article.
5281
5282 If you want to fetch new articles or redisplay the group, see
5283 @ref{Exiting the Summary Buffer}.
5284
5285 @table @kbd
5286 @item SPACE
5287 @kindex SPACE (Summary)
5288 @findex gnus-summary-next-page
5289 Select the current article, or, if that one's read already, the next
5290 unread article (@code{gnus-summary-next-page}).
5291
5292 If you have an article window open already and you press @kbd{SPACE}
5293 again, the article will be scrolled.  This lets you conveniently
5294 @kbd{SPACE} through an entire newsgroup.  @xref{Paging the Article}.
5295
5296 @item G n
5297 @itemx n
5298 @kindex n (Summary)
5299 @kindex G n (Summary)
5300 @findex gnus-summary-next-unread-article
5301 @c @icon{gnus-summary-next-unread}
5302 Go to next unread article (@code{gnus-summary-next-unread-article}).
5303
5304 @item G p
5305 @itemx p
5306 @kindex p (Summary)
5307 @findex gnus-summary-prev-unread-article
5308 @c @icon{gnus-summary-prev-unread}
5309 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
5310
5311 @item G N
5312 @itemx N
5313 @kindex N (Summary)
5314 @kindex G N (Summary)
5315 @findex gnus-summary-next-article
5316 Go to the next article (@code{gnus-summary-next-article}).
5317
5318 @item G P
5319 @itemx P
5320 @kindex P (Summary)
5321 @kindex G P (Summary)
5322 @findex gnus-summary-prev-article
5323 Go to the previous article (@code{gnus-summary-prev-article}).
5324
5325 @item G C-n
5326 @kindex G C-n (Summary)
5327 @findex gnus-summary-next-same-subject
5328 Go to the next article with the same subject
5329 (@code{gnus-summary-next-same-subject}).
5330
5331 @item G C-p
5332 @kindex G C-p (Summary)
5333 @findex gnus-summary-prev-same-subject
5334 Go to the previous article with the same subject
5335 (@code{gnus-summary-prev-same-subject}).
5336
5337 @item G f
5338 @itemx .
5339 @kindex G f  (Summary)
5340 @kindex .  (Summary)
5341 @findex gnus-summary-first-unread-article
5342 Go to the first unread article
5343 (@code{gnus-summary-first-unread-article}).
5344
5345 @item G b
5346 @itemx ,
5347 @kindex G b (Summary)
5348 @kindex , (Summary)
5349 @findex gnus-summary-best-unread-article
5350 Go to the unread article with the highest score
5351 (@code{gnus-summary-best-unread-article}).  If given a prefix argument,
5352 go to the first unread article that has a score over the default score.
5353
5354 @item G l
5355 @itemx l
5356 @kindex l (Summary)
5357 @kindex G l (Summary)
5358 @findex gnus-summary-goto-last-article
5359 Go to the previous article read (@code{gnus-summary-goto-last-article}).
5360
5361 @item G o
5362 @kindex G o (Summary)
5363 @findex gnus-summary-pop-article
5364 @cindex history
5365 @cindex article history
5366 Pop an article off the summary history and go to this article
5367 (@code{gnus-summary-pop-article}).  This command differs from the
5368 command above in that you can pop as many previous articles off the
5369 history as you like, while @kbd{l} toggles the two last read articles.
5370 For a somewhat related issue (if you use these commands a lot),
5371 @pxref{Article Backlog}.
5372
5373 @item G j
5374 @itemx j
5375 @kindex j (Summary)
5376 @kindex G j (Summary)
5377 @findex gnus-summary-goto-article
5378 Ask for an article number or @code{Message-ID}, and then go to that
5379 article (@code{gnus-summary-goto-article}).
5380
5381 @end table
5382
5383
5384 @node Choosing Variables
5385 @subsection Choosing Variables
5386
5387 Some variables relevant for moving and selecting articles:
5388
5389 @table @code
5390 @item gnus-auto-extend-newsgroup
5391 @vindex gnus-auto-extend-newsgroup
5392 All the movement commands will try to go to the previous (or next)
5393 article, even if that article isn't displayed in the Summary buffer if
5394 this variable is non-@code{nil}.  Gnus will then fetch the article from
5395 the server and display it in the article buffer.
5396
5397 @item gnus-select-article-hook
5398 @vindex gnus-select-article-hook
5399 This hook is called whenever an article is selected.  The default is
5400 @code{nil}.  If you would like each article to be saved in the Agent as
5401 you read it, putting @code{gnus-agent-fetch-selected-article} on this
5402 hook will do so.
5403
5404 @item gnus-mark-article-hook
5405 @vindex gnus-mark-article-hook
5406 @findex gnus-summary-mark-unread-as-read
5407 @findex gnus-summary-mark-read-and-unread-as-read
5408 @findex gnus-unread-mark
5409 This hook is called whenever an article is selected.  It is intended to
5410 be used for marking articles as read.  The default value is
5411 @code{gnus-summary-mark-read-and-unread-as-read}, and will change the
5412 mark of almost any article you read to @code{gnus-read-mark}.  The only
5413 articles not affected by this function are ticked, dormant, and
5414 expirable articles.  If you'd instead like to just have unread articles
5415 marked as read, you can use @code{gnus-summary-mark-unread-as-read}
5416 instead.  It will leave marks like @code{gnus-low-score-mark},
5417 @code{gnus-del-mark} (and so on) alone.
5418
5419 @end table
5420
5421
5422 @node Paging the Article
5423 @section Scrolling the Article
5424 @cindex article scrolling
5425
5426 @table @kbd
5427
5428 @item SPACE
5429 @kindex SPACE (Summary)
5430 @findex gnus-summary-next-page
5431 Pressing @kbd{SPACE} will scroll the current article forward one page,
5432 or, if you have come to the end of the current article, will choose the
5433 next article (@code{gnus-summary-next-page}).
5434
5435 @vindex gnus-article-boring-faces
5436 @vindex gnus-article-skip-boring
5437 If @code{gnus-article-skip-boring} is non-@code{nil} and the rest of
5438 the article consists only of citations and signature, then it will be
5439 skipped; the next article will be shown instead.  You can customize
5440 what is considered uninteresting with
5441 @code{gnus-article-boring-faces}.  You can manually view the article's
5442 pages, no matter how boring, using @kbd{C-M-v}.
5443
5444 @item DEL
5445 @kindex DEL (Summary)
5446 @findex gnus-summary-prev-page
5447 Scroll the current article back one page (@code{gnus-summary-prev-page}).
5448
5449 @item RET
5450 @kindex RET (Summary)
5451 @findex gnus-summary-scroll-up
5452 Scroll the current article one line forward
5453 (@code{gnus-summary-scroll-up}).
5454
5455 @item M-RET
5456 @kindex M-RET (Summary)
5457 @findex gnus-summary-scroll-down
5458 Scroll the current article one line backward
5459 (@code{gnus-summary-scroll-down}).
5460
5461 @item A g
5462 @itemx g
5463 @kindex A g (Summary)
5464 @kindex g (Summary)
5465 @findex gnus-summary-show-article
5466 @vindex gnus-summary-show-article-charset-alist
5467 (Re)fetch the current article (@code{gnus-summary-show-article}).  If
5468 given a prefix, show a completely ``raw'' article, just the way it
5469 came from the server.  If given a prefix twice (i.e., @kbd{C-u C-u
5470 g'}), fetch the current article, but don't run any of the article
5471 treatment functions.
5472
5473 @cindex charset, view article with different charset
5474 If given a numerical prefix, you can do semi-manual charset stuff.
5475 @kbd{C-u 0 g cn-gb-2312 RET} will decode the message as if it were
5476 encoded in the @code{cn-gb-2312} charset.  If you have
5477
5478 @lisp
5479 (setq gnus-summary-show-article-charset-alist
5480       '((1 . cn-gb-2312)
5481         (2 . big5)))
5482 @end lisp
5483
5484 then you can say @kbd{C-u 1 g} to get the same effect.
5485
5486 @item A <
5487 @itemx <
5488 @kindex < (Summary)
5489 @kindex A < (Summary)
5490 @findex gnus-summary-beginning-of-article
5491 Scroll to the beginning of the article
5492 (@code{gnus-summary-beginning-of-article}).
5493
5494 @item A >
5495 @itemx >
5496 @kindex > (Summary)
5497 @kindex A > (Summary)
5498 @findex gnus-summary-end-of-article
5499 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
5500
5501 @item A s
5502 @itemx s
5503 @kindex A s (Summary)
5504 @kindex s (Summary)
5505 @findex gnus-summary-isearch-article
5506 Perform an isearch in the article buffer
5507 (@code{gnus-summary-isearch-article}).
5508
5509 @item h
5510 @kindex h (Summary)
5511 @findex gnus-summary-select-article-buffer
5512 Select the article buffer (@code{gnus-summary-select-article-buffer}).
5513
5514 @end table
5515
5516
5517 @node Reply Followup and Post
5518 @section Reply, Followup and Post
5519
5520 @menu
5521 * Summary Mail Commands::       Sending mail.
5522 * Summary Post Commands::       Sending news.
5523 * Summary Message Commands::    Other Message-related commands.
5524 * Canceling and Superseding::
5525 @end menu
5526
5527
5528 @node Summary Mail Commands
5529 @subsection Summary Mail Commands
5530 @cindex mail
5531 @cindex composing mail
5532
5533 Commands for composing a mail message:
5534
5535 @table @kbd
5536
5537 @item S r
5538 @itemx r
5539 @kindex S r (Summary)
5540 @kindex r (Summary)
5541 @findex gnus-summary-reply
5542 @c @icon{gnus-summary-mail-reply}
5543 @c @icon{gnus-summary-reply}
5544 Mail a reply to the author of the current article
5545 (@code{gnus-summary-reply}).
5546
5547 @item S R
5548 @itemx R
5549 @kindex R (Summary)
5550 @kindex S R (Summary)
5551 @findex gnus-summary-reply-with-original
5552 @c @icon{gnus-summary-reply-with-original}
5553 Mail a reply to the author of the current article and include the
5554 original message (@code{gnus-summary-reply-with-original}).  This
5555 command uses the process/prefix convention.
5556
5557 @item S w
5558 @kindex S w (Summary)
5559 @findex gnus-summary-wide-reply
5560 Mail a wide reply to the author of the current article
5561 (@code{gnus-summary-wide-reply}).  A @dfn{wide reply} is a reply that
5562 goes out to all people listed in the @code{To}, @code{From} (or
5563 @code{Reply-to}) and @code{Cc} headers.  If @code{Mail-Followup-To} is
5564 present, that's used instead.
5565
5566 @item S W
5567 @kindex S W (Summary)
5568 @findex gnus-summary-wide-reply-with-original
5569 Mail a wide reply to the current article and include the original
5570 message (@code{gnus-summary-wide-reply-with-original}).  This command uses
5571 the process/prefix convention, but only uses the headers from the
5572 first article to determine the recipients.
5573
5574 @item S L
5575 @kindex S L (Summary)
5576 @findex gnus-summary-reply-to-list-with-original
5577 When replying to a message from a mailing list, send a reply to that
5578 message to the mailing list, and include the original message
5579 (@code{gnus-summary-reply-to-list-with-original}).
5580
5581 @item S v
5582 @kindex S v (Summary)
5583 @findex gnus-summary-very-wide-reply
5584 Mail a very wide reply to the author of the current article
5585 (@code{gnus-summary-wide-reply}).  A @dfn{very wide reply} is a reply
5586 that goes out to all people listed in the @code{To}, @code{From} (or
5587 @code{Reply-to}) and @code{Cc} headers in all the process/prefixed
5588 articles.  This command uses the process/prefix convention.
5589
5590 @item S V
5591 @kindex S V (Summary)
5592 @findex gnus-summary-very-wide-reply-with-original
5593 Mail a very wide reply to the author of the current article and include the
5594 original message (@code{gnus-summary-very-wide-reply-with-original}).  This
5595 command uses the process/prefix convention.
5596
5597 @item S B r
5598 @kindex S B r (Summary)
5599 @findex gnus-summary-reply-broken-reply-to
5600 Mail a reply to the author of the current article but ignore the
5601 @code{Reply-To} field (@code{gnus-summary-reply-broken-reply-to}).
5602 If you need this because a mailing list incorrectly sets a
5603 @code{Reply-To} header pointing to the list, you probably want to set
5604 the @code{broken-reply-to} group parameter instead, so things will work
5605 correctly.  @xref{Group Parameters}.
5606
5607 @item S B R
5608 @kindex S B R (Summary)
5609 @findex gnus-summary-reply-broken-reply-to-with-original
5610 Mail a reply to the author of the current article and include the
5611 original message but ignore the @code{Reply-To} field
5612 (@code{gnus-summary-reply-broken-reply-to-with-original}).
5613
5614 @item S o m
5615 @itemx C-c C-f
5616 @kindex S o m (Summary)
5617 @kindex C-c C-f (Summary)
5618 @findex gnus-summary-mail-forward
5619 @c @icon{gnus-summary-mail-forward}
5620 Forward the current article to some other person
5621 (@code{gnus-summary-mail-forward}).  If no prefix is given, the message
5622 is forwarded according to the value of (@code{message-forward-as-mime})
5623 and (@code{message-forward-show-mml}); if the prefix is 1, decode the
5624 message and forward directly inline; if the prefix is 2, forward message
5625 as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5626 forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
5627 directly inline; otherwise, the message is forwarded as no prefix given
5628 but use the flipped value of (@code{message-forward-as-mime}).  By
5629 default, the message is decoded and forwarded as an rfc822 @acronym{MIME}
5630 section.
5631
5632 @item S m
5633 @itemx m
5634 @kindex m (Summary)
5635 @kindex S m (Summary)
5636 @findex gnus-summary-mail-other-window
5637 @c @icon{gnus-summary-mail-originate}
5638 Prepare a mail (@code{gnus-summary-mail-other-window}).  By default, use
5639 the posting style of the current group.  If given a prefix, disable that.
5640 If the prefix is 1, prompt for a group name to find the posting style.
5641
5642 @item S i
5643 @kindex S i (Summary)
5644 @findex gnus-summary-news-other-window
5645 Prepare a news (@code{gnus-summary-news-other-window}).  By default,
5646 post to the current group.  If given a prefix, disable that.  If the
5647 prefix is 1, prompt for a group to post to.
5648
5649 This function actually prepares a news even when using mail groups.
5650 This is useful for ``posting'' messages to mail groups without actually
5651 sending them over the network: they're just saved directly to the group
5652 in question.  The corresponding back end must have a request-post method
5653 for this to work though.
5654
5655 @item S D b
5656 @kindex S D b (Summary)
5657 @findex gnus-summary-resend-bounced-mail
5658 @cindex bouncing mail
5659 If you have sent a mail, but the mail was bounced back to you for some
5660 reason (wrong address, transient failure), you can use this command to
5661 resend that bounced mail (@code{gnus-summary-resend-bounced-mail}).  You
5662 will be popped into a mail buffer where you can edit the headers before
5663 sending the mail off again.  If you give a prefix to this command, and
5664 the bounced mail is a reply to some other mail, Gnus will try to fetch
5665 that mail and display it for easy perusal of its headers.  This might
5666 very well fail, though.
5667
5668 @item S D r
5669 @kindex S D r (Summary)
5670 @findex gnus-summary-resend-message
5671 Not to be confused with the previous command,
5672 @code{gnus-summary-resend-message} will prompt you for an address to
5673 send the current message off to, and then send it to that place.  The
5674 headers of the message won't be altered---but lots of headers that say
5675 @code{Resent-To}, @code{Resent-From} and so on will be added.  This
5676 means that you actually send a mail to someone that has a @code{To}
5677 header that (probably) points to yourself.  This will confuse people.
5678 So, natcherly you'll only do that if you're really eVIl.
5679
5680 This command is mainly used if you have several accounts and want to
5681 ship a mail to a different account of yours.  (If you're both
5682 @code{root} and @code{postmaster} and get a mail for @code{postmaster}
5683 to the @code{root} account, you may want to resend it to
5684 @code{postmaster}.  Ordnung muss sein!
5685
5686 This command understands the process/prefix convention
5687 (@pxref{Process/Prefix}).
5688
5689 @item S D e
5690 @kindex S D e (Summary)
5691 @findex gnus-summary-resend-message-edit
5692
5693 Like the previous command, but will allow you to edit the message as
5694 if it were a new message before resending.
5695
5696 @item S O m
5697 @kindex S O m (Summary)
5698 @findex gnus-uu-digest-mail-forward
5699 Digest the current series (@pxref{Decoding Articles}) and forward the
5700 result using mail (@code{gnus-uu-digest-mail-forward}).  This command
5701 uses the process/prefix convention (@pxref{Process/Prefix}).
5702
5703 @item S M-c
5704 @kindex S M-c (Summary)
5705 @findex gnus-summary-mail-crosspost-complaint
5706 @cindex crossposting
5707 @cindex excessive crossposting
5708 Send a complaint about excessive crossposting to the author of the
5709 current article (@code{gnus-summary-mail-crosspost-complaint}).
5710
5711 @findex gnus-crosspost-complaint
5712 This command is provided as a way to fight back against the current
5713 crossposting pandemic that's sweeping Usenet.  It will compose a reply
5714 using the @code{gnus-crosspost-complaint} variable as a preamble.  This
5715 command understands the process/prefix convention
5716 (@pxref{Process/Prefix}) and will prompt you before sending each mail.
5717
5718 @end table
5719
5720 Also @xref{Header Commands, ,Header Commands, message, The Message
5721 Manual}, for more information.
5722
5723
5724 @node Summary Post Commands
5725 @subsection Summary Post Commands
5726 @cindex post
5727 @cindex composing news
5728
5729 Commands for posting a news article:
5730
5731 @table @kbd
5732 @item S p
5733 @itemx a
5734 @kindex a (Summary)
5735 @kindex S p (Summary)
5736 @findex gnus-summary-post-news
5737 @c @icon{gnus-summary-post-news}
5738 Prepare for posting an article (@code{gnus-summary-post-news}).  By
5739 default, post to the current group.  If given a prefix, disable that.
5740 If the prefix is 1, prompt for another group instead.
5741
5742 @item S f
5743 @itemx f
5744 @kindex f (Summary)
5745 @kindex S f (Summary)
5746 @findex gnus-summary-followup
5747 @c @icon{gnus-summary-followup}
5748 Post a followup to the current article (@code{gnus-summary-followup}).
5749
5750 @item S F
5751 @itemx F
5752 @kindex S F (Summary)
5753 @kindex F (Summary)
5754 @c @icon{gnus-summary-followup-with-original}
5755 @findex gnus-summary-followup-with-original
5756 Post a followup to the current article and include the original message
5757 (@code{gnus-summary-followup-with-original}).  This command uses the
5758 process/prefix convention.
5759
5760 @item S n
5761 @kindex S n (Summary)
5762 @findex gnus-summary-followup-to-mail
5763 Post a followup to the current article via news, even if you got the
5764 message through mail (@code{gnus-summary-followup-to-mail}).
5765
5766 @item S N
5767 @kindex S N (Summary)
5768 @findex gnus-summary-followup-to-mail-with-original
5769 Post a followup to the current article via news, even if you got the
5770 message through mail and include the original message
5771 (@code{gnus-summary-followup-to-mail-with-original}).  This command uses
5772 the process/prefix convention.
5773
5774 @item S o p
5775 @kindex S o p (Summary)
5776 @findex gnus-summary-post-forward
5777 Forward the current article to a newsgroup
5778 (@code{gnus-summary-post-forward}).
5779  If no prefix is given, the message is forwarded according to the value
5780 of (@code{message-forward-as-mime}) and
5781 (@code{message-forward-show-mml}); if the prefix is 1, decode the
5782 message and forward directly inline; if the prefix is 2, forward message
5783 as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5784 forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
5785 directly inline; otherwise, the message is forwarded as no prefix given
5786 but use the flipped value of (@code{message-forward-as-mime}).  By
5787 default, the message is decoded and forwarded as an rfc822 @acronym{MIME} section.
5788
5789 @item S O p
5790 @kindex S O p (Summary)
5791 @findex gnus-uu-digest-post-forward
5792 @cindex digests
5793 @cindex making digests
5794 Digest the current series and forward the result to a newsgroup
5795 (@code{gnus-uu-digest-post-forward}).  This command uses the
5796 process/prefix convention.
5797
5798 @item S u
5799 @kindex S u (Summary)
5800 @findex gnus-uu-post-news
5801 @c @icon{gnus-uu-post-news}
5802 Uuencode a file, split it into parts, and post it as a series
5803 (@code{gnus-uu-post-news}).  (@pxref{Uuencoding and Posting}).
5804 @end table
5805
5806 Also @xref{Header Commands, ,Header Commands, message, The Message
5807 Manual}, for more information.
5808
5809
5810 @node Summary Message Commands
5811 @subsection Summary Message Commands
5812
5813 @table @kbd
5814 @item S y
5815 @kindex S y (Summary)
5816 @findex gnus-summary-yank-message
5817 Yank the current article into an already existing Message composition
5818 buffer (@code{gnus-summary-yank-message}).  This command prompts for
5819 what message buffer you want to yank into, and understands the
5820 process/prefix convention (@pxref{Process/Prefix}).
5821
5822 @end table
5823
5824
5825 @node Canceling and Superseding
5826 @subsection Canceling Articles
5827 @cindex canceling articles
5828 @cindex superseding articles
5829
5830 Have you ever written something, and then decided that you really,
5831 really, really wish you hadn't posted that?
5832
5833 Well, you can't cancel mail, but you can cancel posts.
5834
5835 @findex gnus-summary-cancel-article
5836 @kindex C (Summary)
5837 @c @icon{gnus-summary-cancel-article}
5838 Find the article you wish to cancel (you can only cancel your own
5839 articles, so don't try any funny stuff).  Then press @kbd{C} or @kbd{S
5840 c} (@code{gnus-summary-cancel-article}).  Your article will be
5841 canceled---machines all over the world will be deleting your article.
5842 This command uses the process/prefix convention (@pxref{Process/Prefix}).
5843
5844 Be aware, however, that not all sites honor cancels, so your article may
5845 live on here and there, while most sites will delete the article in
5846 question.
5847
5848 Gnus will use the ``current'' select method when canceling.  If you
5849 want to use the standard posting method, use the @samp{a} symbolic
5850 prefix (@pxref{Symbolic Prefixes}).
5851
5852 Gnus ensures that only you can cancel your own messages using a
5853 @code{Cancel-Lock} header (@pxref{Canceling News, Canceling News, ,
5854 message, Message Manual}).
5855
5856 If you discover that you have made some mistakes and want to do some
5857 corrections, you can post a @dfn{superseding} article that will replace
5858 your original article.
5859
5860 @findex gnus-summary-supersede-article
5861 @kindex S (Summary)
5862 Go to the original article and press @kbd{S s}
5863 (@code{gnus-summary-supersede-article}).  You will be put in a buffer
5864 where you can edit the article all you want before sending it off the
5865 usual way.
5866
5867 The same goes for superseding as for canceling, only more so: Some
5868 sites do not honor superseding.  On those sites, it will appear that you
5869 have posted almost the same article twice.
5870
5871 If you have just posted the article, and change your mind right away,
5872 there is a trick you can use to cancel/supersede the article without
5873 waiting for the article to appear on your site first.  You simply return
5874 to the post buffer (which is called @code{*sent ...*}).  There you will
5875 find the article you just posted, with all the headers intact.  Change
5876 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
5877 header by substituting one of those words for the word
5878 @code{Message-ID}.  Then just press @kbd{C-c C-c} to send the article as
5879 you would do normally.  The previous article will be
5880 canceled/superseded.
5881
5882 Just remember, kids: There is no 'c' in 'supersede'.
5883
5884 @node Delayed Articles
5885 @section Delayed Articles
5886 @cindex delayed sending
5887 @cindex send delayed
5888
5889 Sometimes, you might wish to delay the sending of a message.  For
5890 example, you might wish to arrange for a message to turn up just in time
5891 to remind your about the birthday of your Significant Other.  For this,
5892 there is the @code{gnus-delay} package.  Setup is simple:
5893
5894 @lisp
5895 (gnus-delay-initialize)
5896 @end lisp
5897
5898 @findex gnus-delay-article
5899 Normally, to send a message you use the @kbd{C-c C-c} command from
5900 Message mode.  To delay a message, use @kbd{C-c C-j}
5901 (@code{gnus-delay-article}) instead.  This will ask you for how long the
5902 message should be delayed.  Possible answers are:
5903
5904 @itemize @bullet
5905 @item
5906 A time span.  Consists of an integer and a letter.  For example,
5907 @code{42d} means to delay for 42 days.  Available letters are @code{m}
5908 (minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M}
5909 (months) and @code{Y} (years).
5910
5911 @item
5912 A specific date.  Looks like @code{YYYY-MM-DD}.  The message will be
5913 delayed until that day, at a specific time (eight o'clock by default).
5914 See also @code{gnus-delay-default-hour}.
5915
5916 @item
5917 A specific time of day.  Given in @code{hh:mm} format, 24h, no am/pm
5918 stuff.  The deadline will be at that time today, except if that time has
5919 already passed, then it's at the given time tomorrow.  So if it's ten
5920 o'clock in the morning and you specify @code{11:15}, then the deadline
5921 is one hour and fifteen minutes hence.  But if you specify @code{9:20},
5922 that means a time tomorrow.
5923 @end itemize
5924
5925 The action of the @code{gnus-delay-article} command is influenced by a
5926 couple of variables:
5927
5928 @table @code
5929 @item gnus-delay-default-hour
5930 @vindex gnus-delay-default-hour
5931 When you specify a specific date, the message will be due on that hour
5932 on the given date.  Possible values are integers 0 through 23.
5933
5934 @item gnus-delay-default-delay
5935 @vindex gnus-delay-default-delay
5936 This is a string and gives the default delay.  It can be of any of the
5937 formats described above.
5938
5939 @item gnus-delay-group
5940 @vindex gnus-delay-group
5941 Delayed articles will be kept in this group on the drafts server until
5942 they are due.  You probably don't need to change this.  The default
5943 value is @code{"delayed"}.
5944
5945 @item gnus-delay-header
5946 @vindex gnus-delay-header
5947 The deadline for each article will be stored in a header.  This variable
5948 is a string and gives the header name.  You probably don't need to
5949 change this.  The default value is @code{"X-Gnus-Delayed"}.
5950 @end table
5951
5952 The way delaying works is like this: when you use the
5953 @code{gnus-delay-article} command, you give a certain delay.  Gnus
5954 calculates the deadline of the message and stores it in the
5955 @code{X-Gnus-Delayed} header and puts the message in the
5956 @code{nndraft:delayed} group.
5957
5958 @findex gnus-delay-send-queue
5959 And whenever you get new news, Gnus looks through the group for articles
5960 which are due and sends them.  It uses the @code{gnus-delay-send-queue}
5961 function for this.  By default, this function is added to the hook
5962 @code{gnus-get-new-news-hook}.  But of course, you can change this.
5963 Maybe you want to use the demon to send drafts?  Just tell the demon to
5964 execute the @code{gnus-delay-send-queue} function.
5965
5966 @table @code
5967 @item gnus-delay-initialize
5968 @findex gnus-delay-initialize
5969 By default, this function installs @code{gnus-delay-send-queue} in
5970 @code{gnus-get-new-news-hook}.  But it accepts the optional second
5971 argument @code{no-check}.  If it is non-@code{nil},
5972 @code{gnus-get-new-news-hook} is not changed.  The optional first
5973 argument is ignored.
5974
5975 For example, @code{(gnus-delay-initialize nil t)} means to do nothing.
5976 Presumably, you want to use the demon for sending due delayed articles.
5977 Just don't forget to set that up :-)
5978 @end table
5979
5980 When delaying an article with @kbd{C-c C-j}, Message mode will
5981 automatically add a @code{"Date"} header with the current time.  In
5982 many cases you probably want the @code{"Date"} header to reflect the
5983 time the message is sent instead.  To do this, you have to delete
5984 @code{Date} from @code{message-draft-headers}.
5985
5986
5987 @node Marking Articles
5988 @section Marking Articles
5989 @cindex article marking
5990 @cindex article ticking
5991 @cindex marks
5992
5993 There are several marks you can set on an article.
5994
5995 You have marks that decide the @dfn{readedness} (whoo, neato-keano
5996 neologism ohoy!) of the article.  Alphabetic marks generally mean
5997 @dfn{read}, while non-alphabetic characters generally mean @dfn{unread}.
5998
5999 In addition, you also have marks that do not affect readedness.
6000
6001 @ifinfo
6002 There's a plethora of commands for manipulating these marks.
6003 @end ifinfo
6004
6005 @menu
6006 * Unread Articles::             Marks for unread articles.
6007 * Read Articles::               Marks for read articles.
6008 * Other Marks::                 Marks that do not affect readedness.
6009 * Setting Marks::               How to set and remove marks.
6010 * Generic Marking Commands::    How to customize the marking.
6011 * Setting Process Marks::       How to mark articles for later processing.
6012 @end menu
6013
6014
6015 @node Unread Articles
6016 @subsection Unread Articles
6017
6018 The following marks mark articles as (kinda) unread, in one form or
6019 other.
6020
6021 @table @samp
6022 @item !
6023 @vindex gnus-ticked-mark
6024 Marked as ticked (@code{gnus-ticked-mark}).
6025
6026 @dfn{Ticked articles} are articles that will remain visible always.  If
6027 you see an article that you find interesting, or you want to put off
6028 reading it, or replying to it, until sometime later, you'd typically
6029 tick it.  However, articles can be expired (from news servers by the
6030 news server software, Gnus itself never expires ticked messages), so if
6031 you want to keep an article forever, you'll have to make it persistent
6032 (@pxref{Persistent Articles}).
6033
6034 @item ?
6035 @vindex gnus-dormant-mark
6036 Marked as dormant (@code{gnus-dormant-mark}).
6037
6038 @dfn{Dormant articles} will only appear in the summary buffer if there
6039 are followups to it.  If you want to see them even if they don't have
6040 followups, you can use the @kbd{/ D} command (@pxref{Limiting}).
6041 Otherwise (except for the visibility issue), they are just like ticked
6042 messages.
6043
6044 @item SPACE
6045 @vindex gnus-unread-mark
6046 Marked as unread (@code{gnus-unread-mark}).
6047
6048 @dfn{Unread articles} are articles that haven't been read at all yet.
6049 @end table
6050
6051
6052 @node Read Articles
6053 @subsection Read Articles
6054 @cindex expirable mark
6055
6056 All the following marks mark articles as read.
6057
6058 @table @samp
6059
6060 @item r
6061 @vindex gnus-del-mark
6062 These are articles that the user has marked as read with the @kbd{d}
6063 command manually, more or less (@code{gnus-del-mark}).
6064
6065 @item R
6066 @vindex gnus-read-mark
6067 Articles that have actually been read (@code{gnus-read-mark}).
6068
6069 @item O
6070 @vindex gnus-ancient-mark
6071 Articles that were marked as read in previous sessions and are now
6072 @dfn{old} (@code{gnus-ancient-mark}).
6073
6074 @item K
6075 @vindex gnus-killed-mark
6076 Marked as killed (@code{gnus-killed-mark}).
6077
6078 @item X
6079 @vindex gnus-kill-file-mark
6080 Marked as killed by kill files (@code{gnus-kill-file-mark}).
6081
6082 @item Y
6083 @vindex gnus-low-score-mark
6084 Marked as read by having too low a score (@code{gnus-low-score-mark}).
6085
6086 @item C
6087 @vindex gnus-catchup-mark
6088 Marked as read by a catchup (@code{gnus-catchup-mark}).
6089
6090 @item G
6091 @vindex gnus-canceled-mark
6092 Canceled article (@code{gnus-canceled-mark})
6093
6094 @item Q
6095 @vindex gnus-sparse-mark
6096 Sparsely reffed article (@code{gnus-sparse-mark}).  @xref{Customizing
6097 Threading}.
6098
6099 @item M
6100 @vindex gnus-duplicate-mark
6101 Article marked as read by duplicate suppression
6102 (@code{gnus-duplicate-mark}).  @xref{Duplicate Suppression}.
6103
6104 @end table
6105
6106 All these marks just mean that the article is marked as read, really.
6107 They are interpreted differently when doing adaptive scoring, though.
6108
6109 One more special mark, though:
6110
6111 @table @samp
6112 @item E
6113 @vindex gnus-expirable-mark
6114 Marked as expirable (@code{gnus-expirable-mark}).
6115
6116 Marking articles as @dfn{expirable} (or have them marked as such
6117 automatically) doesn't make much sense in normal groups---a user doesn't
6118 control expiring of news articles, but in mail groups, for instance,
6119 articles marked as @dfn{expirable} can be deleted by Gnus at
6120 any time.
6121 @end table
6122
6123
6124 @node Other Marks
6125 @subsection Other Marks
6126 @cindex process mark
6127 @cindex bookmarks
6128
6129 There are some marks that have nothing to do with whether the article is
6130 read or not.
6131
6132 @itemize @bullet
6133
6134 @item
6135 You can set a bookmark in the current article.  Say you are reading a
6136 long thesis on cats' urinary tracts, and have to go home for dinner
6137 before you've finished reading the thesis.  You can then set a bookmark
6138 in the article, and Gnus will jump to this bookmark the next time it
6139 encounters the article.  @xref{Setting Marks}.
6140
6141 @item
6142 @vindex gnus-replied-mark
6143 All articles that you have replied to or made a followup to (i.e., have
6144 answered) will be marked with an @samp{A} in the second column
6145 (@code{gnus-replied-mark}).
6146
6147 @item
6148 @vindex gnus-forwarded-mark
6149 All articles that you have forwarded will be marked with an @samp{F} in
6150 the second column (@code{gnus-forwarded-mark}).
6151
6152 @item
6153 @vindex gnus-cached-mark
6154 Articles stored in the article cache will be marked with an @samp{*} in
6155 the second column (@code{gnus-cached-mark}).  @xref{Article Caching}.
6156
6157 @item
6158 @vindex gnus-saved-mark
6159 Articles ``saved'' (in some manner or other; not necessarily
6160 religiously) are marked with an @samp{S} in the second column
6161 (@code{gnus-saved-mark}).
6162
6163 @item
6164 @vindex gnus-recent-mark
6165 Articles that according to the server haven't been shown to the user
6166 before are marked with a @samp{N} in the second column
6167 (@code{gnus-recent-mark}).  Note that not all servers support this
6168 mark, in which case it simply never appears.  Compare with
6169 @code{gnus-unseen-mark}.
6170
6171 @item
6172 @vindex gnus-unseen-mark
6173 Articles that haven't been seen before in Gnus by the user are marked
6174 with a @samp{.} in the second column (@code{gnus-unseen-mark}).
6175 Compare with @code{gnus-recent-mark}.
6176
6177 @item
6178 @vindex gnus-downloaded-mark
6179 When using the Gnus agent (@pxref{Agent Basics}), articles may be
6180 downloaded for unplugged (offline) viewing.  If you are using the
6181 @samp{%O} spec, these articles get the @samp{+} mark in that spec.
6182 (The variable @code{gnus-downloaded-mark} controls which character to
6183 use.)
6184
6185 @item
6186 @vindex gnus-undownloaded-mark
6187 When using the Gnus agent (@pxref{Agent Basics}), some articles might
6188 not have been downloaded.  Such articles cannot be viewed while you
6189 are unplugged (offline).  If you are using the @samp{%O} spec, these
6190 articles get the @samp{-} mark in that spec.  (The variable
6191 @code{gnus-undownloaded-mark} controls which character to use.)
6192
6193 @item
6194 @vindex gnus-downloadable-mark
6195 The Gnus agent (@pxref{Agent Basics}) downloads some articles
6196 automatically, but it is also possible to explicitly mark articles for
6197 download, even if they would not be downloaded automatically.  Such
6198 explicitly-marked articles get the @samp{%} mark in the first column.
6199 (The variable @code{gnus-downloadable-mark} controls which character to
6200 use.)
6201
6202 @item
6203 @vindex gnus-not-empty-thread-mark
6204 @vindex gnus-empty-thread-mark
6205 If the @samp{%e} spec is used, the presence of threads or not will be
6206 marked with @code{gnus-not-empty-thread-mark} and
6207 @code{gnus-empty-thread-mark} in the third column, respectively.
6208
6209 @item
6210 @vindex gnus-process-mark
6211 Finally we have the @dfn{process mark} (@code{gnus-process-mark}).  A
6212 variety of commands react to the presence of the process mark.  For
6213 instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view
6214 all articles that have been marked with the process mark.  Articles
6215 marked with the process mark have a @samp{#} in the second column.
6216
6217 @end itemize
6218
6219 You might have noticed that most of these ``non-readedness'' marks
6220 appear in the second column by default.  So if you have a cached, saved,
6221 replied article that you have process-marked, what will that look like?
6222
6223 Nothing much.  The precedence rules go as follows: process -> cache ->
6224 replied -> saved.  So if the article is in the cache and is replied,
6225 you'll only see the cache mark and not the replied mark.
6226
6227
6228 @node Setting Marks
6229 @subsection Setting Marks
6230 @cindex setting marks
6231
6232 All the marking commands understand the numeric prefix.
6233
6234 @table @kbd
6235 @item M c
6236 @itemx M-u
6237 @kindex M c (Summary)
6238 @kindex M-u (Summary)
6239 @findex gnus-summary-clear-mark-forward
6240 @cindex mark as unread
6241 Clear all readedness-marks from the current article
6242 (@code{gnus-summary-clear-mark-forward}).  In other words, mark the
6243 article as unread.
6244
6245 @item M t
6246 @itemx !
6247 @kindex ! (Summary)
6248 @kindex M t (Summary)
6249 @findex gnus-summary-tick-article-forward
6250 Tick the current article (@code{gnus-summary-tick-article-forward}).
6251 @xref{Article Caching}.
6252
6253 @item M ?
6254 @itemx ?
6255 @kindex ? (Summary)
6256 @kindex M ? (Summary)
6257 @findex gnus-summary-mark-as-dormant
6258 Mark the current article as dormant
6259 (@code{gnus-summary-mark-as-dormant}).  @xref{Article Caching}.
6260
6261 @item M d
6262 @itemx d
6263 @kindex M d (Summary)
6264 @kindex d (Summary)
6265 @findex gnus-summary-mark-as-read-forward
6266 Mark the current article as read
6267 (@code{gnus-summary-mark-as-read-forward}).
6268
6269 @item D
6270 @kindex D (Summary)
6271 @findex gnus-summary-mark-as-read-backward
6272 Mark the current article as read and move point to the previous line
6273 (@code{gnus-summary-mark-as-read-backward}).
6274
6275 @item M k
6276 @itemx k
6277 @kindex k (Summary)
6278 @kindex M k (Summary)
6279 @findex gnus-summary-kill-same-subject-and-select
6280 Mark all articles that have the same subject as the current one as read,
6281 and then select the next unread article
6282 (@code{gnus-summary-kill-same-subject-and-select}).
6283
6284 @item M K
6285 @itemx C-k
6286 @kindex M K (Summary)
6287 @kindex C-k (Summary)
6288 @findex gnus-summary-kill-same-subject
6289 Mark all articles that have the same subject as the current one as read
6290 (@code{gnus-summary-kill-same-subject}).
6291
6292 @item M C
6293 @kindex M C (Summary)
6294 @findex gnus-summary-catchup
6295 @c @icon{gnus-summary-catchup}
6296 Mark all unread articles as read (@code{gnus-summary-catchup}).
6297
6298 @item M C-c
6299 @kindex M C-c (Summary)
6300 @findex gnus-summary-catchup-all
6301 Mark all articles in the group as read---even the ticked and dormant
6302 articles (@code{gnus-summary-catchup-all}).
6303
6304 @item M H
6305 @kindex M H (Summary)
6306 @findex gnus-summary-catchup-to-here
6307 Catchup the current group to point (before the point)
6308 (@code{gnus-summary-catchup-to-here}).
6309
6310 @item M h
6311 @kindex M h (Summary)
6312 @findex gnus-summary-catchup-from-here
6313 Catchup the current group from point (after the point)
6314 (@code{gnus-summary-catchup-from-here}).
6315
6316 @item C-w
6317 @kindex C-w (Summary)
6318 @findex gnus-summary-mark-region-as-read
6319 Mark all articles between point and mark as read
6320 (@code{gnus-summary-mark-region-as-read}).
6321
6322 @item M V k
6323 @kindex M V k (Summary)
6324 @findex gnus-summary-kill-below
6325 Kill all articles with scores below the default score (or below the
6326 numeric prefix) (@code{gnus-summary-kill-below}).
6327
6328 @item M e
6329 @itemx E
6330 @kindex M e (Summary)
6331 @kindex E (Summary)
6332 @findex gnus-summary-mark-as-expirable
6333 Mark the current article as expirable
6334 (@code{gnus-summary-mark-as-expirable}).
6335
6336 @item M b
6337 @kindex M b (Summary)
6338 @findex gnus-summary-set-bookmark
6339 Set a bookmark in the current article
6340 (@code{gnus-summary-set-bookmark}).
6341
6342 @item M B
6343 @kindex M B (Summary)
6344 @findex gnus-summary-remove-bookmark
6345 Remove the bookmark from the current article
6346 (@code{gnus-summary-remove-bookmark}).
6347
6348 @item M V c
6349 @kindex M V c (Summary)
6350 @findex gnus-summary-clear-above
6351 Clear all marks from articles with scores over the default score (or
6352 over the numeric prefix) (@code{gnus-summary-clear-above}).
6353
6354 @item M V u
6355 @kindex M V u (Summary)
6356 @findex gnus-summary-tick-above
6357 Tick all articles with scores over the default score (or over the
6358 numeric prefix) (@code{gnus-summary-tick-above}).
6359
6360 @item M V m
6361 @kindex M V m (Summary)
6362 @findex gnus-summary-mark-above
6363 Prompt for a mark, and mark all articles with scores over the default
6364 score (or over the numeric prefix) with this mark
6365 (@code{gnus-summary-clear-above}).
6366 @end table
6367
6368 @vindex gnus-summary-goto-unread
6369 The @code{gnus-summary-goto-unread} variable controls what action should
6370 be taken after setting a mark.  If non-@code{nil}, point will move to
6371 the next/previous unread article.  If @code{nil}, point will just move
6372 one line up or down.  As a special case, if this variable is
6373 @code{never}, all the marking commands as well as other commands (like
6374 @kbd{SPACE}) will move to the next article, whether it is unread or not.
6375 The default is @code{t}.
6376
6377
6378 @node Generic Marking Commands
6379 @subsection Generic Marking Commands
6380
6381 Some people would like the command that ticks an article (@kbd{!}) go to
6382 the next article.  Others would like it to go to the next unread
6383 article.  Yet others would like it to stay on the current article.  And
6384 even though I haven't heard of anybody wanting it to go to the
6385 previous (unread) article, I'm sure there are people that want that as
6386 well.
6387
6388 Multiply these five behaviors with five different marking commands, and
6389 you get a potentially complex set of variable to control what each
6390 command should do.
6391
6392 To sidestep that mess, Gnus provides commands that do all these
6393 different things.  They can be found on the @kbd{M M} map in the summary
6394 buffer.  Type @kbd{M M C-h} to see them all---there are too many of them
6395 to list in this manual.
6396
6397 While you can use these commands directly, most users would prefer
6398 altering the summary mode keymap.  For instance, if you would like the
6399 @kbd{!} command to go to the next article instead of the next unread
6400 article, you could say something like:
6401
6402 @lisp
6403 @group
6404 (add-hook 'gnus-summary-mode-hook 'my-alter-summary-map)
6405 (defun my-alter-summary-map ()
6406   (local-set-key "!" 'gnus-summary-put-mark-as-ticked-next))
6407 @end group
6408 @end lisp
6409
6410 @noindent
6411 or
6412
6413 @lisp
6414 (defun my-alter-summary-map ()
6415   (local-set-key "!" "MM!n"))
6416 @end lisp
6417
6418
6419 @node Setting Process Marks
6420 @subsection Setting Process Marks
6421 @cindex setting process marks
6422
6423 Process marks are displayed as @code{#} in the summary buffer, and are
6424 used for marking articles in such a way that other commands will
6425 process these articles.  For instance, if you process mark four
6426 articles and then use the @kbd{*} command, Gnus will enter these four
6427 articles into the cache.  For more information,
6428 @pxref{Process/Prefix}.
6429
6430 @table @kbd
6431
6432 @item M P p
6433 @itemx #
6434 @kindex # (Summary)
6435 @kindex M P p (Summary)
6436 @findex gnus-summary-mark-as-processable
6437 Mark the current article with the process mark
6438 (@code{gnus-summary-mark-as-processable}).
6439 @findex gnus-summary-unmark-as-processable
6440
6441 @item M P u
6442 @itemx M-#
6443 @kindex M P u (Summary)
6444 @kindex M-# (Summary)
6445 Remove the process mark, if any, from the current article
6446 (@code{gnus-summary-unmark-as-processable}).
6447
6448 @item M P U
6449 @kindex M P U (Summary)
6450 @findex gnus-summary-unmark-all-processable
6451 Remove the process mark from all articles
6452 (@code{gnus-summary-unmark-all-processable}).
6453
6454 @item M P i
6455 @kindex M P i (Summary)
6456 @findex gnus-uu-invert-processable
6457 Invert the list of process marked articles
6458 (@code{gnus-uu-invert-processable}).
6459
6460 @item M P R
6461 @kindex M P R (Summary)
6462 @findex gnus-uu-mark-by-regexp
6463 Mark articles that have a @code{Subject} header that matches a regular
6464 expression (@code{gnus-uu-mark-by-regexp}).
6465
6466 @item M P G
6467 @kindex M P G (Summary)
6468 @findex gnus-uu-unmark-by-regexp
6469 Unmark articles that have a @code{Subject} header that matches a regular
6470 expression (@code{gnus-uu-unmark-by-regexp}).
6471
6472 @item M P r
6473 @kindex M P r (Summary)
6474 @findex gnus-uu-mark-region
6475 Mark articles in region (@code{gnus-uu-mark-region}).
6476
6477 @item M P g
6478 @kindex M P g (Summary)
6479 @findex gnus-uu-unmark-region
6480 Unmark articles in region (@code{gnus-uu-unmark-region}).
6481
6482 @item M P t
6483 @kindex M P t (Summary)
6484 @findex gnus-uu-mark-thread
6485 Mark all articles in the current (sub)thread
6486 (@code{gnus-uu-mark-thread}).
6487
6488 @item M P T
6489 @kindex M P T (Summary)
6490 @findex gnus-uu-unmark-thread
6491 Unmark all articles in the current (sub)thread
6492 (@code{gnus-uu-unmark-thread}).
6493
6494 @item M P v
6495 @kindex M P v (Summary)
6496 @findex gnus-uu-mark-over
6497 Mark all articles that have a score above the prefix argument
6498 (@code{gnus-uu-mark-over}).
6499
6500 @item M P s
6501 @kindex M P s (Summary)
6502 @findex gnus-uu-mark-series
6503 Mark all articles in the current series (@code{gnus-uu-mark-series}).
6504
6505 @item M P S
6506 @kindex M P S (Summary)
6507 @findex gnus-uu-mark-sparse
6508 Mark all series that have already had some articles marked
6509 (@code{gnus-uu-mark-sparse}).
6510
6511 @item M P a
6512 @kindex M P a (Summary)
6513 @findex gnus-uu-mark-all
6514 Mark all articles in series order (@code{gnus-uu-mark-all}).
6515
6516 @item M P b
6517 @kindex M P b (Summary)
6518 @findex gnus-uu-mark-buffer
6519 Mark all articles in the buffer in the order they appear
6520 (@code{gnus-uu-mark-buffer}).
6521
6522 @item M P k
6523 @kindex M P k (Summary)
6524 @findex gnus-summary-kill-process-mark
6525 Push the current process mark set onto the stack and unmark all articles
6526 (@code{gnus-summary-kill-process-mark}).
6527
6528 @item M P y
6529 @kindex M P y (Summary)
6530 @findex gnus-summary-yank-process-mark
6531 Pop the previous process mark set from the stack and restore it
6532 (@code{gnus-summary-yank-process-mark}).
6533
6534 @item M P w
6535 @kindex M P w (Summary)
6536 @findex gnus-summary-save-process-mark
6537 Push the current process mark set onto the stack
6538 (@code{gnus-summary-save-process-mark}).
6539
6540 @end table
6541
6542 Also see the @kbd{&} command in @ref{Searching for Articles}, for how to
6543 set process marks based on article body contents.
6544
6545
6546 @node Limiting
6547 @section Limiting
6548 @cindex limiting
6549
6550 It can be convenient to limit the summary buffer to just show some
6551 subset of the articles currently in the group.  The effect most limit
6552 commands have is to remove a few (or many) articles from the summary
6553 buffer.
6554
6555 Limiting commands work on subsets of the articles already fetched from
6556 the servers.  These commands don't query the server for additional
6557 articles.
6558
6559 @table @kbd
6560
6561 @item / /
6562 @itemx / s
6563 @kindex / / (Summary)
6564 @findex gnus-summary-limit-to-subject
6565 Limit the summary buffer to articles that match some subject
6566 (@code{gnus-summary-limit-to-subject}).  If given a prefix, exclude
6567 matching articles.
6568
6569 @item / a
6570 @kindex / a (Summary)
6571 @findex gnus-summary-limit-to-author
6572 Limit the summary buffer to articles that match some author
6573 (@code{gnus-summary-limit-to-author}).  If given a prefix, exclude
6574 matching articles.
6575
6576 @item / R
6577 @kindex / R (Summary)
6578 @findex gnus-summary-limit-to-recipient
6579 Limit the summary buffer to articles that match some recipient
6580 (@code{gnus-summary-limit-to-recipient}).  If given a prefix, exclude
6581 matching articles.
6582
6583 @item / A
6584 @kindex / A (Summary)
6585 @findex gnus-summary-limit-to-address
6586 Limit the summary buffer to articles in which contents of From, To or Cc
6587 header match a given address (@code{gnus-summary-limit-to-address}).  If
6588 given a prefix, exclude matching articles.
6589
6590 @item / S
6591 @kindex / S (Summary)
6592 @findex gnus-summary-limit-to-singletons
6593 Limit the summary buffer to articles that aren't part of any displayed
6594 threads (@code{gnus-summary-limit-to-singletons}).  If given a prefix,
6595 limit to articles that are part of displayed threads.
6596
6597 @item / x
6598 @kindex / x (Summary)
6599 @findex gnus-summary-limit-to-extra
6600 Limit the summary buffer to articles that match one of the ``extra''
6601 headers (@pxref{To From Newsgroups})
6602 (@code{gnus-summary-limit-to-extra}).  If given a prefix, exclude
6603 matching articles.
6604
6605 @item / u
6606 @itemx x
6607 @kindex / u (Summary)
6608 @kindex x (Summary)
6609 @findex gnus-summary-limit-to-unread
6610 Limit the summary buffer to articles not marked as read
6611 (@code{gnus-summary-limit-to-unread}).  If given a prefix, limit the
6612 buffer to articles strictly unread.  This means that ticked and
6613 dormant articles will also be excluded.
6614
6615 @item / m
6616 @kindex / m (Summary)
6617 @findex gnus-summary-limit-to-marks
6618 Ask for a mark and then limit to all articles that have been marked
6619 with that mark (@code{gnus-summary-limit-to-marks}).
6620
6621 @item / t
6622 @kindex / t (Summary)
6623 @findex gnus-summary-limit-to-age
6624 Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days
6625 (@code{gnus-summary-limit-to-age}).  If given a prefix, limit to
6626 articles younger than that number of days.
6627
6628 @item / n
6629 @kindex / n (Summary)
6630 @findex gnus-summary-limit-to-articles
6631 With prefix @samp{n}, limit the summary buffer to the next @samp{n}
6632 articles.  If not given a prefix, use the process marked articles
6633 instead.  (@code{gnus-summary-limit-to-articles}).
6634
6635 @item / w
6636 @kindex / w (Summary)
6637 @findex gnus-summary-pop-limit
6638 Pop the previous limit off the stack and restore it
6639 (@code{gnus-summary-pop-limit}).  If given a prefix, pop all limits off
6640 the stack.
6641
6642 @item / .
6643 @kindex / . (Summary)
6644 @findex gnus-summary-limit-to-unseen
6645 Limit the summary buffer to the unseen articles
6646 (@code{gnus-summary-limit-to-unseen}).
6647
6648 @item / v
6649 @kindex / v (Summary)
6650 @findex gnus-summary-limit-to-score
6651 Limit the summary buffer to articles that have a score at or above some
6652 score (@code{gnus-summary-limit-to-score}).
6653
6654 @item / p
6655 @kindex / p (Summary)
6656 @findex gnus-summary-limit-to-display-predicate
6657 Limit the summary buffer to articles that satisfy the @code{display}
6658 group parameter predicate
6659 (@code{gnus-summary-limit-to-display-predicate}).  @xref{Group
6660 Parameters}, for more on this predicate.
6661
6662 @item / r
6663 @kindex / r (Summary)
6664 @findex gnus-summary-limit-to-replied
6665 Limit the summary buffer to replied articles
6666 (@code{gnus-summary-limit-to-replied}).  If given a prefix, exclude
6667 replied articles.
6668
6669 @item / E
6670 @itemx M S
6671 @kindex M S (Summary)
6672 @kindex / E (Summary)
6673 @findex gnus-summary-limit-include-expunged
6674 Include all expunged articles in the limit
6675 (@code{gnus-summary-limit-include-expunged}).
6676
6677 @item / D
6678 @kindex / D (Summary)
6679 @findex gnus-summary-limit-include-dormant
6680 Include all dormant articles in the limit
6681 (@code{gnus-summary-limit-include-dormant}).
6682
6683 @item / *
6684 @kindex / * (Summary)
6685 @findex gnus-summary-limit-include-cached
6686 Include all cached articles in the limit
6687 (@code{gnus-summary-limit-include-cached}).
6688
6689 @item / d
6690 @kindex / d (Summary)
6691 @findex gnus-summary-limit-exclude-dormant
6692 Exclude all dormant articles from the limit
6693 (@code{gnus-summary-limit-exclude-dormant}).
6694
6695 @item / M
6696 @kindex / M (Summary)
6697 @findex gnus-summary-limit-exclude-marks
6698 Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}).
6699
6700 @item / T
6701 @kindex / T (Summary)
6702 @findex gnus-summary-limit-include-thread
6703 Include all the articles in the current thread in the limit.
6704
6705 @item / c
6706 @kindex / c (Summary)
6707 @findex gnus-summary-limit-exclude-childless-dormant
6708 Exclude all dormant articles that have no children from the limit@*
6709 (@code{gnus-summary-limit-exclude-childless-dormant}).
6710
6711 @item / C
6712 @kindex / C (Summary)
6713 @findex gnus-summary-limit-mark-excluded-as-read
6714 Mark all excluded unread articles as read
6715 (@code{gnus-summary-limit-mark-excluded-as-read}).  If given a prefix,
6716 also mark excluded ticked and dormant articles as read.
6717
6718 @item / b
6719 @kindex / b (Summary)
6720 @findex gnus-summary-limit-to-bodies
6721 Limit the summary buffer to articles that have bodies that match a
6722 certain regexp (@code{gnus-summary-limit-to-bodies}).  If given a
6723 prefix, reverse the limit.  This command is quite slow since it
6724 requires selecting each article to find the matches.
6725
6726 @item / h
6727 @kindex / h (Summary)
6728 @findex gnus-summary-limit-to-headers
6729 Like the previous command, only limit to headers instead
6730 (@code{gnus-summary-limit-to-headers}).
6731
6732 @end table
6733
6734
6735 The following commands aren't limiting commands, but use the @kbd{/}
6736 prefix as well.
6737
6738 @table @kbd
6739 @item / N
6740 @kindex / N (Summary)
6741 @findex gnus-summary-insert-new-articles
6742 Insert all new articles in the summary buffer.  It scans for new emails
6743 if @var{back-end}@code{-get-new-mail} is non-@code{nil}.
6744
6745 @item / o
6746 @kindex / o (Summary)
6747 @findex gnus-summary-insert-old-articles
6748 Insert all old articles in the summary buffer.  If given a numbered
6749 prefix, fetch this number of articles.
6750
6751 @end table
6752
6753
6754 @node Threading
6755 @section Threading
6756 @cindex threading
6757 @cindex article threading
6758
6759 Gnus threads articles by default.  @dfn{To thread} is to put responses
6760 to articles directly after the articles they respond to---in a
6761 hierarchical fashion.
6762
6763 Threading is done by looking at the @code{References} headers of the
6764 articles.  In a perfect world, this would be enough to build pretty
6765 trees, but unfortunately, the @code{References} header is often broken
6766 or simply missing.  Weird news propagation exacerbates the problem,
6767 so one has to employ other heuristics to get pleasing results.  A
6768 plethora of approaches exists, as detailed in horrible detail in
6769 @ref{Customizing Threading}.
6770
6771 First, a quick overview of the concepts:
6772
6773 @table @dfn
6774 @item root
6775 The top-most article in a thread; the first article in the thread.
6776
6777 @item thread
6778 A tree-like article structure.
6779
6780 @item sub-thread
6781 A small(er) section of this tree-like structure.
6782
6783 @item loose threads
6784 Threads often lose their roots due to article expiry, or due to the root
6785 already having been read in a previous session, and not displayed in the
6786 summary buffer.  We then typically have many sub-threads that really
6787 belong to one thread, but are without connecting roots.  These are
6788 called loose threads.
6789
6790 @item thread gathering
6791 An attempt to gather loose threads into bigger threads.
6792
6793 @item sparse threads
6794 A thread where the missing articles have been ``guessed'' at, and are
6795 displayed as empty lines in the summary buffer.
6796
6797 @end table
6798
6799
6800 @menu
6801 * Customizing Threading::       Variables you can change to affect the threading.
6802 * Thread Commands::             Thread based commands in the summary buffer.
6803 @end menu
6804
6805
6806 @node Customizing Threading
6807 @subsection Customizing Threading
6808 @cindex customizing threading
6809
6810 @menu
6811 * Loose Threads::               How Gnus gathers loose threads into bigger threads.
6812 * Filling In Threads::          Making the threads displayed look fuller.
6813 * More Threading::              Even more variables for fiddling with threads.
6814 * Low-Level Threading::         You thought it was over@dots{} but you were wrong!
6815 @end menu
6816
6817
6818 @node Loose Threads
6819 @subsubsection Loose Threads
6820 @cindex <
6821 @cindex >
6822 @cindex loose threads
6823
6824 @table @code
6825 @item gnus-summary-make-false-root
6826 @vindex gnus-summary-make-false-root
6827 If non-@code{nil}, Gnus will gather all loose subtrees into one big tree
6828 and create a dummy root at the top.  (Wait a minute.  Root at the top?
6829 Yup.)  Loose subtrees occur when the real root has expired, or you've
6830 read or killed the root in a previous session.
6831
6832 When there is no real root of a thread, Gnus will have to fudge
6833 something.  This variable says what fudging method Gnus should use.
6834 There are four possible values:
6835
6836 @iftex
6837 @iflatex
6838 \gnusfigure{The Summary Buffer}{390}{
6839 \put(0,0){\epsfig{figure=ps/summary-adopt,width=7.5cm}}
6840 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-empty,width=7.5cm}}}
6841 \put(0,400){\makebox(0,0)[tl]{\epsfig{figure=ps/summary-none,width=7.5cm}}}
6842 \put(445,400){\makebox(0,0)[tr]{\epsfig{figure=ps/summary-dummy,width=7.5cm}}}
6843 }
6844 @end iflatex
6845 @end iftex
6846
6847 @cindex adopting articles
6848
6849 @table @code
6850
6851 @item adopt
6852 Gnus will make the first of the orphaned articles the parent.  This
6853 parent will adopt all the other articles.  The adopted articles will be
6854 marked as such by pointy brackets (@samp{<>}) instead of the standard
6855 square brackets (@samp{[]}).  This is the default method.
6856
6857 @item dummy
6858 @vindex gnus-summary-dummy-line-format
6859 @vindex gnus-summary-make-false-root-always
6860 Gnus will create a dummy summary line that will pretend to be the
6861 parent.  This dummy line does not correspond to any real article, so
6862 selecting it will just select the first real article after the dummy
6863 article.  @code{gnus-summary-dummy-line-format} is used to specify the
6864 format of the dummy roots.  It accepts only one format spec:  @samp{S},
6865 which is the subject of the article.  @xref{Formatting Variables}.
6866 If you want all threads to have a dummy root, even the non-gathered
6867 ones, set @code{gnus-summary-make-false-root-always} to @code{t}.
6868
6869 @item empty
6870 Gnus won't actually make any article the parent, but simply leave the
6871 subject field of all orphans except the first empty.  (Actually, it will
6872 use @code{gnus-summary-same-subject} as the subject (@pxref{Summary
6873 Buffer Format}).)
6874
6875 @item none
6876 Don't make any article parent at all.  Just gather the threads and
6877 display them after one another.
6878
6879 @item nil
6880 Don't gather loose threads.
6881 @end table
6882
6883 @item gnus-summary-gather-subject-limit
6884 @vindex gnus-summary-gather-subject-limit
6885 Loose threads are gathered by comparing subjects of articles.  If this
6886 variable is @code{nil}, Gnus requires an exact match between the
6887 subjects of the loose threads before gathering them into one big
6888 super-thread.  This might be too strict a requirement, what with the
6889 presence of stupid newsreaders that chop off long subject lines.  If
6890 you think so, set this variable to, say, 20 to require that only the
6891 first 20 characters of the subjects have to match.  If you set this
6892 variable to a really low number, you'll find that Gnus will gather
6893 everything in sight into one thread, which isn't very helpful.
6894
6895 @cindex fuzzy article gathering
6896 If you set this variable to the special value @code{fuzzy}, Gnus will
6897 use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
6898 Matching}).
6899
6900 @item gnus-simplify-subject-fuzzy-regexp
6901 @vindex gnus-simplify-subject-fuzzy-regexp
6902 This can either be a regular expression or list of regular expressions
6903 that match strings that will be removed from subjects if fuzzy subject
6904 simplification is used.
6905
6906 @item gnus-simplify-ignored-prefixes
6907 @vindex gnus-simplify-ignored-prefixes
6908 If you set @code{gnus-summary-gather-subject-limit} to something as low
6909 as 10, you might consider setting this variable to something sensible:
6910
6911 @c Written by Michael Ernst <mernst@cs.rice.edu>
6912 @lisp
6913 (setq gnus-simplify-ignored-prefixes
6914       (concat
6915        "\\`\\[?\\("
6916        (mapconcat
6917         'identity
6918         '("looking"
6919           "wanted" "followup" "summary\\( of\\)?"
6920           "help" "query" "problem" "question"
6921           "answer" "reference" "announce"
6922           "How can I" "How to" "Comparison of"
6923           ;; ...
6924           )
6925         "\\|")
6926        "\\)\\s *\\("
6927        (mapconcat 'identity
6928                   '("for" "for reference" "with" "about")
6929                   "\\|")
6930        "\\)?\\]?:?[ \t]*"))
6931 @end lisp
6932
6933 All words that match this regexp will be removed before comparing two
6934 subjects.
6935
6936 @item gnus-simplify-subject-functions
6937 @vindex gnus-simplify-subject-functions
6938 If non-@code{nil}, this variable overrides
6939 @code{gnus-summary-gather-subject-limit}.  This variable should be a
6940 list of functions to apply to the @code{Subject} string iteratively to
6941 arrive at the simplified version of the string.
6942
6943 Useful functions to put in this list include:
6944
6945 @table @code
6946 @item gnus-simplify-subject-re
6947 @findex gnus-simplify-subject-re
6948 Strip the leading @samp{Re:}.
6949
6950 @item gnus-simplify-subject-fuzzy
6951 @findex gnus-simplify-subject-fuzzy
6952 Simplify fuzzily.
6953
6954 @item gnus-simplify-whitespace
6955 @findex gnus-simplify-whitespace
6956 Remove excessive whitespace.
6957
6958 @item gnus-simplify-all-whitespace
6959 @findex gnus-simplify-all-whitespace
6960 Remove all whitespace.
6961 @end table
6962
6963 You may also write your own functions, of course.
6964
6965
6966 @item gnus-summary-gather-exclude-subject
6967 @vindex gnus-summary-gather-exclude-subject
6968 Since loose thread gathering is done on subjects only, that might lead
6969 to many false hits, especially with certain common subjects like
6970 @samp{} and @samp{(none)}.  To make the situation slightly better,
6971 you can use the regexp @code{gnus-summary-gather-exclude-subject} to say
6972 what subjects should be excluded from the gathering process.@*
6973 The default is @samp{^ *$\\|^(none)$}.
6974
6975 @item gnus-summary-thread-gathering-function
6976 @vindex gnus-summary-thread-gathering-function
6977 Gnus gathers threads by looking at @code{Subject} headers.  This means
6978 that totally unrelated articles may end up in the same ``thread'', which
6979 is confusing.  An alternate approach is to look at all the
6980 @code{Message-ID}s in all the @code{References} headers to find matches.
6981 This will ensure that no gathered threads ever include unrelated
6982 articles, but it also means that people who have posted with broken
6983 newsreaders won't be gathered properly.  The choice is yours---plague or
6984 cholera:
6985
6986 @table @code
6987 @item gnus-gather-threads-by-subject
6988 @findex gnus-gather-threads-by-subject
6989 This function is the default gathering function and looks at
6990 @code{Subject}s exclusively.
6991
6992 @item gnus-gather-threads-by-references
6993 @findex gnus-gather-threads-by-references
6994 This function looks at @code{References} headers exclusively.
6995 @end table
6996
6997 If you want to test gathering by @code{References}, you could say
6998 something like:
6999
7000 @lisp
7001 (setq gnus-summary-thread-gathering-function
7002       'gnus-gather-threads-by-references)
7003 @end lisp
7004
7005 @end table
7006
7007
7008 @node Filling In Threads
7009 @subsubsection Filling In Threads
7010
7011 @table @code
7012 @item gnus-fetch-old-headers
7013 @vindex gnus-fetch-old-headers
7014 If non-@code{nil}, Gnus will attempt to build old threads by fetching
7015 more old headers---headers to articles marked as read.  If you would
7016 like to display as few summary lines as possible, but still connect as
7017 many loose threads as possible, you should set this variable to
7018 @code{some} or a number.  If you set it to a number, no more than that
7019 number of extra old headers will be fetched.  In either case, fetching
7020 old headers only works if the back end you are using carries overview
7021 files---this would normally be @code{nntp}, @code{nnspool},
7022 @code{nnml}, and @code{nnmaildir}.  Also remember that if the root of
7023 the thread has been expired by the server, there's not much Gnus can
7024 do about that.
7025
7026 This variable can also be set to @code{invisible}.  This won't have any
7027 visible effects, but is useful if you use the @kbd{A T} command a lot
7028 (@pxref{Finding the Parent}).
7029
7030 The server has to support @acronym{NOV} for any of this to work.
7031
7032 @cindex Gmane, gnus-fetch-old-headers
7033 This feature can seriously impact performance it ignores all locally
7034 cached header entries.  Setting it to @code{t} for groups for a server
7035 that doesn't expire articles (such as news.gmane.org), leads to very
7036 slow summary generation.
7037
7038 @item gnus-fetch-old-ephemeral-headers
7039 @vindex gnus-fetch-old-ephemeral-headers
7040 Same as @code{gnus-fetch-old-headers}, but only used for ephemeral
7041 newsgroups.
7042
7043 @item gnus-build-sparse-threads
7044 @vindex gnus-build-sparse-threads
7045 Fetching old headers can be slow.  A low-rent similar effect can be
7046 gotten by setting this variable to @code{some}.  Gnus will then look at
7047 the complete @code{References} headers of all articles and try to string
7048 together articles that belong in the same thread.  This will leave
7049 @dfn{gaps} in the threading display where Gnus guesses that an article
7050 is missing from the thread.  (These gaps appear like normal summary
7051 lines.  If you select a gap, Gnus will try to fetch the article in
7052 question.)  If this variable is @code{t}, Gnus will display all these
7053 ``gaps'' without regard for whether they are useful for completing the
7054 thread or not.  Finally, if this variable is @code{more}, Gnus won't cut
7055 off sparse leaf nodes that don't lead anywhere.  This variable is
7056 @code{nil} by default.
7057
7058 @item gnus-read-all-available-headers
7059 @vindex gnus-read-all-available-headers
7060 This is a rather obscure variable that few will find useful.  It's
7061 intended for those non-news newsgroups where the back end has to fetch
7062 quite a lot to present the summary buffer, and where it's impossible to
7063 go back to parents of articles.  This is mostly the case in the
7064 web-based groups.
7065
7066 If you don't use those, then it's safe to leave this as the default
7067 @code{nil}.  If you want to use this variable, it should be a regexp
7068 that matches the group name, or @code{t} for all groups.
7069
7070 @end table
7071
7072
7073 @node More Threading
7074 @subsubsection More Threading
7075
7076 @table @code
7077 @item gnus-show-threads
7078 @vindex gnus-show-threads
7079 If this variable is @code{nil}, no threading will be done, and all of
7080 the rest of the variables here will have no effect.  Turning threading
7081 off will speed group selection up a bit, but it is sure to make reading
7082 slower and more awkward.
7083
7084 @item gnus-thread-hide-subtree
7085 @vindex gnus-thread-hide-subtree
7086 If non-@code{nil}, all threads will be hidden when the summary buffer is
7087 generated.
7088
7089 This can also be a predicate specifier (@pxref{Predicate Specifiers}).
7090 Available predicates are @code{gnus-article-unread-p} and
7091 @code{gnus-article-unseen-p}.
7092
7093 Here's an example:
7094
7095 @lisp
7096 (setq gnus-thread-hide-subtree
7097       '(or gnus-article-unread-p
7098            gnus-article-unseen-p))
7099 @end lisp
7100
7101 (It's a pretty nonsensical example, since all unseen articles are also
7102 unread, but you get my drift.)
7103
7104
7105 @item gnus-thread-expunge-below
7106 @vindex gnus-thread-expunge-below
7107 All threads that have a total score (as defined by
7108 @code{gnus-thread-score-function}) less than this number will be
7109 expunged.  This variable is @code{nil} by default, which means that no
7110 threads are expunged.
7111
7112 @item gnus-thread-hide-killed
7113 @vindex gnus-thread-hide-killed
7114 if you kill a thread and this variable is non-@code{nil}, the subtree
7115 will be hidden.
7116
7117 @item gnus-thread-ignore-subject
7118 @vindex gnus-thread-ignore-subject
7119 Sometimes somebody changes the subject in the middle of a thread.  If
7120 this variable is non-@code{nil}, which is the default, the subject
7121 change is ignored.  If it is @code{nil}, a change in the subject will
7122 result in a new thread.
7123
7124 @item gnus-thread-indent-level
7125 @vindex gnus-thread-indent-level
7126 This is a number that says how much each sub-thread should be indented.
7127 The default is 4.
7128
7129 @item gnus-sort-gathered-threads-function
7130 @vindex gnus-sort-gathered-threads-function
7131 Sometimes, particularly with mailing lists, the order in which mails
7132 arrive locally is not necessarily the same as the order in which they
7133 arrived on the mailing list.  Consequently, when sorting sub-threads
7134 using the default @code{gnus-thread-sort-by-number}, responses can end
7135 up appearing before the article to which they are responding to.
7136 Setting this variable to an alternate value
7137 (e.g. @code{gnus-thread-sort-by-date}), in a group's parameters or in an
7138 appropriate hook (e.g. @code{gnus-summary-generate-hook}) can produce a
7139 more logical sub-thread ordering in such instances.
7140
7141 @end table
7142
7143
7144 @node Low-Level Threading
7145 @subsubsection Low-Level Threading
7146
7147 @table @code
7148
7149 @item gnus-parse-headers-hook
7150 @vindex gnus-parse-headers-hook
7151 Hook run before parsing any headers.
7152
7153 @item gnus-alter-header-function
7154 @vindex gnus-alter-header-function
7155 If non-@code{nil}, this function will be called to allow alteration of
7156 article header structures.  The function is called with one parameter,
7157 the article header vector, which it may alter in any way.  For instance,
7158 if you have a mail-to-news gateway which alters the @code{Message-ID}s
7159 in systematic ways (by adding prefixes and such), you can use this
7160 variable to un-scramble the @code{Message-ID}s so that they are more
7161 meaningful.  Here's one example:
7162
7163 @lisp
7164 (setq gnus-alter-header-function 'my-alter-message-id)
7165
7166 (defun my-alter-message-id (header)
7167   (let ((id (mail-header-id header)))
7168     (when (string-match
7169            "\\(<[^<>@@]*\\)\\.?cygnus\\..*@@\\([^<>@@]*>\\)" id)
7170       (mail-header-set-id
7171        (concat (match-string 1 id) "@@" (match-string 2 id))
7172        header))))
7173 @end lisp
7174
7175 @end table
7176
7177
7178 @node Thread Commands
7179 @subsection Thread Commands
7180 @cindex thread commands
7181
7182 @table @kbd
7183
7184 @item T k
7185 @itemx C-M-k
7186 @kindex T k (Summary)
7187 @kindex C-M-k (Summary)
7188 @findex gnus-summary-kill-thread
7189 Mark all articles in the current (sub-)thread as read
7190 (@code{gnus-summary-kill-thread}).  If the prefix argument is positive,
7191 remove all marks instead.  If the prefix argument is negative, tick
7192 articles instead.
7193
7194 @item T l
7195 @itemx C-M-l
7196 @kindex T l (Summary)
7197 @kindex C-M-l (Summary)
7198 @findex gnus-summary-lower-thread
7199 Lower the score of the current (sub-)thread
7200 (@code{gnus-summary-lower-thread}).
7201
7202 @item T i
7203 @kindex T i (Summary)
7204 @findex gnus-summary-raise-thread
7205 Increase the score of the current (sub-)thread
7206 (@code{gnus-summary-raise-thread}).
7207
7208 @item T #
7209 @kindex T # (Summary)
7210 @findex gnus-uu-mark-thread
7211 Set the process mark on the current (sub-)thread
7212 (@code{gnus-uu-mark-thread}).
7213
7214 @item T M-#
7215 @kindex T M-# (Summary)
7216 @findex gnus-uu-unmark-thread
7217 Remove the process mark from the current (sub-)thread
7218 (@code{gnus-uu-unmark-thread}).
7219
7220 @item T T
7221 @kindex T T (Summary)
7222 @findex gnus-summary-toggle-threads
7223 Toggle threading (@code{gnus-summary-toggle-threads}).
7224
7225 @item T s
7226 @kindex T s (Summary)
7227 @findex gnus-summary-show-thread
7228 Expose the (sub-)thread hidden under the current article, if any@*
7229 (@code{gnus-summary-show-thread}).
7230
7231 @item T h
7232 @kindex T h (Summary)
7233 @findex gnus-summary-hide-thread
7234 Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
7235
7236 @item T S
7237 @kindex T S (Summary)
7238 @findex gnus-summary-show-all-threads
7239 Expose all hidden threads (@code{gnus-summary-show-all-threads}).
7240
7241 @item T H
7242 @kindex T H (Summary)
7243 @findex gnus-summary-hide-all-threads
7244 Hide all threads (@code{gnus-summary-hide-all-threads}).
7245
7246 @item T t
7247 @kindex T t (Summary)
7248 @findex gnus-summary-rethread-current
7249 Re-thread the current article's thread
7250 (@code{gnus-summary-rethread-current}).  This works even when the
7251 summary buffer is otherwise unthreaded.
7252
7253 @item T ^
7254 @kindex T ^ (Summary)
7255 @findex gnus-summary-reparent-thread
7256 Make the current article the child of the marked (or previous) article
7257 (@code{gnus-summary-reparent-thread}).
7258
7259 @item T M-^
7260 @kindex T M-^ (Summary)
7261 @findex gnus-summary-reparent-children
7262 Make the current article the parent of the marked articles
7263 (@code{gnus-summary-reparent-children}).
7264
7265 @end table
7266
7267 The following commands are thread movement commands.  They all
7268 understand the numeric prefix.
7269
7270 @table @kbd
7271
7272 @item T n
7273 @kindex T n (Summary)
7274 @itemx C-M-f
7275 @kindex C-M-n (Summary)
7276 @itemx M-down
7277 @kindex M-down (Summary)
7278 @findex gnus-summary-next-thread
7279 Go to the next thread (@code{gnus-summary-next-thread}).
7280
7281 @item T p
7282 @kindex T p (Summary)
7283 @itemx C-M-b
7284 @kindex C-M-p (Summary)
7285 @itemx M-up
7286 @kindex M-up (Summary)
7287 @findex gnus-summary-prev-thread
7288 Go to the previous thread (@code{gnus-summary-prev-thread}).
7289
7290 @item T d
7291 @kindex T d (Summary)
7292 @findex gnus-summary-down-thread
7293 Descend the thread (@code{gnus-summary-down-thread}).
7294
7295 @item T u
7296 @kindex T u (Summary)
7297 @findex gnus-summary-up-thread
7298 Ascend the thread (@code{gnus-summary-up-thread}).
7299
7300 @item T o
7301 @kindex T o (Summary)
7302 @findex gnus-summary-top-thread
7303 Go to the top of the thread (@code{gnus-summary-top-thread}).
7304 @end table
7305
7306 @vindex gnus-thread-operation-ignore-subject
7307 If you ignore subject while threading, you'll naturally end up with
7308 threads that have several different subjects in them.  If you then issue
7309 a command like @kbd{T k} (@code{gnus-summary-kill-thread}) you might not
7310 wish to kill the entire thread, but just those parts of the thread that
7311 have the same subject as the current article.  If you like this idea,
7312 you can fiddle with @code{gnus-thread-operation-ignore-subject}.  If it
7313 is non-@code{nil} (which it is by default), subjects will be ignored
7314 when doing thread commands.  If this variable is @code{nil}, articles in
7315 the same thread with different subjects will not be included in the
7316 operation in question.  If this variable is @code{fuzzy}, only articles
7317 that have subjects fuzzily equal will be included (@pxref{Fuzzy
7318 Matching}).
7319
7320
7321 @node Sorting the Summary Buffer
7322 @section Sorting the Summary Buffer
7323
7324 @findex gnus-thread-sort-by-total-score
7325 @findex gnus-thread-sort-by-date
7326 @findex gnus-thread-sort-by-score
7327 @findex gnus-thread-sort-by-subject
7328 @findex gnus-thread-sort-by-author
7329 @findex gnus-thread-sort-by-recipient
7330 @findex gnus-thread-sort-by-number
7331 @findex gnus-thread-sort-by-random
7332 @vindex gnus-thread-sort-functions
7333 @findex gnus-thread-sort-by-most-recent-number
7334 @findex gnus-thread-sort-by-most-recent-date
7335 If you are using a threaded summary display, you can sort the threads by
7336 setting @code{gnus-thread-sort-functions}, which can be either a single
7337 function, a list of functions, or a list containing functions and
7338 @code{(not some-function)} elements.
7339
7340 By default, sorting is done on article numbers.  Ready-made sorting
7341 predicate functions include @code{gnus-thread-sort-by-number},
7342 @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-recipient},
7343 @code{gnus-thread-sort-by-subject},
7344 @code{gnus-thread-sort-by-date},
7345 @code{gnus-thread-sort-by-score},
7346 @code{gnus-thread-sort-by-most-recent-number},
7347 @code{gnus-thread-sort-by-most-recent-date},
7348 @code{gnus-thread-sort-by-random} and
7349 @code{gnus-thread-sort-by-total-score}.
7350
7351 Each function takes two threads and returns non-@code{nil} if the first
7352 thread should be sorted before the other.  Note that sorting really is
7353 normally done by looking only at the roots of each thread.  Exceptions
7354 to this rule are @code{gnus-thread-sort-by-most-recent-number} and
7355 @code{gnus-thread-sort-by-most-recent-date}.
7356
7357 If you use more than one function, the primary sort key should be the
7358 last function in the list.  You should probably always include
7359 @code{gnus-thread-sort-by-number} in the list of sorting
7360 functions---preferably first.  This will ensure that threads that are
7361 equal with respect to the other sort criteria will be displayed in
7362 ascending article order.
7363
7364 If you would like to sort by reverse score, then by subject, and finally
7365 by number, you could do something like:
7366
7367 @lisp
7368 (setq gnus-thread-sort-functions
7369       '(gnus-thread-sort-by-number
7370         gnus-thread-sort-by-subject
7371         (not gnus-thread-sort-by-total-score)))
7372 @end lisp
7373
7374 The threads that have highest score will be displayed first in the
7375 summary buffer.  When threads have the same score, they will be sorted
7376 alphabetically.  The threads that have the same score and the same
7377 subject will be sorted by number, which is (normally) the sequence in
7378 which the articles arrived.
7379
7380 If you want to sort by score and then reverse arrival order, you could
7381 say something like:
7382
7383 @lisp
7384 (setq gnus-thread-sort-functions
7385       '((not gnus-thread-sort-by-number)
7386         gnus-thread-sort-by-score))
7387 @end lisp
7388
7389 @vindex gnus-thread-score-function
7390 The function in the @code{gnus-thread-score-function} variable (default
7391 @code{+}) is used for calculating the total score of a thread.  Useful
7392 functions might be @code{max}, @code{min}, or squared means, or whatever
7393 tickles your fancy.
7394
7395 @findex gnus-article-sort-functions
7396 @findex gnus-article-sort-by-date
7397 @findex gnus-article-sort-by-most-recent-date
7398 @findex gnus-article-sort-by-score
7399 @findex gnus-article-sort-by-subject
7400 @findex gnus-article-sort-by-author
7401 @findex gnus-article-sort-by-random
7402 @findex gnus-article-sort-by-number
7403 @findex gnus-article-sort-by-most-recent-number
7404 If you are using an unthreaded display for some strange reason or
7405 other, you have to fiddle with the @code{gnus-article-sort-functions}
7406 variable.  It is very similar to the
7407 @code{gnus-thread-sort-functions}, except that it uses slightly
7408 different functions for article comparison.  Available sorting
7409 predicate functions are @code{gnus-article-sort-by-number},
7410 @code{gnus-article-sort-by-author},
7411 @code{gnus-article-sort-by-subject}, @code{gnus-article-sort-by-date},
7412 @code{gnus-article-sort-by-random}, and
7413 @code{gnus-article-sort-by-score}.
7414
7415 If you want to sort an unthreaded summary display by subject, you could
7416 say something like:
7417
7418 @lisp
7419 (setq gnus-article-sort-functions
7420       '(gnus-article-sort-by-number
7421         gnus-article-sort-by-subject))
7422 @end lisp
7423
7424 You can define group specific sorting via @code{gnus-parameters},
7425 @xref{Group Parameters}.
7426
7427
7428 @node Asynchronous Fetching
7429 @section Asynchronous Article Fetching
7430 @cindex asynchronous article fetching
7431 @cindex article pre-fetch
7432 @cindex pre-fetch
7433
7434 If you read your news from an @acronym{NNTP} server that's far away, the
7435 network latencies may make reading articles a chore.  You have to wait
7436 for a while after pressing @kbd{n} to go to the next article before the
7437 article appears.  Why can't Gnus just go ahead and fetch the article
7438 while you are reading the previous one?  Why not, indeed.
7439
7440 First, some caveats.  There are some pitfalls to using asynchronous
7441 article fetching, especially the way Gnus does it.
7442
7443 Let's say you are reading article 1, which is short, and article 2 is
7444 quite long, and you are not interested in reading that.  Gnus does not
7445 know this, so it goes ahead and fetches article 2.  You decide to read
7446 article 3, but since Gnus is in the process of fetching article 2, the
7447 connection is blocked.
7448
7449 To avoid these situations, Gnus will open two (count 'em two)
7450 connections to the server.  Some people may think this isn't a very nice
7451 thing to do, but I don't see any real alternatives.  Setting up that
7452 extra connection takes some time, so Gnus startup will be slower.
7453
7454 Gnus will fetch more articles than you will read.  This will mean that
7455 the link between your machine and the @acronym{NNTP} server will become more
7456 loaded than if you didn't use article pre-fetch.  The server itself will
7457 also become more loaded---both with the extra article requests, and the
7458 extra connection.
7459
7460 Ok, so now you know that you shouldn't really use this thing@dots{} unless
7461 you really want to.
7462
7463 @vindex gnus-asynchronous
7464 Here's how:  Set @code{gnus-asynchronous} to @code{t}.  The rest should
7465 happen automatically.
7466
7467 @vindex gnus-use-article-prefetch
7468 You can control how many articles are to be pre-fetched by setting
7469 @code{gnus-use-article-prefetch}.  This is 30 by default, which means
7470 that when you read an article in the group, the back end will pre-fetch
7471 the next 30 articles.  If this variable is @code{t}, the back end will
7472 pre-fetch all the articles it can without bound.  If it is
7473 @code{nil}, no pre-fetching will be done.
7474
7475 @vindex gnus-async-prefetch-article-p
7476 @findex gnus-async-unread-p
7477 There are probably some articles that you don't want to pre-fetch---read
7478 articles, for instance.  The @code{gnus-async-prefetch-article-p}
7479 variable controls whether an article is to be pre-fetched.  This
7480 function should return non-@code{nil} when the article in question is
7481 to be pre-fetched.  The default is @code{gnus-async-unread-p}, which
7482 returns @code{nil} on read articles.  The function is called with an
7483 article data structure as the only parameter.
7484
7485 If, for instance, you wish to pre-fetch only unread articles shorter
7486 than 100 lines, you could say something like:
7487
7488 @lisp
7489 (defun my-async-short-unread-p (data)
7490   "Return non-nil for short, unread articles."
7491   (and (gnus-data-unread-p data)
7492        (< (mail-header-lines (gnus-data-header data))
7493           100)))
7494
7495 (setq gnus-async-prefetch-article-p 'my-async-short-unread-p)
7496 @end lisp
7497
7498 These functions will be called many, many times, so they should
7499 preferably be short and sweet to avoid slowing down Gnus too much.
7500 It's probably a good idea to byte-compile things like this.
7501
7502 @vindex gnus-async-post-fetch-function
7503 @findex gnus-html-prefetch-images
7504 After an article has been prefetched, this
7505 @code{gnus-async-post-fetch-function} will be called.  The buffer will
7506 be narrowed to the region of the article that was fetched.  A useful
7507 value would be @code{gnus-html-prefetch-images}, which will prefetch
7508 and store images referenced in the article, so that you don't have to
7509 wait for them to be fetched when you read the article.  This is useful
7510 for @acronym{HTML} messages that have external images.
7511
7512 @vindex gnus-prefetched-article-deletion-strategy
7513 Articles have to be removed from the asynch buffer sooner or later.  The
7514 @code{gnus-prefetched-article-deletion-strategy} says when to remove
7515 articles.  This is a list that may contain the following elements:
7516
7517 @table @code
7518 @item read
7519 Remove articles when they are read.
7520
7521 @item exit
7522 Remove articles when exiting the group.
7523 @end table
7524
7525 The default value is @code{(read exit)}.
7526
7527 @c @vindex gnus-use-header-prefetch
7528 @c If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
7529 @c from the next group.
7530
7531
7532 @node Article Caching
7533 @section Article Caching
7534 @cindex article caching
7535 @cindex caching
7536
7537 If you have an @emph{extremely} slow @acronym{NNTP} connection, you may
7538 consider turning article caching on.  Each article will then be stored
7539 locally under your home directory.  As you may surmise, this could
7540 potentially use @emph{huge} amounts of disk space, as well as eat up all
7541 your inodes so fast it will make your head swim.  In vodka.
7542
7543 Used carefully, though, it could be just an easier way to save articles.
7544
7545 @vindex gnus-use-long-file-name
7546 @vindex gnus-cache-directory
7547 @vindex gnus-use-cache
7548 To turn caching on, set @code{gnus-use-cache} to @code{t}.  By default,
7549 all articles ticked or marked as dormant will then be copied
7550 over to your local cache (@code{gnus-cache-directory}).  Whether this
7551 cache is flat or hierarchical is controlled by the
7552 @code{gnus-use-long-file-name} variable, as usual.
7553
7554 When re-selecting a ticked or dormant article, it will be fetched from the
7555 cache instead of from the server.  As articles in your cache will never
7556 expire, this might serve as a method of saving articles while still
7557 keeping them where they belong.  Just mark all articles you want to save
7558 as dormant, and don't worry.
7559
7560 When an article is marked as read, is it removed from the cache.
7561
7562 @vindex gnus-cache-remove-articles
7563 @vindex gnus-cache-enter-articles
7564 The entering/removal of articles from the cache is controlled by the
7565 @code{gnus-cache-enter-articles} and @code{gnus-cache-remove-articles}
7566 variables.  Both are lists of symbols.  The first is @code{(ticked
7567 dormant)} by default, meaning that ticked and dormant articles will be
7568 put in the cache.  The latter is @code{(read)} by default, meaning that
7569 articles marked as read are removed from the cache.  Possibly
7570 symbols in these two lists are @code{ticked}, @code{dormant},
7571 @code{unread} and @code{read}.
7572
7573 @findex gnus-jog-cache
7574 So where does the massive article-fetching and storing come into the
7575 picture?  The @code{gnus-jog-cache} command will go through all
7576 subscribed newsgroups, request all unread articles, score them, and
7577 store them in the cache.  You should only ever, ever ever ever, use this
7578 command if 1) your connection to the @acronym{NNTP} server is really, really,
7579 really slow and 2) you have a really, really, really huge disk.
7580 Seriously.  One way to cut down on the number of articles downloaded is
7581 to score unwanted articles down and have them marked as read.  They will
7582 not then be downloaded by this command.
7583
7584 @vindex gnus-uncacheable-groups
7585 @vindex gnus-cacheable-groups
7586 It is likely that you do not want caching on all groups.  For instance,
7587 if your @code{nnml} mail is located under your home directory, it makes no
7588 sense to cache it somewhere else under your home directory.  Unless you
7589 feel that it's neat to use twice as much space.
7590
7591 To limit the caching, you could set @code{gnus-cacheable-groups} to a
7592 regexp of groups to cache, @samp{^nntp} for instance, or set the
7593 @code{gnus-uncacheable-groups} regexp to @samp{^nnml}, for instance.
7594 Both variables are @code{nil} by default.  If a group matches both
7595 variables, the group is not cached.
7596
7597 @findex gnus-cache-generate-nov-databases
7598 @findex gnus-cache-generate-active
7599 @vindex gnus-cache-active-file
7600 The cache stores information on what articles it contains in its active
7601 file (@code{gnus-cache-active-file}).  If this file (or any other parts
7602 of the cache) becomes all messed up for some reason or other, Gnus
7603 offers two functions that will try to set things right.  @kbd{M-x
7604 gnus-cache-generate-nov-databases} will (re)build all the @acronym{NOV}
7605 files, and @kbd{gnus-cache-generate-active} will (re)generate the active
7606 file.
7607
7608 @findex gnus-cache-move-cache
7609 @code{gnus-cache-move-cache} will move your whole
7610 @code{gnus-cache-directory} to some other location.  You get asked to
7611 where, isn't that cool?
7612
7613 @node Persistent Articles
7614 @section Persistent Articles
7615 @cindex persistent articles
7616
7617 Closely related to article caching, we have @dfn{persistent articles}.
7618 In fact, it's just a different way of looking at caching, and much more
7619 useful in my opinion.
7620
7621 Say you're reading a newsgroup, and you happen on to some valuable gem
7622 that you want to keep and treasure forever.  You'd normally just save it
7623 (using one of the many saving commands) in some file.  The problem with
7624 that is that it's just, well, yucky.  Ideally you'd prefer just having
7625 the article remain in the group where you found it forever; untouched by
7626 the expiry going on at the news server.
7627
7628 This is what a @dfn{persistent article} is---an article that just won't
7629 be deleted.  It's implemented using the normal cache functions, but
7630 you use two explicit commands for managing persistent articles:
7631
7632 @table @kbd
7633
7634 @item *
7635 @kindex * (Summary)
7636 @findex gnus-cache-enter-article
7637 Make the current article persistent (@code{gnus-cache-enter-article}).
7638
7639 @item M-*
7640 @kindex M-* (Summary)
7641 @findex gnus-cache-remove-article
7642 Remove the current article from the persistent articles
7643 (@code{gnus-cache-remove-article}).  This will normally delete the
7644 article.
7645 @end table
7646
7647 Both these commands understand the process/prefix convention.
7648
7649 To avoid having all ticked articles (and stuff) entered into the cache,
7650 you should set @code{gnus-use-cache} to @code{passive} if you're just
7651 interested in persistent articles:
7652
7653 @lisp
7654 (setq gnus-use-cache 'passive)
7655 @end lisp
7656
7657 @node Sticky Articles
7658 @section Sticky Articles
7659 @cindex sticky articles
7660
7661 When you select an article the current article buffer will be reused
7662 according to the value of the variable
7663 @code{gnus-single-article-buffer}.  If its value is non-@code{nil} (the
7664 default) all articles reuse the same article buffer.  Else each group
7665 has its own article buffer.
7666
7667 This implies that it's not possible to have more than one article buffer
7668 in a group at a time.  But sometimes you might want to display all the
7669 latest emails from your mother, your father, your aunt, your uncle and
7670 your 17 cousins to coordinate the next christmas party.
7671
7672 That's where sticky articles come in handy.  A sticky article buffer
7673 basically is a normal article buffer, but it won't be reused when you
7674 select another article.  You can make an article sticky with:
7675
7676 @table @kbd
7677 @item A S
7678 @kindex A S (Summary)
7679 @findex gnus-sticky-article
7680 Make the current article sticky.  If a prefix arg is given, ask for a
7681 name for this sticky article buffer.
7682 @end table
7683
7684 To close a sticky article buffer you can use these commands:
7685
7686 @table @kbd
7687 @item q
7688 @kindex q (Article)
7689 @findex bury-buffer
7690 Puts this sticky article buffer at the end of the list of all buffers.
7691
7692 @item k
7693 @kindex k (Article)
7694 @findex gnus-kill-sticky-article-buffer
7695 Kills this sticky article buffer.
7696 @end table
7697
7698 To kill all sticky article buffers you can use:
7699
7700 @defun gnus-kill-sticky-article-buffers ARG
7701 Kill all sticky article buffers.
7702 If a prefix ARG is given, ask for confirmation.
7703 @end defun
7704
7705 @node Article Backlog
7706 @section Article Backlog
7707 @cindex backlog
7708 @cindex article backlog
7709
7710 If you have a slow connection, but the idea of using caching seems
7711 unappealing to you (and it is, really), you can help the situation some
7712 by switching on the @dfn{backlog}.  This is where Gnus will buffer
7713 already read articles so that it doesn't have to re-fetch articles
7714 you've already read.  This only helps if you are in the habit of
7715 re-selecting articles you've recently read, of course.  If you never do
7716 that, turning the backlog on will slow Gnus down a little bit, and
7717 increase memory usage some.
7718
7719 @vindex gnus-keep-backlog
7720 If you set @code{gnus-keep-backlog} to a number @var{n}, Gnus will store
7721 at most @var{n} old articles in a buffer for later re-fetching.  If this
7722 variable is non-@code{nil} and is not a number, Gnus will store
7723 @emph{all} read articles, which means that your Emacs will grow without
7724 bound before exploding and taking your machine down with you.  I put
7725 that in there just to keep y'all on your toes.
7726
7727 The default value is 20.
7728
7729
7730 @node Saving Articles
7731 @section Saving Articles
7732 @cindex saving articles
7733
7734 Gnus can save articles in a number of ways.  Below is the documentation
7735 for saving articles in a fairly straight-forward fashion (i.e., little
7736 processing of the article is done before it is saved).  For a different
7737 approach (uudecoding, unsharing) you should use @code{gnus-uu}
7738 (@pxref{Decoding Articles}).
7739
7740 For the commands listed here, the target is a file.  If you want to
7741 save to a group, see the @kbd{B c} (@code{gnus-summary-copy-article})
7742 command (@pxref{Mail Group Commands}).
7743
7744 @vindex gnus-save-all-headers
7745 If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete
7746 unwanted headers before saving the article.
7747
7748 @vindex gnus-saved-headers
7749 If the preceding variable is @code{nil}, all headers that match the
7750 @code{gnus-saved-headers} regexp will be kept, while the rest will be
7751 deleted before saving.
7752
7753 @table @kbd
7754
7755 @item O o
7756 @itemx o
7757 @kindex O o (Summary)
7758 @kindex o (Summary)
7759 @findex gnus-summary-save-article
7760 @c @icon{gnus-summary-save-article}
7761 Save the current article using the default article saver
7762 (@code{gnus-summary-save-article}).
7763
7764 @item O m
7765 @kindex O m (Summary)
7766 @findex gnus-summary-save-article-mail
7767 Save the current article in a Unix mail box (mbox) file
7768 (@code{gnus-summary-save-article-mail}).
7769
7770 @item O r
7771 @kindex O r (Summary)
7772 @findex gnus-summary-save-article-rmail
7773 Save the current article in Rmail format
7774 (@code{gnus-summary-save-article-rmail}).  This is mbox since Emacs 23,
7775 Babyl in older versions.
7776
7777 @item O f
7778 @kindex O f (Summary)
7779 @findex gnus-summary-save-article-file
7780 @c @icon{gnus-summary-save-article-file}
7781 Save the current article in plain file format
7782 (@code{gnus-summary-save-article-file}).
7783
7784 @item O F
7785 @kindex O F (Summary)
7786 @findex gnus-summary-write-article-file
7787 Write the current article in plain file format, overwriting any previous
7788 file contents (@code{gnus-summary-write-article-file}).
7789
7790 @item O b
7791 @kindex O b (Summary)
7792 @findex gnus-summary-save-article-body-file
7793 Save the current article body in plain file format
7794 (@code{gnus-summary-save-article-body-file}).
7795
7796 @item O h
7797 @kindex O h (Summary)
7798 @findex gnus-summary-save-article-folder
7799 Save the current article in mh folder format
7800 (@code{gnus-summary-save-article-folder}).
7801
7802 @item O v
7803 @kindex O v (Summary)
7804 @findex gnus-summary-save-article-vm
7805 Save the current article in a VM folder
7806 (@code{gnus-summary-save-article-vm}).
7807
7808 @item O p
7809 @itemx |
7810 @kindex O p (Summary)
7811 @kindex | (Summary)
7812 @findex gnus-summary-pipe-output
7813 @vindex gnus-summary-pipe-output-default-command
7814 Save the current article in a pipe.  Uhm, like, what I mean is---Pipe
7815 the current article to a process (@code{gnus-summary-pipe-output}).
7816 If given a symbolic prefix (@pxref{Symbolic Prefixes}), include the
7817 complete headers in the piped output.  The symbolic prefix @code{r} is
7818 special; it lets this command pipe a raw article including all headers.
7819 The @code{gnus-summary-pipe-output-default-command} variable can be set
7820 to a string containing the default command and options (default
7821 @code{nil}).
7822
7823 @item O P
7824 @kindex O P (Summary)
7825 @findex gnus-summary-muttprint
7826 @vindex gnus-summary-muttprint-program
7827 Save the current article into muttprint.  That is, print it using the
7828 external program @uref{http://muttprint.sourceforge.net/,
7829 Muttprint}.  The program name and options to use is controlled by the
7830 variable @code{gnus-summary-muttprint-program}.
7831 (@code{gnus-summary-muttprint}).
7832
7833 @end table
7834
7835 @vindex gnus-prompt-before-saving
7836 All these commands use the process/prefix convention
7837 (@pxref{Process/Prefix}).  If you save bunches of articles using these
7838 functions, you might get tired of being prompted for files to save each
7839 and every article in.  The prompting action is controlled by
7840 the @code{gnus-prompt-before-saving} variable, which is @code{always} by
7841 default, giving you that excessive prompting action you know and
7842 loathe.  If you set this variable to @code{t} instead, you'll be prompted
7843 just once for each series of articles you save.  If you like to really
7844 have Gnus do all your thinking for you, you can even set this variable
7845 to @code{nil}, which means that you will never be prompted for files to
7846 save articles in.  Gnus will simply save all the articles in the default
7847 files.
7848
7849
7850 @vindex gnus-default-article-saver
7851 You can customize the @code{gnus-default-article-saver} variable to make
7852 Gnus do what you want it to.  You can use any of the eight ready-made
7853 functions below, or you can create your own.
7854
7855 @table @code
7856
7857 @item gnus-summary-save-in-rmail
7858 @findex gnus-summary-save-in-rmail
7859 @vindex gnus-rmail-save-name
7860 @findex gnus-plain-save-name
7861 This is the default format, that used by the Rmail package.  Since Emacs
7862 23, Rmail uses standard mbox format.  Before this, it used the
7863 @dfn{Babyl} format.  Accordingly, this command writes mbox format since
7864 Emacs 23, unless appending to an existing Babyl file.  In older versions
7865 of Emacs, it always uses Babyl format.  Uses the function in the
7866 @code{gnus-rmail-save-name} variable to get a file name to save the
7867 article in.  The default is @code{gnus-plain-save-name}.
7868
7869 @item gnus-summary-save-in-mail
7870 @findex gnus-summary-save-in-mail
7871 @vindex gnus-mail-save-name
7872 Save in a Unix mail (mbox) file.  Uses the function in the
7873 @code{gnus-mail-save-name} variable to get a file name to save the
7874 article in.  The default is @code{gnus-plain-save-name}.
7875
7876 @item gnus-summary-save-in-file
7877 @findex gnus-summary-save-in-file
7878 @vindex gnus-file-save-name
7879 @findex gnus-numeric-save-name
7880 Append the article straight to an ordinary file.  Uses the function in
7881 the @code{gnus-file-save-name} variable to get a file name to save the
7882 article in.  The default is @code{gnus-numeric-save-name}.
7883
7884 @item gnus-summary-write-to-file
7885 @findex gnus-summary-write-to-file
7886 Write the article straight to an ordinary file.  The file is
7887 overwritten if it exists.  Uses the function in the
7888 @code{gnus-file-save-name} variable to get a file name to save the
7889 article in.  The default is @code{gnus-numeric-save-name}.
7890
7891 @item gnus-summary-save-body-in-file
7892 @findex gnus-summary-save-body-in-file
7893 Append the article body to an ordinary file.  Uses the function in the
7894 @code{gnus-file-save-name} variable to get a file name to save the
7895 article in.  The default is @code{gnus-numeric-save-name}.
7896
7897 @item gnus-summary-write-body-to-file
7898 @findex gnus-summary-write-body-to-file
7899 Write the article body straight to an ordinary file.  The file is
7900 overwritten if it exists.  Uses the function in the
7901 @code{gnus-file-save-name} variable to get a file name to save the
7902 article in.  The default is @code{gnus-numeric-save-name}.
7903
7904 @item gnus-summary-save-in-folder
7905 @findex gnus-summary-save-in-folder
7906 @findex gnus-folder-save-name
7907 @findex gnus-Folder-save-name
7908 @vindex gnus-folder-save-name
7909 @cindex rcvstore
7910 @cindex MH folders
7911 Save the article to an MH folder using @code{rcvstore} from the MH
7912 library.  Uses the function in the @code{gnus-folder-save-name} variable
7913 to get a file name to save the article in.  The default is
7914 @code{gnus-folder-save-name}, but you can also use
7915 @code{gnus-Folder-save-name}, which creates capitalized names.
7916
7917 @item gnus-summary-save-in-vm
7918 @findex gnus-summary-save-in-vm
7919 Save the article in a VM folder.  You have to have the VM mail
7920 reader to use this setting.
7921
7922 @item gnus-summary-save-in-pipe
7923 @findex gnus-summary-save-in-pipe
7924 Pipe the article to a shell command.  This function takes optional two
7925 arguments COMMAND and RAW.  Valid values for COMMAND include:
7926
7927 @itemize @bullet
7928 @item a string@*
7929 The executable command name and possibly arguments.
7930 @item @code{nil}@*
7931 You will be prompted for the command in the minibuffer.
7932 @item the symbol @code{default}@*
7933 It will be replaced with the command which the variable
7934 @code{gnus-summary-pipe-output-default-command} holds or the command
7935 last used for saving.
7936 @end itemize
7937
7938 Non-@code{nil} value for RAW overrides @code{:decode} and
7939 @code{:headers} properties (see below) and the raw article including all
7940 headers will be piped.
7941 @end table
7942
7943 The symbol of each function may have the following properties:
7944
7945 @table @code
7946 @item :decode
7947 The value non-@code{nil} means save decoded articles.  This is
7948 meaningful only with @code{gnus-summary-save-in-file},
7949 @code{gnus-summary-save-body-in-file},
7950 @code{gnus-summary-write-to-file},
7951 @code{gnus-summary-write-body-to-file}, and
7952 @code{gnus-summary-save-in-pipe}.
7953
7954 @item :function
7955 The value specifies an alternative function which appends, not
7956 overwrites, articles to a file.  This implies that when saving many
7957 articles at a time, @code{gnus-prompt-before-saving} is bound to
7958 @code{t} and all articles are saved in a single file.  This is
7959 meaningful only with @code{gnus-summary-write-to-file} and
7960 @code{gnus-summary-write-body-to-file}.
7961
7962 @item :headers
7963 The value specifies the symbol of a variable of which the value
7964 specifies headers to be saved.  If it is omitted,
7965 @code{gnus-save-all-headers} and @code{gnus-saved-headers} control what
7966 headers should be saved.
7967 @end table
7968
7969 @vindex gnus-article-save-directory
7970 All of these functions, except for the last one, will save the article
7971 in the @code{gnus-article-save-directory}, which is initialized from the
7972 @env{SAVEDIR} environment variable.  This is @file{~/News/} by
7973 default.
7974
7975 As you can see above, the functions use different functions to find a
7976 suitable name of a file to save the article in.  Below is a list of
7977 available functions that generate names:
7978
7979 @table @code
7980
7981 @item gnus-Numeric-save-name
7982 @findex gnus-Numeric-save-name
7983 File names like @file{~/News/Alt.andrea-dworkin/45}.
7984
7985 @item gnus-numeric-save-name
7986 @findex gnus-numeric-save-name
7987 File names like @file{~/News/alt.andrea-dworkin/45}.
7988
7989 @item gnus-Plain-save-name
7990 @findex gnus-Plain-save-name
7991 File names like @file{~/News/Alt.andrea-dworkin}.
7992
7993 @item gnus-plain-save-name
7994 @findex gnus-plain-save-name
7995 File names like @file{~/News/alt.andrea-dworkin}.
7996
7997 @item gnus-sender-save-name
7998 @findex gnus-sender-save-name
7999 File names like @file{~/News/larsi}.
8000 @end table
8001
8002 @vindex gnus-split-methods
8003 You can have Gnus suggest where to save articles by plonking a regexp into
8004 the @code{gnus-split-methods} alist.  For instance, if you would like to
8005 save articles related to Gnus in the file @file{gnus-stuff}, and articles
8006 related to VM in @file{vm-stuff}, you could set this variable to something
8007 like:
8008
8009 @lisp
8010 (("^Subject:.*gnus\\|^Newsgroups:.*gnus" "gnus-stuff")
8011  ("^Subject:.*vm\\|^Xref:.*vm" "vm-stuff")
8012  (my-choosing-function "../other-dir/my-stuff")
8013  ((equal gnus-newsgroup-name "mail.misc") "mail-stuff"))
8014 @end lisp
8015
8016 We see that this is a list where each element is a list that has two
8017 elements---the @dfn{match} and the @dfn{file}.  The match can either be
8018 a string (in which case it is used as a regexp to match on the article
8019 head); it can be a symbol (which will be called as a function with the
8020 group name as a parameter); or it can be a list (which will be
8021 @code{eval}ed).  If any of these actions have a non-@code{nil} result,
8022 the @dfn{file} will be used as a default prompt.  In addition, the
8023 result of the operation itself will be used if the function or form
8024 called returns a string or a list of strings.
8025
8026 You basically end up with a list of file names that might be used when
8027 saving the current article.  (All ``matches'' will be used.)  You will
8028 then be prompted for what you really want to use as a name, with file
8029 name completion over the results from applying this variable.
8030
8031 This variable is @code{((gnus-article-archive-name))} by default, which
8032 means that Gnus will look at the articles it saves for an
8033 @code{Archive-name} line and use that as a suggestion for the file
8034 name.
8035
8036 Here's an example function to clean up file names somewhat.  If you have
8037 lots of mail groups called things like
8038 @samp{nnml:mail.whatever}, you may want to chop off the beginning of
8039 these group names before creating the file name to save to.  The
8040 following will do just that:
8041
8042 @lisp
8043 (defun my-save-name (group)
8044   (when (string-match "^nnml:mail." group)
8045     (substring group (match-end 0))))
8046
8047 (setq gnus-split-methods
8048       '((gnus-article-archive-name)
8049         (my-save-name)))
8050 @end lisp
8051
8052
8053 @vindex gnus-use-long-file-name
8054 Finally, you have the @code{gnus-use-long-file-name} variable.  If it is
8055 @code{nil}, all the preceding functions will replace all periods
8056 (@samp{.}) in the group names with slashes (@samp{/})---which means that
8057 the functions will generate hierarchies of directories instead of having
8058 all the files in the top level directory
8059 (@file{~/News/alt/andrea-dworkin} instead of
8060 @file{~/News/alt.andrea-dworkin}.)  This variable is @code{t} by default
8061 on most systems.  However, for historical reasons, this is @code{nil} on
8062 Xenix and usg-unix-v machines by default.
8063
8064 This function also affects kill and score file names.  If this variable
8065 is a list, and the list contains the element @code{not-score}, long file
8066 names will not be used for score files, if it contains the element
8067 @code{not-save}, long file names will not be used for saving, and if it
8068 contains the element @code{not-kill}, long file names will not be used
8069 for kill files.
8070
8071 If you'd like to save articles in a hierarchy that looks something like
8072 a spool, you could
8073
8074 @lisp
8075 (setq gnus-use-long-file-name '(not-save)) ; @r{to get a hierarchy}
8076 (setq gnus-default-article-saver
8077       'gnus-summary-save-in-file)          ; @r{no encoding}
8078 @end lisp
8079
8080 Then just save with @kbd{o}.  You'd then read this hierarchy with
8081 ephemeral @code{nneething} groups---@kbd{G D} in the group buffer, and
8082 the top level directory as the argument (@file{~/News/}).  Then just walk
8083 around to the groups/directories with @code{nneething}.
8084
8085
8086 @node Decoding Articles
8087 @section Decoding Articles
8088 @cindex decoding articles
8089
8090 Sometime users post articles (or series of articles) that have been
8091 encoded in some way or other.  Gnus can decode them for you.
8092
8093 @menu
8094 * Uuencoded Articles::          Uudecode articles.
8095 * Shell Archives::              Unshar articles.
8096 * PostScript Files::            Split PostScript.
8097 * Other Files::                 Plain save and binhex.
8098 * Decoding Variables::          Variables for a happy decoding.
8099 * Viewing Files::               You want to look at the result of the decoding?
8100 @end menu
8101
8102 @cindex series
8103 @cindex article series
8104 All these functions use the process/prefix convention
8105 (@pxref{Process/Prefix}) for finding out what articles to work on, with
8106 the extension that a ``single article'' means ``a single series''.  Gnus
8107 can find out by itself what articles belong to a series, decode all the
8108 articles and unpack/view/save the resulting file(s).
8109
8110 Gnus guesses what articles are in the series according to the following
8111 simplish rule: The subjects must be (nearly) identical, except for the
8112 last two numbers of the line.  (Spaces are largely ignored, however.)
8113
8114 For example: If you choose a subject called @samp{cat.gif (2/3)}, Gnus
8115 will find all the articles that match the regexp @samp{^cat.gif
8116 ([0-9]+/[0-9]+).*$}.
8117
8118 Subjects that are non-standard, like @samp{cat.gif (2/3) Part 6 of a
8119 series}, will not be properly recognized by any of the automatic viewing
8120 commands, and you have to mark the articles manually with @kbd{#}.
8121
8122
8123 @node Uuencoded Articles
8124 @subsection Uuencoded Articles
8125 @cindex uudecode
8126 @cindex uuencoded articles
8127
8128 @table @kbd
8129
8130 @item X u
8131 @kindex X u (Summary)
8132 @findex gnus-uu-decode-uu
8133 @c @icon{gnus-uu-decode-uu}
8134 Uudecodes the current series (@code{gnus-uu-decode-uu}).
8135
8136 @item X U
8137 @kindex X U (Summary)
8138 @findex gnus-uu-decode-uu-and-save
8139 Uudecodes and saves the current series
8140 (@code{gnus-uu-decode-uu-and-save}).
8141
8142 @item X v u
8143 @kindex X v u (Summary)
8144 @findex gnus-uu-decode-uu-view
8145 Uudecodes and views the current series (@code{gnus-uu-decode-uu-view}).
8146
8147 @item X v U
8148 @kindex X v U (Summary)
8149 @findex gnus-uu-decode-uu-and-save-view
8150 Uudecodes, views and saves the current series
8151 (@code{gnus-uu-decode-uu-and-save-view}).
8152
8153 @end table
8154
8155 Remember that these all react to the presence of articles marked with
8156 the process mark.  If, for instance, you'd like to decode and save an
8157 entire newsgroup, you'd typically do @kbd{M P a}
8158 (@code{gnus-uu-mark-all}) and then @kbd{X U}
8159 (@code{gnus-uu-decode-uu-and-save}).
8160
8161 All this is very much different from how @code{gnus-uu} worked with
8162 @sc{gnus 4.1}, where you had explicit keystrokes for everything under
8163 the sun.  This version of @code{gnus-uu} generally assumes that you mark
8164 articles in some way (@pxref{Setting Process Marks}) and then press
8165 @kbd{X u}.
8166
8167 @vindex gnus-uu-notify-files
8168 Note: When trying to decode articles that have names matching
8169 @code{gnus-uu-notify-files}, which is hard-coded to
8170 @samp{[Cc][Ii][Nn][Dd][Yy][0-9]+.\\(gif\\|jpg\\)}, @code{gnus-uu} will
8171 automatically post an article on @samp{comp.unix.wizards} saying that
8172 you have just viewed the file in question.  This feature can't be turned
8173 off.
8174
8175
8176 @node Shell Archives
8177 @subsection Shell Archives
8178 @cindex unshar
8179 @cindex shell archives
8180 @cindex shared articles
8181
8182 Shell archives (``shar files'') used to be a popular way to distribute
8183 sources, but it isn't used all that much today.  In any case, we have
8184 some commands to deal with these:
8185
8186 @table @kbd
8187
8188 @item X s
8189 @kindex X s (Summary)
8190 @findex gnus-uu-decode-unshar
8191 Unshars the current series (@code{gnus-uu-decode-unshar}).
8192
8193 @item X S
8194 @kindex X S (Summary)
8195 @findex gnus-uu-decode-unshar-and-save
8196 Unshars and saves the current series (@code{gnus-uu-decode-unshar-and-save}).
8197
8198 @item X v s
8199 @kindex X v s (Summary)
8200 @findex gnus-uu-decode-unshar-view
8201 Unshars and views the current series (@code{gnus-uu-decode-unshar-view}).
8202
8203 @item X v S
8204 @kindex X v S (Summary)
8205 @findex gnus-uu-decode-unshar-and-save-view
8206 Unshars, views and saves the current series
8207 (@code{gnus-uu-decode-unshar-and-save-view}).
8208 @end table
8209
8210
8211 @node PostScript Files
8212 @subsection PostScript Files
8213 @cindex PostScript
8214
8215 @table @kbd
8216
8217 @item X p
8218 @kindex X p (Summary)
8219 @findex gnus-uu-decode-postscript
8220 Unpack the current PostScript series (@code{gnus-uu-decode-postscript}).
8221
8222 @item X P
8223 @kindex X P (Summary)
8224 @findex gnus-uu-decode-postscript-and-save
8225 Unpack and save the current PostScript series
8226 (@code{gnus-uu-decode-postscript-and-save}).
8227
8228 @item X v p
8229 @kindex X v p (Summary)
8230 @findex gnus-uu-decode-postscript-view
8231 View the current PostScript series
8232 (@code{gnus-uu-decode-postscript-view}).
8233
8234 @item X v P
8235 @kindex X v P (Summary)
8236 @findex gnus-uu-decode-postscript-and-save-view
8237 View and save the current PostScript series
8238 (@code{gnus-uu-decode-postscript-and-save-view}).
8239 @end table
8240
8241
8242 @node Other Files
8243 @subsection Other Files
8244
8245 @table @kbd
8246 @item X o
8247 @kindex X o (Summary)
8248 @findex gnus-uu-decode-save
8249 Save the current series
8250 (@code{gnus-uu-decode-save}).
8251
8252 @item X b
8253 @kindex X b (Summary)
8254 @findex gnus-uu-decode-binhex
8255 Unbinhex the current series (@code{gnus-uu-decode-binhex}).  This
8256 doesn't really work yet.
8257
8258 @item X Y
8259 @kindex X Y (Summary)
8260 @findex gnus-uu-decode-yenc
8261 yEnc-decode the current series and save it (@code{gnus-uu-decode-yenc}).
8262 @end table
8263
8264
8265 @node Decoding Variables
8266 @subsection Decoding Variables
8267
8268 Adjective, not verb.
8269
8270 @menu
8271 * Rule Variables::              Variables that say how a file is to be viewed.
8272 * Other Decode Variables::      Other decode variables.
8273 * Uuencoding and Posting::      Variables for customizing uuencoding.
8274 @end menu
8275
8276
8277 @node Rule Variables
8278 @subsubsection Rule Variables
8279 @cindex rule variables
8280
8281 Gnus uses @dfn{rule variables} to decide how to view a file.  All these
8282 variables are of the form
8283
8284 @lisp
8285       (list '(regexp1 command2)
8286             '(regexp2 command2)
8287             ...)
8288 @end lisp
8289
8290 @table @code
8291
8292 @item gnus-uu-user-view-rules
8293 @vindex gnus-uu-user-view-rules
8294 @cindex sox
8295 This variable is consulted first when viewing files.  If you wish to use,
8296 for instance, @code{sox} to convert an @file{.au} sound file, you could
8297 say something like:
8298 @lisp
8299 (setq gnus-uu-user-view-rules
8300       (list '("\\\\.au$" "sox %s -t .aiff > /dev/audio")))
8301 @end lisp
8302
8303 @item gnus-uu-user-view-rules-end
8304 @vindex gnus-uu-user-view-rules-end
8305 This variable is consulted if Gnus couldn't make any matches from the
8306 user and default view rules.
8307
8308 @item gnus-uu-user-archive-rules
8309 @vindex gnus-uu-user-archive-rules
8310 This variable can be used to say what commands should be used to unpack
8311 archives.
8312 @end table
8313
8314
8315 @node Other Decode Variables
8316 @subsubsection Other Decode Variables
8317
8318 @table @code
8319 @vindex gnus-uu-grabbed-file-functions
8320
8321 @item gnus-uu-grabbed-file-functions
8322 All functions in this list will be called right after each file has been
8323 successfully decoded---so that you can move or view files right away,
8324 and don't have to wait for all files to be decoded before you can do
8325 anything.  Ready-made functions you can put in this list are:
8326
8327 @table @code
8328
8329 @item gnus-uu-grab-view
8330 @findex gnus-uu-grab-view
8331 View the file.
8332
8333 @item gnus-uu-grab-move
8334 @findex gnus-uu-grab-move
8335 Move the file (if you're using a saving function.)
8336 @end table
8337
8338 @item gnus-uu-be-dangerous
8339 @vindex gnus-uu-be-dangerous
8340 Specifies what to do if unusual situations arise during decoding.  If
8341 @code{nil}, be as conservative as possible.  If @code{t}, ignore things
8342 that didn't work, and overwrite existing files.  Otherwise, ask each
8343 time.
8344
8345 @item gnus-uu-ignore-files-by-name
8346 @vindex gnus-uu-ignore-files-by-name
8347 Files with name matching this regular expression won't be viewed.
8348
8349 @item gnus-uu-ignore-files-by-type
8350 @vindex gnus-uu-ignore-files-by-type
8351 Files with a @acronym{MIME} type matching this variable won't be viewed.
8352 Note that Gnus tries to guess what type the file is based on the name.
8353 @code{gnus-uu} is not a @acronym{MIME} package (yet), so this is slightly
8354 kludgey.
8355
8356 @item gnus-uu-tmp-dir
8357 @vindex gnus-uu-tmp-dir
8358 Where @code{gnus-uu} does its work.
8359
8360 @item gnus-uu-do-not-unpack-archives
8361 @vindex gnus-uu-do-not-unpack-archives
8362 Non-@code{nil} means that @code{gnus-uu} won't peek inside archives
8363 looking for files to display.
8364
8365 @item gnus-uu-view-and-save
8366 @vindex gnus-uu-view-and-save
8367 Non-@code{nil} means that the user will always be asked to save a file
8368 after viewing it.
8369
8370 @item gnus-uu-ignore-default-view-rules
8371 @vindex gnus-uu-ignore-default-view-rules
8372 Non-@code{nil} means that @code{gnus-uu} will ignore the default viewing
8373 rules.
8374
8375 @item gnus-uu-ignore-default-archive-rules
8376 @vindex gnus-uu-ignore-default-archive-rules
8377 Non-@code{nil} means that @code{gnus-uu} will ignore the default archive
8378 unpacking commands.
8379
8380 @item gnus-uu-kill-carriage-return
8381 @vindex gnus-uu-kill-carriage-return
8382 Non-@code{nil} means that @code{gnus-uu} will strip all carriage returns
8383 from articles.
8384
8385 @item gnus-uu-unmark-articles-not-decoded
8386 @vindex gnus-uu-unmark-articles-not-decoded
8387 Non-@code{nil} means that @code{gnus-uu} will mark unsuccessfully
8388 decoded articles as unread.
8389
8390 @item gnus-uu-correct-stripped-uucode
8391 @vindex gnus-uu-correct-stripped-uucode
8392 Non-@code{nil} means that @code{gnus-uu} will @emph{try} to fix
8393 uuencoded files that have had trailing spaces deleted.
8394
8395 @item gnus-uu-pre-uudecode-hook
8396 @vindex gnus-uu-pre-uudecode-hook
8397 Hook run before sending a message to @code{uudecode}.
8398
8399 @item gnus-uu-view-with-metamail
8400 @vindex gnus-uu-view-with-metamail
8401 @cindex metamail
8402 Non-@code{nil} means that @code{gnus-uu} will ignore the viewing
8403 commands defined by the rule variables and just fudge a @acronym{MIME}
8404 content type based on the file name.  The result will be fed to
8405 @code{metamail} for viewing.
8406
8407 @item gnus-uu-save-in-digest
8408 @vindex gnus-uu-save-in-digest
8409 Non-@code{nil} means that @code{gnus-uu}, when asked to save without
8410 decoding, will save in digests.  If this variable is @code{nil},
8411 @code{gnus-uu} will just save everything in a file without any
8412 embellishments.  The digesting almost conforms to RFC 1153---no easy way
8413 to specify any meaningful volume and issue numbers were found, so I
8414 simply dropped them.
8415
8416 @end table
8417
8418
8419 @node Uuencoding and Posting
8420 @subsubsection Uuencoding and Posting
8421
8422 @table @code
8423
8424 @item gnus-uu-post-include-before-composing
8425 @vindex gnus-uu-post-include-before-composing
8426 Non-@code{nil} means that @code{gnus-uu} will ask for a file to encode
8427 before you compose the article.  If this variable is @code{t}, you can
8428 either include an encoded file with @kbd{C-c C-i} or have one included
8429 for you when you post the article.
8430
8431 @item gnus-uu-post-length
8432 @vindex gnus-uu-post-length
8433 Maximum length of an article.  The encoded file will be split into how
8434 many articles it takes to post the entire file.
8435
8436 @item gnus-uu-post-threaded
8437 @vindex gnus-uu-post-threaded
8438 Non-@code{nil} means that @code{gnus-uu} will post the encoded file in a
8439 thread.  This may not be smart, as no other decoder I have seen is able
8440 to follow threads when collecting uuencoded articles.  (Well, I have
8441 seen one package that does that---@code{gnus-uu}, but somehow, I don't
8442 think that counts@dots{}) Default is @code{nil}.
8443
8444 @item gnus-uu-post-separate-description
8445 @vindex gnus-uu-post-separate-description
8446 Non-@code{nil} means that the description will be posted in a separate
8447 article.  The first article will typically be numbered (0/x).  If this
8448 variable is @code{nil}, the description the user enters will be included
8449 at the beginning of the first article, which will be numbered (1/x).
8450 Default is @code{t}.
8451
8452 @end table
8453
8454
8455 @node Viewing Files
8456 @subsection Viewing Files
8457 @cindex viewing files
8458 @cindex pseudo-articles
8459
8460 After decoding, if the file is some sort of archive, Gnus will attempt
8461 to unpack the archive and see if any of the files in the archive can be
8462 viewed.  For instance, if you have a gzipped tar file @file{pics.tar.gz}
8463 containing the files @file{pic1.jpg} and @file{pic2.gif}, Gnus will
8464 uncompress and de-tar the main file, and then view the two pictures.
8465 This unpacking process is recursive, so if the archive contains archives
8466 of archives, it'll all be unpacked.
8467
8468 Finally, Gnus will normally insert a @dfn{pseudo-article} for each
8469 extracted file into the summary buffer.  If you go to these
8470 ``articles'', you will be prompted for a command to run (usually Gnus
8471 will make a suggestion), and then the command will be run.
8472
8473 @vindex gnus-view-pseudo-asynchronously
8474 If @code{gnus-view-pseudo-asynchronously} is @code{nil}, Emacs will wait
8475 until the viewing is done before proceeding.
8476
8477 @vindex gnus-view-pseudos
8478 If @code{gnus-view-pseudos} is @code{automatic}, Gnus will not insert
8479 the pseudo-articles into the summary buffer, but view them
8480 immediately.  If this variable is @code{not-confirm}, the user won't even
8481 be asked for a confirmation before viewing is done.
8482
8483 @vindex gnus-view-pseudos-separately
8484 If @code{gnus-view-pseudos-separately} is non-@code{nil}, one
8485 pseudo-article will be created for each file to be viewed.  If
8486 @code{nil}, all files that use the same viewing command will be given as
8487 a list of parameters to that command.
8488
8489 @vindex gnus-insert-pseudo-articles
8490 If @code{gnus-insert-pseudo-articles} is non-@code{nil}, insert
8491 pseudo-articles when decoding.  It is @code{t} by default.
8492
8493 So; there you are, reading your @emph{pseudo-articles} in your
8494 @emph{virtual newsgroup} from the @emph{virtual server}; and you think:
8495 Why isn't anything real anymore? How did we get here?
8496
8497
8498 @node Article Treatment
8499 @section Article Treatment
8500
8501 Reading through this huge manual, you may have quite forgotten that the
8502 object of newsreaders is to actually, like, read what people have
8503 written.  Reading articles.  Unfortunately, people are quite bad at
8504 writing, so there are tons of functions and variables to make reading
8505 these articles easier.
8506
8507 @menu
8508 * Article Highlighting::        You want to make the article look like fruit salad.
8509 * Article Fontisizing::         Making emphasized text look nice.
8510 * Article Hiding::              You also want to make certain info go away.
8511 * Article Washing::             Lots of way-neat functions to make life better.
8512 * Article Header::              Doing various header transformations.
8513 * Article Buttons::             Click on URLs, Message-IDs, addresses and the like.
8514 * Article Button Levels::       Controlling appearance of buttons.
8515 * Article Date::                Grumble, UT!
8516 * Article Display::             Display various stuff:
8517                                 X-Face, Picons, Gravatars, Smileys.
8518 * Article Signature::           What is a signature?
8519 * Article Miscellanea::         Various other stuff.
8520 @end menu
8521
8522
8523 @node Article Highlighting
8524 @subsection Article Highlighting
8525 @cindex highlighting
8526
8527 Not only do you want your article buffer to look like fruit salad, but
8528 you want it to look like technicolor fruit salad.
8529
8530 @table @kbd
8531
8532 @item W H a
8533 @kindex W H a (Summary)
8534 @findex gnus-article-highlight
8535 @findex gnus-article-maybe-highlight
8536 Do much highlighting of the current article
8537 (@code{gnus-article-highlight}).  This function highlights header, cited
8538 text, the signature, and adds buttons to the body and the head.
8539
8540 @item W H h
8541 @kindex W H h (Summary)
8542 @findex gnus-article-highlight-headers
8543 @vindex gnus-header-face-alist
8544 Highlight the headers (@code{gnus-article-highlight-headers}).  The
8545 highlighting will be done according to the @code{gnus-header-face-alist}
8546 variable, which is a list where each element has the form
8547 @code{(@var{regexp} @var{name} @var{content})}.
8548 @var{regexp} is a regular expression for matching the
8549 header, @var{name} is the face used for highlighting the header name
8550 (@pxref{Faces and Fonts}) and @var{content} is the face for highlighting
8551 the header value.  The first match made will be used.  Note that
8552 @var{regexp} shouldn't have @samp{^} prepended---Gnus will add one.
8553
8554 @item W H c
8555 @kindex W H c (Summary)
8556 @findex gnus-article-highlight-citation
8557 Highlight cited text (@code{gnus-article-highlight-citation}).
8558
8559 Some variables to customize the citation highlights:
8560
8561 @table @code
8562 @vindex gnus-cite-parse-max-size
8563
8564 @item gnus-cite-parse-max-size
8565 If the article size in bytes is bigger than this variable (which is
8566 25000 by default), no citation highlighting will be performed.
8567
8568 @item gnus-cite-max-prefix
8569 @vindex gnus-cite-max-prefix
8570 Maximum possible length for a citation prefix (default 20).
8571
8572 @item gnus-cite-face-list
8573 @vindex gnus-cite-face-list
8574 List of faces used for highlighting citations (@pxref{Faces and Fonts}).
8575 When there are citations from multiple articles in the same message,
8576 Gnus will try to give each citation from each article its own face.
8577 This should make it easier to see who wrote what.
8578
8579 @item gnus-supercite-regexp
8580 @vindex gnus-supercite-regexp
8581 Regexp matching normal Supercite attribution lines.
8582
8583 @item gnus-supercite-secondary-regexp
8584 @vindex gnus-supercite-secondary-regexp
8585 Regexp matching mangled Supercite attribution lines.
8586
8587 @item gnus-cite-minimum-match-count
8588 @vindex gnus-cite-minimum-match-count
8589 Minimum number of identical prefixes we have to see before we believe
8590 that it's a citation.
8591
8592 @item gnus-cite-attribution-prefix
8593 @vindex gnus-cite-attribution-prefix
8594 Regexp matching the beginning of an attribution line.
8595
8596 @item gnus-cite-attribution-suffix
8597 @vindex gnus-cite-attribution-suffix
8598 Regexp matching the end of an attribution line.
8599
8600 @item gnus-cite-attribution-face
8601 @vindex gnus-cite-attribution-face
8602 Face used for attribution lines.  It is merged with the face for the
8603 cited text belonging to the attribution.
8604
8605 @item gnus-cite-ignore-quoted-from
8606 @vindex gnus-cite-ignore-quoted-from
8607 If non-@code{nil}, no citation highlighting will be performed on lines
8608 beginning with @samp{>From }.  Those lines may have been quoted by MTAs
8609 in order not to mix up with the envelope From line.  The default value
8610 is @code{t}.
8611
8612 @end table
8613
8614
8615 @item W H s
8616 @kindex W H s (Summary)
8617 @vindex gnus-signature-separator
8618 @vindex gnus-signature-face
8619 @findex gnus-article-highlight-signature
8620 Highlight the signature (@code{gnus-article-highlight-signature}).
8621 Everything after @code{gnus-signature-separator} (@pxref{Article
8622 Signature}) in an article will be considered a signature and will be
8623 highlighted with @code{gnus-signature-face}, which is @code{italic} by
8624 default.
8625
8626 @end table
8627
8628 @xref{Customizing Articles}, for how to highlight articles automatically.
8629
8630
8631 @node Article Fontisizing
8632 @subsection Article Fontisizing
8633 @cindex emphasis
8634 @cindex article emphasis
8635
8636 @findex gnus-article-emphasize
8637 @kindex W e (Summary)
8638 People commonly add emphasis to words in news articles by writing things
8639 like @samp{_this_} or @samp{*this*} or @samp{/this/}.  Gnus can make
8640 this look nicer by running the article through the @kbd{W e}
8641 (@code{gnus-article-emphasize}) command.
8642
8643 @vindex gnus-emphasis-alist
8644 How the emphasis is computed is controlled by the
8645 @code{gnus-emphasis-alist} variable.  This is an alist where the first
8646 element is a regular expression to be matched.  The second is a number
8647 that says what regular expression grouping is used to find the entire
8648 emphasized word.  The third is a number that says what regexp grouping
8649 should be displayed and highlighted.  (The text between these two
8650 groupings will be hidden.)  The fourth is the face used for
8651 highlighting.
8652
8653 @lisp
8654 (setq gnus-emphasis-alist
8655       '(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline)
8656         ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold)))
8657 @end lisp
8658
8659 @cindex slash
8660 @cindex asterisk
8661 @cindex underline
8662 @cindex /
8663 @cindex *
8664
8665 @vindex gnus-emphasis-underline
8666 @vindex gnus-emphasis-bold
8667 @vindex gnus-emphasis-italic
8668 @vindex gnus-emphasis-underline-bold
8669 @vindex gnus-emphasis-underline-italic
8670 @vindex gnus-emphasis-bold-italic
8671 @vindex gnus-emphasis-underline-bold-italic
8672 By default, there are seven rules, and they use the following faces:
8673 @code{gnus-emphasis-bold}, @code{gnus-emphasis-italic},
8674 @code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic},
8675 @code{gnus-emphasis-underline-italic},
8676 @code{gnus-emphasis-underline-bold}, and
8677 @code{gnus-emphasis-underline-bold-italic}.
8678
8679 If you want to change these faces, you can either use @kbd{M-x
8680 customize}, or you can use @code{copy-face}.  For instance, if you want
8681 to make @code{gnus-emphasis-italic} use a red face instead, you could
8682 say something like:
8683
8684 @lisp
8685 (copy-face 'red 'gnus-emphasis-italic)
8686 @end lisp
8687
8688 @vindex gnus-group-highlight-words-alist
8689
8690 If you want to highlight arbitrary words, you can use the
8691 @code{gnus-group-highlight-words-alist} variable, which uses the same
8692 syntax as @code{gnus-emphasis-alist}.  The @code{highlight-words} group
8693 parameter (@pxref{Group Parameters}) can also be used.
8694
8695 @xref{Customizing Articles}, for how to fontize articles automatically.
8696
8697
8698 @node Article Hiding
8699 @subsection Article Hiding
8700 @cindex article hiding
8701
8702 Or rather, hiding certain things in each article.  There usually is much
8703 too much cruft in most articles.
8704
8705 @table @kbd
8706
8707 @item W W a
8708 @kindex W W a (Summary)
8709 @findex gnus-article-hide
8710 Do quite a lot of hiding on the article buffer
8711 (@kbd{gnus-article-hide}).  In particular, this function will hide
8712 headers, @acronym{PGP}, cited text and the signature.
8713
8714 @item W W h
8715 @kindex W W h (Summary)
8716 @findex gnus-article-hide-headers
8717 Hide headers (@code{gnus-article-hide-headers}).  @xref{Hiding
8718 Headers}.
8719
8720 @item W W b
8721 @kindex W W b (Summary)
8722 @findex gnus-article-hide-boring-headers
8723 Hide headers that aren't particularly interesting
8724 (@code{gnus-article-hide-boring-headers}).  @xref{Hiding Headers}.
8725
8726 @item W W s
8727 @kindex W W s (Summary)
8728 @findex gnus-article-hide-signature
8729 Hide signature (@code{gnus-article-hide-signature}).  @xref{Article
8730 Signature}.
8731
8732 @item W W l
8733 @kindex W W l (Summary)
8734 @findex gnus-article-hide-list-identifiers
8735 @vindex gnus-list-identifiers
8736 Strip list identifiers specified in @code{gnus-list-identifiers}.  These
8737 are strings some mailing list servers add to the beginning of all
8738 @code{Subject} headers---for example, @samp{[zebra 4711]}.  Any leading
8739 @samp{Re: } is skipped before stripping.  @code{gnus-list-identifiers}
8740 may not contain @code{\\(..\\)}.
8741
8742 @table @code
8743
8744 @item gnus-list-identifiers
8745 @vindex gnus-list-identifiers
8746 A regular expression that matches list identifiers to be removed from
8747 subject.  This can also be a list of regular expressions.
8748
8749 @end table
8750
8751 @item W W P
8752 @kindex W W P (Summary)
8753 @findex gnus-article-hide-pem
8754 Hide @acronym{PEM} (privacy enhanced messages) cruft
8755 (@code{gnus-article-hide-pem}).
8756
8757 @item W W B
8758 @kindex W W B (Summary)
8759 @findex gnus-article-strip-banner
8760 @vindex gnus-article-banner-alist
8761 @vindex gnus-article-address-banner-alist
8762 @cindex banner
8763 @cindex OneList
8764 @cindex stripping advertisements
8765 @cindex advertisements
8766 Strip the banner specified by the @code{banner} group parameter
8767 (@code{gnus-article-strip-banner}).  This is mainly used to hide those
8768 annoying banners and/or signatures that some mailing lists and moderated
8769 groups adds to all the messages.  The way to use this function is to add
8770 the @code{banner} group parameter (@pxref{Group Parameters}) to the
8771 group you want banners stripped from.  The parameter either be a string,
8772 which will be interpreted as a regular expression matching text to be
8773 removed, or the symbol @code{signature}, meaning that the (last)
8774 signature should be removed, or other symbol, meaning that the
8775 corresponding regular expression in @code{gnus-article-banner-alist} is
8776 used.
8777
8778 For instance:
8779
8780 @lisp
8781 (setq gnus-article-banner-alist
8782       ((googleGroups .
8783        "^\n*--~--~---------\\(.+\n\\)+")))
8784 @end lisp
8785
8786 Regardless of a group, you can hide things like advertisements only when
8787 the sender of an article has a certain mail address specified in
8788 @code{gnus-article-address-banner-alist}.
8789
8790 @table @code
8791
8792 @item gnus-article-address-banner-alist
8793 @vindex gnus-article-address-banner-alist
8794 Alist of mail addresses and banners.  Each element has the form
8795 @code{(@var{address} . @var{banner})}, where @var{address} is a regexp
8796 matching a mail address in the From header, @var{banner} is one of a
8797 symbol @code{signature}, an item in @code{gnus-article-banner-alist},
8798 a regexp and @code{nil}.  If @var{address} matches author's mail
8799 address, it will remove things like advertisements.  For example, if a
8800 sender has the mail address @samp{hail@@yoo-hoo.co.jp} and there is a
8801 banner something like @samp{Do You Yoo-hoo!?} in all articles he
8802 sends, you can use the following element to remove them:
8803
8804 @lisp
8805 ("@@yoo-hoo\\.co\\.jp\\'" .
8806  "\n_+\nDo You Yoo-hoo!\\?\n.*\n.*\n")
8807 @end lisp
8808
8809 @end table
8810
8811 @item W W c
8812 @kindex W W c (Summary)
8813 @findex gnus-article-hide-citation
8814 Hide citation (@code{gnus-article-hide-citation}).  Some variables for
8815 customizing the hiding:
8816
8817 @table @code
8818
8819 @item gnus-cited-opened-text-button-line-format
8820 @itemx gnus-cited-closed-text-button-line-format
8821 @vindex gnus-cited-closed-text-button-line-format
8822 @vindex gnus-cited-opened-text-button-line-format
8823 Gnus adds buttons to show where the cited text has been hidden, and to
8824 allow toggle hiding the text.  The format of the variable is specified
8825 by these format-like variable (@pxref{Formatting Variables}).  These
8826 specs are valid:
8827
8828 @table @samp
8829 @item b
8830 Starting point of the hidden text.
8831 @item e
8832 Ending point of the hidden text.
8833 @item l
8834 Number of characters in the hidden region.
8835 @item n
8836 Number of lines of hidden text.
8837 @end table
8838
8839 @item gnus-cited-lines-visible
8840 @vindex gnus-cited-lines-visible
8841 The number of lines at the beginning of the cited text to leave
8842 shown.  This can also be a cons cell with the number of lines at the top
8843 and bottom of the text, respectively, to remain visible.
8844
8845 @end table
8846
8847 @item W W C-c
8848 @kindex W W C-c (Summary)
8849 @findex gnus-article-hide-citation-maybe
8850
8851 Hide citation (@code{gnus-article-hide-citation-maybe}) depending on the
8852 following two variables:
8853
8854 @table @code
8855 @item gnus-cite-hide-percentage
8856 @vindex gnus-cite-hide-percentage
8857 If the cited text is of a bigger percentage than this variable (default
8858 50), hide the cited text.
8859
8860 @item gnus-cite-hide-absolute
8861 @vindex gnus-cite-hide-absolute
8862 The cited text must have at least this length (default 10) before it
8863 is hidden.
8864 @end table
8865
8866 @item W W C
8867 @kindex W W C (Summary)
8868 @findex gnus-article-hide-citation-in-followups
8869 Hide cited text in articles that aren't roots
8870 (@code{gnus-article-hide-citation-in-followups}).  This isn't very
8871 useful as an interactive command, but might be a handy function to stick
8872 have happen automatically (@pxref{Customizing Articles}).
8873
8874 @end table
8875
8876 All these ``hiding'' commands are toggles, but if you give a negative
8877 prefix to these commands, they will show what they have previously
8878 hidden.  If you give a positive prefix, they will always hide.
8879
8880 Also @pxref{Article Highlighting} for further variables for
8881 citation customization.
8882
8883 @xref{Customizing Articles}, for how to hide article elements
8884 automatically.
8885
8886
8887 @node Article Washing
8888 @subsection Article Washing
8889 @cindex washing
8890 @cindex article washing
8891
8892 We call this ``article washing'' for a really good reason.  Namely, the
8893 @kbd{A} key was taken, so we had to use the @kbd{W} key instead.
8894
8895 @dfn{Washing} is defined by us as ``changing something from something to
8896 something else'', but normally results in something looking better.
8897 Cleaner, perhaps.
8898
8899 @xref{Customizing Articles}, if you want to change how Gnus displays
8900 articles by default.
8901
8902 @table @kbd
8903
8904 @item C-u g
8905 This is not really washing, it's sort of the opposite of washing.  If
8906 you type this, you see the article exactly as it exists on disk or on
8907 the server.
8908
8909 @item g
8910 Force redisplaying of the current article
8911 (@code{gnus-summary-show-article}).  This is also not really washing.
8912 If you type this, you see the article without any previously applied
8913 interactive Washing functions but with all default treatments
8914 (@pxref{Customizing Articles}).
8915
8916 @item W l
8917 @kindex W l (Summary)
8918 @findex gnus-summary-stop-page-breaking
8919 Remove page breaks from the current article
8920 (@code{gnus-summary-stop-page-breaking}).  @xref{Misc Article}, for page
8921 delimiters.
8922
8923 @item W r
8924 @kindex W r (Summary)
8925 @findex gnus-summary-caesar-message
8926 @c @icon{gnus-summary-caesar-message}
8927 Do a Caesar rotate (rot13) on the article buffer
8928 (@code{gnus-summary-caesar-message}).
8929 Unreadable articles that tell you to read them with Caesar rotate or rot13.
8930 (Typically offensive jokes and such.)
8931
8932 It's commonly called ``rot13'' because each letter is rotated 13
8933 positions in the alphabet, e. g. @samp{B} (letter #2) -> @samp{O} (letter
8934 #15).  It is sometimes referred to as ``Caesar rotate'' because Caesar
8935 is rumored to have employed this form of, uh, somewhat weak encryption.
8936
8937 @item W m
8938 @kindex W m (Summary)
8939 @findex gnus-summary-morse-message
8940 Morse decode the article buffer (@code{gnus-summary-morse-message}).
8941
8942 @item W i
8943 @kindex W i (Summary)
8944 @findex gnus-summary-idna-message
8945 Decode IDNA encoded domain names in the current articles.  IDNA
8946 encoded domain names looks like @samp{xn--bar}.  If a string remain
8947 unencoded after running invoking this, it is likely an invalid IDNA
8948 string (@samp{xn--bar} is invalid).  You must have GNU Libidn
8949 (@url{http://www.gnu.org/software/libidn/}) installed for this command
8950 to work.
8951
8952 @item W t
8953 @item t
8954 @kindex W t (Summary)
8955 @kindex t (Summary)
8956 @findex gnus-summary-toggle-header
8957 Toggle whether to display all headers in the article buffer
8958 (@code{gnus-summary-toggle-header}).
8959
8960 @item W v
8961 @kindex W v (Summary)
8962 @findex gnus-summary-verbose-headers
8963 Toggle whether to display all headers in the article buffer permanently
8964 (@code{gnus-summary-verbose-headers}).
8965
8966 @item W o
8967 @kindex W o (Summary)
8968 @findex gnus-article-treat-overstrike
8969 Treat overstrike (@code{gnus-article-treat-overstrike}).
8970
8971 @item W d
8972 @kindex W d (Summary)
8973 @findex gnus-article-treat-dumbquotes
8974 @vindex gnus-article-dumbquotes-map
8975 @cindex Smartquotes
8976 @cindex M****s*** sm*rtq**t*s
8977 @cindex Latin 1
8978 Treat M****s*** sm*rtq**t*s according to
8979 @code{gnus-article-dumbquotes-map}
8980 (@code{gnus-article-treat-dumbquotes}).  Note that this function guesses
8981 whether a character is a sm*rtq**t* or not, so it should only be used
8982 interactively.
8983
8984 Sm*rtq**t*s are M****s***'s unilateral extension to the character map in
8985 an attempt to provide more quoting characters.  If you see something
8986 like @code{\222} or @code{\264} where you're expecting some kind of
8987 apostrophe or quotation mark, then try this wash.
8988
8989 @item W U
8990 @kindex W U (Summary)
8991 @findex gnus-article-treat-non-ascii
8992 @cindex Unicode
8993 @cindex Non-@acronym{ASCII}
8994 Translate many non-@acronym{ASCII} characters into their
8995 @acronym{ASCII} equivalents (@code{gnus-article-treat-non-ascii}).
8996 This is mostly useful if you're on a terminal that has a limited font
8997 and does't show accented characters, ``advanced'' punctuation, and the
8998 like.  For instance, @samp{»} is tranlated into @samp{>>}, and so on.
8999
9000 @item W Y f
9001 @kindex W Y f (Summary)
9002 @findex gnus-article-outlook-deuglify-article
9003 @cindex Outlook Express
9004 Full deuglify of broken Outlook (Express) articles: Treat dumbquotes,
9005 unwrap lines, repair attribution and rearrange citation.
9006 (@code{gnus-article-outlook-deuglify-article}).
9007
9008 @item W Y u
9009 @kindex W Y u (Summary)
9010 @findex gnus-article-outlook-unwrap-lines
9011 @vindex gnus-outlook-deuglify-unwrap-min
9012 @vindex gnus-outlook-deuglify-unwrap-max
9013 Unwrap lines that appear to be wrapped citation lines.  You can control
9014 what lines will be unwrapped by frobbing
9015 @code{gnus-outlook-deuglify-unwrap-min} and
9016 @code{gnus-outlook-deuglify-unwrap-max}, indicating the minimum and
9017 maximum length of an unwrapped citation line.
9018 (@code{gnus-article-outlook-unwrap-lines}).
9019
9020 @item W Y a
9021 @kindex W Y a (Summary)
9022 @findex gnus-article-outlook-repair-attribution
9023 Repair a broken attribution line.@*
9024 (@code{gnus-article-outlook-repair-attribution}).
9025
9026 @item W Y c
9027 @kindex W Y c (Summary)
9028 @findex gnus-article-outlook-rearrange-citation
9029 Repair broken citations by rearranging the text.
9030 (@code{gnus-article-outlook-rearrange-citation}).
9031
9032 @item W w
9033 @kindex W w (Summary)
9034 @findex gnus-article-fill-cited-article
9035 Do word wrap (@code{gnus-article-fill-cited-article}).
9036
9037 You can give the command a numerical prefix to specify the width to use
9038 when filling.
9039
9040 @item W Q
9041 @kindex W Q (Summary)
9042 @findex gnus-article-fill-long-lines
9043 Fill long lines (@code{gnus-article-fill-long-lines}).
9044
9045 @item W C
9046 @kindex W C (Summary)
9047 @findex gnus-article-capitalize-sentences
9048 Capitalize the first word in each sentence
9049 (@code{gnus-article-capitalize-sentences}).
9050
9051 @item W c
9052 @kindex W c (Summary)
9053 @findex gnus-article-remove-cr
9054 Translate CRLF pairs (i. e., @samp{^M}s on the end of the lines) into LF
9055 (this takes care of DOS line endings), and then translate any remaining
9056 CRs into LF (this takes care of Mac line endings)
9057 (@code{gnus-article-remove-cr}).
9058
9059 @item W q
9060 @kindex W q (Summary)
9061 @findex gnus-article-de-quoted-unreadable
9062 Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}).
9063 Quoted-Printable is one common @acronym{MIME} encoding employed when
9064 sending non-@acronym{ASCII} (i.e., 8-bit) articles.  It typically
9065 makes strings like @samp{d@'ej@`a vu} look like @samp{d=E9j=E0 vu},
9066 which doesn't look very readable to me.  Note that this is usually
9067 done automatically by Gnus if the message in question has a
9068 @code{Content-Transfer-Encoding} header that says that this encoding
9069 has been done.  If a prefix is given, a charset will be asked for.
9070
9071 @item W 6
9072 @kindex W 6 (Summary)
9073 @findex gnus-article-de-base64-unreadable
9074 Treat base64 (@code{gnus-article-de-base64-unreadable}).  Base64 is
9075 one common @acronym{MIME} encoding employed when sending
9076 non-@acronym{ASCII} (i.e., 8-bit) articles.  Note that this is
9077 usually done automatically by Gnus if the message in question has a
9078 @code{Content-Transfer-Encoding} header that says that this encoding
9079 has been done.  If a prefix is given, a charset will be asked for.
9080
9081 @item W Z
9082 @kindex W Z (Summary)
9083 @findex gnus-article-decode-HZ
9084 Treat HZ or HZP (@code{gnus-article-decode-HZ}).  HZ (or HZP) is one
9085 common encoding employed when sending Chinese articles.  It typically
9086 makes strings look like @samp{~@{<:Ky2;S@{#,NpJ)l6HK!#~@}}.
9087
9088 @item W A
9089 @kindex W A (Summary)
9090 @findex gnus-article-treat-ansi-sequences
9091 @cindex @acronym{ANSI} control sequences
9092 Translate @acronym{ANSI} SGR control sequences into overlays or
9093 extents (@code{gnus-article-treat-ansi-sequences}).  @acronym{ANSI}
9094 sequences are used in some Chinese hierarchies for highlighting.
9095
9096 @item W u
9097 @kindex W u (Summary)
9098 @findex gnus-article-unsplit-urls
9099 Remove newlines from within URLs.  Some mailers insert newlines into
9100 outgoing email messages to keep lines short.  This reformatting can
9101 split long URLs onto multiple lines.  Repair those URLs by removing
9102 the newlines (@code{gnus-article-unsplit-urls}).
9103
9104 @item W h
9105 @kindex W h (Summary)
9106 @findex gnus-article-wash-html
9107 Treat @acronym{HTML} (@code{gnus-article-wash-html}).  Note that this is
9108 usually done automatically by Gnus if the message in question has a
9109 @code{Content-Type} header that says that the message is @acronym{HTML}.
9110
9111 If a prefix is given, a charset will be asked for.  If it is a number,
9112 the charset defined in @code{gnus-summary-show-article-charset-alist}
9113 (@pxref{Paging the Article}) will be used.
9114
9115 The default is to use the function specified by
9116 @code{mm-text-html-renderer} (@pxref{Display Customization, ,Display
9117 Customization, emacs-mime, The Emacs MIME Manual}) to convert the
9118 @acronym{HTML}.  Pre-defined functions you can use include:
9119
9120 @table @code
9121 @item shr
9122 Use Gnus simple html renderer.
9123
9124 @item gnus-w3m
9125 Use Gnus rendered based on w3m.
9126
9127 @item w3
9128 Use Emacs/W3.
9129
9130 @item w3m
9131 Use @uref{http://emacs-w3m.namazu.org/, emacs-w3m}.
9132
9133 @item w3m-standalone
9134 Use @uref{http://w3m.sourceforge.net/, w3m}.
9135
9136 @item links
9137 Use @uref{http://links.sf.net/, Links}.
9138
9139 @item lynx
9140 Use @uref{http://lynx.isc.org/, Lynx}.
9141
9142 @item html2text
9143 Use html2text---a simple @acronym{HTML} converter included with Gnus.
9144
9145 @end table
9146
9147 @item W b
9148 @kindex W b (Summary)
9149 @findex gnus-article-add-buttons
9150 Add clickable buttons to the article (@code{gnus-article-add-buttons}).
9151 @xref{Article Buttons}.
9152
9153 @item W B
9154 @kindex W B (Summary)
9155 @findex gnus-article-add-buttons-to-head
9156 Add clickable buttons to the article headers
9157 (@code{gnus-article-add-buttons-to-head}).
9158
9159 @item W p
9160 @kindex W p (Summary)
9161 @findex gnus-article-verify-x-pgp-sig
9162 Verify a signed control message
9163 (@code{gnus-article-verify-x-pgp-sig}).  Control messages such as
9164 @code{newgroup} and @code{checkgroups} are usually signed by the
9165 hierarchy maintainer.  You need to add the @acronym{PGP} public key of
9166 the maintainer to your keyring to verify the
9167 message.@footnote{@acronym{PGP} keys for many hierarchies are
9168 available at @uref{ftp://ftp.isc.org/pub/pgpcontrol/README.html}}
9169
9170 @item W s
9171 @kindex W s (Summary)
9172 @findex gnus-summary-force-verify-and-decrypt
9173 Verify a signed (@acronym{PGP}, @acronym{PGP/MIME} or
9174 @acronym{S/MIME}) message
9175 (@code{gnus-summary-force-verify-and-decrypt}). @xref{Security}.
9176
9177 @item W a
9178 @kindex W a (Summary)
9179 @findex gnus-article-strip-headers-in-body
9180 Strip headers like the @code{X-No-Archive} header from the beginning of
9181 article bodies (@code{gnus-article-strip-headers-in-body}).
9182
9183 @item W E l
9184 @kindex W E l (Summary)
9185 @findex gnus-article-strip-leading-blank-lines
9186 Remove all blank lines from the beginning of the article
9187 (@code{gnus-article-strip-leading-blank-lines}).
9188
9189 @item W E m
9190 @kindex W E m (Summary)
9191 @findex gnus-article-strip-multiple-blank-lines
9192 Replace all blank lines with empty lines and then all multiple empty
9193 lines with a single empty line.
9194 (@code{gnus-article-strip-multiple-blank-lines}).
9195
9196 @item W E t
9197 @kindex W E t (Summary)
9198 @findex gnus-article-remove-trailing-blank-lines
9199 Remove all blank lines at the end of the article
9200 (@code{gnus-article-remove-trailing-blank-lines}).
9201
9202 @item W E a
9203 @kindex W E a (Summary)
9204 @findex gnus-article-strip-blank-lines
9205 Do all the three commands above
9206 (@code{gnus-article-strip-blank-lines}).
9207
9208 @item W E A
9209 @kindex W E A (Summary)
9210 @findex gnus-article-strip-all-blank-lines
9211 Remove all blank lines
9212 (@code{gnus-article-strip-all-blank-lines}).
9213
9214 @item W E s
9215 @kindex W E s (Summary)
9216 @findex gnus-article-strip-leading-space
9217 Remove all white space from the beginning of all lines of the article
9218 body (@code{gnus-article-strip-leading-space}).
9219
9220 @item W E e
9221 @kindex W E e (Summary)
9222 @findex gnus-article-strip-trailing-space
9223 Remove all white space from the end of all lines of the article
9224 body (@code{gnus-article-strip-trailing-space}).
9225
9226 @end table
9227
9228 @xref{Customizing Articles}, for how to wash articles automatically.
9229
9230
9231 @node Article Header
9232 @subsection Article Header
9233
9234 These commands perform various transformations of article header.
9235
9236 @table @kbd
9237
9238 @item W G u
9239 @kindex W G u (Summary)
9240 @findex gnus-article-treat-unfold-headers
9241 Unfold folded header lines (@code{gnus-article-treat-unfold-headers}).
9242
9243 @item W G n
9244 @kindex W G n (Summary)
9245 @findex gnus-article-treat-fold-newsgroups
9246 Fold the @code{Newsgroups} and @code{Followup-To} headers
9247 (@code{gnus-article-treat-fold-newsgroups}).
9248
9249 @item W G f
9250 @kindex W G f (Summary)
9251 @findex gnus-article-treat-fold-headers
9252 Fold all the message headers
9253 (@code{gnus-article-treat-fold-headers}).
9254
9255 @item W E w
9256 @kindex W E w (Summary)
9257 @findex gnus-article-remove-leading-whitespace
9258 Remove excessive whitespace from all headers
9259 (@code{gnus-article-remove-leading-whitespace}).
9260
9261 @end table
9262
9263
9264 @node Article Buttons
9265 @subsection Article Buttons
9266 @cindex buttons
9267
9268 People often include references to other stuff in articles, and it would
9269 be nice if Gnus could just fetch whatever it is that people talk about
9270 with the minimum of fuzz when you hit @kbd{RET} or use the middle mouse
9271 button on these references.
9272
9273 @vindex gnus-button-man-handler
9274 Gnus adds @dfn{buttons} to certain standard references by default:
9275 Well-formed URLs, mail addresses, Message-IDs, Info links, man pages and
9276 Emacs or Gnus related references.  This is controlled by two variables,
9277 one that handles article bodies and one that handles article heads:
9278
9279 @table @code
9280
9281 @item gnus-button-alist
9282 @vindex gnus-button-alist
9283 This is an alist where each entry has this form:
9284
9285 @lisp
9286 (@var{regexp} @var{button-par} @var{use-p} @var{function} @var{data-par})
9287 @end lisp
9288
9289 @table @var
9290
9291 @item regexp
9292 All text that match this regular expression (case insensitive) will be
9293 considered an external reference.  Here's a typical regexp that matches
9294 embedded URLs: @samp{<URL:\\([^\n\r>]*\\)>}.  This can also be a
9295 variable containing a regexp, useful variables to use include
9296 @code{gnus-button-url-regexp} and @code{gnus-button-mid-or-mail-regexp}.
9297
9298 @item button-par
9299 Gnus has to know which parts of the matches is to be highlighted.  This
9300 is a number that says what sub-expression of the regexp is to be
9301 highlighted.  If you want it all highlighted, you use 0 here.
9302
9303 @item use-p
9304 This form will be @code{eval}ed, and if the result is non-@code{nil},
9305 this is considered a match.  This is useful if you want extra sifting to
9306 avoid false matches.  Often variables named
9307 @code{gnus-button-@var{*}-level} are used here, @xref{Article Button
9308 Levels}, but any other form may be used too.
9309
9310 @c @code{use-p} is @code{eval}ed only if @code{regexp} matches.
9311
9312 @item function
9313 This function will be called when you click on this button.
9314
9315 @item data-par
9316 As with @var{button-par}, this is a sub-expression number, but this one
9317 says which part of the match is to be sent as data to @var{function}.
9318
9319 @end table
9320
9321 So the full entry for buttonizing URLs is then
9322
9323 @lisp
9324 ("<URL:\\([^\n\r>]*\\)>" 0 t gnus-button-url 1)
9325 @end lisp
9326
9327 @item gnus-header-button-alist
9328 @vindex gnus-header-button-alist
9329 This is just like the other alist, except that it is applied to the
9330 article head only, and that each entry has an additional element that is
9331 used to say what headers to apply the buttonize coding to:
9332
9333 @lisp
9334 (@var{header} @var{regexp} @var{button-par} @var{use-p} @var{function} @var{data-par})
9335 @end lisp
9336
9337 @var{header} is a regular expression.
9338 @end table
9339
9340 @subsubsection Related variables and functions
9341
9342 @table @code
9343 @item gnus-button-@var{*}-level
9344 @xref{Article Button Levels}.
9345
9346 @c Stuff related to gnus-button-browse-level
9347
9348 @item gnus-button-url-regexp
9349 @vindex gnus-button-url-regexp
9350 A regular expression that matches embedded URLs.  It is used in the
9351 default values of the variables above.
9352
9353 @c Stuff related to gnus-button-man-level
9354
9355 @item gnus-button-man-handler
9356 @vindex gnus-button-man-handler
9357 The function to use for displaying man pages.  It must take at least one
9358 argument with a string naming the man page.
9359
9360 @c Stuff related to gnus-button-message-level
9361
9362 @item gnus-button-mid-or-mail-regexp
9363 @vindex gnus-button-mid-or-mail-regexp
9364 Regular expression that matches a message ID or a mail address.
9365
9366 @item gnus-button-prefer-mid-or-mail
9367 @vindex gnus-button-prefer-mid-or-mail
9368 This variable determines what to do when the button on a string as
9369 @samp{foo123@@bar.invalid} is pushed.  Strings like this can be either a
9370 message ID or a mail address.  If it is one of the symbols @code{mid} or
9371 @code{mail}, Gnus will always assume that the string is a message ID or
9372 a mail address, respectively.  If this variable is set to the symbol
9373 @code{ask}, always query the user what to do.  If it is a function, this
9374 function will be called with the string as its only argument.  The
9375 function must return @code{mid}, @code{mail}, @code{invalid} or
9376 @code{ask}.  The default value is the function
9377 @code{gnus-button-mid-or-mail-heuristic}.
9378
9379 @item gnus-button-mid-or-mail-heuristic
9380 @findex gnus-button-mid-or-mail-heuristic
9381 Function that guesses whether its argument is a message ID or a mail
9382 address.  Returns @code{mid} if it's a message IDs, @code{mail} if
9383 it's a mail address, @code{ask} if unsure and @code{invalid} if the
9384 string is invalid.
9385
9386 @item gnus-button-mid-or-mail-heuristic-alist
9387 @vindex gnus-button-mid-or-mail-heuristic-alist
9388 An alist of @code{(RATE . REGEXP)} pairs used by the function
9389 @code{gnus-button-mid-or-mail-heuristic}.
9390
9391 @c Misc stuff
9392
9393 @item gnus-article-button-face
9394 @vindex gnus-article-button-face
9395 Face used on buttons.
9396
9397 @item gnus-article-mouse-face
9398 @vindex gnus-article-mouse-face
9399 Face used when the mouse cursor is over a button.
9400
9401 @end table
9402
9403 @xref{Customizing Articles}, for how to buttonize articles automatically.
9404
9405
9406 @node Article Button Levels
9407 @subsection Article button levels
9408 @cindex button levels
9409 The higher the value of the variables @code{gnus-button-@var{*}-level},
9410 the more buttons will appear.  If the level is zero, no corresponding
9411 buttons are displayed.  With the default value (which is 5) you should
9412 already see quite a lot of buttons.  With higher levels, you will see
9413 more buttons, but you may also get more false positives.  To avoid them,
9414 you can set the variables @code{gnus-button-@var{*}-level} local to
9415 specific groups (@pxref{Group Parameters}).  Here's an example for the
9416 variable @code{gnus-parameters}:
9417
9418 @lisp
9419 ;; @r{increase @code{gnus-button-*-level} in some groups:}
9420 (setq gnus-parameters
9421       '(("\\<\\(emacs\\|gnus\\)\\>" (gnus-button-emacs-level 10))
9422         ("\\<unix\\>"               (gnus-button-man-level 10))
9423         ("\\<tex\\>"                (gnus-button-tex-level 10))))
9424 @end lisp
9425
9426 @table @code
9427
9428 @item gnus-button-browse-level
9429 @vindex gnus-button-browse-level
9430 Controls the display of references to message IDs, mail addresses and
9431 news URLs.  Related variables and functions include
9432 @code{gnus-button-url-regexp}, @code{browse-url}, and
9433 @code{browse-url-browser-function}.
9434
9435 @item gnus-button-emacs-level
9436 @vindex gnus-button-emacs-level
9437 Controls the display of Emacs or Gnus references.  Related functions are
9438 @code{gnus-button-handle-custom},
9439 @code{gnus-button-handle-describe-function},
9440 @code{gnus-button-handle-describe-variable},
9441 @code{gnus-button-handle-symbol},
9442 @code{gnus-button-handle-describe-key},
9443 @code{gnus-button-handle-apropos},
9444 @code{gnus-button-handle-apropos-command},
9445 @code{gnus-button-handle-apropos-variable},
9446 @code{gnus-button-handle-apropos-documentation}, and
9447 @code{gnus-button-handle-library}.
9448
9449 @item gnus-button-man-level
9450 @vindex gnus-button-man-level
9451 Controls the display of references to (Unix) man pages.
9452 See @code{gnus-button-man-handler}.
9453
9454 @item gnus-button-message-level
9455 @vindex gnus-button-message-level
9456 Controls the display of message IDs, mail addresses and news URLs.
9457 Related variables and functions include
9458 @code{gnus-button-mid-or-mail-regexp},
9459 @code{gnus-button-prefer-mid-or-mail},
9460 @code{gnus-button-mid-or-mail-heuristic}, and
9461 @code{gnus-button-mid-or-mail-heuristic-alist}.
9462
9463 @end table
9464
9465
9466 @node Article Date
9467 @subsection Article Date
9468
9469 The date is most likely generated in some obscure timezone you've never
9470 heard of, so it's quite nice to be able to find out what the time was
9471 when the article was sent.
9472
9473 @table @kbd
9474
9475 @item W T u
9476 @kindex W T u (Summary)
9477 @findex gnus-article-date-ut
9478 Display the date in UT (aka. GMT, aka ZULU)
9479 (@code{gnus-article-date-ut}).
9480
9481 @item W T i
9482 @kindex W T i (Summary)
9483 @findex gnus-article-date-iso8601
9484 @cindex ISO 8601
9485 Display the date in international format, aka. ISO 8601
9486 (@code{gnus-article-date-iso8601}).
9487
9488 @item W T l
9489 @kindex W T l (Summary)
9490 @findex gnus-article-date-local
9491 Display the date in the local timezone (@code{gnus-article-date-local}).
9492
9493 @item W T p
9494 @kindex W T p (Summary)
9495 @findex gnus-article-date-english
9496 Display the date in a format that's easily pronounceable in English
9497 (@code{gnus-article-date-english}).
9498
9499 @item W T s
9500 @kindex W T s (Summary)
9501 @vindex gnus-article-time-format
9502 @findex gnus-article-date-user
9503 @findex format-time-string
9504 Display the date using a user-defined format
9505 (@code{gnus-article-date-user}).  The format is specified by the
9506 @code{gnus-article-time-format} variable, and is a string that's passed
9507 to @code{format-time-string}.  See the documentation of that variable
9508 for a list of possible format specs.
9509
9510 @item W T e
9511 @kindex W T e (Summary)
9512 @findex gnus-article-date-lapsed
9513 @findex gnus-start-date-timer
9514 @findex gnus-stop-date-timer
9515 Say how much time has elapsed between the article was posted and now
9516 (@code{gnus-article-date-lapsed}).  It looks something like:
9517
9518 @example
9519 Date: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago
9520 @end example
9521
9522 This line is updated continually by default.  The frequency (in
9523 seconds) is controlled by the @code{gnus-article-update-date-headers}
9524 variable.
9525
9526 If you wish to switch updating off, say:
9527
9528 @vindex gnus-article-update-date-headers
9529 @lisp
9530 (setq gnus-article-update-date-headers nil)
9531 @end lisp
9532
9533 in your @file{~/.gnus.el} file.
9534
9535 @item W T o
9536 @kindex W T o (Summary)
9537 @findex gnus-article-date-original
9538 Display the original date (@code{gnus-article-date-original}).  This can
9539 be useful if you normally use some other conversion function and are
9540 worried that it might be doing something totally wrong.  Say, claiming
9541 that the article was posted in 1854.  Although something like that is
9542 @emph{totally} impossible.  Don't you trust me? *titter*
9543
9544 @end table
9545
9546 @xref{Customizing Articles}, for how to display the date in your
9547 preferred format automatically.
9548
9549
9550 @node Article Display
9551 @subsection Article Display
9552 @cindex picons
9553 @cindex x-face
9554 @cindex smileys
9555 @cindex gravatars
9556
9557 These commands add various frivolous display gimmicks to the article
9558 buffer in Emacs versions that support them.
9559
9560 @code{X-Face} headers are small black-and-white images supplied by the
9561 message headers (@pxref{X-Face}).
9562
9563 @code{Face} headers are small colored images supplied by the message
9564 headers (@pxref{Face}).
9565
9566 Smileys are those little @samp{:-)} symbols that people like to litter
9567 their messages with (@pxref{Smileys}).
9568
9569 Picons, on the other hand, reside on your own system, and Gnus will
9570 try to match the headers to what you have (@pxref{Picons}).
9571
9572 Gravatars reside on-line and are fetched from
9573 @uref{http://www.gravatar.com/} (@pxref{Gravatars}).
9574
9575 All these functions are toggles---if the elements already exist,
9576 they'll be removed.
9577
9578 @table @kbd
9579 @item W D x
9580 @kindex W D x (Summary)
9581 @findex gnus-article-display-x-face
9582 Display an @code{X-Face} in the @code{From} header.
9583 (@code{gnus-article-display-x-face}).
9584
9585 @item W D d
9586 @kindex W D d (Summary)
9587 @findex gnus-article-display-face
9588 Display a @code{Face} in the @code{From} header.
9589 (@code{gnus-article-display-face}).
9590
9591 @item W D s
9592 @kindex W D s (Summary)
9593 @findex gnus-treat-smiley
9594 Display smileys (@code{gnus-treat-smiley}).
9595
9596 @item W D f
9597 @kindex W D f (Summary)
9598 @findex gnus-treat-from-picon
9599 Piconify the @code{From} header (@code{gnus-treat-from-picon}).
9600
9601 @item W D m
9602 @kindex W D m (Summary)
9603 @findex gnus-treat-mail-picon
9604 Piconify all mail headers (i. e., @code{Cc}, @code{To})
9605 (@code{gnus-treat-mail-picon}).
9606
9607 @item W D n
9608 @kindex W D n (Summary)
9609 @findex gnus-treat-newsgroups-picon
9610 Piconify all news headers (i. e., @code{Newsgroups} and
9611 @code{Followup-To}) (@code{gnus-treat-newsgroups-picon}).
9612
9613 @item W D g
9614 @kindex W D g (Summary)
9615 @findex gnus-treat-from-gravatar
9616 Gravatarify the @code{From} header (@code{gnus-treat-from-gravatar}).
9617
9618 @item W D h
9619 @kindex W D h (Summary)
9620 @findex gnus-treat-mail-gravatar
9621 Gravatarify all mail headers (i. e., @code{Cc}, @code{To})
9622 (@code{gnus-treat-from-gravatar}).
9623
9624 @item W D D
9625 @kindex W D D (Summary)
9626 @findex gnus-article-remove-images
9627 Remove all images from the article buffer
9628 (@code{gnus-article-remove-images}).
9629
9630 @item W D W
9631 @kindex W D W (Summary)
9632 @findex gnus-html-show-images
9633 If you're reading an @acronym{HTML} article rendered with
9634 @code{gnus-article-html}, then you can insert any blocked images in
9635 the buffer with this command.
9636 (@code{gnus-html-show-images}).
9637
9638 @end table
9639
9640
9641
9642 @node Article Signature
9643 @subsection Article Signature
9644 @cindex signatures
9645 @cindex article signature
9646
9647 @vindex gnus-signature-separator
9648 Each article is divided into two parts---the head and the body.  The
9649 body can be divided into a signature part and a text part.  The variable
9650 that says what is to be considered a signature is
9651 @code{gnus-signature-separator}.  This is normally the standard
9652 @samp{^-- $} as mandated by son-of-RFC 1036.  However, many people use
9653 non-standard signature separators, so this variable can also be a list
9654 of regular expressions to be tested, one by one.  (Searches are done
9655 from the end of the body towards the beginning.)  One likely value is:
9656
9657 @lisp
9658 (setq gnus-signature-separator
9659       '("^-- $"         ; @r{The standard}
9660         "^-- *$"        ; @r{A common mangling}
9661         "^-------*$"    ; @r{Many people just use a looong}
9662                         ; @r{line of dashes.  Shame!}
9663         "^ *--------*$" ; @r{Double-shame!}
9664         "^________*$"   ; @r{Underscores are also popular}
9665         "^========*$")) ; @r{Pervert!}
9666 @end lisp
9667
9668 The more permissive you are, the more likely it is that you'll get false
9669 positives.
9670
9671 @vindex gnus-signature-limit
9672 @code{gnus-signature-limit} provides a limit to what is considered a
9673 signature when displaying articles.
9674
9675 @enumerate
9676 @item
9677 If it is an integer, no signature may be longer (in characters) than
9678 that integer.
9679 @item
9680 If it is a floating point number, no signature may be longer (in lines)
9681 than that number.
9682 @item
9683 If it is a function, the function will be called without any parameters,
9684 and if it returns @code{nil}, there is no signature in the buffer.
9685 @item
9686 If it is a string, it will be used as a regexp.  If it matches, the text
9687 in question is not a signature.
9688 @end enumerate
9689
9690 This variable can also be a list where the elements may be of the types
9691 listed above.  Here's an example:
9692
9693 @lisp
9694 (setq gnus-signature-limit
9695       '(200.0 "^---*Forwarded article"))
9696 @end lisp
9697
9698 This means that if there are more than 200 lines after the signature
9699 separator, or the text after the signature separator is matched by
9700 the regular expression @samp{^---*Forwarded article}, then it isn't a
9701 signature after all.
9702
9703
9704 @node Article Miscellanea
9705 @subsection Article Miscellanea
9706
9707 @table @kbd
9708 @item A t
9709 @kindex A t (Summary)
9710 @findex gnus-article-babel
9711 Translate the article from one language to another
9712 (@code{gnus-article-babel}).
9713
9714 @end table
9715
9716
9717 @node MIME Commands
9718 @section MIME Commands
9719 @cindex MIME decoding
9720 @cindex attachments
9721 @cindex viewing attachments
9722
9723 The following commands all understand the numerical prefix.  For
9724 instance, @kbd{3 K v} means ``view the third @acronym{MIME} part''.
9725
9726 @table @kbd
9727 @item b
9728 @itemx K v
9729 @kindex b (Summary)
9730 @kindex K v (Summary)
9731 View the @acronym{MIME} part.
9732
9733 @item K o
9734 @kindex K o (Summary)
9735 Save the @acronym{MIME} part.
9736
9737 @item K O
9738 @kindex K O (Summary)
9739 Prompt for a file name, then save the @acronym{MIME} part and strip it
9740 from the article.  The stripped @acronym{MIME} object will be referred
9741 via the message/external-body @acronym{MIME} type.
9742
9743 @item K r
9744 @kindex K r (Summary)
9745 Replace the @acronym{MIME} part with an external body.
9746
9747 @item K d
9748 @kindex K d (Summary)
9749 Delete the @acronym{MIME} part and add some information about the
9750 removed part.
9751
9752 @item K c
9753 @kindex K c (Summary)
9754 Copy the @acronym{MIME} part.
9755
9756 @item K e
9757 @kindex K e (Summary)
9758 View the @acronym{MIME} part externally.
9759
9760 @item K i
9761 @kindex K i (Summary)
9762 View the @acronym{MIME} part internally.
9763
9764 @item K |
9765 @kindex K | (Summary)
9766 Pipe the @acronym{MIME} part to an external command.
9767 @end table
9768
9769 The rest of these @acronym{MIME} commands do not use the numerical prefix in
9770 the same manner:
9771
9772 @table @kbd
9773 @item K H
9774 @kindex K H (Summary)
9775 @findex gnus-article-browse-html-article
9776 View @samp{text/html} parts of the current article with a WWW browser.
9777 Inline images embedded in a message using the @code{cid} scheme, as they
9778 are generally considered to be safe, will be processed properly.  The
9779 message header is added to the beginning of every @acronym{HTML} part
9780 unless the prefix argument is given.
9781
9782 Warning: Spammers use links to images (using the @code{http} scheme) in
9783 @acronym{HTML} articles to verify whether you have read the message.  As
9784 this command passes the @acronym{HTML} content to the browser without
9785 eliminating these ``web bugs'' you should only use it for mails from
9786 trusted senders.
9787
9788 If you always want to display @acronym{HTML} parts in the browser, set
9789 @code{mm-text-html-renderer} to @code{nil}.
9790
9791 This command creates temporary files to pass @acronym{HTML} contents
9792 including images if any to the browser, and deletes them when exiting
9793 the group (if you want).
9794
9795 @item K b
9796 @kindex K b (Summary)
9797 Make all the @acronym{MIME} parts have buttons in front of them.  This is
9798 mostly useful if you wish to save (or perform other actions) on inlined
9799 parts.
9800
9801 @item K m
9802 @kindex K m (Summary)
9803 @findex gnus-summary-repair-multipart
9804 Some multipart messages are transmitted with missing or faulty headers.
9805 This command will attempt to ``repair'' these messages so that they can
9806 be viewed in a more pleasant manner
9807 (@code{gnus-summary-repair-multipart}).
9808
9809 @item X m
9810 @kindex X m (Summary)
9811 @findex gnus-summary-save-parts
9812 Save all parts matching a @acronym{MIME} type to a directory
9813 (@code{gnus-summary-save-parts}).  Understands the process/prefix
9814 convention (@pxref{Process/Prefix}).
9815
9816 @item M-t
9817 @kindex M-t (Summary)
9818 @findex gnus-summary-toggle-display-buttonized
9819 Toggle the buttonized display of the article buffer
9820 (@code{gnus-summary-toggle-display-buttonized}).
9821
9822 @item W M w
9823 @kindex W M w (Summary)
9824 @findex gnus-article-decode-mime-words
9825 Decode RFC 2047-encoded words in the article headers
9826 (@code{gnus-article-decode-mime-words}).
9827
9828 @item W M c
9829 @kindex W M c (Summary)
9830 @findex gnus-article-decode-charset
9831 Decode encoded article bodies as well as charsets
9832 (@code{gnus-article-decode-charset}).
9833
9834 This command looks in the @code{Content-Type} header to determine the
9835 charset.  If there is no such header in the article, you can give it a
9836 prefix, which will prompt for the charset to decode as.  In regional
9837 groups where people post using some common encoding (but do not
9838 include @acronym{MIME} headers), you can set the @code{charset} group/topic
9839 parameter to the required charset (@pxref{Group Parameters}).
9840
9841 @item W M v
9842 @kindex W M v (Summary)
9843 @findex gnus-mime-view-all-parts
9844 View all the @acronym{MIME} parts in the current article
9845 (@code{gnus-mime-view-all-parts}).
9846
9847 @end table
9848
9849 Relevant variables:
9850
9851 @table @code
9852 @item gnus-ignored-mime-types
9853 @vindex gnus-ignored-mime-types
9854 This is a list of regexps.  @acronym{MIME} types that match a regexp from
9855 this list will be completely ignored by Gnus.  The default value is
9856 @code{nil}.
9857
9858 To have all Vcards be ignored, you'd say something like this:
9859
9860 @lisp
9861 (setq gnus-ignored-mime-types
9862       '("text/x-vcard"))
9863 @end lisp
9864
9865 @item gnus-article-loose-mime
9866 @vindex gnus-article-loose-mime
9867 If non-@code{nil}, Gnus won't require the @samp{MIME-Version} header
9868 before interpreting the message as a @acronym{MIME} message.  This helps
9869 when reading messages from certain broken mail user agents.  The
9870 default is @code{t}.
9871
9872 @item gnus-article-emulate-mime
9873 @vindex gnus-article-emulate-mime
9874 @cindex uuencode
9875 @cindex yEnc
9876 There are other, non-@acronym{MIME} encoding methods used.  The most common
9877 is @samp{uuencode}, but yEncode is also getting to be popular.  If
9878 this variable is non-@code{nil}, Gnus will look in message bodies to
9879 see if it finds these encodings, and if so, it'll run them through the
9880 Gnus @acronym{MIME} machinery.  The default is @code{t}.  Only
9881 single-part yEnc encoded attachments can be decoded.  There's no support
9882 for encoding in Gnus.
9883
9884 @item gnus-unbuttonized-mime-types
9885 @vindex gnus-unbuttonized-mime-types
9886 This is a list of regexps.  @acronym{MIME} types that match a regexp from
9887 this list won't have @acronym{MIME} buttons inserted unless they aren't
9888 displayed or this variable is overridden by
9889 @code{gnus-buttonized-mime-types}.  The default value is
9890 @code{(".*/.*")}.  This variable is only used when
9891 @code{gnus-inhibit-mime-unbuttonizing} is @code{nil}.
9892
9893 @item gnus-buttonized-mime-types
9894 @vindex gnus-buttonized-mime-types
9895 This is a list of regexps.  @acronym{MIME} types that match a regexp from
9896 this list will have @acronym{MIME} buttons inserted unless they aren't
9897 displayed.  This variable overrides
9898 @code{gnus-unbuttonized-mime-types}.  The default value is @code{nil}.
9899 This variable is only used when @code{gnus-inhibit-mime-unbuttonizing}
9900 is @code{nil}.
9901
9902 To see e.g. security buttons but no other buttons, you could set this
9903 variable to @code{("multipart/signed")} and leave
9904 @code{gnus-unbuttonized-mime-types} at the default value.
9905
9906 You could also add @code{"multipart/alternative"} to this list to
9907 display radio buttons that allow you to choose one of two media types
9908 those mails include.  See also @code{mm-discouraged-alternatives}
9909 (@pxref{Display Customization, ,Display Customization, emacs-mime, The
9910 Emacs MIME Manual}).
9911
9912 @item gnus-inhibit-mime-unbuttonizing
9913 @vindex gnus-inhibit-mime-unbuttonizing
9914 If this is non-@code{nil}, then all @acronym{MIME} parts get buttons.  The
9915 default value is @code{nil}.
9916
9917 @item gnus-article-mime-part-function
9918 @vindex gnus-article-mime-part-function
9919 For each @acronym{MIME} part, this function will be called with the @acronym{MIME}
9920 handle as the parameter.  The function is meant to be used to allow
9921 users to gather information from the article (e. g., add Vcard info to
9922 the bbdb database) or to do actions based on parts (e. g., automatically
9923 save all jpegs into some directory).
9924
9925 Here's an example function the does the latter:
9926
9927 @lisp
9928 (defun my-save-all-jpeg-parts (handle)
9929   (when (equal (car (mm-handle-type handle)) "image/jpeg")
9930     (with-temp-buffer
9931       (insert (mm-get-part handle))
9932       (write-region (point-min) (point-max)
9933                     (read-file-name "Save jpeg to: ")))))
9934 (setq gnus-article-mime-part-function
9935       'my-save-all-jpeg-parts)
9936 @end lisp
9937
9938 @vindex gnus-mime-multipart-functions
9939 @item gnus-mime-multipart-functions
9940 Alist of @acronym{MIME} multipart types and functions to handle them.
9941
9942 @vindex gnus-mime-display-multipart-alternative-as-mixed
9943 @item gnus-mime-display-multipart-alternative-as-mixed
9944 Display "multipart/alternative" parts as "multipart/mixed".
9945
9946 @vindex gnus-mime-display-multipart-related-as-mixed
9947 @item gnus-mime-display-multipart-related-as-mixed
9948 Display "multipart/related" parts as "multipart/mixed".
9949
9950 If displaying @samp{text/html} is discouraged, see
9951 @code{mm-discouraged-alternatives}, images or other material inside a
9952 "multipart/related" part might be overlooked when this variable is
9953 @code{nil}.  @ref{Display Customization, Display Customization, ,
9954 emacs-mime, Emacs-Mime Manual}.
9955
9956 @vindex gnus-mime-display-multipart-as-mixed
9957 @item gnus-mime-display-multipart-as-mixed
9958 Display "multipart" parts as "multipart/mixed".  If @code{t}, it
9959 overrides @code{nil} values of
9960 @code{gnus-mime-display-multipart-alternative-as-mixed} and
9961 @code{gnus-mime-display-multipart-related-as-mixed}.
9962
9963 @vindex mm-file-name-rewrite-functions
9964 @item mm-file-name-rewrite-functions
9965 List of functions used for rewriting file names of @acronym{MIME} parts.
9966 Each function takes a file name as input and returns a file name.
9967
9968 Ready-made functions include@*
9969 @code{mm-file-name-delete-whitespace},
9970 @code{mm-file-name-trim-whitespace},
9971 @code{mm-file-name-collapse-whitespace}, and
9972 @code{mm-file-name-replace-whitespace}.  The later uses the value of
9973 the variable @code{mm-file-name-replace-whitespace} to replace each
9974 whitespace character in a file name with that string; default value
9975 is @code{"_"} (a single underscore).
9976 @findex mm-file-name-delete-whitespace
9977 @findex mm-file-name-trim-whitespace
9978 @findex mm-file-name-collapse-whitespace
9979 @findex mm-file-name-replace-whitespace
9980 @vindex mm-file-name-replace-whitespace
9981
9982 The standard functions @code{capitalize}, @code{downcase},
9983 @code{upcase}, and @code{upcase-initials} may be useful, too.
9984
9985 Everybody knows that whitespace characters in file names are evil,
9986 except those who don't know.  If you receive lots of attachments from
9987 such unenlightened users, you can make live easier by adding
9988
9989 @lisp
9990 (setq mm-file-name-rewrite-functions
9991       '(mm-file-name-trim-whitespace
9992         mm-file-name-collapse-whitespace
9993         mm-file-name-replace-whitespace))
9994 @end lisp
9995
9996 @noindent
9997 to your @file{~/.gnus.el} file.
9998
9999 @end table
10000
10001
10002 @node Charsets
10003 @section Charsets
10004 @cindex charsets
10005
10006 People use different charsets, and we have @acronym{MIME} to let us know what
10007 charsets they use.  Or rather, we wish we had.  Many people use
10008 newsreaders and mailers that do not understand or use @acronym{MIME}, and
10009 just send out messages without saying what character sets they use.  To
10010 help a bit with this, some local news hierarchies have policies that say
10011 what character set is the default.  For instance, the @samp{fj}
10012 hierarchy uses @code{iso-2022-jp}.
10013
10014 @vindex gnus-group-charset-alist
10015 This knowledge is encoded in the @code{gnus-group-charset-alist}
10016 variable, which is an alist of regexps (use the first item to match full
10017 group names) and default charsets to be used when reading these groups.
10018
10019 @vindex gnus-newsgroup-ignored-charsets
10020 In addition, some people do use soi-disant @acronym{MIME}-aware agents that
10021 aren't.  These blithely mark messages as being in @code{iso-8859-1}
10022 even if they really are in @code{koi-8}.  To help here, the
10023 @code{gnus-newsgroup-ignored-charsets} variable can be used.  The
10024 charsets that are listed here will be ignored.  The variable can be
10025 set on a group-by-group basis using the group parameters (@pxref{Group
10026 Parameters}).  The default value is @code{(unknown-8bit x-unknown)},
10027 which includes values some agents insist on having in there.
10028
10029 @vindex gnus-group-posting-charset-alist
10030 When posting, @code{gnus-group-posting-charset-alist} is used to
10031 determine which charsets should not be encoded using the @acronym{MIME}
10032 encodings.  For instance, some hierarchies discourage using
10033 quoted-printable header encoding.
10034
10035 This variable is an alist of regexps and permitted unencoded charsets
10036 for posting.  Each element of the alist has the form @code{(}@var{test
10037 header body-list}@code{)}, where:
10038
10039 @table @var
10040 @item test
10041 is either a regular expression matching the newsgroup header or a
10042 variable to query,
10043 @item header
10044 is the charset which may be left unencoded in the header (@code{nil}
10045 means encode all charsets),
10046 @item body-list
10047 is a list of charsets which may be encoded using 8bit content-transfer
10048 encoding in the body, or one of the special values @code{nil} (always
10049 encode using quoted-printable) or @code{t} (always use 8bit).
10050 @end table
10051
10052 @cindex Russian
10053 @cindex koi8-r
10054 @cindex koi8-u
10055 @cindex iso-8859-5
10056 @cindex coding system aliases
10057 @cindex preferred charset
10058
10059 @xref{Encoding Customization, , Encoding Customization, emacs-mime,
10060 The Emacs MIME Manual}, for additional variables that control which
10061 MIME charsets are used when sending messages.
10062
10063 Other charset tricks that may be useful, although not Gnus-specific:
10064
10065 If there are several @acronym{MIME} charsets that encode the same Emacs
10066 charset, you can choose what charset to use by saying the following:
10067
10068 @lisp
10069 (put-charset-property 'cyrillic-iso8859-5
10070                       'preferred-coding-system 'koi8-r)
10071 @end lisp
10072
10073 This means that Russian will be encoded using @code{koi8-r} instead of
10074 the default @code{iso-8859-5} @acronym{MIME} charset.
10075
10076 If you want to read messages in @code{koi8-u}, you can cheat and say
10077
10078 @lisp
10079 (define-coding-system-alias 'koi8-u 'koi8-r)
10080 @end lisp
10081
10082 This will almost do the right thing.
10083
10084 And finally, to read charsets like @code{windows-1251}, you can say
10085 something like
10086
10087 @lisp
10088 (codepage-setup 1251)
10089 (define-coding-system-alias 'windows-1251 'cp1251)
10090 @end lisp
10091
10092
10093 @node Article Commands
10094 @section Article Commands
10095
10096 @table @kbd
10097
10098 @item A P
10099 @cindex PostScript
10100 @cindex printing
10101 @kindex A P (Summary)
10102 @vindex gnus-ps-print-hook
10103 @findex gnus-summary-print-article
10104 Generate and print a PostScript image of the article buffer
10105 (@code{gnus-summary-print-article}).  @code{gnus-ps-print-hook} will
10106 be run just before printing the buffer.  An alternative way to print
10107 article is to use Muttprint (@pxref{Saving Articles}).
10108
10109 @item A C
10110 @vindex gnus-fetch-partial-articles
10111 @findex gnus-summary-show-complete-article
10112 If @code{<backend>-fetch-partial-articles} is non-@code{nil}, Gnus will
10113 fetch partial articles, if the backend it fetches them from supports
10114 it.  Currently only @code{nnimap} does.  If you're looking at a
10115 partial article, and want to see the complete article instead, then
10116 the @kbd{A C} command (@code{gnus-summary-show-complete-article}) will
10117 do so.
10118
10119 @end table
10120
10121
10122 @node Summary Sorting
10123 @section Summary Sorting
10124 @cindex summary sorting
10125
10126 You can have the summary buffer sorted in various ways, even though I
10127 can't really see why you'd want that.
10128
10129 @table @kbd
10130
10131 @item C-c C-s C-n
10132 @kindex C-c C-s C-n (Summary)
10133 @findex gnus-summary-sort-by-number
10134 Sort by article number (@code{gnus-summary-sort-by-number}).
10135
10136 @item C-c C-s C-m C-n
10137 @kindex C-c C-s C-n (Summary)
10138 @findex gnus-summary-sort-by-most-recent-number
10139 Sort by most recent article number
10140 (@code{gnus-summary-sort-by-most-recent-number}).
10141
10142 @item C-c C-s C-a
10143 @kindex C-c C-s C-a (Summary)
10144 @findex gnus-summary-sort-by-author
10145 Sort by author (@code{gnus-summary-sort-by-author}).
10146
10147 @item C-c C-s C-t
10148 @kindex C-c C-s C-t (Summary)
10149 @findex gnus-summary-sort-by-recipient
10150 Sort by recipient (@code{gnus-summary-sort-by-recipient}).
10151
10152 @item C-c C-s C-s
10153 @kindex C-c C-s C-s (Summary)
10154 @findex gnus-summary-sort-by-subject
10155 Sort by subject (@code{gnus-summary-sort-by-subject}).
10156
10157 @item C-c C-s C-d
10158 @kindex C-c C-s C-d (Summary)
10159 @findex gnus-summary-sort-by-date
10160 Sort by date (@code{gnus-summary-sort-by-date}).
10161
10162 @item C-c C-s C-m C-d
10163 @kindex C-c C-s C-m C-d (Summary)
10164 @findex gnus-summary-sort-by-most-recent-date
10165 Sort by most recent date (@code{gnus-summary-sort-by-most-recent-date}).
10166
10167 @item C-c C-s C-l
10168 @kindex C-c C-s C-l (Summary)
10169 @findex gnus-summary-sort-by-lines
10170 Sort by lines (@code{gnus-summary-sort-by-lines}).
10171
10172 @item C-c C-s C-c
10173 @kindex C-c C-s C-c (Summary)
10174 @findex gnus-summary-sort-by-chars
10175 Sort by article length (@code{gnus-summary-sort-by-chars}).
10176
10177 @item C-c C-s C-i
10178 @kindex C-c C-s C-i (Summary)
10179 @findex gnus-summary-sort-by-score
10180 Sort by score (@code{gnus-summary-sort-by-score}).
10181
10182 @item C-c C-s C-r
10183 @kindex C-c C-s C-r (Summary)
10184 @findex gnus-summary-sort-by-random
10185 Randomize (@code{gnus-summary-sort-by-random}).
10186
10187 @item C-c C-s C-o
10188 @kindex C-c C-s C-o (Summary)
10189 @findex gnus-summary-sort-by-original
10190 Sort using the default sorting method
10191 (@code{gnus-summary-sort-by-original}).
10192 @end table
10193
10194 These functions will work both when you use threading and when you don't
10195 use threading.  In the latter case, all summary lines will be sorted,
10196 line by line.  In the former case, sorting will be done on a
10197 root-by-root basis, which might not be what you were looking for.  To
10198 toggle whether to use threading, type @kbd{T T} (@pxref{Thread
10199 Commands}).
10200
10201 If a prefix argument if given, the sort order is reversed.
10202
10203
10204 @node Finding the Parent
10205 @section Finding the Parent
10206 @cindex parent articles
10207 @cindex referring articles
10208
10209 @table @kbd
10210 @item ^
10211 @kindex ^ (Summary)
10212 @findex gnus-summary-refer-parent-article
10213 If you'd like to read the parent of the current article, and it is not
10214 displayed in the summary buffer, you might still be able to.  That is,
10215 if the current group is fetched by @acronym{NNTP}, the parent hasn't expired
10216 and the @code{References} in the current article are not mangled, you
10217 can just press @kbd{^} or @kbd{A r}
10218 (@code{gnus-summary-refer-parent-article}).  If everything goes well,
10219 you'll get the parent.  If the parent is already displayed in the
10220 summary buffer, point will just move to this article.
10221
10222 If given a positive numerical prefix, fetch that many articles back into
10223 the ancestry.  If given a negative numerical prefix, fetch just that
10224 ancestor.  So if you say @kbd{3 ^}, Gnus will fetch the parent, the
10225 grandparent and the grandgrandparent of the current article.  If you say
10226 @kbd{-3 ^}, Gnus will only fetch the grandgrandparent of the current
10227 article.
10228
10229 @item A R (Summary)
10230 @findex gnus-summary-refer-references
10231 @kindex A R (Summary)
10232 Fetch all articles mentioned in the @code{References} header of the
10233 article (@code{gnus-summary-refer-references}).
10234
10235 @item A T (Summary)
10236 @findex gnus-summary-refer-thread
10237 @kindex A T (Summary)
10238 Display the full thread where the current article appears
10239 (@code{gnus-summary-refer-thread}).  This command has to fetch all the
10240 headers in the current group to work, so it usually takes a while.  If
10241 you do it often, you may consider setting @code{gnus-fetch-old-headers}
10242 to @code{invisible} (@pxref{Filling In Threads}).  This won't have any
10243 visible effects normally, but it'll make this command work a whole lot
10244 faster.  Of course, it'll make group entry somewhat slow.
10245
10246 @vindex gnus-refer-thread-limit
10247 The @code{gnus-refer-thread-limit} variable says how many old (i. e.,
10248 articles before the first displayed in the current group) headers to
10249 fetch when doing this command.  The default is 200.  If @code{t}, all
10250 the available headers will be fetched.  This variable can be overridden
10251 by giving the @kbd{A T} command a numerical prefix.
10252
10253 @item M-^ (Summary)
10254 @findex gnus-summary-refer-article
10255 @kindex M-^ (Summary)
10256 @cindex Message-ID
10257 @cindex fetching by Message-ID
10258 You can also ask Gnus for an arbitrary article, no matter what group it
10259 belongs to.  @kbd{M-^} (@code{gnus-summary-refer-article}) will ask you
10260 for a @code{Message-ID}, which is one of those long, hard-to-read
10261 thingies that look something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}.
10262 You have to get it all exactly right.  No fuzzy searches, I'm afraid.
10263
10264 Gnus looks for the @code{Message-ID} in the headers that have already
10265 been fetched, but also tries all the select methods specified by
10266 @code{gnus-refer-article-method} if it is not found.
10267 @end table
10268
10269 @vindex gnus-refer-article-method
10270 If the group you are reading is located on a back end that does not
10271 support fetching by @code{Message-ID} very well (like @code{nnspool}),
10272 you can set @code{gnus-refer-article-method} to an @acronym{NNTP} method.  It
10273 would, perhaps, be best if the @acronym{NNTP} server you consult is the one
10274 updating the spool you are reading from, but that's not really
10275 necessary.
10276
10277 It can also be a list of select methods, as well as the special symbol
10278 @code{current}, which means to use the current select method.  If it
10279 is a list, Gnus will try all the methods in the list until it finds a
10280 match.
10281
10282 Here's an example setting that will first try the current method, and
10283 then ask Google if that fails:
10284
10285 @lisp
10286 (setq gnus-refer-article-method
10287       '(current
10288         (nnweb "google" (nnweb-type google))))
10289 @end lisp
10290
10291 Most of the mail back ends support fetching by @code{Message-ID}, but
10292 do not do a particularly excellent job at it.  That is, @code{nnmbox},
10293 @code{nnbabyl}, @code{nnmaildir}, @code{nnml}, are able to locate
10294 articles from any groups, while @code{nnfolder}, and @code{nnimap} are
10295 only able to locate articles that have been posted to the current
10296 group.  @code{nnmh} does not support this at all.
10297
10298 Fortunately, the special @code{nnregistry} back end is able to locate
10299 articles in any groups, regardless of their back end (@pxref{Registry
10300 Article Refer Method, fetching by @code{Message-ID} using the
10301 registry}).
10302
10303 @node Alternative Approaches
10304 @section Alternative Approaches
10305
10306 Different people like to read news using different methods.  This being
10307 Gnus, we offer a small selection of minor modes for the summary buffers.
10308
10309 @menu
10310 * Pick and Read::               First mark articles and then read them.
10311 * Binary Groups::               Auto-decode all articles.
10312 @end menu
10313
10314
10315 @node Pick and Read
10316 @subsection Pick and Read
10317 @cindex pick and read
10318
10319 Some newsreaders (like @code{nn} and, uhm, @code{Netnews} on VM/CMS) use
10320 a two-phased reading interface.  The user first marks in a summary
10321 buffer the articles she wants to read.  Then she starts reading the
10322 articles with just an article buffer displayed.
10323
10324 @findex gnus-pick-mode
10325 @kindex M-x gnus-pick-mode
10326 Gnus provides a summary buffer minor mode that allows
10327 this---@code{gnus-pick-mode}.  This basically means that a few process
10328 mark commands become one-keystroke commands to allow easy marking, and
10329 it provides one additional command for switching to the summary buffer.
10330
10331 Here are the available keystrokes when using pick mode:
10332
10333 @table @kbd
10334 @item .
10335 @kindex . (Pick)
10336 @findex gnus-pick-article-or-thread
10337 Pick the article or thread on the current line
10338 (@code{gnus-pick-article-or-thread}).  If the variable
10339 @code{gnus-thread-hide-subtree} is true, then this key selects the
10340 entire thread when used at the first article of the thread.  Otherwise,
10341 it selects just the article.  If given a numerical prefix, go to that
10342 thread or article and pick it.  (The line number is normally displayed
10343 at the beginning of the summary pick lines.)
10344
10345 @item SPACE
10346 @kindex SPACE (Pick)
10347 @findex gnus-pick-next-page
10348 Scroll the summary buffer up one page (@code{gnus-pick-next-page}).  If
10349 at the end of the buffer, start reading the picked articles.
10350
10351 @item u
10352 @kindex u (Pick)
10353 @findex gnus-pick-unmark-article-or-thread.
10354 Unpick the thread or article
10355 (@code{gnus-pick-unmark-article-or-thread}).  If the variable
10356 @code{gnus-thread-hide-subtree} is true, then this key unpicks the
10357 thread if used at the first article of the thread.  Otherwise it unpicks
10358 just the article.  You can give this key a numerical prefix to unpick
10359 the thread or article at that line.
10360
10361 @item RET
10362 @kindex RET (Pick)
10363 @findex gnus-pick-start-reading
10364 @vindex gnus-pick-display-summary
10365 Start reading the picked articles (@code{gnus-pick-start-reading}).  If
10366 given a prefix, mark all unpicked articles as read first.  If
10367 @code{gnus-pick-display-summary} is non-@code{nil}, the summary buffer
10368 will still be visible when you are reading.
10369
10370 @end table
10371
10372 All the normal summary mode commands are still available in the
10373 pick-mode, with the exception of @kbd{u}.  However @kbd{!} is available
10374 which is mapped to the same function
10375 @code{gnus-summary-tick-article-forward}.
10376
10377 If this sounds like a good idea to you, you could say:
10378
10379 @lisp
10380 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
10381 @end lisp
10382
10383 @vindex gnus-pick-mode-hook
10384 @code{gnus-pick-mode-hook} is run in pick minor mode buffers.
10385
10386 @vindex gnus-mark-unpicked-articles-as-read
10387 If @code{gnus-mark-unpicked-articles-as-read} is non-@code{nil}, mark
10388 all unpicked articles as read.  The default is @code{nil}.
10389
10390 @vindex gnus-summary-pick-line-format
10391 The summary line format in pick mode is slightly different from the
10392 standard format.  At the beginning of each line the line number is
10393 displayed.  The pick mode line format is controlled by the
10394 @code{gnus-summary-pick-line-format} variable (@pxref{Formatting
10395 Variables}).  It accepts the same format specs that
10396 @code{gnus-summary-line-format} does (@pxref{Summary Buffer Lines}).
10397
10398
10399 @node Binary Groups
10400 @subsection Binary Groups
10401 @cindex binary groups
10402
10403 @findex gnus-binary-mode
10404 @kindex M-x gnus-binary-mode
10405 If you spend much time in binary groups, you may grow tired of hitting
10406 @kbd{X u}, @kbd{n}, @kbd{RET} all the time.  @kbd{M-x gnus-binary-mode}
10407 is a minor mode for summary buffers that makes all ordinary Gnus article
10408 selection functions uudecode series of articles and display the result
10409 instead of just displaying the articles the normal way.
10410
10411 @kindex g (Binary)
10412 @findex gnus-binary-show-article
10413 The only way, in fact, to see the actual articles is the @kbd{g}
10414 command, when you have turned on this mode
10415 (@code{gnus-binary-show-article}).
10416
10417 @vindex gnus-binary-mode-hook
10418 @code{gnus-binary-mode-hook} is called in binary minor mode buffers.
10419
10420
10421 @node Tree Display
10422 @section Tree Display
10423 @cindex trees
10424
10425 @vindex gnus-use-trees
10426 If you don't like the normal Gnus summary display, you might try setting
10427 @code{gnus-use-trees} to @code{t}.  This will create (by default) an
10428 additional @dfn{tree buffer}.  You can execute all summary mode commands
10429 in the tree buffer.
10430
10431 There are a few variables to customize the tree display, of course:
10432
10433 @table @code
10434 @item gnus-tree-mode-hook
10435 @vindex gnus-tree-mode-hook
10436 A hook called in all tree mode buffers.
10437
10438 @item gnus-tree-mode-line-format
10439 @vindex gnus-tree-mode-line-format
10440 A format string for the mode bar in the tree mode buffers (@pxref{Mode
10441 Line Formatting}).  The default is @samp{Gnus: %%b %S %Z}.  For a list
10442 of valid specs, @pxref{Summary Buffer Mode Line}.
10443
10444 @item gnus-selected-tree-face
10445 @vindex gnus-selected-tree-face
10446 Face used for highlighting the selected article in the tree buffer.  The
10447 default is @code{modeline}.
10448
10449 @item gnus-tree-line-format
10450 @vindex gnus-tree-line-format
10451 A format string for the tree nodes.  The name is a bit of a misnomer,
10452 though---it doesn't define a line, but just the node.  The default value
10453 is @samp{%(%[%3,3n%]%)}, which displays the first three characters of
10454 the name of the poster.  It is vital that all nodes are of the same
10455 length, so you @emph{must} use @samp{%4,4n}-like specifiers.
10456
10457 Valid specs are:
10458
10459 @table @samp
10460 @item n
10461 The name of the poster.
10462 @item f
10463 The @code{From} header.
10464 @item N
10465 The number of the article.
10466 @item [
10467 The opening bracket.
10468 @item ]
10469 The closing bracket.
10470 @item s
10471 The subject.
10472 @end table
10473
10474 @xref{Formatting Variables}.
10475
10476 Variables related to the display are:
10477
10478 @table @code
10479 @item gnus-tree-brackets
10480 @vindex gnus-tree-brackets
10481 This is used for differentiating between ``real'' articles and
10482 ``sparse'' articles.  The format is
10483 @example
10484 ((@var{real-open} . @var{real-close})
10485  (@var{sparse-open} . @var{sparse-close})
10486  (@var{dummy-open} . @var{dummy-close}))
10487 @end example
10488 and the default is @code{((?[ . ?]) (?( . ?)) (?@{ . ?@}) (?< . ?>))}.
10489
10490 @item gnus-tree-parent-child-edges
10491 @vindex gnus-tree-parent-child-edges
10492 This is a list that contains the characters used for connecting parent
10493 nodes to their children.  The default is @code{(?- ?\\ ?|)}.
10494
10495 @end table
10496
10497 @item gnus-tree-minimize-window
10498 @vindex gnus-tree-minimize-window
10499 If this variable is non-@code{nil}, Gnus will try to keep the tree
10500 buffer as small as possible to allow more room for the other Gnus
10501 windows.  If this variable is a number, the tree buffer will never be
10502 higher than that number.  The default is @code{t}.  Note that if you
10503 have several windows displayed side-by-side in a frame and the tree
10504 buffer is one of these, minimizing the tree window will also resize all
10505 other windows displayed next to it.
10506
10507 You may also wish to add the following hook to keep the window minimized
10508 at all times:
10509
10510 @lisp
10511 (add-hook 'gnus-configure-windows-hook
10512           'gnus-tree-perhaps-minimize)
10513 @end lisp
10514
10515 @item gnus-generate-tree-function
10516 @vindex gnus-generate-tree-function
10517 @findex gnus-generate-horizontal-tree
10518 @findex gnus-generate-vertical-tree
10519 The function that actually generates the thread tree.  Two predefined
10520 functions are available: @code{gnus-generate-horizontal-tree} and
10521 @code{gnus-generate-vertical-tree} (which is the default).
10522
10523 @end table
10524
10525 Here's an example from a horizontal tree buffer:
10526
10527 @example
10528 @{***@}-(***)-[odd]-[Gun]
10529      |      \[Jan]
10530      |      \[odd]-[Eri]
10531      |      \(***)-[Eri]
10532      |            \[odd]-[Paa]
10533      \[Bjo]
10534      \[Gun]
10535      \[Gun]-[Jor]
10536 @end example
10537
10538 Here's the same thread displayed in a vertical tree buffer:
10539
10540 @example
10541 @group
10542 @{***@}
10543   |--------------------------\-----\-----\
10544 (***)                         [Bjo] [Gun] [Gun]
10545   |--\-----\-----\                          |
10546 [odd] [Jan] [odd] (***)                   [Jor]
10547   |           |     |--\
10548 [Gun]       [Eri] [Eri] [odd]
10549                           |
10550                         [Paa]
10551 @end group
10552 @end example
10553
10554 If you're using horizontal trees, it might be nice to display the trees
10555 side-by-side with the summary buffer.  You could add something like the
10556 following to your @file{~/.gnus.el} file:
10557
10558 @lisp
10559 (setq gnus-use-trees t
10560       gnus-generate-tree-function 'gnus-generate-horizontal-tree
10561       gnus-tree-minimize-window nil)
10562 (gnus-add-configuration
10563  '(article
10564    (vertical 1.0
10565              (horizontal 0.25
10566                          (summary 0.75 point)
10567                          (tree 1.0))
10568              (article 1.0))))
10569 @end lisp
10570
10571 @xref{Window Layout}.
10572
10573
10574 @node Mail Group Commands
10575 @section Mail Group Commands
10576 @cindex mail group commands
10577
10578 Some commands only make sense in mail groups.  If these commands are
10579 invalid in the current group, they will raise a hell and let you know.
10580
10581 All these commands (except the expiry and edit commands) use the
10582 process/prefix convention (@pxref{Process/Prefix}).
10583
10584 @table @kbd
10585
10586 @item B e
10587 @kindex B e (Summary)
10588 @findex gnus-summary-expire-articles
10589 @cindex expiring mail
10590 Run all expirable articles in the current group through the expiry
10591 process (@code{gnus-summary-expire-articles}).  That is, delete all
10592 expirable articles in the group that have been around for a while.
10593 (@pxref{Expiring Mail}).
10594
10595 @item B C-M-e
10596 @kindex B C-M-e (Summary)
10597 @findex gnus-summary-expire-articles-now
10598 @cindex expiring mail
10599 Delete all the expirable articles in the group
10600 (@code{gnus-summary-expire-articles-now}).  This means that @strong{all}
10601 articles eligible for expiry in the current group will
10602 disappear forever into that big @file{/dev/null} in the sky.
10603
10604 @item B DEL
10605 @kindex B DEL (Summary)
10606 @cindex deleting mail
10607 @findex gnus-summary-delete-article
10608 @c @icon{gnus-summary-mail-delete}
10609 Delete the mail article.  This is ``delete'' as in ``delete it from your
10610 disk forever and ever, never to return again.'' Use with caution.
10611 (@code{gnus-summary-delete-article}).
10612
10613 @item B m
10614 @kindex B m (Summary)
10615 @cindex move mail
10616 @findex gnus-summary-move-article
10617 @vindex gnus-preserve-marks
10618 Move the article from one mail group to another
10619 (@code{gnus-summary-move-article}).  Marks will be preserved if
10620 @code{gnus-preserve-marks} is non-@code{nil} (which is the default).
10621
10622 @item B c
10623 @kindex B c (Summary)
10624 @cindex copy mail
10625 @findex gnus-summary-copy-article
10626 @c @icon{gnus-summary-mail-copy}
10627 Copy the article from one group (mail group or not) to a mail group
10628 (@code{gnus-summary-copy-article}).  Marks will be preserved if
10629 @code{gnus-preserve-marks} is non-@code{nil} (which is the default).
10630
10631 @item B B
10632 @kindex B B (Summary)
10633 @cindex crosspost mail
10634 @findex gnus-summary-crosspost-article
10635 Crosspost the current article to some other group
10636 (@code{gnus-summary-crosspost-article}).  This will create a new copy of
10637 the article in the other group, and the Xref headers of the article will
10638 be properly updated.
10639
10640 @item B i
10641 @kindex B i (Summary)
10642 @findex gnus-summary-import-article
10643 Import an arbitrary file into the current mail newsgroup
10644 (@code{gnus-summary-import-article}).  You will be prompted for a file
10645 name, a @code{From} header and a @code{Subject} header.
10646
10647 @item B I
10648 @kindex B I (Summary)
10649 @findex gnus-summary-create-article
10650 Create an empty article in the current mail newsgroups
10651 (@code{gnus-summary-create-article}).  You will be prompted for a
10652 @code{From} header and a @code{Subject} header.
10653
10654 @item B r
10655 @kindex B r (Summary)
10656 @findex gnus-summary-respool-article
10657 @vindex gnus-summary-respool-default-method
10658 Respool the mail article (@code{gnus-summary-respool-article}).
10659 @code{gnus-summary-respool-default-method} will be used as the default
10660 select method when respooling.  This variable is @code{nil} by default,
10661 which means that the current group select method will be used instead.
10662 Marks will be preserved if @code{gnus-preserve-marks} is non-@code{nil}
10663 (which is the default).
10664
10665 @item B w
10666 @itemx e
10667 @kindex B w (Summary)
10668 @kindex e (Summary)
10669 @findex gnus-summary-edit-article
10670 @kindex C-c C-c (Article)
10671 @findex gnus-summary-edit-article-done
10672 Edit the current article (@code{gnus-summary-edit-article}).  To finish
10673 editing and make the changes permanent, type @kbd{C-c C-c}
10674 (@code{gnus-summary-edit-article-done}).  If you give a prefix to the
10675 @kbd{C-c C-c} command, Gnus won't re-highlight the article.
10676
10677 @item B q
10678 @kindex B q (Summary)
10679 @findex gnus-summary-respool-query
10680 If you want to re-spool an article, you might be curious as to what group
10681 the article will end up in before you do the re-spooling.  This command
10682 will tell you (@code{gnus-summary-respool-query}).
10683
10684 @item B t
10685 @kindex B t (Summary)
10686 @findex gnus-summary-respool-trace
10687 Similarly, this command will display all fancy splitting patterns used
10688 when respooling, if any (@code{gnus-summary-respool-trace}).
10689
10690 @item B p
10691 @kindex B p (Summary)
10692 @findex gnus-summary-article-posted-p
10693 Some people have a tendency to send you ``courtesy'' copies when they
10694 follow up to articles you have posted.  These usually have a
10695 @code{Newsgroups} header in them, but not always.  This command
10696 (@code{gnus-summary-article-posted-p}) will try to fetch the current
10697 article from your news server (or rather, from
10698 @code{gnus-refer-article-method} or @code{gnus-select-method}) and will
10699 report back whether it found the article or not.  Even if it says that
10700 it didn't find the article, it may have been posted anyway---mail
10701 propagation is much faster than news propagation, and the news copy may
10702 just not have arrived yet.
10703
10704 @item K E
10705 @kindex K E (Summary)
10706 @findex gnus-article-encrypt-body
10707 @vindex gnus-article-encrypt-protocol
10708 Encrypt the body of an article (@code{gnus-article-encrypt-body}).
10709 The body is encrypted with the encryption protocol specified by the
10710 variable @code{gnus-article-encrypt-protocol}.
10711
10712 @end table
10713
10714 @vindex gnus-move-split-methods
10715 @cindex moving articles
10716 If you move (or copy) articles regularly, you might wish to have Gnus
10717 suggest where to put the articles.  @code{gnus-move-split-methods} is a
10718 variable that uses the same syntax as @code{gnus-split-methods}
10719 (@pxref{Saving Articles}).  You may customize that variable to create
10720 suggestions you find reasonable.  (Note that
10721 @code{gnus-move-split-methods} uses group names where
10722 @code{gnus-split-methods} uses file names.)
10723
10724 @lisp
10725 (setq gnus-move-split-methods
10726       '(("^From:.*Lars Magne" "nnml:junk")
10727         ("^Subject:.*gnus" "nnfolder:important")
10728         (".*" "nnml:misc")))
10729 @end lisp
10730
10731
10732 @node Various Summary Stuff
10733 @section Various Summary Stuff
10734
10735 @menu
10736 * Summary Group Information::   Information oriented commands.
10737 * Searching for Articles::      Multiple article commands.
10738 * Summary Generation Commands::
10739 * Really Various Summary Commands::  Those pesky non-conformant commands.
10740 @end menu
10741
10742 @table @code
10743 @vindex gnus-summary-display-while-building
10744 @item gnus-summary-display-while-building
10745 If non-@code{nil}, show and update the summary buffer as it's being
10746 built.  If @code{t}, update the buffer after every line is inserted.
10747 If the value is an integer, @var{n}, update the display every @var{n}
10748 lines.  The default is @code{nil}.
10749
10750 @vindex gnus-summary-display-arrow
10751 @item gnus-summary-display-arrow
10752 If non-@code{nil}, display an arrow in the fringe to indicate the
10753 current article.
10754
10755 @vindex gnus-summary-mode-hook
10756 @item gnus-summary-mode-hook
10757 This hook is called when creating a summary mode buffer.
10758
10759 @vindex gnus-summary-generate-hook
10760 @item gnus-summary-generate-hook
10761 This is called as the last thing before doing the threading and the
10762 generation of the summary buffer.  It's quite convenient for customizing
10763 the threading variables based on what data the newsgroup has.  This hook
10764 is called from the summary buffer after most summary buffer variables
10765 have been set.
10766
10767 @vindex gnus-summary-prepare-hook
10768 @item gnus-summary-prepare-hook
10769 It is called after the summary buffer has been generated.  You might use
10770 it to, for instance, highlight lines or modify the look of the buffer in
10771 some other ungodly manner.  I don't care.
10772
10773 @vindex gnus-summary-prepared-hook
10774 @item gnus-summary-prepared-hook
10775 A hook called as the very last thing after the summary buffer has been
10776 generated.
10777
10778 @vindex gnus-summary-ignore-duplicates
10779 @item gnus-summary-ignore-duplicates
10780 When Gnus discovers two articles that have the same @code{Message-ID},
10781 it has to do something drastic.  No articles are allowed to have the
10782 same @code{Message-ID}, but this may happen when reading mail from some
10783 sources.  Gnus allows you to customize what happens with this variable.
10784 If it is @code{nil} (which is the default), Gnus will rename the
10785 @code{Message-ID} (for display purposes only) and display the article as
10786 any other article.  If this variable is @code{t}, it won't display the
10787 article---it'll be as if it never existed.
10788
10789 @vindex gnus-alter-articles-to-read-function
10790 @item gnus-alter-articles-to-read-function
10791 This function, which takes two parameters (the group name and the list
10792 of articles to be selected), is called to allow the user to alter the
10793 list of articles to be selected.
10794
10795 For instance, the following function adds the list of cached articles to
10796 the list in one particular group:
10797
10798 @lisp
10799 (defun my-add-cached-articles (group articles)
10800   (if (string= group "some.group")
10801       (append gnus-newsgroup-cached articles)
10802     articles))
10803 @end lisp
10804
10805 @vindex gnus-newsgroup-variables
10806 @item gnus-newsgroup-variables
10807 A list of newsgroup (summary buffer) local variables, or cons of
10808 variables and their default expressions to be evalled (when the default
10809 values are not @code{nil}), that should be made global while the summary
10810 buffer is active.
10811
10812 Note: The default expressions will be evaluated (using function
10813 @code{eval}) before assignment to the local variable rather than just
10814 assigned to it.  If the default expression is the symbol @code{global},
10815 that symbol will not be evaluated but the global value of the local
10816 variable will be used instead.
10817
10818 These variables can be used to set variables in the group parameters
10819 while still allowing them to affect operations done in other
10820 buffers.  For example:
10821
10822 @lisp
10823 (setq gnus-newsgroup-variables
10824       '(message-use-followup-to
10825         (gnus-visible-headers .
10826  "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^To:")))
10827 @end lisp
10828
10829 Also @pxref{Group Parameters}.
10830
10831 @vindex gnus-propagate-marks
10832 @item gnus-propagate-marks
10833 If non-@code{nil}, propagate marks to the backends for possible
10834 storing.  @xref{NNTP marks}, and friends, for a more fine-grained
10835 sieve.
10836
10837 @end table
10838
10839
10840 @node Summary Group Information
10841 @subsection Summary Group Information
10842
10843 @table @kbd
10844
10845 @item H d
10846 @kindex H d (Summary)
10847 @findex gnus-summary-describe-group
10848 Give a brief description of the current group
10849 (@code{gnus-summary-describe-group}).  If given a prefix, force
10850 rereading the description from the server.
10851
10852 @item H h
10853 @kindex H h (Summary)
10854 @findex gnus-summary-describe-briefly
10855 Give an extremely brief description of the most important summary
10856 keystrokes (@code{gnus-summary-describe-briefly}).
10857
10858 @item H i
10859 @kindex H i (Summary)
10860 @findex gnus-info-find-node
10861 Go to the Gnus info node (@code{gnus-info-find-node}).
10862 @end table
10863
10864
10865 @node Searching for Articles
10866 @subsection Searching for Articles
10867
10868 @table @kbd
10869
10870 @item M-s
10871 @kindex M-s (Summary)
10872 @findex gnus-summary-search-article-forward
10873 Search through all subsequent (raw) articles for a regexp
10874 (@code{gnus-summary-search-article-forward}).
10875
10876 @item M-r
10877 @kindex M-r (Summary)
10878 @findex gnus-summary-search-article-backward
10879 Search through all previous (raw) articles for a regexp
10880 (@code{gnus-summary-search-article-backward}).
10881
10882 @item M-S
10883 @kindex M-S (Summary)
10884 @findex gnus-summary-repeat-search-article-forward
10885 Repeat the previous search forwards
10886 (@code{gnus-summary-repeat-search-article-forward}).
10887
10888 @item M-R
10889 @kindex M-R (Summary)
10890 @findex gnus-summary-repeat-search-article-backward
10891 Repeat the previous search backwards
10892 (@code{gnus-summary-repeat-search-article-backward}).
10893
10894 @item &
10895 @kindex & (Summary)
10896 @findex gnus-summary-execute-command
10897 This command will prompt you for a header, a regular expression to match
10898 on this field, and a command to be executed if the match is made
10899 (@code{gnus-summary-execute-command}).  If the header is an empty
10900 string, the match is done on the entire article.  If given a prefix,
10901 search backward instead.
10902
10903 For instance, @kbd{& RET some.*string RET #} will put the process mark on
10904 all articles that have heads or bodies that match @samp{some.*string}.
10905
10906 @item M-&
10907 @kindex M-& (Summary)
10908 @findex gnus-summary-universal-argument
10909 Perform any operation on all articles that have been marked with
10910 the process mark (@code{gnus-summary-universal-argument}).
10911 @end table
10912
10913 @node Summary Generation Commands
10914 @subsection Summary Generation Commands
10915
10916 @table @kbd
10917
10918 @item Y g
10919 @kindex Y g (Summary)
10920 @findex gnus-summary-prepare
10921 Regenerate the current summary buffer (@code{gnus-summary-prepare}).
10922
10923 @item Y c
10924 @kindex Y c (Summary)
10925 @findex gnus-summary-insert-cached-articles
10926 Pull all cached articles (for the current group) into the summary buffer
10927 (@code{gnus-summary-insert-cached-articles}).
10928
10929 @item Y d
10930 @kindex Y d (Summary)
10931 @findex gnus-summary-insert-dormant-articles
10932 Pull all dormant articles (for the current group) into the summary buffer
10933 (@code{gnus-summary-insert-dormant-articles}).
10934
10935 @item Y t
10936 @kindex Y t (Summary)
10937 @findex gnus-summary-insert-ticked-articles
10938 Pull all ticked articles (for the current group) into the summary buffer
10939 (@code{gnus-summary-insert-ticked-articles}).
10940
10941 @end table
10942
10943
10944 @node Really Various Summary Commands
10945 @subsection Really Various Summary Commands
10946
10947 @table @kbd
10948
10949 @item A D
10950 @itemx C-d
10951 @kindex C-d (Summary)
10952 @kindex A D (Summary)
10953 @findex gnus-summary-enter-digest-group
10954 If the current article is a collection of other articles (for instance,
10955 a digest), you might use this command to enter a group based on the that
10956 article (@code{gnus-summary-enter-digest-group}).  Gnus will try to
10957 guess what article type is currently displayed unless you give a prefix
10958 to this command, which forces a ``digest'' interpretation.  Basically,
10959 whenever you see a message that is a collection of other messages of
10960 some format, you @kbd{C-d} and read these messages in a more convenient
10961 fashion.
10962
10963 @vindex gnus-auto-select-on-ephemeral-exit
10964 The variable @code{gnus-auto-select-on-ephemeral-exit} controls what
10965 article should be selected after exiting a digest group.  Valid values
10966 include:
10967
10968 @table @code
10969 @item next
10970 Select the next article.
10971
10972 @item next-unread
10973 Select the next unread article.
10974
10975 @item next-noselect
10976 Move the cursor to the next article.  This is the default.
10977
10978 @item next-unread-noselect
10979 Move the cursor to the next unread article.
10980 @end table
10981
10982 If it has any other value or there is no next (unread) article, the
10983 article selected before entering to the digest group will appear.
10984
10985 @item C-M-d
10986 @kindex C-M-d (Summary)
10987 @findex gnus-summary-read-document
10988 This command is very similar to the one above, but lets you gather
10989 several documents into one biiig group
10990 (@code{gnus-summary-read-document}).  It does this by opening several
10991 @code{nndoc} groups for each document, and then opening an
10992 @code{nnvirtual} group on top of these @code{nndoc} groups.  This
10993 command understands the process/prefix convention
10994 (@pxref{Process/Prefix}).
10995
10996 @item C-t
10997 @kindex C-t (Summary)
10998 @findex gnus-summary-toggle-truncation
10999 Toggle truncation of summary lines
11000 (@code{gnus-summary-toggle-truncation}).  This will probably confuse the
11001 line centering function in the summary buffer, so it's not a good idea
11002 to have truncation switched off while reading articles.
11003
11004 @item =
11005 @kindex = (Summary)
11006 @findex gnus-summary-expand-window
11007 Expand the summary buffer window (@code{gnus-summary-expand-window}).
11008 If given a prefix, force an @code{article} window configuration.
11009
11010 @item C-M-e
11011 @kindex C-M-e (Summary)
11012 @findex gnus-summary-edit-parameters
11013 Edit the group parameters (@pxref{Group Parameters}) of the current
11014 group (@code{gnus-summary-edit-parameters}).
11015
11016 @item C-M-a
11017 @kindex C-M-a (Summary)
11018 @findex gnus-summary-customize-parameters
11019 Customize the group parameters (@pxref{Group Parameters}) of the current
11020 group (@code{gnus-summary-customize-parameters}).
11021
11022 @end table
11023
11024
11025 @node Exiting the Summary Buffer
11026 @section Exiting the Summary Buffer
11027 @cindex summary exit
11028 @cindex exiting groups
11029
11030 Exiting from the summary buffer will normally update all info on the
11031 group and return you to the group buffer.
11032
11033 @table @kbd
11034
11035 @item Z Z
11036 @itemx Z Q
11037 @itemx q
11038 @kindex Z Z (Summary)
11039 @kindex Z Q (Summary)
11040 @kindex q (Summary)
11041 @findex gnus-summary-exit
11042 @vindex gnus-summary-exit-hook
11043 @vindex gnus-summary-prepare-exit-hook
11044 @vindex gnus-group-no-more-groups-hook
11045 @c @icon{gnus-summary-exit}
11046 Exit the current group and update all information on the group
11047 (@code{gnus-summary-exit}).  @code{gnus-summary-prepare-exit-hook} is
11048 called before doing much of the exiting, which calls
11049 @code{gnus-summary-expire-articles} by default.
11050 @code{gnus-summary-exit-hook} is called after finishing the exit
11051 process.  @code{gnus-group-no-more-groups-hook} is run when returning to
11052 group mode having no more (unread) groups.
11053
11054 @item Z E
11055 @itemx Q
11056 @kindex Z E (Summary)
11057 @kindex Q (Summary)
11058 @findex gnus-summary-exit-no-update
11059 Exit the current group without updating any information on the group
11060 (@code{gnus-summary-exit-no-update}).
11061
11062 @item Z c
11063 @itemx c
11064 @kindex Z c (Summary)
11065 @kindex c (Summary)
11066 @findex gnus-summary-catchup-and-exit
11067 @c @icon{gnus-summary-catchup-and-exit}
11068 Mark all unticked articles in the group as read and then exit
11069 (@code{gnus-summary-catchup-and-exit}).
11070
11071 @item Z C
11072 @kindex Z C (Summary)
11073 @findex gnus-summary-catchup-all-and-exit
11074 Mark all articles, even the ticked ones, as read and then exit
11075 (@code{gnus-summary-catchup-all-and-exit}).
11076
11077 @item Z n
11078 @kindex Z n (Summary)
11079 @findex gnus-summary-catchup-and-goto-next-group
11080 Mark all articles as read and go to the next group
11081 (@code{gnus-summary-catchup-and-goto-next-group}).
11082
11083 @item Z p
11084 @kindex Z p (Summary)
11085 @findex gnus-summary-catchup-and-goto-prev-group
11086 Mark all articles as read and go to the previous group
11087 (@code{gnus-summary-catchup-and-goto-prev-group}).
11088
11089 @item Z R
11090 @itemx C-x C-s
11091 @kindex Z R (Summary)
11092 @kindex C-x C-s (Summary)
11093 @findex gnus-summary-reselect-current-group
11094 Exit this group, and then enter it again
11095 (@code{gnus-summary-reselect-current-group}).  If given a prefix, select
11096 all articles, both read and unread.
11097
11098 @item Z G
11099 @itemx M-g
11100 @kindex Z G (Summary)
11101 @kindex M-g (Summary)
11102 @findex gnus-summary-rescan-group
11103 @c @icon{gnus-summary-mail-get}
11104 Exit the group, check for new articles in the group, and select the
11105 group (@code{gnus-summary-rescan-group}).  If given a prefix, select all
11106 articles, both read and unread.
11107
11108 @item Z N
11109 @kindex Z N (Summary)
11110 @findex gnus-summary-next-group
11111 Exit the group and go to the next group
11112 (@code{gnus-summary-next-group}).
11113
11114 @item Z P
11115 @kindex Z P (Summary)
11116 @findex gnus-summary-prev-group
11117 Exit the group and go to the previous group
11118 (@code{gnus-summary-prev-group}).
11119
11120 @item Z s
11121 @kindex Z s (Summary)
11122 @findex gnus-summary-save-newsrc
11123 Save the current number of read/marked articles in the dribble buffer
11124 and then save the dribble buffer (@code{gnus-summary-save-newsrc}).  If
11125 given a prefix, also save the @file{.newsrc} file(s).  Using this
11126 command will make exit without updating (the @kbd{Q} command) worthless.
11127 @end table
11128
11129 @vindex gnus-exit-group-hook
11130 @code{gnus-exit-group-hook} is called when you exit the current group
11131 with an ``updating'' exit.  For instance @kbd{Q}
11132 (@code{gnus-summary-exit-no-update}) does not call this hook.
11133
11134 @findex gnus-summary-wake-up-the-dead
11135 @findex gnus-dead-summary-mode
11136 @vindex gnus-kill-summary-on-exit
11137 If you're in the habit of exiting groups, and then changing your mind
11138 about it, you might set @code{gnus-kill-summary-on-exit} to @code{nil}.
11139 If you do that, Gnus won't kill the summary buffer when you exit it.
11140 (Quelle surprise!)  Instead it will change the name of the buffer to
11141 something like @samp{*Dead Summary ... *} and install a minor mode
11142 called @code{gnus-dead-summary-mode}.  Now, if you switch back to this
11143 buffer, you'll find that all keys are mapped to a function called
11144 @code{gnus-summary-wake-up-the-dead}.  So tapping any keys in a dead
11145 summary buffer will result in a live, normal summary buffer.
11146
11147 There will never be more than one dead summary buffer at any one time.
11148
11149 @vindex gnus-use-cross-reference
11150 The data on the current group will be updated (which articles you have
11151 read, which articles you have replied to, etc.) when you exit the
11152 summary buffer.  If the @code{gnus-use-cross-reference} variable is
11153 @code{t} (which is the default), articles that are cross-referenced to
11154 this group and are marked as read, will also be marked as read in the
11155 other subscribed groups they were cross-posted to.  If this variable is
11156 neither @code{nil} nor @code{t}, the article will be marked as read in
11157 both subscribed and unsubscribed groups (@pxref{Crosspost Handling}).
11158
11159
11160 @node Crosspost Handling
11161 @section Crosspost Handling
11162
11163 @cindex velveeta
11164 @cindex spamming
11165 Marking cross-posted articles as read ensures that you'll never have to
11166 read the same article more than once.  Unless, of course, somebody has
11167 posted it to several groups separately.  Posting the same article to
11168 several groups (not cross-posting) is called @dfn{spamming}, and you are
11169 by law required to send nasty-grams to anyone who perpetrates such a
11170 heinous crime.
11171
11172 Remember: Cross-posting is kinda ok, but posting the same article
11173 separately to several groups is not.  Massive cross-posting (aka.
11174 @dfn{velveeta}) is to be avoided at all costs, an