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