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