(mh-search, mh-index-group-by-folder): Add "the" in loop construct to
[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
KB
10Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001,
112002, 2003, 2004, 2005, 2006 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.
2140Which article this is is controlled by the
2141@code{gnus-auto-select-subject} variable. Valid values for this
2142variable is:
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
2498@table @kbd
2499
2500@item G m
23f87bed 2501@kindex G m (Group)
6bf7aab6
DL
2502@findex gnus-group-make-group
2503@cindex making groups
2504Make a new group (@code{gnus-group-make-group}). Gnus will prompt you
2505for a name, a method and possibly an @dfn{address}. For an easier way
23f87bed
MB
2506to subscribe to @acronym{NNTP} groups (@pxref{Browse Foreign Server}).
2507
2508@item G M
2509@kindex G M (Group)
2510@findex gnus-group-read-ephemeral-group
2511Make an ephemeral group (@code{gnus-group-read-ephemeral-group}). Gnus
2512will prompt you for a name, a method and an @dfn{address}.
6bf7aab6
DL
2513
2514@item G r
23f87bed 2515@kindex G r (Group)
6bf7aab6
DL
2516@findex gnus-group-rename-group
2517@cindex renaming groups
2518Rename the current group to something else
2519(@code{gnus-group-rename-group}). This is valid only on some
2520groups---mail groups mostly. This command might very well be quite slow
a8edc211 2521on some back ends.
6bf7aab6
DL
2522
2523@item G c
23f87bed 2524@kindex G c (Group)
6bf7aab6
DL
2525@cindex customizing
2526@findex gnus-group-customize
2527Customize the group parameters (@code{gnus-group-customize}).
2528
2529@item G e
23f87bed 2530@kindex G e (Group)
6bf7aab6
DL
2531@findex gnus-group-edit-group-method
2532@cindex renaming groups
2533Enter a buffer where you can edit the select method of the current
2534group (@code{gnus-group-edit-group-method}).
2535
2536@item G p
23f87bed 2537@kindex G p (Group)
6bf7aab6
DL
2538@findex gnus-group-edit-group-parameters
2539Enter a buffer where you can edit the group parameters
2540(@code{gnus-group-edit-group-parameters}).
2541
2542@item G E
23f87bed 2543@kindex G E (Group)
6bf7aab6
DL
2544@findex gnus-group-edit-group
2545Enter a buffer where you can edit the group info
2546(@code{gnus-group-edit-group}).
2547
2548@item G d
23f87bed 2549@kindex G d (Group)
6bf7aab6
DL
2550@findex gnus-group-make-directory-group
2551@cindex nndir
2552Make a directory group (@pxref{Directory Groups}). You will be prompted
2553for a directory name (@code{gnus-group-make-directory-group}).
2554
2555@item G h
23f87bed 2556@kindex G h (Group)
6bf7aab6
DL
2557@cindex help group
2558@findex gnus-group-make-help-group
2559Make the Gnus help group (@code{gnus-group-make-help-group}).
2560
2561@item G a
23f87bed 2562@kindex G a (Group)
6bf7aab6
DL
2563@cindex (ding) archive
2564@cindex archive group
2565@findex gnus-group-make-archive-group
2566@vindex gnus-group-archive-directory
2567@vindex gnus-group-recent-archive-directory
2568Make a Gnus archive group (@code{gnus-group-make-archive-group}). By
2569default a group pointing to the most recent articles will be created
2570(@code{gnus-group-recent-archive-directory}), but given a prefix, a full
2571group will be created from @code{gnus-group-archive-directory}.
2572
2573@item G k
23f87bed 2574@kindex G k (Group)
6bf7aab6
DL
2575@findex gnus-group-make-kiboze-group
2576@cindex nnkiboze
2577Make a kiboze group. You will be prompted for a name, for a regexp to
2578match groups to be ``included'' in the kiboze group, and a series of
2579strings to match on headers (@code{gnus-group-make-kiboze-group}).
2580@xref{Kibozed Groups}.
2581
2582@item G D
23f87bed 2583@kindex G D (Group)
6bf7aab6
DL
2584@findex gnus-group-enter-directory
2585@cindex nneething
2586Read an arbitrary directory as if it were a newsgroup with the
a8edc211 2587@code{nneething} back end (@code{gnus-group-enter-directory}).
6bf7aab6
DL
2588@xref{Anything Groups}.
2589
2590@item G f
23f87bed 2591@kindex G f (Group)
6bf7aab6
DL
2592@findex gnus-group-make-doc-group
2593@cindex ClariNet Briefs
2594@cindex nndoc
2595Make a group based on some file or other
2596(@code{gnus-group-make-doc-group}). If you give a prefix to this
2597command, you will be prompted for a file name and a file type.
23f87bed
MB
2598Currently supported types are @code{mbox}, @code{babyl},
2599@code{digest}, @code{news}, @code{rnews}, @code{mmdf}, @code{forward},
2600@code{rfc934}, @code{rfc822-forward}, @code{mime-parts},
2601@code{standard-digest}, @code{slack-digest}, @code{clari-briefs},
2602@code{nsmail}, @code{outlook}, @code{oe-dbx}, and @code{mailman}. If
2603you run this command without a prefix, Gnus will guess at the file
2625a8f7 2604type. @xref{Document Groups}.
6bf7aab6
DL
2605
2606@item G u
23f87bed 2607@kindex G u (Group)
6bf7aab6
DL
2608@vindex gnus-useful-groups
2609@findex gnus-group-make-useful-group
2610Create one of the groups mentioned in @code{gnus-useful-groups}
2611(@code{gnus-group-make-useful-group}).
2612
2613@item G w
23f87bed 2614@kindex G w (Group)
6bf7aab6 2615@findex gnus-group-make-web-group
23f87bed 2616@cindex Google
6bf7aab6 2617@cindex nnweb
23f87bed 2618@cindex gmane
6bf7aab6
DL
2619Make an ephemeral group based on a web search
2620(@code{gnus-group-make-web-group}). If you give a prefix to this
2621command, make a solid group instead. You will be prompted for the
2622search engine type and the search string. Valid search engine types
23f87bed 2623include @code{google}, @code{dejanews}, and @code{gmane}.
6bf7aab6
DL
2624@xref{Web Searches}.
2625
23f87bed 2626If you use the @code{google} search engine, you can limit the search
6bf7aab6 2627to a particular group by using a match string like
23f87bed 2628@samp{shaving group:alt.sysadmin.recovery}.
6bf7aab6 2629
23f87bed
MB
2630@item G R
2631@kindex G R (Group)
2632@findex gnus-group-make-rss-group
2633Make a group based on an @acronym{RSS} feed
2634(@code{gnus-group-make-rss-group}). You will be prompted for an URL.
2635@xref{RSS}.
2636
2637@item G DEL
2638@kindex G DEL (Group)
6bf7aab6
DL
2639@findex gnus-group-delete-group
2640This function will delete the current group
2641(@code{gnus-group-delete-group}). If given a prefix, this function will
2642actually delete all the articles in the group, and forcibly remove the
2643group itself from the face of the Earth. Use a prefix only if you are
2644absolutely sure of what you are doing. This command can't be used on
23f87bed 2645read-only groups (like @code{nntp} groups), though.
6bf7aab6
DL
2646
2647@item G V
23f87bed 2648@kindex G V (Group)
6bf7aab6
DL
2649@findex gnus-group-make-empty-virtual
2650Make a new, fresh, empty @code{nnvirtual} group
2651(@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}.
2652
2653@item G v
23f87bed 2654@kindex G v (Group)
6bf7aab6
DL
2655@findex gnus-group-add-to-virtual
2656Add the current group to an @code{nnvirtual} group
2657(@code{gnus-group-add-to-virtual}). Uses the process/prefix convention.
2658@end table
2659
2660@xref{Select Methods}, for more information on the various select
2661methods.
2662
2663@vindex gnus-activate-foreign-newsgroups
2664If @code{gnus-activate-foreign-newsgroups} is a positive number,
2665Gnus will check all foreign groups with this level or lower at startup.
2666This might take quite a while, especially if you subscribe to lots of
23f87bed 2667groups from different @acronym{NNTP} servers. Also @pxref{Group Levels};
6bf7aab6 2668@code{gnus-activate-level} also affects activation of foreign
2625a8f7 2669newsgroups.
6bf7aab6
DL
2670
2671
2672@node Group Parameters
2673@section Group Parameters
2674@cindex group parameters
2675
2676The group parameters store information local to a particular group.
2677Here's an example group parameter list:
2678
2679@example
2680((to-address . "ding@@gnus.org")
2681 (auto-expire . t))
2682@end example
2683
23f87bed 2684We see that each element consists of a ``dotted pair''---the thing before
6bf7aab6
DL
2685the dot is the key, while the thing after the dot is the value. All the
2686parameters have this form @emph{except} local variable specs, which are
2687not dotted pairs, but proper lists.
2688
23f87bed
MB
2689Some parameters have correspondent customizable variables, each of which
2690is an alist of regexps and values.
2691
6bf7aab6
DL
2692The following group parameters can be used:
2693
2694@table @code
2695@item to-address
2696@cindex to-address
2697Address used by when doing followups and new posts.
2698
2699@example
23f87bed 2700(to-address . "some@@where.com")
6bf7aab6
DL
2701@end example
2702
2703This is primarily useful in mail groups that represent closed mailing
2704lists---mailing lists where it's expected that everybody that writes to
2705the mailing list is subscribed to it. Since using this parameter
2706ensures that the mail only goes to the mailing list itself, it means
2707that members won't receive two copies of your followups.
2708
2709Using @code{to-address} will actually work whether the group is foreign
2710or not. Let's say there's a group on the server that is called
2711@samp{fa.4ad-l}. This is a real newsgroup, but the server has gotten
2712the articles from a mail-to-news gateway. Posting directly to this
2713group is therefore impossible---you have to send mail to the mailing
2714list address instead.
2715
23f87bed 2716See also @code{gnus-parameter-to-address-alist}.
33a48912 2717
6bf7aab6
DL
2718@item to-list
2719@cindex to-list
2625a8f7 2720Address used when doing @kbd{a} in that group.
6bf7aab6
DL
2721
2722@example
2723(to-list . "some@@where.com")
2724@end example
2725
2726It is totally ignored
2727when doing a followup---except that if it is present in a news group,
2728you'll get mail group semantics when doing @kbd{f}.
2729
2730If you do an @kbd{a} command in a mail group and you have neither a
2731@code{to-list} group parameter nor a @code{to-address} group parameter,
2732then a @code{to-list} group parameter will be added automatically upon
2733sending the message if @code{gnus-add-to-list} is set to @code{t}.
2734@vindex gnus-add-to-list
2735
23f87bed
MB
2736@findex gnus-mailing-list-mode
2737@cindex mail list groups
2738If this variable is set, @code{gnus-mailing-list-mode} is turned on when
2739entering summary buffer.
6bf7aab6 2740
33a48912
DL
2741See also @code{gnus-parameter-to-list-alist}.
2742
23f87bed
MB
2743@anchor{subscribed}
2744@item subscribed
2745@cindex subscribed
2746@cindex Mail-Followup-To
2747@findex gnus-find-subscribed-addresses
2748If this parameter is set to @code{t}, Gnus will consider the
2749to-address and to-list parameters for this group as addresses of
2750mailing lists you are subscribed to. Giving Gnus this information is
2751(only) a first step in getting it to generate correct Mail-Followup-To
2752headers for your posts to these lists. The second step is to put the
2753following in your @file{.gnus.el}
2754
2755@lisp
2756(setq message-subscribed-address-functions
2757 '(gnus-find-subscribed-addresses))
2758@end lisp
2759
2760@xref{Mailing Lists, ,Mailing Lists, message, The Message Manual}, for
2761a complete treatment of available MFT support.
2762
6bf7aab6
DL
2763@item visible
2764@cindex visible
2765If the group parameter list has the element @code{(visible . t)},
2766that group will always be visible in the Group buffer, regardless
2767of whether it has any unread articles.
2768
1b155fbd
MB
2769This parameter cannot be set via @code{gnus-parameters}. See
2770@code{gnus-permanently-visible-groups} as an alternative.
2771
6bf7aab6
DL
2772@item broken-reply-to
2773@cindex broken-reply-to
2774Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
23f87bed
MB
2775headers in this group are to be ignored, and for the header to be hidden
2776if @code{reply-to} is part of @code{gnus-boring-article-headers}. This
2777can be useful if you're reading a mailing list group where the listserv
2778has inserted @code{Reply-To} headers that point back to the listserv
2779itself. That is broken behavior. So there!
6bf7aab6
DL
2780
2781@item to-group
2782@cindex to-group
2783Elements like @code{(to-group . "some.group.name")} means that all
2784posts in that group will be sent to @code{some.group.name}.
2785
2786@item newsgroup
2787@cindex newsgroup
2788If you have @code{(newsgroup . t)} in the group parameter list, Gnus
2789will treat all responses as if they were responses to news articles.
2790This can be useful if you have a mail group that's really a mirror of a
2791news group.
2792
2793@item gcc-self
2794@cindex gcc-self
2795If @code{(gcc-self . t)} is present in the group parameter list, newly
2625a8f7 2796composed messages will be @code{Gcc}'d to the current group. If
6bf7aab6
DL
2797@code{(gcc-self . none)} is present, no @code{Gcc:} header will be
2798generated, if @code{(gcc-self . "string")} is present, this string will
2799be inserted literally as a @code{gcc} header. This parameter takes
2800precedence over any default @code{Gcc} rules as described later
2801(@pxref{Archived Messages}).
2802
23f87bed
MB
2803@strong{Caveat}: Adding @code{(gcc-self . t)} to the parameter list of
2804@code{nntp} groups (or the like) isn't valid. An @code{nntp} server
2805doesn't accept articles.
2806
6bf7aab6
DL
2807@item auto-expire
2808@cindex auto-expire
2809If the group parameter has an element that looks like @code{(auto-expire
2810. t)}, all articles read will be marked as expirable. For an
2811alternative approach, @pxref{Expiring Mail}.
2812
23f87bed
MB
2813See also @code{gnus-auto-expirable-newsgroups}.
2814
6bf7aab6
DL
2815@item total-expire
2816@cindex total-expire
2817If the group parameter has an element that looks like
2818@code{(total-expire . t)}, all read articles will be put through the
2819expiry process, even if they are not marked as expirable. Use with
2820caution. Unread, ticked and dormant articles are not eligible for
2821expiry.
2822
33a48912
DL
2823See also @code{gnus-total-expirable-newsgroups}.
2824
6bf7aab6
DL
2825@item expiry-wait
2826@cindex expiry-wait
2827@vindex nnmail-expiry-wait-function
23f87bed
MB
2828If the group parameter has an element that looks like
2829@code{(expiry-wait . 10)}, this value will override any
2830@code{nnmail-expiry-wait} and @code{nnmail-expiry-wait-function}
2831(@pxref{Expiring Mail}) when expiring expirable messages. The value
2832can either be a number of days (not necessarily an integer) or the
2833symbols @code{never} or @code{immediate}.
2834
2835@item expiry-target
2836@cindex expiry-target
2837Where expired messages end up. This parameter overrides
2838@code{nnmail-expiry-target}.
6bf7aab6
DL
2839
2840@item score-file
2841@cindex score file group parameter
2842Elements that look like @code{(score-file . "file")} will make
2843@file{file} into the current score file for the group in question. All
2844interactive score entries will be put into this file.
2845
2846@item adapt-file
2847@cindex adapt file group parameter
2848Elements that look like @code{(adapt-file . "file")} will make
2849@file{file} into the current adaptive file for the group in question.
2850All adaptive score entries will be put into this file.
2851
2852@item admin-address
23f87bed 2853@cindex admin-address
6bf7aab6
DL
2854When unsubscribing from a mailing list you should never send the
2855unsubscription notice to the mailing list itself. Instead, you'd send
2856messages to the administrative address. This parameter allows you to
2857put the admin address somewhere convenient.
2858
2859@item display
23f87bed 2860@cindex display
6bf7aab6
DL
2861Elements that look like @code{(display . MODE)} say which articles to
2862display on entering the group. Valid values are:
2863
2864@table @code
2865@item all
2866Display all articles, both read and unread.
2867
23f87bed
MB
2868@item an integer
2869Display the last @var{integer} articles in the group. This is the same as
2870entering the group with @kbd{C-u @var{integer}}.
2871
6bf7aab6
DL
2872@item default
2873Display the default visible articles, which normally includes unread and
2874ticked articles.
23f87bed
MB
2875
2876@item an array
2877Display articles that satisfy a predicate.
2878
2879Here are some examples:
2880
2881@table @code
2882@item [unread]
2883Display only unread articles.
2884
2885@item [not expire]
2886Display everything except expirable articles.
2887
2888@item [and (not reply) (not expire)]
2889Display everything except expirable and articles you've already
2890responded to.
6bf7aab6
DL
2891@end table
2892
23f87bed
MB
2893The available operators are @code{not}, @code{and} and @code{or}.
2894Predicates include @code{tick}, @code{unsend}, @code{undownload},
2895@code{unread}, @code{dormant}, @code{expire}, @code{reply},
2896@code{killed}, @code{bookmark}, @code{score}, @code{save},
2897@code{cache}, @code{forward}, @code{unseen} and @code{recent}.
2898
2899@end table
2900
2901The @code{display} parameter works by limiting the summary buffer to
2902the subset specified. You can pop the limit by using the @kbd{/ w}
2903command (@pxref{Limiting}).
2904
6bf7aab6 2905@item comment
23f87bed
MB
2906@cindex comment
2907Elements that look like @code{(comment . "This is a comment")} are
2908arbitrary comments on the group. You can display comments in the
2909group line (@pxref{Group Line Specification}).
6bf7aab6 2910
2625a8f7 2911@item charset
23f87bed 2912@cindex charset
2625a8f7
GM
2913Elements that look like @code{(charset . iso-8859-1)} will make
2914@code{iso-8859-1} the default charset; that is, the charset that will be
2915used for all articles that do not specify a charset.
2916
33a48912 2917See also @code{gnus-group-charset-alist}.
6bf7aab6 2918
33a48912 2919@item ignored-charsets
23f87bed
MB
2920@cindex ignored-charset
2921Elements that look like @code{(ignored-charsets x-unknown iso-8859-1)}
33a48912
DL
2922will make @code{iso-8859-1} and @code{x-unknown} ignored; that is, the
2923default charset will be used for decoding articles.
6bf7aab6 2924
33a48912 2925See also @code{gnus-group-ignored-charsets-alist}.
177c0ea7 2926
2625a8f7 2927@item posting-style
23f87bed
MB
2928@cindex posting-style
2929You can store additional posting style information for this group
2625a8f7
GM
2930here (@pxref{Posting Styles}). The format is that of an entry in the
2931@code{gnus-posting-styles} alist, except that there's no regexp matching
2932the group name (of course). Style elements in this group parameter will
2933take precedence over the ones found in @code{gnus-posting-styles}.
2934
2935For instance, if you want a funky name and signature in this group only,
2936instead of hacking @code{gnus-posting-styles}, you could put something
2937like this in the group parameters:
2938
2939@example
2940(posting-style
2941 (name "Funky Name")
23f87bed 2942 ("X-My-Header" "Funky Value")
2625a8f7
GM
2943 (signature "Funky Signature"))
2944@end example
2945
23f87bed
MB
2946@item post-method
2947@cindex post-method
2948If it is set, the value is used as the method for posting message
2949instead of @code{gnus-post-method}.
2950
dda5808a 2951@item banner
23f87bed
MB
2952@cindex banner
2953An item like @code{(banner . @var{regexp})} causes any part of an article
2954that matches the regular expression @var{regexp} to be stripped. Instead of
2955@var{regexp}, you can also use the symbol @code{signature} which strips the
dda5808a
DL
2956last signature or any of the elements of the alist
2957@code{gnus-article-banner-alist}.
2958
23f87bed
MB
2959@item sieve
2960@cindex sieve
2961This parameter contains a Sieve test that should match incoming mail
2962that should be placed in this group. From this group parameter, a
2963Sieve @samp{IF} control structure is generated, having the test as the
2964condition and @samp{fileinto "group.name";} as the body.
2965
2966For example, if the @samp{INBOX.list.sieve} group has the @code{(sieve
2967address "sender" "sieve-admin@@extundo.com")} group parameter, when
2968translating the group parameter into a Sieve script (@pxref{Sieve
2969Commands}) the following Sieve code is generated:
2970
2971@example
2972if address \"sender\" \"sieve-admin@@extundo.com\" @{
2973 fileinto \"INBOX.list.sieve\";
2974@}
2975@end example
2976
2977The Sieve language is described in RFC 3028. @xref{Top, Emacs Sieve,
2978Top, sieve, Emacs Sieve}.
2979
2980@item (agent parameters)
2981If the agent has been enabled, you can set any of the its parameters
2982to control the behavior of the agent in individual groups. See Agent
2983Parameters in @ref{Category Syntax}. Most users will choose to set
2984agent parameters in either an agent category or group topic to
2985minimize the configuration effort.
2986
33a48912
DL
2987@item (@var{variable} @var{form})
2988You can use the group parameters to set variables local to the group you
2989are entering. If you want to turn threading off in @samp{news.answers},
2990you could put @code{(gnus-show-threads nil)} in the group parameters of
2991that group. @code{gnus-show-threads} will be made into a local variable
2992in the summary buffer you enter, and the form @code{nil} will be
2993@code{eval}ed there.
2994
23f87bed
MB
2995Note that this feature sets the variable locally to the summary buffer.
2996But some variables are evaluated in the article buffer, or in the
2997message buffer (of a reply or followup or otherwise newly created
2998message). As a workaround, it might help to add the variable in
2999question to @code{gnus-newsgroup-variables}. @xref{Various Summary
3000Stuff}. So if you want to set @code{message-from-style} via the group
3001parameters, then you may need the following statement elsewhere in your
3002@file{~/.gnus} file:
3003
3004@lisp
3005(add-to-list 'gnus-newsgroup-variables 'message-from-style)
3006@end lisp
3007
3008@vindex gnus-list-identifiers
3009A use for this feature is to remove a mailing list identifier tag in
3010the subject fields of articles. E.g. if the news group
3011
3012@example
3013nntp+news.gnus.org:gmane.text.docbook.apps
3014@end example
3015
3016has the tag @samp{DOC-BOOK-APPS:} in the subject of all articles, this
3017tag can be removed from the article subjects in the summary buffer for
3018the group by putting @code{(gnus-list-identifiers "DOCBOOK-APPS:")}
3019into the group parameters for the group.
3020
9b5773bc
MB
3021This can also be used as a group-specific hook function. If you want to
3022hear a beep when you enter a group, you could put something like
3023@code{(dummy-variable (ding))} in the parameters of that group.
3024@code{dummy-variable} will be set to the (meaningless) result of the
3d80e1a2 3025@code{(ding)} form.
9b5773bc
MB
3026
3027Alternatively, since the VARIABLE becomes local to the group, this
3028pattern can be used to temporarily change a hook. For example, if the
3029following is added to a group parameter
3030
3031@lisp
3032(gnus-summary-prepared-hook
3033 '(lambda nil (local-set-key "d" (local-key-binding "n"))))
3034@end lisp
3035
3036when the group is entered, the 'd' key will not mark the article as
3037expired.
33a48912 3038
6bf7aab6
DL
3039@end table
3040
9e374264
DL
3041Use the @kbd{G p} or the @kbd{G c} command to edit group parameters of a
3042group. (@kbd{G p} presents you with a Lisp-based interface, @kbd{G c}
3043presents you with a Customize-like interface. The latter helps avoid
3044silly Lisp errors.) You might also be interested in reading about topic
3045parameters (@pxref{Topic Parameters}).
6bf7aab6 3046
23f87bed
MB
3047@vindex gnus-parameters
3048Group parameters can be set via the @code{gnus-parameters} variable too.
1b155fbd
MB
3049But some variables, such as @code{visible}, have no effect (For this
3050case see @code{gnus-permanently-visible-groups} as an alternative.).
3051For example:
23f87bed
MB
3052
3053@lisp
3054(setq gnus-parameters
3055 '(("mail\\..*"
3056 (gnus-show-threads nil)
3057 (gnus-use-scoring nil)
3058 (gnus-summary-line-format
3059 "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n")
3060 (gcc-self . t)
3061 (display . all))
3062
3063 ("^nnimap:\\(foo.bar\\)$"
3064 (to-group . "\\1"))
3065
3066 ("mail\\.me"
3067 (gnus-use-scoring t))
3068
3069 ("list\\..*"
3070 (total-expire . t)
3071 (broken-reply-to . t))))
3072@end lisp
3073
3074String value of parameters will be subjected to regexp substitution, as
3075the @code{to-group} example shows.
3076
e8beac8a
MB
3077@vindex gnus-parameters-case-fold-search
3078By default, whether comparing the group name and one of those regexps
3079specified in @code{gnus-parameters} is done in a case-sensitive manner
3080or a case-insensitive manner depends on the value of
3081@code{case-fold-search} at the time when the comparison is done. The
3082value of @code{case-fold-search} is typically @code{t}; it means, for
3083example, the element @code{("INBOX\\.FOO" (total-expire . t))} might be
3084applied to both the @samp{INBOX.FOO} group and the @samp{INBOX.foo}
3085group. If you want to make those regexps always case-sensitive, set the
3086value of the @code{gnus-parameters-case-fold-search} variable to
3087@code{nil}. Otherwise, set it to @code{t} if you want to compare them
3088always in a case-insensitive manner.
3089
6bf7aab6
DL
3090
3091@node Listing Groups
3092@section Listing Groups
3093@cindex group listing
3094
3095These commands all list various slices of the groups available.
3096
3097@table @kbd
3098
3099@item l
3100@itemx A s
23f87bed
MB
3101@kindex A s (Group)
3102@kindex l (Group)
6bf7aab6
DL
3103@findex gnus-group-list-groups
3104List all groups that have unread articles
3105(@code{gnus-group-list-groups}). If the numeric prefix is used, this
3106command will list only groups of level ARG and lower. By default, it
23f87bed 3107only lists groups of level five (i.e.,
6bf7aab6
DL
3108@code{gnus-group-default-list-level}) or lower (i.e., just subscribed
3109groups).
3110
3111@item L
3112@itemx A u
23f87bed
MB
3113@kindex A u (Group)
3114@kindex L (Group)
6bf7aab6
DL
3115@findex gnus-group-list-all-groups
3116List all groups, whether they have unread articles or not
3117(@code{gnus-group-list-all-groups}). If the numeric prefix is used,
3118this command will list only groups of level ARG and lower. By default,
3119it lists groups of level seven or lower (i.e., just subscribed and
3120unsubscribed groups).
3121
3122@item A l
23f87bed 3123@kindex A l (Group)
6bf7aab6
DL
3124@findex gnus-group-list-level
3125List all unread groups on a specific level
3126(@code{gnus-group-list-level}). If given a prefix, also list the groups
3127with no unread articles.
3128
3129@item A k
23f87bed 3130@kindex A k (Group)
6bf7aab6
DL
3131@findex gnus-group-list-killed
3132List all killed groups (@code{gnus-group-list-killed}). If given a
3133prefix argument, really list all groups that are available, but aren't
3134currently (un)subscribed. This could entail reading the active file
3135from the server.
3136
3137@item A z
23f87bed 3138@kindex A z (Group)
6bf7aab6
DL
3139@findex gnus-group-list-zombies
3140List all zombie groups (@code{gnus-group-list-zombies}).
3141
3142@item A m
23f87bed 3143@kindex A m (Group)
6bf7aab6
DL
3144@findex gnus-group-list-matching
3145List all unread, subscribed groups with names that match a regexp
3146(@code{gnus-group-list-matching}).
3147
3148@item A M
23f87bed 3149@kindex A M (Group)
6bf7aab6
DL
3150@findex gnus-group-list-all-matching
3151List groups that match a regexp (@code{gnus-group-list-all-matching}).
3152
3153@item A A
23f87bed 3154@kindex A A (Group)
6bf7aab6
DL
3155@findex gnus-group-list-active
3156List absolutely all groups in the active file(s) of the
3157server(s) you are connected to (@code{gnus-group-list-active}). This
3158might very well take quite a while. It might actually be a better idea
3159to do a @kbd{A M} to list all matching, and just give @samp{.} as the
3160thing to match on. Also note that this command may list groups that
3161don't exist (yet)---these will be listed as if they were killed groups.
3162Take the output with some grains of salt.
3163
3164@item A a
23f87bed 3165@kindex A a (Group)
6bf7aab6
DL
3166@findex gnus-group-apropos
3167List all groups that have names that match a regexp
3168(@code{gnus-group-apropos}).
3169
3170@item A d
23f87bed 3171@kindex A d (Group)
6bf7aab6
DL
3172@findex gnus-group-description-apropos
3173List all groups that have names or descriptions that match a regexp
3174(@code{gnus-group-description-apropos}).
3175
2625a8f7 3176@item A c
23f87bed 3177@kindex A c (Group)
2625a8f7
GM
3178@findex gnus-group-list-cached
3179List all groups with cached articles (@code{gnus-group-list-cached}).
3180
3181@item A ?
23f87bed 3182@kindex A ? (Group)
2625a8f7
GM
3183@findex gnus-group-list-dormant
3184List all groups with dormant articles (@code{gnus-group-list-dormant}).
3185
23f87bed
MB
3186@item A /
3187@kindex A / (Group)
3188@findex gnus-group-list-limit
3189List groups limited within the current selection
3190(@code{gnus-group-list-limit}).
3191
3192@item A f
3193@kindex A f (Group)
3194@findex gnus-group-list-flush
3195Flush groups from the current selection (@code{gnus-group-list-flush}).
3196
3197@item A p
3198@kindex A p (Group)
3199@findex gnus-group-list-plus
3200List groups plus the current selection (@code{gnus-group-list-plus}).
3201
6bf7aab6
DL
3202@end table
3203
3204@vindex gnus-permanently-visible-groups
3205@cindex visible group parameter
3206Groups that match the @code{gnus-permanently-visible-groups} regexp will
3207always be shown, whether they have unread articles or not. You can also
3208add the @code{visible} element to the group parameters in question to
3209get the same effect.
3210
3211@vindex gnus-list-groups-with-ticked-articles
3212Groups that have just ticked articles in it are normally listed in the
3213group buffer. If @code{gnus-list-groups-with-ticked-articles} is
3214@code{nil}, these groups will be treated just like totally empty
3215groups. It is @code{t} by default.
3216
3217
3218@node Sorting Groups
3219@section Sorting Groups
3220@cindex sorting groups
3221
23f87bed 3222@kindex C-c C-s (Group)
6bf7aab6
DL
3223@findex gnus-group-sort-groups
3224@vindex gnus-group-sort-function
3225The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
3226group buffer according to the function(s) given by the
3227@code{gnus-group-sort-function} variable. Available sorting functions
3228include:
3229
3230@table @code
3231
3232@item gnus-group-sort-by-alphabet
3233@findex gnus-group-sort-by-alphabet
3234Sort the group names alphabetically. This is the default.
3235
3236@item gnus-group-sort-by-real-name
3237@findex gnus-group-sort-by-real-name
3238Sort the group alphabetically on the real (unprefixed) group names.
3239
3240@item gnus-group-sort-by-level
3241@findex gnus-group-sort-by-level
3242Sort by group level.
3243
3244@item gnus-group-sort-by-score
3245@findex gnus-group-sort-by-score
3246Sort by group score. @xref{Group Score}.
3247
3248@item gnus-group-sort-by-rank
3249@findex gnus-group-sort-by-rank
3250Sort by group score and then the group level. The level and the score
3251are, when taken together, the group's @dfn{rank}. @xref{Group Score}.
3252
3253@item gnus-group-sort-by-unread
3254@findex gnus-group-sort-by-unread
3255Sort by number of unread articles.
3256
3257@item gnus-group-sort-by-method
3258@findex gnus-group-sort-by-method
3259Sort alphabetically on the select method.
3260
23f87bed
MB
3261@item gnus-group-sort-by-server
3262@findex gnus-group-sort-by-server
3263Sort alphabetically on the Gnus server name.
3264
6bf7aab6
DL
3265
3266@end table
3267
3268@code{gnus-group-sort-function} can also be a list of sorting
3269functions. In that case, the most significant sort key function must be
3270the last one.
3271
3272
3273There are also a number of commands for sorting directly according to
3274some sorting criteria:
3275
3276@table @kbd
3277@item G S a
23f87bed 3278@kindex G S a (Group)
6bf7aab6
DL
3279@findex gnus-group-sort-groups-by-alphabet
3280Sort the group buffer alphabetically by group name
3281(@code{gnus-group-sort-groups-by-alphabet}).
3282
3283@item G S u
23f87bed 3284@kindex G S u (Group)
6bf7aab6
DL
3285@findex gnus-group-sort-groups-by-unread
3286Sort the group buffer by the number of unread articles
3287(@code{gnus-group-sort-groups-by-unread}).
3288
3289@item G S l
23f87bed 3290@kindex G S l (Group)
6bf7aab6
DL
3291@findex gnus-group-sort-groups-by-level
3292Sort the group buffer by group level
3293(@code{gnus-group-sort-groups-by-level}).
3294
3295@item G S v
23f87bed 3296@kindex G S v (Group)
6bf7aab6
DL
3297@findex gnus-group-sort-groups-by-score
3298Sort the group buffer by group score
3299(@code{gnus-group-sort-groups-by-score}). @xref{Group Score}.
3300
3301@item G S r
23f87bed 3302@kindex G S r (Group)
6bf7aab6
DL
3303@findex gnus-group-sort-groups-by-rank
3304Sort the group buffer by group rank
3305(@code{gnus-group-sort-groups-by-rank}). @xref{Group Score}.
3306
3307@item G S m
23f87bed 3308@kindex G S m (Group)
6bf7aab6 3309@findex gnus-group-sort-groups-by-method
23f87bed 3310Sort the group buffer alphabetically by back end name@*
6bf7aab6
DL
3311(@code{gnus-group-sort-groups-by-method}).
3312
23f87bed
MB
3313@item G S n
3314@kindex G S n (Group)
3315@findex gnus-group-sort-groups-by-real-name
3316Sort the group buffer alphabetically by real (unprefixed) group name
3317(@code{gnus-group-sort-groups-by-real-name}).
3318
6bf7aab6
DL
3319@end table
3320
2625a8f7
GM
3321All the commands below obey the process/prefix convention
3322(@pxref{Process/Prefix}).
3323
3324When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
3325commands will sort in reverse order.
6bf7aab6
DL
3326
3327You can also sort a subset of the groups:
3328
3329@table @kbd
3330@item G P a
23f87bed 3331@kindex G P a (Group)
6bf7aab6 3332@findex gnus-group-sort-selected-groups-by-alphabet
2625a8f7
GM
3333Sort the groups alphabetically by group name
3334(@code{gnus-group-sort-selected-groups-by-alphabet}).
6bf7aab6
DL
3335
3336@item G P u
23f87bed 3337@kindex G P u (Group)
6bf7aab6 3338@findex gnus-group-sort-selected-groups-by-unread
2625a8f7
GM
3339Sort the groups by the number of unread articles
3340(@code{gnus-group-sort-selected-groups-by-unread}).
6bf7aab6
DL
3341
3342@item G P l
23f87bed 3343@kindex G P l (Group)
6bf7aab6 3344@findex gnus-group-sort-selected-groups-by-level
2625a8f7 3345Sort the groups by group level
6bf7aab6
DL
3346(@code{gnus-group-sort-selected-groups-by-level}).
3347
3348@item G P v
23f87bed 3349@kindex G P v (Group)
6bf7aab6 3350@findex gnus-group-sort-selected-groups-by-score
2625a8f7 3351Sort the groups by group score
6bf7aab6
DL
3352(@code{gnus-group-sort-selected-groups-by-score}). @xref{Group Score}.
3353
3354@item G P r
23f87bed 3355@kindex G P r (Group)
6bf7aab6 3356@findex gnus-group-sort-selected-groups-by-rank
2625a8f7 3357Sort the groups by group rank
6bf7aab6
DL
3358(@code{gnus-group-sort-selected-groups-by-rank}). @xref{Group Score}.
3359
3360@item G P m
23f87bed 3361@kindex G P m (Group)
6bf7aab6 3362@findex gnus-group-sort-selected-groups-by-method
23f87bed 3363Sort the groups alphabetically by back end name@*
2625a8f7 3364(@code{gnus-group-sort-selected-groups-by-method}).
6bf7aab6 3365
23f87bed
MB
3366@item G P n
3367@kindex G P n (Group)
3368@findex gnus-group-sort-selected-groups-by-real-name
3369Sort the groups alphabetically by real (unprefixed) group name
3370(@code{gnus-group-sort-selected-groups-by-real-name}).
3371
3372@item G P s
3373@kindex G P s (Group)
3374@findex gnus-group-sort-selected-groups
3375Sort the groups according to @code{gnus-group-sort-function}.
3376
6bf7aab6
DL
3377@end table
3378
23f87bed
MB
3379And finally, note that you can use @kbd{C-k} and @kbd{C-y} to manually
3380move groups around.
6bf7aab6
DL
3381
3382
3383@node Group Maintenance
3384@section Group Maintenance
3385@cindex bogus groups
3386
3387@table @kbd
3388@item b
23f87bed 3389@kindex b (Group)
6bf7aab6
DL
3390@findex gnus-group-check-bogus-groups
3391Find bogus groups and delete them
3392(@code{gnus-group-check-bogus-groups}).
3393
3394@item F
23f87bed 3395@kindex F (Group)
6bf7aab6
DL
3396@findex gnus-group-find-new-groups
3397Find new groups and process them (@code{gnus-group-find-new-groups}).
3398With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
3399for new groups. With 2 @kbd{C-u}'s, use most complete method possible
3400to query the server for new groups, and subscribe the new groups as
3401zombies.
3402
3403@item C-c C-x
23f87bed 3404@kindex C-c C-x (Group)
6bf7aab6
DL
3405@findex gnus-group-expire-articles
3406Run all expirable articles in the current group through the expiry
23f87bed
MB
3407process (if any) (@code{gnus-group-expire-articles}). That is, delete
3408all expirable articles in the group that have been around for a while.
3409(@pxref{Expiring Mail}).
6bf7aab6 3410
718fb8a1 3411@item C-c C-M-x
23f87bed 3412@kindex C-c C-M-x (Group)
6bf7aab6 3413@findex gnus-group-expire-all-groups
23f87bed 3414Run all expirable articles in all groups through the expiry process
6bf7aab6
DL
3415(@code{gnus-group-expire-all-groups}).
3416
3417@end table
3418
3419
3420@node Browse Foreign Server
3421@section Browse Foreign Server
3422@cindex foreign servers
3423@cindex browsing servers
3424
3425@table @kbd
3426@item B
23f87bed 3427@kindex B (Group)
6bf7aab6
DL
3428@findex gnus-group-browse-foreign-server
3429You will be queried for a select method and a server name. Gnus will
3430then attempt to contact this server and let you browse the groups there
3431(@code{gnus-group-browse-foreign-server}).
3432@end table
3433
3434@findex gnus-browse-mode
3435A new buffer with a list of available groups will appear. This buffer
3436will use the @code{gnus-browse-mode}. This buffer looks a bit (well,
3437a lot) like a normal group buffer.
3438
3439Here's a list of keystrokes available in the browse mode:
3440
3441@table @kbd
3442@item n
3443@kindex n (Browse)
3444@findex gnus-group-next-group
3445Go to the next group (@code{gnus-group-next-group}).
3446
3447@item p
3448@kindex p (Browse)
3449@findex gnus-group-prev-group
3450Go to the previous group (@code{gnus-group-prev-group}).
3451
23f87bed
MB
3452@item SPACE
3453@kindex SPACE (Browse)
6bf7aab6
DL
3454@findex gnus-browse-read-group
3455Enter the current group and display the first article
3456(@code{gnus-browse-read-group}).
3457
23f87bed
MB
3458@item RET
3459@kindex RET (Browse)
6bf7aab6
DL
3460@findex gnus-browse-select-group
3461Enter the current group (@code{gnus-browse-select-group}).
3462
3463@item u
3464@kindex u (Browse)
3465@findex gnus-browse-unsubscribe-current-group
3466Unsubscribe to the current group, or, as will be the case here,
3467subscribe to it (@code{gnus-browse-unsubscribe-current-group}).
3468
3469@item l
3470@itemx q
3471@kindex q (Browse)
3472@kindex l (Browse)
3473@findex gnus-browse-exit
3474Exit browse mode (@code{gnus-browse-exit}).
3475
23f87bed
MB
3476@item d
3477@kindex d (Browse)
3478@findex gnus-browse-describe-group
3479Describe the current group (@code{gnus-browse-describe-group}).
3480
6bf7aab6
DL
3481@item ?
3482@kindex ? (Browse)
3483@findex gnus-browse-describe-briefly
3484Describe browse mode briefly (well, there's not much to describe, is
3485there) (@code{gnus-browse-describe-briefly}).
3486@end table
3487
3488
3489@node Exiting Gnus
3490@section Exiting Gnus
3491@cindex exiting Gnus
3492
3493Yes, Gnus is ex(c)iting.
3494
3495@table @kbd
3496@item z
23f87bed 3497@kindex z (Group)
6bf7aab6
DL
3498@findex gnus-group-suspend
3499Suspend Gnus (@code{gnus-group-suspend}). This doesn't really exit Gnus,
3500but it kills all buffers except the Group buffer. I'm not sure why this
3501is a gain, but then who am I to judge?
3502
3503@item q
23f87bed 3504@kindex q (Group)
6bf7aab6
DL
3505@findex gnus-group-exit
3506@c @icon{gnus-group-exit}
3507Quit Gnus (@code{gnus-group-exit}).
3508
3509@item Q
23f87bed 3510@kindex Q (Group)
6bf7aab6
DL
3511@findex gnus-group-quit
3512Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
3513The dribble file will be saved, though (@pxref{Auto Save}).
3514@end table
3515
3516@vindex gnus-exit-gnus-hook
3517@vindex gnus-suspend-gnus-hook
23f87bed 3518@vindex gnus-after-exiting-gnus-hook
6bf7aab6
DL
3519@code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
3520@code{gnus-exit-gnus-hook} is called when you quit Gnus, while
3521@code{gnus-after-exiting-gnus-hook} is called as the final item when
3522exiting Gnus.
3523
6bf7aab6
DL
3524Note:
3525
3526@quotation
3527Miss Lisa Cannifax, while sitting in English class, felt her feet go
3528numbly heavy and herself fall into a hazy trance as the boy sitting
3529behind her drew repeated lines with his pencil across the back of her
3530plastic chair.
3531@end quotation
3532
3533
3534@node Group Topics
3535@section Group Topics
3536@cindex topics
3537
3538If you read lots and lots of groups, it might be convenient to group
3539them hierarchically according to topics. You put your Emacs groups over
3540here, your sex groups over there, and the rest (what, two groups or so?)
3541you put in some misc section that you never bother with anyway. You can
3542even group the Emacs sex groups as a sub-topic to either the Emacs
3543groups or the sex groups---or both! Go wild!
3544
2625a8f7
GM
3545@iftex
3546@iflatex
3547\gnusfigure{Group Topics}{400}{
23f87bed 3548\put(75,50){\epsfig{figure=ps/group-topic,height=9cm}}
2625a8f7
GM
3549}
3550@end iflatex
3551@end iftex
3552
6bf7aab6
DL
3553Here's an example:
3554
3555@example
3556Gnus
3557 Emacs -- I wuw it!
3558 3: comp.emacs
3559 2: alt.religion.emacs
3560 Naughty Emacs
3561 452: alt.sex.emacs
3562 0: comp.talk.emacs.recovery
3563 Misc
3564 8: comp.binaries.fractals
3565 13: comp.sources.unix
3566@end example
3567
3568@findex gnus-topic-mode
23f87bed 3569@kindex t (Group)
6bf7aab6
DL
3570To get this @emph{fab} functionality you simply turn on (ooh!) the
3571@code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This
3572is a toggling command.)
3573
3574Go ahead, just try it. I'll still be here when you get back. La de
23f87bed
MB
3575dum@dots{} Nice tune, that@dots{} la la la@dots{} What, you're back?
3576Yes, and now press @kbd{l}. There. All your groups are now listed
3577under @samp{misc}. Doesn't that make you feel all warm and fuzzy?
3578Hot and bothered?
6bf7aab6
DL
3579
3580If you want this permanently enabled, you should add that minor mode to
23f87bed
MB
3581the hook for the group mode. Put the following line in your
3582@file{~/.gnus.el} file:
6bf7aab6
DL
3583
3584@lisp
3585(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
3586@end lisp
3587
3588@menu
23f87bed
MB
3589* Topic Commands:: Interactive E-Z commands.
3590* Topic Variables:: How to customize the topics the Lisp Way.
3591* Topic Sorting:: Sorting each topic individually.
3592* Topic Topology:: A map of the world.
3593* Topic Parameters:: Parameters that apply to all groups in a topic.
6bf7aab6
DL
3594@end menu
3595
3596
6bf7aab6
DL
3597@node Topic Commands
3598@subsection Topic Commands
3599@cindex topic commands
3600
3601When the topic minor mode is turned on, a new @kbd{T} submap will be
3602available. In addition, a few of the standard keys change their
3603definitions slightly.
3604
23f87bed
MB
3605In general, the following kinds of operations are possible on topics.
3606First of all, you want to create topics. Secondly, you want to put
3607groups in topics and to move them around until you have an order you
3608like. The third kind of operation is to show/hide parts of the whole
3609shebang. You might want to hide a topic including its subtopics and
3610groups, to get a better overview of the other groups.
3611
3612Here is a list of the basic keys that you might need to set up topics
3613the way you like.
3614
6bf7aab6
DL
3615@table @kbd
3616
3617@item T n
3618@kindex T n (Topic)
3619@findex gnus-topic-create-topic
3620Prompt for a new topic name and create it
3621(@code{gnus-topic-create-topic}).
3622
23f87bed
MB
3623@item T TAB
3624@itemx TAB
3625@kindex T TAB (Topic)
3626@kindex TAB (Topic)
3627@findex gnus-topic-indent
3628``Indent'' the current topic so that it becomes a sub-topic of the
3629previous topic (@code{gnus-topic-indent}). If given a prefix,
3630``un-indent'' the topic instead.
3631
3632@item M-TAB
3633@kindex M-TAB (Topic)
3634@findex gnus-topic-unindent
3635``Un-indent'' the current topic so that it becomes a sub-topic of the
3636parent of its current parent (@code{gnus-topic-unindent}).
3637
3638@end table
3639
3640The following two keys can be used to move groups and topics around.
3641They work like the well-known cut and paste. @kbd{C-k} is like cut and
3642@kbd{C-y} is like paste. Of course, this being Emacs, we use the terms
3643kill and yank rather than cut and paste.
3644
3645@table @kbd
3646
3647@item C-k
3648@kindex C-k (Topic)
3649@findex gnus-topic-kill-group
3650Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the
3651topic will be removed along with the topic.
3652
3653@item C-y
3654@kindex C-y (Topic)
3655@findex gnus-topic-yank-group
3656Yank the previously killed group or topic
3657(@code{gnus-topic-yank-group}). Note that all topics will be yanked
3658before all groups.
3659
3660So, to move a topic to the beginning of the list of topics, just hit
3661@kbd{C-k} on it. This is like the ``cut'' part of cut and paste. Then,
3662move the cursor to the beginning of the buffer (just below the ``Gnus''
3663topic) and hit @kbd{C-y}. This is like the ``paste'' part of cut and
3664paste. Like I said -- E-Z.
3665
3666You can use @kbd{C-k} and @kbd{C-y} on groups as well as on topics. So
3667you can move topics around as well as groups.
3668
3669@end table
3670
3671After setting up the topics the way you like them, you might wish to
3672hide a topic, or to show it again. That's why we have the following
3673key.
3674
3675@table @kbd
3676
3677@item RET
3678@kindex RET (Topic)
3679@findex gnus-topic-select-group
3680@itemx SPACE
3681Either select a group or fold a topic (@code{gnus-topic-select-group}).
3682When you perform this command on a group, you'll enter the group, as
3683usual. When done on a topic line, the topic will be folded (if it was
3684visible) or unfolded (if it was folded already). So it's basically a
3685toggling command on topics. In addition, if you give a numerical
3686prefix, group on that level (and lower) will be displayed.
3687
3688@end table
3689
3690Now for a list of other commands, in no particular order.
3691
3692@table @kbd
3693
3694@item T m
6bf7aab6
DL
3695@kindex T m (Topic)
3696@findex gnus-topic-move-group
3697Move the current group to some other topic
3698(@code{gnus-topic-move-group}). This command uses the process/prefix
3699convention (@pxref{Process/Prefix}).
3700
2625a8f7
GM
3701@item T j
3702@kindex T j (Topic)
3703@findex gnus-topic-jump-to-topic
177c0ea7 3704Go to a topic (@code{gnus-topic-jump-to-topic}).
2625a8f7 3705
6bf7aab6
DL
3706@item T c
3707@kindex T c (Topic)
3708@findex gnus-topic-copy-group
3709Copy the current group to some other topic
3710(@code{gnus-topic-copy-group}). This command uses the process/prefix
3711convention (@pxref{Process/Prefix}).
3712
2625a8f7
GM
3713@item T h
3714@kindex T h (Topic)
3715@findex gnus-topic-hide-topic
3716Hide the current topic (@code{gnus-topic-hide-topic}). If given
3717a prefix, hide the topic permanently.
3718
3719@item T s
3720@kindex T s (Topic)
3721@findex gnus-topic-show-topic
3722Show the current topic (@code{gnus-topic-show-topic}). If given
3723a prefix, show the topic permanently.
3724
6bf7aab6
DL
3725@item T D
3726@kindex T D (Topic)
3727@findex gnus-topic-remove-group
3728Remove a group from the current topic (@code{gnus-topic-remove-group}).
3729This command is mainly useful if you have the same group in several
3730topics and wish to remove it from one of the topics. You may also
3731remove a group from all topics, but in that case, Gnus will add it to
3732the root topic the next time you start Gnus. In fact, all new groups
3733(which, naturally, don't belong to any topic) will show up in the root
2625a8f7 3734topic.
6bf7aab6
DL
3735
3736This command uses the process/prefix convention
3737(@pxref{Process/Prefix}).
3738
3739@item T M
3740@kindex T M (Topic)
3741@findex gnus-topic-move-matching
3742Move all groups that match some regular expression to a topic
3743(@code{gnus-topic-move-matching}).
3744
3745@item T C
3746@kindex T C (Topic)
3747@findex gnus-topic-copy-matching
3748Copy all groups that match some regular expression to a topic
3749(@code{gnus-topic-copy-matching}).
3750
3751@item T H
3752@kindex T H (Topic)
3753@findex gnus-topic-toggle-display-empty-topics
3754Toggle hiding empty topics
3755(@code{gnus-topic-toggle-display-empty-topics}).
3756
3757@item T #
3758@kindex T # (Topic)
3759@findex gnus-topic-mark-topic
3760Mark all groups in the current topic with the process mark
23f87bed
MB
3761(@code{gnus-topic-mark-topic}). This command works recursively on
3762sub-topics unless given a prefix.
6bf7aab6
DL
3763
3764@item T M-#
3765@kindex T M-# (Topic)
3766@findex gnus-topic-unmark-topic
3767Remove the process mark from all groups in the current topic
23f87bed
MB
3768(@code{gnus-topic-unmark-topic}). This command works recursively on
3769sub-topics unless given a prefix.
2625a8f7
GM
3770
3771@item C-c C-x
3772@kindex C-c C-x (Topic)
3773@findex gnus-topic-expire-articles
23f87bed
MB
3774Run all expirable articles in the current group or topic through the
3775expiry process (if any)
3776(@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}).
6bf7aab6
DL
3777
3778@item T r
3779@kindex T r (Topic)
3780@findex gnus-topic-rename
3781Rename a topic (@code{gnus-topic-rename}).
3782
23f87bed
MB
3783@item T DEL
3784@kindex T DEL (Topic)
6bf7aab6
DL
3785@findex gnus-topic-delete
3786Delete an empty topic (@code{gnus-topic-delete}).
3787
3788@item A T
3789@kindex A T (Topic)
3790@findex gnus-topic-list-active
3791List all groups that Gnus knows about in a topics-ified way
3792(@code{gnus-topic-list-active}).
3793
23f87bed
MB
3794@item T M-n
3795@kindex T M-n (Topic)
3796@findex gnus-topic-goto-next-topic
3797Go to the next topic (@code{gnus-topic-goto-next-topic}).
3798
3799@item T M-p
3800@kindex T M-p (Topic)
3801@findex gnus-topic-goto-previous-topic
3802Go to the next topic (@code{gnus-topic-goto-previous-topic}).
3803
6bf7aab6
DL
3804@item G p
3805@kindex G p (Topic)
3806@findex gnus-topic-edit-parameters
3807@cindex group parameters
3808@cindex topic parameters
3809@cindex parameters
3810Edit the topic parameters (@code{gnus-topic-edit-parameters}).
3811@xref{Topic Parameters}.
3812
3813@end table
3814
3815
23f87bed
MB
3816@node Topic Variables
3817@subsection Topic Variables
3818@cindex topic variables
3819
3820The previous section told you how to tell Gnus which topics to display.
3821This section explains how to tell Gnus what to display about each topic.
3822
3823@vindex gnus-topic-line-format
3824The topic lines themselves are created according to the
3825@code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
3826Valid elements are:
3827
3828@table @samp
3829@item i
3830Indentation.
3831@item n
3832Topic name.
3833@item v
3834Visibility.
3835@item l
3836Level.
3837@item g
3838Number of groups in the topic.
3839@item a
3840Number of unread articles in the topic.
3841@item A
3842Number of unread articles in the topic and all its subtopics.
3843@end table
3844
3845@vindex gnus-topic-indent-level
3846Each sub-topic (and the groups in the sub-topics) will be indented with
3847@code{gnus-topic-indent-level} times the topic level number of spaces.
3848The default is 2.
3849
3850@vindex gnus-topic-mode-hook
3851@code{gnus-topic-mode-hook} is called in topic minor mode buffers.
3852
3853@vindex gnus-topic-display-empty-topics
3854The @code{gnus-topic-display-empty-topics} says whether to display even
3855topics that have no unread articles in them. The default is @code{t}.
3856
3857
6bf7aab6
DL
3858@node Topic Sorting
3859@subsection Topic Sorting
3860@cindex topic sorting
3861
3862You can sort the groups in each topic individually with the following
3863commands:
3864
3865
3866@table @kbd
3867@item T S a
3868@kindex T S a (Topic)
3869@findex gnus-topic-sort-groups-by-alphabet
3870Sort the current topic alphabetically by group name
3871(@code{gnus-topic-sort-groups-by-alphabet}).
3872
3873@item T S u
3874@kindex T S u (Topic)
3875@findex gnus-topic-sort-groups-by-unread
3876Sort the current topic by the number of unread articles
3877(@code{gnus-topic-sort-groups-by-unread}).
3878
3879@item T S l
3880@kindex T S l (Topic)
3881@findex gnus-topic-sort-groups-by-level
3882Sort the current topic by group level
3883(@code{gnus-topic-sort-groups-by-level}).
3884
3885@item T S v
3886@kindex T S v (Topic)
3887@findex gnus-topic-sort-groups-by-score
3888Sort the current topic by group score
3889(@code{gnus-topic-sort-groups-by-score}). @xref{Group Score}.
3890
3891@item T S r
3892@kindex T S r (Topic)
3893@findex gnus-topic-sort-groups-by-rank
3894Sort the current topic by group rank
3895(@code{gnus-topic-sort-groups-by-rank}). @xref{Group Score}.
3896
3897@item T S m
3898@kindex T S m (Topic)
3899@findex gnus-topic-sort-groups-by-method
a8edc211 3900Sort the current topic alphabetically by back end name
6bf7aab6
DL
3901(@code{gnus-topic-sort-groups-by-method}).
3902
23f87bed
MB
3903@item T S e
3904@kindex T S e (Topic)
3905@findex gnus-topic-sort-groups-by-server
3906Sort the current topic alphabetically by server name
3907(@code{gnus-topic-sort-groups-by-server}).
3908
3909@item T S s
3910@kindex T S s (Topic)
3911@findex gnus-topic-sort-groups
3912Sort the current topic according to the function(s) given by the
3913@code{gnus-group-sort-function} variable
3914(@code{gnus-topic-sort-groups}).
3915
6bf7aab6
DL
3916@end table
3917
23f87bed
MB
3918When given a prefix argument, all these commands will sort in reverse
3919order. @xref{Sorting Groups}, for more information about group
3920sorting.
6bf7aab6
DL
3921
3922
3923@node Topic Topology
3924@subsection Topic Topology
3925@cindex topic topology
3926@cindex topology
3927
3928So, let's have a look at an example group buffer:
3929
3930@example
23f87bed 3931@group
6bf7aab6
DL
3932Gnus
3933 Emacs -- I wuw it!
3934 3: comp.emacs
3935 2: alt.religion.emacs
3936 Naughty Emacs
3937 452: alt.sex.emacs
3938 0: comp.talk.emacs.recovery
3939 Misc
3940 8: comp.binaries.fractals
3941 13: comp.sources.unix
23f87bed 3942@end group
6bf7aab6
DL
3943@end example
3944
3945So, here we have one top-level topic (@samp{Gnus}), two topics under
3946that, and one sub-topic under one of the sub-topics. (There is always
3947just one (1) top-level topic). This topology can be expressed as
3948follows:
3949
3950@lisp
3951(("Gnus" visible)
3952 (("Emacs -- I wuw it!" visible)
3953 (("Naughty Emacs" visible)))
3954 (("Misc" visible)))
3955@end lisp
3956
3957@vindex gnus-topic-topology
3958This is in fact how the variable @code{gnus-topic-topology} would look
3959for the display above. That variable is saved in the @file{.newsrc.eld}
3960file, and shouldn't be messed with manually---unless you really want
3961to. Since this variable is read from the @file{.newsrc.eld} file,
3962setting it in any other startup files will have no effect.
3963
3964This topology shows what topics are sub-topics of what topics (right),
3965and which topics are visible. Two settings are currently
3966allowed---@code{visible} and @code{invisible}.
3967
3968
3969@node Topic Parameters
3970@subsection Topic Parameters
3971@cindex topic parameters
3972
23f87bed
MB
3973All groups in a topic will inherit group parameters from the parent
3974(and ancestor) topic parameters. All valid group parameters are valid
3975topic parameters (@pxref{Group Parameters}). When the agent is
3976enabled, all agent parameters (See Agent Parameters in @ref{Category
3977Syntax}) are also valid topic parameters.
6bf7aab6 3978
2625a8f7
GM
3979In addition, the following parameters are only valid as topic
3980parameters:
3981
3982@table @code
3983@item subscribe
177c0ea7
JB
3984When subscribing new groups by topic (@pxref{Subscription Methods}), the
3985@code{subscribe} topic parameter says what groups go in what topic. Its
2625a8f7 3986value should be a regexp to match the groups that should go in that
177c0ea7 3987topic.
2625a8f7 3988
23f87bed
MB
3989@item subscribe-level
3990When subscribing new groups by topic (see the @code{subscribe} parameter),
3991the group will be subscribed with the level specified in the
3992@code{subscribe-level} instead of @code{gnus-level-default-subscribed}.
3993
2625a8f7
GM
3994@end table
3995
6bf7aab6
DL
3996Group parameters (of course) override topic parameters, and topic
3997parameters in sub-topics override topic parameters in super-topics. You
3998know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a
3999verb, although you may feel free to disagree with me here.)
4000
4001@example
23f87bed 4002@group
6bf7aab6
DL
4003Gnus
4004 Emacs
4005 3: comp.emacs
4006 2: alt.religion.emacs
4007 452: alt.sex.emacs
4008 Relief
4009 452: alt.sex.emacs
4010 0: comp.talk.emacs.recovery
4011 Misc
4012 8: comp.binaries.fractals
4013 13: comp.sources.unix
4014 452: alt.sex.emacs
3d80e1a2 4015@end group
6bf7aab6
DL
4016@end example
4017
4018The @samp{Emacs} topic has the topic parameter @code{(score-file
4019. "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
4020@code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
4021topic parameter @code{(score-file . "emacs.SCORE")}. In addition,
4022@* @samp{alt.religion.emacs} has the group parameter @code{(score-file
4023. "religion.SCORE")}.
4024
4025Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
4026will get the @file{relief.SCORE} home score file. If you enter the same
4027group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
4028score file. If you enter the group @samp{alt.religion.emacs}, you'll
4029get the @file{religion.SCORE} home score file.
4030
4031This seems rather simple and self-evident, doesn't it? Well, yes. But
4032there are some problems, especially with the @code{total-expiry}
4033parameter. Say you have a mail group in two topics; one with
4034@code{total-expiry} and one without. What happens when you do @kbd{M-x
4035gnus-expire-all-expirable-groups}? Gnus has no way of telling which one
4036of these topics you mean to expire articles from, so anything may
4037happen. In fact, I hereby declare that it is @dfn{undefined} what
4038happens. You just have to be careful if you do stuff like that.
4039
4040
4041@node Misc Group Stuff
4042@section Misc Group Stuff
4043
4044@menu
23f87bed
MB
4045* Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
4046* Group Information:: Information and help on groups and Gnus.
4047* Group Timestamp:: Making Gnus keep track of when you last read a group.
4048* File Commands:: Reading and writing the Gnus files.
4049* Sieve Commands:: Managing Sieve scripts.
6bf7aab6
DL
4050@end menu
4051
4052@table @kbd
4053
14e6dc54
MB
4054@item v
4055@kindex v (Group)
4056@cindex keys, reserved for users (Group)
4057The key @kbd{v} is reserved for users. You can bind it key to some
4058function or better use it as a prefix key. For example:
4059
4060@lisp
4061(define-key gnus-group-mode-map (kbd "v j d")
4062 (lambda ()
4063 (interactive)
4064 (gnus-group-jump-to-group "nndraft:drafts")))
4065@end lisp
4066
4067On keys reserved for users in Emacs and on keybindings in general
4068@xref{Keymaps, Keymaps, , emacs, The Emacs Editor}.
4069
6bf7aab6 4070@item ^
23f87bed 4071@kindex ^ (Group)
6bf7aab6
DL
4072@findex gnus-group-enter-server-mode
4073Enter the server buffer (@code{gnus-group-enter-server-mode}).
23f87bed 4074@xref{Server Buffer}.
6bf7aab6
DL
4075
4076@item a
23f87bed 4077@kindex a (Group)
6bf7aab6 4078@findex gnus-group-post-news
23f87bed
MB
4079Start composing a message (a news by default)
4080(@code{gnus-group-post-news}). If given a prefix, post to the group
4081under the point. If the prefix is 1, prompt for a group to post to.
4082Contrary to what the name of this function suggests, the prepared
4083article might be a mail instead of a news, if a mail group is specified
4084with the prefix argument. @xref{Composing Messages}.
6bf7aab6
DL
4085
4086@item m
23f87bed 4087@kindex m (Group)
6bf7aab6 4088@findex gnus-group-mail
23f87bed
MB
4089Mail a message somewhere (@code{gnus-group-mail}). If given a prefix,
4090use the posting style of the group under the point. If the prefix is 1,
4091prompt for a group name to find the posting style.
4092@xref{Composing Messages}.
4093
4094@item i
4095@kindex i (Group)
4096@findex gnus-group-news
4097Start composing a news (@code{gnus-group-news}). If given a prefix,
4098post to the group under the point. If the prefix is 1, prompt
4099for group to post to. @xref{Composing Messages}.
4100
4101This function actually prepares a news even when using mail groups.
4102This is useful for ``posting'' messages to mail groups without actually
4103sending them over the network: they're just saved directly to the group
4104in question. The corresponding back end must have a request-post method
4105for this to work though.
6bf7aab6
DL
4106
4107@end table
4108
4109Variables for the group buffer:
4110
4111@table @code
4112
4113@item gnus-group-mode-hook
4114@vindex gnus-group-mode-hook
4115is called after the group buffer has been
4116created.
4117
4118@item gnus-group-prepare-hook
4119@vindex gnus-group-prepare-hook
4120is called after the group buffer is
4121generated. It may be used to modify the buffer in some strange,
4122unnatural way.
4123
4124@item gnus-group-prepared-hook
4125@vindex gnus-group-prepare-hook
4126is called as the very last thing after the group buffer has been
4127generated. It may be used to move point around, for instance.
4128
4129@item gnus-permanently-visible-groups
4130@vindex gnus-permanently-visible-groups
4131Groups matching this regexp will always be listed in the group buffer,
4132whether they are empty or not.
4133
2625a8f7
GM
4134@item gnus-group-name-charset-method-alist
4135@vindex gnus-group-name-charset-method-alist
23f87bed
MB
4136An alist of method and the charset for group names. It is used to show
4137non-@acronym{ASCII} group names.
6bf7aab6 4138
2625a8f7
GM
4139For example:
4140@lisp
4141(setq gnus-group-name-charset-method-alist
4142 '(((nntp "news.com.cn") . cn-gb-2312)))
4143@end lisp
4144
4145@item gnus-group-name-charset-group-alist
23f87bed 4146@cindex UTF-8 group names
2625a8f7 4147@vindex gnus-group-name-charset-group-alist
23f87bed
MB
4148An alist of regexp of group name and the charset for group names. It
4149is used to show non-@acronym{ASCII} group names. @code{((".*"
4150utf-8))} is the default value if UTF-8 is supported, otherwise the
4151default is @code{nil}.
2625a8f7
GM
4152
4153For example:
4154@lisp
4155(setq gnus-group-name-charset-group-alist
4156 '(("\\.com\\.cn:" . cn-gb-2312)))
4157@end lisp
4158
4159@end table
6bf7aab6
DL
4160
4161@node Scanning New Messages
4162@subsection Scanning New Messages
4163@cindex new messages
4164@cindex scanning new news
4165
4166@table @kbd
4167
4168@item g
23f87bed 4169@kindex g (Group)
6bf7aab6
DL
4170@findex gnus-group-get-new-news
4171@c @icon{gnus-group-get-new-news}
4172Check the server(s) for new articles. If the numerical prefix is used,
4173this command will check only groups of level @var{arg} and lower
4174(@code{gnus-group-get-new-news}). If given a non-numerical prefix, this
4175command will force a total re-reading of the active file(s) from the
a8edc211 4176back end(s).
6bf7aab6
DL
4177
4178@item M-g
23f87bed 4179@kindex M-g (Group)
6bf7aab6
DL
4180@findex gnus-group-get-new-news-this-group
4181@vindex gnus-goto-next-group-when-activating
4182@c @icon{gnus-group-get-new-news-this-group}
4183Check whether new articles have arrived in the current group
4184(@code{gnus-group-get-new-news-this-group}).
4185@code{gnus-goto-next-group-when-activating} says whether this command is
4186to move point to the next group or not. It is @code{t} by default.
4187
4188@findex gnus-activate-all-groups
4189@cindex activating groups
4190@item C-c M-g
23f87bed 4191@kindex C-c M-g (Group)
6bf7aab6
DL
4192Activate absolutely all groups (@code{gnus-activate-all-groups}).
4193
4194@item R
23f87bed 4195@kindex R (Group)
6bf7aab6
DL
4196@cindex restarting
4197@findex gnus-group-restart
4198Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
4199file(s), closes the connection to all servers, clears up all run-time
4200Gnus variables, and then starts Gnus all over again.
4201
4202@end table
4203
4204@vindex gnus-get-new-news-hook
4205@code{gnus-get-new-news-hook} is run just before checking for new news.
4206
4207@vindex gnus-after-getting-new-news-hook
4208@code{gnus-after-getting-new-news-hook} is run after checking for new
4209news.
4210
4211
4212@node Group Information
4213@subsection Group Information
4214@cindex group information
4215@cindex information on groups
4216
4217@table @kbd
4218
4219
4220@item H f
23f87bed 4221@kindex H f (Group)
6bf7aab6
DL
4222@findex gnus-group-fetch-faq
4223@vindex gnus-group-faq-directory
4224@cindex FAQ
4225@cindex ange-ftp
23f87bed
MB
4226Try to fetch the @acronym{FAQ} for the current group
4227(@code{gnus-group-fetch-faq}). Gnus will try to get the @acronym{FAQ}
4228from @code{gnus-group-faq-directory}, which is usually a directory on
4229a remote machine. This variable can also be a list of directories.
4230In that case, giving a prefix to this command will allow you to choose
4231between the various sites. @code{ange-ftp} (or @code{efs}) will be
4232used for fetching the file.
6bf7aab6
DL
4233
4234If fetching from the first site is unsuccessful, Gnus will attempt to go
4235through @code{gnus-group-faq-directory} and try to open them one by one.
4236
23f87bed
MB
4237@item H c
4238@kindex H c (Group)
4239@findex gnus-group-fetch-charter
4240@vindex gnus-group-charter-alist
4241@cindex charter
4242Try to open the charter for the current group in a web browser
4243(@code{gnus-group-fetch-charter}). Query for a group if given a
4244prefix argument.
4245
4246Gnus will use @code{gnus-group-charter-alist} to find the location of
4247the charter. If no location is known, Gnus will fetch the control
4248messages for the group, which in some cases includes the charter.
4249
4250@item H C
4251@kindex H C (Group)
4252@findex gnus-group-fetch-control
4253@vindex gnus-group-fetch-control-use-browse-url
4254@cindex control message
4255Fetch the control messages for the group from the archive at
4256@code{ftp.isc.org} (@code{gnus-group-fetch-control}). Query for a
4257group if given a prefix argument.
4258
4259If @code{gnus-group-fetch-control-use-browse-url} is non-@code{nil},
4260Gnus will open the control messages in a browser using
4261@code{browse-url}. Otherwise they are fetched using @code{ange-ftp}
4262and displayed in an ephemeral group.
4263
4264Note that the control messages are compressed. To use this command
4265you need to turn on @code{auto-compression-mode} (@pxref{Compressed
4266Files, ,Compressed Files, emacs, The Emacs Manual}).
4267
6bf7aab6
DL
4268@item H d
4269@itemx C-c C-d
4270@c @icon{gnus-group-describe-group}
23f87bed
MB
4271@kindex H d (Group)
4272@kindex C-c C-d (Group)
6bf7aab6
DL
4273@cindex describing groups
4274@cindex group description
4275@findex gnus-group-describe-group
4276Describe the current group (@code{gnus-group-describe-group}). If given
4277a prefix, force Gnus to re-read the description from the server.
4278
4279@item M-d
23f87bed 4280@kindex M-d (Group)
6bf7aab6
DL
4281@findex gnus-group-describe-all-groups
4282Describe all groups (@code{gnus-group-describe-all-groups}). If given a
4283prefix, force Gnus to re-read the description file from the server.
4284
4285@item H v
4286@itemx V
23f87bed
MB
4287@kindex V (Group)
4288@kindex H v (Group)
6bf7aab6
DL
4289@cindex version
4290@findex gnus-version
4291Display current Gnus version numbers (@code{gnus-version}).
4292
4293@item ?
23f87bed 4294@kindex ? (Group)
6bf7aab6
DL
4295@findex gnus-group-describe-briefly
4296Give a very short help message (@code{gnus-group-describe-briefly}).
4297
4298@item C-c C-i
23f87bed 4299@kindex C-c C-i (Group)
6bf7aab6
DL
4300@cindex info
4301@cindex manual
4302@findex gnus-info-find-node
4303Go to the Gnus info node (@code{gnus-info-find-node}).
4304@end table
4305
4306
4307@node Group Timestamp
4308@subsection Group Timestamp
4309@cindex timestamps
4310@cindex group timestamps
4311
4312It can be convenient to let Gnus keep track of when you last read a
4313group. To set the ball rolling, you should add
4314@code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
4315
4316@lisp
4317(add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
4318@end lisp
4319
4320After doing this, each time you enter a group, it'll be recorded.
4321
4322This information can be displayed in various ways---the easiest is to
4323use the @samp{%d} spec in the group line format:
4324
4325@lisp
4326(setq gnus-group-line-format
4327 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
4328@end lisp
4329
4330This will result in lines looking like:
4331
4332@example
4333* 0: mail.ding 19961002T012943
4334 0: custom 19961002T012713
4335@end example
4336
4337As you can see, the date is displayed in compact ISO 8601 format. This
4338may be a bit too much, so to just display the date, you could say
4339something like:
4340
4341@lisp
4342(setq gnus-group-line-format
4343 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
4344@end lisp
4345
23f87bed
MB
4346If you would like greater control of the time format, you can use a
4347user-defined format spec. Something like the following should do the
4348trick:
4349
4350@lisp
4351(setq gnus-group-line-format
4352 "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n")
4353(defun gnus-user-format-function-d (headers)
4354 (let ((time (gnus-group-timestamp gnus-tmp-group)))
4355 (if time
4356 (format-time-string "%b %d %H:%M" time)
4357 "")))
4358@end lisp
4359
6bf7aab6
DL
4360
4361@node File Commands
4362@subsection File Commands
4363@cindex file commands
4364
4365@table @kbd
4366
4367@item r
23f87bed 4368@kindex r (Group)
6bf7aab6
DL
4369@findex gnus-group-read-init-file
4370@vindex gnus-init-file
4371@cindex reading init file
4372Re-read the init file (@code{gnus-init-file}, which defaults to
23f87bed 4373@file{~/.gnus.el}) (@code{gnus-group-read-init-file}).
6bf7aab6
DL
4374
4375@item s
23f87bed 4376@kindex s (Group)
6bf7aab6
DL
4377@findex gnus-group-save-newsrc
4378@cindex saving .newsrc
4379Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
4380(@code{gnus-group-save-newsrc}). If given a prefix, force saving the
4381file(s) whether Gnus thinks it is necessary or not.
4382
4383@c @item Z
23f87bed 4384@c @kindex Z (Group)
6bf7aab6
DL
4385@c @findex gnus-group-clear-dribble
4386@c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
4387
4388@end table
4389
4390
23f87bed
MB
4391@node Sieve Commands
4392@subsection Sieve Commands
4393@cindex group sieve commands
4394
4395Sieve is a server-side mail filtering language. In Gnus you can use
4396the @code{sieve} group parameter (@pxref{Group Parameters}) to specify
4397sieve rules that should apply to each group. Gnus provides two
4398commands to translate all these group parameters into a proper Sieve
4399script that can be transfered to the server somehow.
4400
4401@vindex gnus-sieve-file
4402@vindex gnus-sieve-region-start
4403@vindex gnus-sieve-region-end
4404The generated Sieve script is placed in @code{gnus-sieve-file} (by
4405default @file{~/.sieve}). The Sieve code that Gnus generate is placed
4406between two delimiters, @code{gnus-sieve-region-start} and
4407@code{gnus-sieve-region-end}, so you may write additional Sieve code
4408outside these delimiters that will not be removed the next time you
4409regenerate the Sieve script.
4410
4411@vindex gnus-sieve-crosspost
4412The variable @code{gnus-sieve-crosspost} controls how the Sieve script
4413is generated. If it is non-@code{nil} (the default) articles is
4414placed in all groups that have matching rules, otherwise the article
4415is only placed in the group with the first matching rule. For
4416example, the group parameter @samp{(sieve address "sender"
4417"owner-ding@@hpc.uh.edu")} will generate the following piece of Sieve
4418code if @code{gnus-sieve-crosspost} is @code{nil}. (When
4419@code{gnus-sieve-crosspost} is non-@code{nil}, it looks the same
4420except that the line containing the call to @code{stop} is removed.)
4421
4422@example
4423if address "sender" "owner-ding@@hpc.uh.edu" @{
4424 fileinto "INBOX.ding";
4425 stop;
4426@}
4427@end example
4428
4429@xref{Top, Emacs Sieve, Top, sieve, Emacs Sieve}.
4430
4431@table @kbd
4432
4433@item D g
4434@kindex D g (Group)
4435@findex gnus-sieve-generate
4436@vindex gnus-sieve-file
4437@cindex generating sieve script
4438Regenerate a Sieve script from the @code{sieve} group parameters and
4439put you into the @code{gnus-sieve-file} without saving it.
4440
4441@item D u
4442@kindex D u (Group)
4443@findex gnus-sieve-update
4444@vindex gnus-sieve-file
4445@cindex updating sieve script
4446Regenerates the Gnus managed part of @code{gnus-sieve-file} using the
4447@code{sieve} group parameters, save the file and upload it to the
4448server using the @code{sieveshell} program.
4449
4450@end table
4451
4452
4453@node Summary Buffer
4454@chapter Summary Buffer
6bf7aab6
DL
4455@cindex summary buffer
4456
4457A line for each article is displayed in the summary buffer. You can
4458move around, read articles, post articles and reply to articles.
4459
4460The most common way to a summary buffer is to select a group from the
4461group buffer (@pxref{Selecting a Group}).
4462
4463You can have as many summary buffers open as you wish.
4464
715488f1
MB
4465You can customize the Summary Mode tool bar, see @kbd{M-x
4466customize-apropos RET gnus-summary-tool-bar}. This feature is only
4467available in Emacs.
4468
14e6dc54
MB
4469@kindex v (Summary)
4470@cindex keys, reserved for users (Summary)
4471The key @kbd{v} is reserved for users. You can bind it key to some
4472function or better use it as a prefix key. For example:
4473@lisp
4474(define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
4475@end lisp
4476
6bf7aab6
DL
4477@menu
4478* Summary Buffer Format:: Deciding how the summary buffer is to look.
4479* Summary Maneuvering:: Moving around the summary buffer.
4480* Choosing Articles:: Reading articles.
4481* Paging the Article:: Scrolling the current article.
4482* Reply Followup and Post:: Posting articles.
23f87bed 4483* Delayed Articles:: Send articles at a later time.
6bf7aab6
DL
4484* Marking Articles:: Marking articles as read, expirable, etc.
4485* Limiting:: You can limit the summary buffer.
4486* Threading:: How threads are made.
23f87bed 4487* Sorting the Summary Buffer:: How articles and threads are sorted.
6bf7aab6
DL
4488* Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
4489* Article Caching:: You may store articles in a cache.
4490* Persistent Articles:: Making articles expiry-resistant.
4491* Article Backlog:: Having already read articles hang around.
4492* Saving Articles:: Ways of customizing article saving.
4493* Decoding Articles:: Gnus can treat series of (uu)encoded articles.
4494* Article Treatment:: The article buffer can be mangled at will.
2625a8f7
GM
4495* MIME Commands:: Doing MIMEy things with the articles.
4496* Charsets:: Character set issues.
6bf7aab6
DL
4497* Article Commands:: Doing various things with the article buffer.
4498* Summary Sorting:: Sorting the summary buffer in various ways.
4499* Finding the Parent:: No child support? Get the parent.
4500* Alternative Approaches:: Reading using non-default summaries.
4501* Tree Display:: A more visual display of threads.
4502* Mail Group Commands:: Some commands can only be used in mail groups.
4503* Various Summary Stuff:: What didn't fit anywhere else.
dda5808a
DL
4504* Exiting the Summary Buffer:: Returning to the Group buffer,
4505 or reselecting the current group.
6bf7aab6
DL
4506* Crosspost Handling:: How crossposted articles are dealt with.
4507* Duplicate Suppression:: An alternative when crosspost handling fails.
23f87bed
MB
4508* Security:: Decrypt and Verify.
4509* Mailing List:: Mailing list minor mode.
6bf7aab6
DL
4510@end menu
4511
4512
4513@node Summary Buffer Format
4514@section Summary Buffer Format
4515@cindex summary buffer format
4516
2625a8f7
GM
4517@iftex
4518@iflatex
4519\gnusfigure{The Summary Buffer}{180}{
23f87bed
MB
4520\put(0,0){\epsfig{figure=ps/summary,width=7.5cm}}
4521\put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-article,width=7.5cm}}}
2625a8f7
GM
4522}
4523@end iflatex
4524@end iftex
4525
6bf7aab6 4526@menu
23f87bed
MB
4527* Summary Buffer Lines:: You can specify how summary lines should look.
4528* To From Newsgroups:: How to not display your own name.
4529* Summary Buffer Mode Line:: You can say how the mode line should look.
4530* Summary Highlighting:: Making the summary buffer all pretty and nice.
6bf7aab6
DL
4531@end menu
4532
4533@findex mail-extract-address-components
4534@findex gnus-extract-address-components
4535@vindex gnus-extract-address-components
4536Gnus will use the value of the @code{gnus-extract-address-components}
4537variable as a function for getting the name and address parts of a
4538@code{From} header. Two pre-defined functions exist:
4539@code{gnus-extract-address-components}, which is the default, quite
4540fast, and too simplistic solution; and
4541@code{mail-extract-address-components}, which works very nicely, but is
4542slower. The default function will return the wrong answer in 5% of the
2625a8f7
GM
4543cases. If this is unacceptable to you, use the other function instead:
4544
4545@lisp
4546(setq gnus-extract-address-components
4547 'mail-extract-address-components)
4548@end lisp
6bf7aab6
DL
4549
4550@vindex gnus-summary-same-subject
4551@code{gnus-summary-same-subject} is a string indicating that the current
4552article has the same subject as the previous. This string will be used
4553with those specs that require it. The default is @code{""}.
4554
4555
4556@node Summary Buffer Lines
4557@subsection Summary Buffer Lines
4558
4559@vindex gnus-summary-line-format
4560You can change the format of the lines in the summary buffer by changing
4561the @code{gnus-summary-line-format} variable. It works along the same
4562lines as a normal @code{format} string, with some extensions
4563(@pxref{Formatting Variables}).
4564
23f87bed
MB
4565There should always be a colon or a point position marker on the line;
4566the cursor always moves to the point position marker or the colon after
4567performing an operation. (Of course, Gnus wouldn't be Gnus if it wasn't
4568possible to change this. Just write a new function
4569@code{gnus-goto-colon} which does whatever you like with the cursor.)
4570@xref{Positioning Point}.
4571
4572The default string is @samp{%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n}.
6bf7aab6 4573
23f87bed
MB
4574The following format specification characters and extended format
4575specification(s) are understood:
6bf7aab6
DL
4576
4577@table @samp
4578@item N
4579Article number.
4580@item S
2625a8f7
GM
4581Subject string. List identifiers stripped,
4582@code{gnus-list-identifies}. @xref{Article Hiding}.
6bf7aab6
DL
4583@item s
4584Subject if the article is the root of the thread or the previous article
4585had a different subject, @code{gnus-summary-same-subject} otherwise.
4586(@code{gnus-summary-same-subject} defaults to @code{""}.)
4587@item F
4588Full @code{From} header.
4589@item n
4590The name (from the @code{From} header).
2625a8f7 4591@item f
23f87bed
MB
4592The name, @code{To} header or the @code{Newsgroups} header (@pxref{To
4593From Newsgroups}).
6bf7aab6
DL
4594@item a
4595The name (from the @code{From} header). This differs from the @code{n}
4596spec in that it uses the function designated by the
4597@code{gnus-extract-address-components} variable, which is slower, but
4598may be more thorough.
4599@item A
4600The address (from the @code{From} header). This works the same way as
4601the @code{a} spec.
4602@item L
4603Number of lines in the article.
4604@item c
23f87bed
MB
4605Number of characters in the article. This specifier is not supported
4606in some methods (like nnfolder).
4607@item k
4608Pretty-printed version of the number of characters in the article;
4609for example, @samp{1.2k} or @samp{0.4M}.
6bf7aab6
DL
4610@item I
4611Indentation based on thread level (@pxref{Customizing Threading}).
23f87bed
MB
4612@item B
4613A complex trn-style thread tree, showing response-connecting trace
4614lines. A thread could be drawn like this:
4615
4616@example
4617>
4618+->
4619| +->
4620| | \->
4621| | \->
4622| \->
4623+->
4624\->
4625@end example
4626
4627You can customize the appearance with the following options. Note
4628that it is possible to make the thread display look really neat by
4629replacing the default @acronym{ASCII} characters with graphic
4630line-drawing glyphs.
4631@table @code
4632@item gnus-sum-thread-tree-root
4633@vindex gnus-sum-thread-tree-root
4634Used for the root of a thread. If @code{nil}, use subject
4635instead. The default is @samp{> }.
4636
4637@item gnus-sum-thread-tree-false-root
4638@vindex gnus-sum-thread-tree-false-root
4639Used for the false root of a thread (@pxref{Loose Threads}). If
4640@code{nil}, use subject instead. The default is @samp{> }.
4641
4642@item gnus-sum-thread-tree-single-indent
4643@vindex gnus-sum-thread-tree-single-indent
4644Used for a thread with just one message. If @code{nil}, use subject
4645instead. The default is @samp{}.
4646
4647@item gnus-sum-thread-tree-vertical
4648@vindex gnus-sum-thread-tree-vertical
4649Used for drawing a vertical line. The default is @samp{| }.
4650
4651@item gnus-sum-thread-tree-indent
4652@vindex gnus-sum-thread-tree-indent
4653Used for indenting. The default is @samp{ }.
4654
4655@item gnus-sum-thread-tree-leaf-with-other
4656@vindex gnus-sum-thread-tree-leaf-with-other
4657Used for a leaf with brothers. The default is @samp{+-> }.
4658
4659@item gnus-sum-thread-tree-single-leaf
4660@vindex gnus-sum-thread-tree-single-leaf
4661Used for a leaf without brothers. The default is @samp{\-> }
4662
4663@end table
4664
6bf7aab6
DL
4665@item T
4666Nothing if the article is a root and lots of spaces if it isn't (it
4667pushes everything after it off the screen).
4668@item [
4669Opening bracket, which is normally @samp{[}, but can also be @samp{<}
4670for adopted articles (@pxref{Customizing Threading}).
4671@item ]
4672Closing bracket, which is normally @samp{]}, but can also be @samp{>}
4673for adopted articles.
4674@item >
4675One space for each thread level.
4676@item <
4677Twenty minus thread level spaces.
4678@item U
23f87bed 4679Unread. @xref{Read Articles}.
6bf7aab6
DL
4680
4681@item R
4682This misleadingly named specifier is the @dfn{secondary mark}. This
4683mark will say whether the article has been replied to, has been cached,
23f87bed 4684or has been saved. @xref{Other Marks}.
6bf7aab6
DL
4685
4686@item i
4687Score as a number (@pxref{Scoring}).
4688@item z
4689@vindex gnus-summary-zcore-fuzz
4690Zcore, @samp{+} if above the default level and @samp{-} if below the
4691default level. If the difference between
4692@code{gnus-summary-default-score} and the score is less than
4693@code{gnus-summary-zcore-fuzz}, this spec will not be used.
4694@item V
4695Total thread score.
4696@item x
4697@code{Xref}.
4698@item D
4699@code{Date}.
4700@item d
4701The @code{Date} in @code{DD-MMM} format.
4702@item o
4703The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format.
4704@item M
4705@code{Message-ID}.
4706@item r
4707@code{References}.
4708@item t
4709Number of articles in the current sub-thread. Using this spec will slow
4710down summary buffer generation somewhat.
4711@item e
4712An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
4713article has any children.
4714@item P
4715The line number.
4716@item O
4717Download mark.
1b155fbd
MB
4718@item *
4719Desired cursor position (instead of after first colon).
23f87bed
MB
4720@item &user-date;
4721Age sensitive date format. Various date format is defined in
4722@code{gnus-user-date-format-alist}.
6bf7aab6
DL
4723@item u
4724User defined specifier. The next character in the format string should
4725be a letter. Gnus will call the function
23f87bed 4726@code{gnus-user-format-function-@var{x}}, where @var{x} is the letter
6bf7aab6
DL
4727following @samp{%u}. The function will be passed the current header as
4728argument. The function should return a string, which will be inserted
4729into the summary just like information from any other summary specifier.
4730@end table
4731
23f87bed
MB
4732Text between @samp{%(} and @samp{%)} will be highlighted with
4733@code{gnus-mouse-face} when the mouse point is placed inside the area.
4734There can only be one such area.
4735
6bf7aab6
DL
4736The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
4737have to be handled with care. For reasons of efficiency, Gnus will
4738compute what column these characters will end up in, and ``hard-code''
4739that. This means that it is invalid to have these specs after a
4740variable-length spec. Well, you might not be arrested, but your summary
4741buffer will look strange, which is bad enough.
4742
4743The smart choice is to have these specs as far to the left as possible.
4744(Isn't that the case with everything, though? But I digress.)
4745
4746This restriction may disappear in later versions of Gnus.
4747
4748
2625a8f7
GM
4749@node To From Newsgroups
4750@subsection To From Newsgroups
4751@cindex To
4752@cindex Newsgroups
4753
4754In some groups (particularly in archive groups), the @code{From} header
4755isn't very interesting, since all the articles there are written by
4756you. To display the information in the @code{To} or @code{Newsgroups}
4757headers instead, you need to decide three things: What information to
4758gather; where to display it; and when to display it.
4759
4760@enumerate
4761@item
4762@vindex gnus-extra-headers
4763The reading of extra header information is controlled by the
4764@code{gnus-extra-headers}. This is a list of header symbols. For
4765instance:
4766
4767@lisp
4768(setq gnus-extra-headers
4769 '(To Newsgroups X-Newsreader))
4770@end lisp
4771
4772This will result in Gnus trying to obtain these three headers, and
4773storing it in header structures for later easy retrieval.
4774
4775@item
4776@findex gnus-extra-header
4777The value of these extra headers can be accessed via the
4778@code{gnus-extra-header} function. Here's a format line spec that will
4779access the @code{X-Newsreader} header:
4780
4781@example
4782"%~(form (gnus-extra-header 'X-Newsreader))@@"
4783@end example
4784
4785@item
4786@vindex gnus-ignored-from-addresses
4787The @code{gnus-ignored-from-addresses} variable says when the @samp{%f}
4788summary line spec returns the @code{To}, @code{Newsreader} or
4789@code{From} header. If this regexp matches the contents of the
4790@code{From} header, the value of the @code{To} or @code{Newsreader}
4791headers are used instead.
4792
4793@end enumerate
4794
4795@vindex nnmail-extra-headers
4796A related variable is @code{nnmail-extra-headers}, which controls when
23f87bed
MB
4797to include extra headers when generating overview (@acronym{NOV}) files.
4798If you have old overview files, you should regenerate them after
4799changing this variable, by entering the server buffer using @kbd{^},
4800and then @kbd{g} on the appropriate mail server (e.g. nnml) to cause
4801regeneration.
2625a8f7
GM
4802
4803@vindex gnus-summary-line-format
4804You also have to instruct Gnus to display the data by changing the
4805@code{%n} spec to the @code{%f} spec in the
4806@code{gnus-summary-line-format} variable.
4807
23f87bed
MB
4808In summary, you'd typically put something like the following in
4809@file{~/.gnus.el}:
2625a8f7
GM
4810
4811@lisp
4812(setq gnus-extra-headers
4813 '(To Newsgroups))
4814(setq nnmail-extra-headers gnus-extra-headers)
4815(setq gnus-summary-line-format
23f87bed 4816 "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
2625a8f7
GM
4817(setq gnus-ignored-from-addresses
4818 "Your Name Here")
4819@end lisp
4820
23f87bed
MB
4821(The values listed above are the default values in Gnus. Alter them
4822to fit your needs.)
4823
4824A note for news server administrators, or for users who wish to try to
4825convince their news server administrator to provide some additional
4826support:
4827
4828The above is mostly useful for mail groups, where you have control over
4829the @acronym{NOV} files that are created. However, if you can persuade your
4830nntp admin to add (in the usual implementation, notably INN):
2625a8f7
GM
4831
4832@example
4833Newsgroups:full
4834@end example
4835
4836to the end of her @file{overview.fmt} file, then you can use that just
4837as you would the extra headers from the mail groups.
4838
4839
6bf7aab6
DL
4840@node Summary Buffer Mode Line
4841@subsection Summary Buffer Mode Line
4842
4843@vindex gnus-summary-mode-line-format
4844You can also change the format of the summary mode bar (@pxref{Mode Line
4845Formatting}). Set @code{gnus-summary-mode-line-format} to whatever you
4846like. The default is @samp{Gnus: %%b [%A] %Z}.
4847
4848Here are the elements you can play with:
4849
4850@table @samp
4851@item G
4852Group name.
4853@item p
4854Unprefixed group name.
4855@item A
4856Current article number.
4857@item z
4858Current article score.
4859@item V
4860Gnus version.
4861@item U
4862Number of unread articles in this group.
4863@item e
4864Number of unread articles in this group that aren't displayed in the
4865summary buffer.
4866@item Z
4867A string with the number of unread and unselected articles represented
4868either as @samp{<%U(+%e) more>} if there are both unread and unselected
4869articles, and just as @samp{<%U more>} if there are just unread articles
4870and no unselected ones.
4871@item g
4872Shortish group name. For instance, @samp{rec.arts.anime} will be
4873shortened to @samp{r.a.anime}.
4874@item S
4875Subject of the current article.
4876@item u
4877User-defined spec (@pxref{User-Defined Specs}).
4878@item s
4879Name of the current score file (@pxref{Scoring}).
4880@item d
4881Number of dormant articles (@pxref{Unread Articles}).
4882@item t
4883Number of ticked articles (@pxref{Unread Articles}).
4884@item r
4885Number of articles that have been marked as read in this session.
4886@item E
4887Number of articles expunged by the score files.
4888@end table
4889
4890
4891@node Summary Highlighting
4892@subsection Summary Highlighting
4893
4894@table @code
4895
4896@item gnus-visual-mark-article-hook
4897@vindex gnus-visual-mark-article-hook
4898This hook is run after selecting an article. It is meant to be used for
4899highlighting the article in some way. It is not run if
4900@code{gnus-visual} is @code{nil}.
4901
4902@item gnus-summary-update-hook
4903@vindex gnus-summary-update-hook
4904This hook is called when a summary line is changed. It is not run if
4905@code{gnus-visual} is @code{nil}.
4906
4907@item gnus-summary-selected-face
4908@vindex gnus-summary-selected-face
4909This is the face (or @dfn{font} as some people call it) used to
4910highlight the current article in the summary buffer.
4911
4912@item gnus-summary-highlight
4913@vindex gnus-summary-highlight
4914Summary lines are highlighted according to this variable, which is a
2625a8f7
GM
4915list where the elements are of the format @code{(@var{form}
4916. @var{face})}. If you would, for instance, like ticked articles to be
4917italic and high-scored articles to be bold, you could set this variable
4918to something like
6bf7aab6
DL
4919@lisp
4920(((eq mark gnus-ticked-mark) . italic)
4921 ((> score default) . bold))
4922@end lisp
2625a8f7
GM
4923As you may have guessed, if @var{form} returns a non-@code{nil} value,
4924@var{face} will be applied to the line.
6bf7aab6
DL
4925@end table
4926
4927
4928@node Summary Maneuvering
4929@section Summary Maneuvering
4930@cindex summary movement
4931
4932All the straight movement commands understand the numeric prefix and
4933behave pretty much as you'd expect.
4934
4935None of these commands select articles.
4936
4937@table @kbd
4938@item G M-n
4939@itemx M-n
23f87bed
MB
4940@kindex M-n (Summary)
4941@kindex G M-n (Summary)
6bf7aab6
DL
4942@findex gnus-summary-next-unread-subject
4943Go to the next summary line of an unread article
4944(@code{gnus-summary-next-unread-subject}).
4945
4946@item G M-p
4947@itemx M-p
23f87bed
MB
4948@kindex M-p (Summary)
4949@kindex G M-p (Summary)
6bf7aab6
DL
4950@findex gnus-summary-prev-unread-subject
4951Go to the previous summary line of an unread article
4952(@code{gnus-summary-prev-unread-subject}).
4953
6bf7aab6 4954@item G g
23f87bed 4955@kindex G g (Summary)
6bf7aab6
DL
4956@findex gnus-summary-goto-subject
4957Ask for an article number and then go to the summary line of that article
4958without displaying the article (@code{gnus-summary-goto-subject}).
4959@end table
4960
4961If Gnus asks you to press a key to confirm going to the next group, you
4962can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
4963buffer, searching for the next group to read without actually returning
4964to the group buffer.
4965
4966Variables related to summary movement:
4967
4968@table @code
4969
4970@vindex gnus-auto-select-next
4971@item gnus-auto-select-next
4972If you issue one of the movement commands (like @kbd{n}) and there are
4973no more unread articles after the current one, Gnus will offer to go to
4974the next group. If this variable is @code{t} and the next group is
4975empty, Gnus will exit summary mode and return to the group buffer. If
4976this variable is neither @code{t} nor @code{nil}, Gnus will select the
23f87bed
MB
4977next group with unread articles. As a special case, if this variable
4978is @code{quietly}, Gnus will select the next group without asking for
4979confirmation. If this variable is @code{almost-quietly}, the same
4980will happen only if you are located on the last article in the group.
4981Finally, if this variable is @code{slightly-quietly}, the @kbd{Z n}
4982command will go to the next group without confirmation. Also
4983@pxref{Group Levels}.
6bf7aab6
DL
4984
4985@item gnus-auto-select-same
4986@vindex gnus-auto-select-same
4987If non-@code{nil}, all the movement commands will try to go to the next
4988article with the same subject as the current. (@dfn{Same} here might
4989mean @dfn{roughly equal}. See @code{gnus-summary-gather-subject-limit}
4990for details (@pxref{Customizing Threading}).) If there are no more
4991articles with the same subject, go to the first unread article.
4992
4993This variable is not particularly useful if you use a threaded display.
4994
4995@item gnus-summary-check-current
4996@vindex gnus-summary-check-current
4997If non-@code{nil}, all the ``unread'' movement commands will not proceed
4998to the next (or previous) article if the current article is unread.
4999Instead, they will choose the current article.
5000
5001@item gnus-auto-center-summary
5002@vindex gnus-auto-center-summary
5003If non-@code{nil}, Gnus will keep the point in the summary buffer
5004centered at all times. This makes things quite tidy, but if you have a
5005slow network connection, or simply do not like this un-Emacsism, you can
5006set this variable to @code{nil} to get the normal Emacs scrolling
5007action. This will also inhibit horizontal re-centering of the summary
5008buffer, which might make it more inconvenient to read extremely long
5009threads.
5010
2625a8f7
GM
5011This variable can also be a number. In that case, center the window at
5012the given number of lines from the top.
5013
6bf7aab6
DL
5014@end table
5015
5016
5017@node Choosing Articles
5018@section Choosing Articles
5019@cindex selecting articles
5020
5021@menu
23f87bed
MB
5022* Choosing Commands:: Commands for choosing articles.
5023* Choosing Variables:: Variables that influence these commands.
6bf7aab6
DL
5024@end menu
5025
5026
5027@node Choosing Commands
5028@subsection Choosing Commands
5029
5030None of the following movement commands understand the numeric prefix,
5031and they all select and display an article.
5032
dda5808a
DL
5033If you want to fetch new articles or redisplay the group, see
5034@ref{Exiting the Summary Buffer}.
5035
6bf7aab6 5036@table @kbd
23f87bed
MB
5037@item SPACE
5038@kindex SPACE (Summary)
6bf7aab6
DL
5039@findex gnus-summary-next-page
5040Select the current article, or, if that one's read already, the next
5041unread article (@code{gnus-summary-next-page}).
5042
23f87bed
MB
5043If you have an article window open already and you press @kbd{SPACE}
5044again, the article will be scrolled. This lets you conveniently
5045@kbd{SPACE} through an entire newsgroup. @xref{Paging the Article}.
5046
6bf7aab6
DL
5047@item G n
5048@itemx n
23f87bed
MB
5049@kindex n (Summary)
5050@kindex G n (Summary)
6bf7aab6
DL
5051@findex gnus-summary-next-unread-article
5052@c @icon{gnus-summary-next-unread}
5053Go to next unread article (@code{gnus-summary-next-unread-article}).
5054
5055@item G p
5056@itemx p
23f87bed 5057@kindex p (Summary)
6bf7aab6
DL
5058@findex gnus-summary-prev-unread-article
5059@c @icon{gnus-summary-prev-unread}
5060Go to previous unread article (@code{gnus-summary-prev-unread-article}).
5061
5062@item G N
5063@itemx N
23f87bed
MB
5064@kindex N (Summary)
5065@kindex G N (Summary)
6bf7aab6
DL
5066@findex gnus-summary-next-article
5067Go to the next article (@code{gnus-summary-next-article}).
5068
5069@item G P
5070@itemx P
23f87bed
MB
5071@kindex P (Summary)
5072@kindex G P (Summary)
6bf7aab6
DL
5073@findex gnus-summary-prev-article
5074Go to the previous article (@code{gnus-summary-prev-article}).
5075
5076@item G C-n
23f87bed 5077@kindex G C-n (Summary)
6bf7aab6
DL
5078@findex gnus-summary-next-same-subject
5079Go to the next article with the same subject
5080(@code{gnus-summary-next-same-subject}).
5081
5082@item G C-p
23f87bed 5083@kindex G C-p (Summary)
6bf7aab6
DL
5084@findex gnus-summary-prev-same-subject
5085Go to the previous article with the same subject
5086(@code{gnus-summary-prev-same-subject}).
5087
5088@item G f
5089@itemx .
23f87bed
MB
5090@kindex G f (Summary)
5091@kindex . (Summary)
6bf7aab6
DL
5092@findex gnus-summary-first-unread-article
5093Go to the first unread article
5094(@code{gnus-summary-first-unread-article}).
5095
5096@item G b
5097@itemx ,
23f87bed
MB
5098@kindex G b (Summary)
5099@kindex , (Summary)
6bf7aab6 5100@findex gnus-summary-best-unread-article
23f87bed
MB
5101Go to the unread article with the highest score
5102(@code{gnus-summary-best-unread-article}). If given a prefix argument,
5103go to the first unread article that has a score over the default score.
6bf7aab6
DL
5104
5105@item G l
5106@itemx l
23f87bed
MB
5107@kindex l (Summary)
5108@kindex G l (Summary)
6bf7aab6
DL
5109@findex gnus-summary-goto-last-article
5110Go to the previous article read (@code{gnus-summary-goto-last-article}).
5111
5112@item G o
23f87bed 5113@kindex G o (Summary)
6bf7aab6
DL
5114@findex gnus-summary-pop-article
5115@cindex history
5116@cindex article history
5117Pop an article off the summary history and go to this article
5118(@code{gnus-summary-pop-article}). This command differs from the
5119command above in that you can pop as many previous articles off the
5120history as you like, while @kbd{l} toggles the two last read articles.
5121For a somewhat related issue (if you use these commands a lot),
5122@pxref{Article Backlog}.
33a48912
DL
5123
5124@item G j
5125@itemx j
23f87bed
MB
5126@kindex j (Summary)
5127@kindex G j (Summary)
33a48912
DL
5128@findex gnus-summary-goto-article
5129Ask for an article number or @code{Message-ID}, and then go to that
5130article (@code{gnus-summary-goto-article}).
23f87bed 5131
6bf7aab6
DL
5132@end table
5133
5134
5135@node Choosing Variables
5136@subsection Choosing Variables
5137
5138Some variables relevant for moving and selecting articles:
5139
5140@table @code
5141@item gnus-auto-extend-newsgroup
5142@vindex gnus-auto-extend-newsgroup
5143All the movement commands will try to go to the previous (or next)
5144article, even if that article isn't displayed in the Summary buffer if
5145this variable is non-@code{nil}. Gnus will then fetch the article from
5146the server and display it in the article buffer.
5147
5148@item gnus-select-article-hook
5149@vindex gnus-select-article-hook
4a2358e9
MB
5150This hook is called whenever an article is selected. The default is
5151@code{nil}. If you would like each article to be saved in the Agent as
5152you read it, putting @code{gnus-agent-fetch-selected-article} on this
5153hook will do so.
6bf7aab6
DL
5154
5155@item gnus-mark-article-hook
5156@vindex gnus-mark-article-hook
5157@findex gnus-summary-mark-unread-as-read
5158@findex gnus-summary-mark-read-and-unread-as-read
5159@findex gnus-unread-mark
5160This hook is called whenever an article is selected. It is intended to
5161be used for marking articles as read. The default value is
5162@code{gnus-summary-mark-read-and-unread-as-read}, and will change the
4a2358e9
MB
5163mark of almost any article you read to @code{gnus-read-mark}. The only
5164articles not affected by this function are ticked, dormant, and
6bf7aab6
DL
5165expirable articles. If you'd instead like to just have unread articles
5166marked as read, you can use @code{gnus-summary-mark-unread-as-read}
5167instead. It will leave marks like @code{gnus-low-score-mark},
5168@code{gnus-del-mark} (and so on) alone.
5169
5170@end table
5171
5172
5173@node Paging the Article
5174@section Scrolling the Article
5175@cindex article scrolling
5176
5177@table @kbd
5178
23f87bed
MB
5179@item SPACE
5180@kindex SPACE (Summary)
6bf7aab6 5181@findex gnus-summary-next-page
23f87bed 5182Pressing @kbd{SPACE} will scroll the current article forward one page,
6bf7aab6
DL
5183or, if you have come to the end of the current article, will choose the
5184next article (@code{gnus-summary-next-page}).
5185
23f87bed
MB
5186@vindex gnus-article-boring-faces
5187@vindex gnus-article-skip-boring
5188If @code{gnus-article-skip-boring} is non-@code{nil} and the rest of
5189the article consists only of citations and signature, then it will be
5190skipped; the next article will be shown instead. You can customize
5191what is considered uninteresting with
5192@code{gnus-article-boring-faces}. You can manually view the article's
5193pages, no matter how boring, using @kbd{C-M-v}.
5194
5195@item DEL
5196@kindex DEL (Summary)
6bf7aab6
DL
5197@findex gnus-summary-prev-page
5198Scroll the current article back one page (@code{gnus-summary-prev-page}).
5199
23f87bed
MB
5200@item RET
5201@kindex RET (Summary)
6bf7aab6
DL
5202@findex gnus-summary-scroll-up
5203Scroll the current article one line forward
5204(@code{gnus-summary-scroll-up}).
5205
23f87bed
MB
5206@item M-RET
5207@kindex M-RET (Summary)
6bf7aab6
DL
5208@findex gnus-summary-scroll-down
5209Scroll the current article one line backward
5210(@code{gnus-summary-scroll-down}).
5211
5212@item A g
5213@itemx g
23f87bed
MB
5214@kindex A g (Summary)
5215@kindex g (Summary)
6bf7aab6 5216@findex gnus-summary-show-article
2625a8f7 5217@vindex gnus-summary-show-article-charset-alist
6bf7aab6
DL
5218(Re)fetch the current article (@code{gnus-summary-show-article}). If
5219given a prefix, fetch the current article, but don't run any of the
5220article treatment functions. This will give you a ``raw'' article, just
5221the way it came from the server.
5222
2625a8f7 5223If given a numerical prefix, you can do semi-manual charset stuff.
23f87bed 5224@kbd{C-u 0 g cn-gb-2312 RET} will decode the message as if it were
2625a8f7
GM
5225encoded in the @code{cn-gb-2312} charset. If you have
5226
5227@lisp
177c0ea7
JB
5228(setq gnus-summary-show-article-charset-alist
5229 '((1 . cn-gb-2312)
2625a8f7
GM
5230 (2 . big5)))
5231@end lisp
5232
5233then you can say @kbd{C-u 1 g} to get the same effect.
5234
6bf7aab6
DL
5235@item A <
5236@itemx <
23f87bed
MB
5237@kindex < (Summary)
5238@kindex A < (Summary)
6bf7aab6
DL
5239@findex gnus-summary-beginning-of-article
5240Scroll to the beginning of the article
5241(@code{gnus-summary-beginning-of-article}).
5242
5243@item A >
5244@itemx >
23f87bed
MB
5245@kindex > (Summary)
5246@kindex A > (Summary)
6bf7aab6
DL
5247@findex gnus-summary-end-of-article
5248Scroll to the end of the article (@code{gnus-summary-end-of-article}).
5249
5250@item A s
5251@itemx s
23f87bed
MB
5252@kindex A s (Summary)
5253@kindex s (Summary)
6bf7aab6
DL
5254@findex gnus-summary-isearch-article
5255Perform an isearch in the article buffer
5256(@code{gnus-summary-isearch-article}).
5257
5258@item h
23f87bed 5259@kindex h (Summary)
6bf7aab6
DL
5260@findex gnus-summary-select-article-buffer
5261Select the article buffer (@code{gnus-summary-select-article-buffer}).
5262
5263@end table
5264
5265
5266@node Reply Followup and Post
5267@section Reply, Followup and Post
5268
5269@menu
2625a8f7
GM
5270* Summary Mail Commands:: Sending mail.
5271* Summary Post Commands:: Sending news.
5272* Summary Message Commands:: Other Message-related commands.
23f87bed 5273* Canceling and Superseding::
6bf7aab6
DL
5274@end menu
5275
5276
5277@node Summary Mail Commands
5278@subsection Summary Mail Commands
5279@cindex mail
5280@cindex composing mail
5281
5282Commands for composing a mail message:
5283
5284@table @kbd
5285
5286@item S r
5287@itemx r
23f87bed
MB
5288@kindex S r (Summary)
5289@kindex r (Summary)
6bf7aab6
DL
5290@findex gnus-summary-reply
5291@c @icon{gnus-summary-mail-reply}
5292@c @icon{gnus-summary-reply}
5293Mail a reply to the author of the current article
5294(@code{gnus-summary-reply}).
5295
5296@item S R
5297@itemx R
23f87bed
MB
5298@kindex R (Summary)
5299@kindex S R (Summary)
6bf7aab6
DL
5300@findex gnus-summary-reply-with-original
5301@c @icon{gnus-summary-reply-with-original}
5302Mail a reply to the author of the current article and include the
5303original message (@code{gnus-summary-reply-with-original}). This
5304command uses the process/prefix convention.
5305
5306@item S w
23f87bed 5307@kindex S w (Summary)
6bf7aab6
DL
5308@findex gnus-summary-wide-reply
5309Mail a wide reply to the author of the current article
5310(@code{gnus-summary-wide-reply}). A @dfn{wide reply} is a reply that
5311goes out to all people listed in the @code{To}, @code{From} (or
23f87bed
MB
5312@code{Reply-to}) and @code{Cc} headers. If @code{Mail-Followup-To} is
5313present, that's used instead.
6bf7aab6
DL
5314
5315@item S W
23f87bed 5316@kindex S W (Summary)
6bf7aab6
DL
5317@findex gnus-summary-wide-reply-with-original
5318Mail a wide reply to the current article and include the original
2625a8f7 5319message (@code{gnus-summary-wide-reply-with-original}). This command uses
6bf7aab6
DL
5320the process/prefix convention.
5321
23f87bed
MB
5322@item S v
5323@kindex S v (Summary)
5324@findex gnus-summary-very-wide-reply
5325Mail a very wide reply to the author of the current article
5326(@code{gnus-summary-wide-reply}). A @dfn{very wide reply} is a reply
5327that goes out to all people listed in the @code{To}, @code{From} (or
5328@code{Reply-to}) and @code{Cc} headers in all the process/prefixed
5329articles. This command uses the process/prefix convention.
5330
5331@item S V
5332@kindex S V (Summary)
5333@findex gnus-summary-very-wide-reply-with-original
5334Mail a very wide reply to the author of the current article and include the
5335original message (@code{gnus-summary-very-wide-reply-with-original}). This
5336command uses the process/prefix convention.
5337
5338@item S B r
5339@kindex S B r (Summary)
5340@findex gnus-summary-reply-broken-reply-to
5341Mail a reply to the author of the current article but ignore the
5342@code{Reply-To} field (@code{gnus-summary-reply-broken-reply-to}).
5343If you need this because a mailing list incorrectly sets a
5344@code{Reply-To} header pointing to the list, you probably want to set
5345the @code{broken-reply-to} group parameter instead, so things will work
5346correctly. @xref{Group Parameters}.
5347
5348@item S B R
5349@kindex S B R (Summary)
5350@findex gnus-summary-reply-broken-reply-to-with-original
5351Mail a reply to the author of the current article and include the
5352original message but ignore the @code{Reply-To} field
5353(@code{gnus-summary-reply-broken-reply-to-with-original}).
5354
6bf7aab6 5355@item S o m
2625a8f7 5356@itemx C-c C-f
23f87bed
MB
5357@kindex S o m (Summary)
5358@kindex C-c C-f (Summary)
6bf7aab6
DL
5359@findex gnus-summary-mail-forward
5360@c @icon{gnus-summary-mail-forward}
5361Forward the current article to some other person
2625a8f7
GM
5362(@code{gnus-summary-mail-forward}). If no prefix is given, the message
5363is forwarded according to the value of (@code{message-forward-as-mime})
5364and (@code{message-forward-show-mml}); if the prefix is 1, decode the
f5d4cd5e 5365message and forward directly inline; if the prefix is 2, forward message
23f87bed
MB
5366as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5367forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
2625a8f7
GM
5368directly inline; otherwise, the message is forwarded as no prefix given
5369but use the flipped value of (@code{message-forward-as-mime}). By
23f87bed
MB
5370default, the message is decoded and forwarded as an rfc822 @acronym{MIME}
5371section.
6bf7aab6
DL
5372
5373@item S m
5374@itemx m
23f87bed
MB
5375@kindex m (Summary)
5376@kindex S m (Summary)
6bf7aab6
DL
5377@findex gnus-summary-mail-other-window
5378@c @icon{gnus-summary-mail-originate}
23f87bed
MB
5379Prepare a mail (@code{gnus-summary-mail-other-window}). By default, use
5380the posting style of the current group. If given a prefix, disable that.
5381If the prefix is 1, prompt for a group name to find the posting style.
5382
5383@item S i
5384@itemx i
5385@kindex i (Summary)
5386@kindex S i (Summary)
5387@findex gnus-summary-news-other-window
5388Prepare a news (@code{gnus-summary-news-other-window}). By default,
5389post to the current group. If given a prefix, disable that. If the
5390prefix is 1, prompt for a group to post to.
5391
5392This function actually prepares a news even when using mail groups.
5393This is useful for ``posting'' messages to mail groups without actually
5394sending them over the network: they're just saved directly to the group
5395in question. The corresponding back end must have a request-post method
5396for this to work though.
6bf7aab6
DL
5397
5398@item S D b
23f87bed 5399@kindex S D b (Summary)
6bf7aab6
DL
5400@findex gnus-summary-resend-bounced-mail
5401@cindex bouncing mail
5402If you have sent a mail, but the mail was bounced back to you for some
5403reason (wrong address, transient failure), you can use this command to
5404resend that bounced mail (@code{gnus-summary-resend-bounced-mail}). You
5405will be popped into a mail buffer where you can edit the headers before
5406sending the mail off again. If you give a prefix to this command, and
5407the bounced mail is a reply to some other mail, Gnus will try to fetch
5408that mail and display it for easy perusal of its headers. This might
5409very well fail, though.
5410
5411@item S D r
23f87bed 5412@kindex S D r (Summary)
6bf7aab6
DL
5413@findex gnus-summary-resend-message
5414Not to be confused with the previous command,
5415@code{gnus-summary-resend-message} will prompt you for an address to
5416send the current message off to, and then send it to that place. The
5417headers of the message won't be altered---but lots of headers that say
5418@code{Resent-To}, @code{Resent-From} and so on will be added. This
5419means that you actually send a mail to someone that has a @code{To}
5420header that (probably) points to yourself. This will confuse people.
5421So, natcherly you'll only do that if you're really eVIl.
5422
5423This command is mainly used if you have several accounts and want to
5424ship a mail to a different account of yours. (If you're both
5425@code{root} and @code{postmaster} and get a mail for @code{postmaster}
5426to the @code{root} account, you may want to resend it to
23f87bed 5427@code{postmaster}. Ordnung muss sein!
6bf7aab6
DL
5428
5429This command understands the process/prefix convention
5430(@pxref{Process/Prefix}).
5431
9b5773bc
MB
5432@item S D e
5433@kindex S D e (Summary)
5434@findex gnus-summary-resend-message-edit
5435
5436Like the previous command, but will allow you to edit the message as
5437if it were a new message before resending.
5438
6bf7aab6 5439@item S O m
23f87bed 5440@kindex S O m (Summary)
6bf7aab6
DL
5441@findex gnus-uu-digest-mail-forward
5442Digest the current series (@pxref{Decoding Articles}) and forward the
5443result using mail (@code{gnus-uu-digest-mail-forward}). This command
5444uses the process/prefix convention (@pxref{Process/Prefix}).
5445
5446@item S M-c
23f87bed 5447@kindex S M-c (Summary)
6bf7aab6
DL
5448@findex gnus-summary-mail-crosspost-complaint
5449@cindex crossposting
5450@cindex excessive crossposting
5451Send a complaint about excessive crossposting to the author of the
5452current article (@code{gnus-summary-mail-crosspost-complaint}).
5453
5454@findex gnus-crosspost-complaint
5455This command is provided as a way to fight back against the current
5456crossposting pandemic that's sweeping Usenet. It will compose a reply
5457using the @code{gnus-crosspost-complaint} variable as a preamble. This
5458command understands the process/prefix convention
5459(@pxref{Process/Prefix}) and will prompt you before sending each mail.
5460
5461@end table
5462
23f87bed
MB
5463Also @xref{Header Commands, ,Header Commands, message, The Message
5464Manual}, for more information.
6bf7aab6
DL
5465
5466
5467@node Summary Post Commands
5468@subsection Summary Post Commands
5469@cindex post
5470@cindex composing news
5471
5472Commands for posting a news article:
5473
5474@table @kbd
5475@item S p
5476@itemx a
23f87bed
MB
5477@kindex a (Summary)
5478@kindex S p (Summary)
6bf7aab6
DL
5479@findex gnus-summary-post-news
5480@c @icon{gnus-summary-post-news}
23f87bed
MB
5481Prepare for posting an article (@code{gnus-summary-post-news}). By
5482default, post to the current group. If given a prefix, disable that.
5483If the prefix is 1, prompt for another group instead.
6bf7aab6
DL
5484
5485@item S f
5486@itemx f
23f87bed
MB
5487@kindex f (Summary)
5488@kindex S f (Summary)
6bf7aab6
DL
5489@findex gnus-summary-followup
5490@c @icon{gnus-summary-followup}
5491Post a followup to the current article (@code{gnus-summary-followup}).
5492
5493@item S F
5494@itemx F
23f87bed
MB
5495@kindex S F (Summary)
5496@kindex F (Summary)
6bf7aab6
DL
5497@c @icon{gnus-summary-followup-with-original}
5498@findex gnus-summary-followup-with-original
5499Post a followup to the current article and include the original message
23f87bed 5500(@code{gnus-summary-followup-with-original}). This command uses the
6bf7aab6
DL
5501process/prefix convention.
5502
5503@item S n
23f87bed 5504@kindex S n (Summary)
6bf7aab6
DL
5505@findex gnus-summary-followup-to-mail
5506Post a followup to the current article via news, even if you got the
5507message through mail (@code{gnus-summary-followup-to-mail}).
5508
5509@item S N
23f87bed 5510@kindex S N (Summary)
6bf7aab6
DL
5511@findex gnus-summary-followup-to-mail-with-original
5512Post a followup to the current article via news, even if you got the
5513message through mail and include the original message
5514(@code{gnus-summary-followup-to-mail-with-original}). This command uses
5515the process/prefix convention.
5516
5517@item S o p
23f87bed 5518@kindex S o p (Summary)
6bf7aab6
DL
5519@findex gnus-summary-post-forward
5520Forward the current article to a newsgroup
177c0ea7 5521(@code{gnus-summary-post-forward}).
2625a8f7
GM
5522 If no prefix is given, the message is forwarded according to the value
5523of (@code{message-forward-as-mime}) and
5524(@code{message-forward-show-mml}); if the prefix is 1, decode the
f5d4cd5e 5525message and forward directly inline; if the prefix is 2, forward message
23f87bed
MB
5526as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5527forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
2625a8f7
GM
5528directly inline; otherwise, the message is forwarded as no prefix given
5529but use the flipped value of (@code{message-forward-as-mime}). By
23f87bed 5530default, the message is decoded and forwarded as an rfc822 @acronym{MIME} section.
6bf7aab6
DL
5531
5532@item S O p
23f87bed 5533@kindex S O p (Summary)
6bf7aab6
DL
5534@findex gnus-uu-digest-post-forward
5535@cindex digests
5536@cindex making digests
5537Digest the current series and forward the result to a newsgroup
7dafe00b 5538(@code{gnus-uu-digest-post-forward}). This command uses the
6bf7aab6
DL
5539process/prefix convention.
5540
5541@item S u
23f87bed 5542@kindex S u (Summary)
6bf7aab6
DL
5543@findex gnus-uu-post-news
5544@c @icon{gnus-uu-post-news}
5545Uuencode a file, split it into parts, and post it as a series
2625a8f7 5546(@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}).
6bf7aab6
DL
5547@end table
5548
23f87bed
MB
5549Also @xref{Header Commands, ,Header Commands, message, The Message
5550Manual}, for more information.
6bf7aab6
DL
5551
5552
2625a8f7
GM
5553@node Summary Message Commands
5554@subsection Summary Message Commands
5555
5556@table @kbd
5557@item S y
23f87bed 5558@kindex S y (Summary)
2625a8f7
GM
5559@findex gnus-summary-yank-message
5560Yank the current article into an already existing Message composition
5561buffer (@code{gnus-summary-yank-message}). This command prompts for
5562what message buffer you want to yank into, and understands the
5563process/prefix convention (@pxref{Process/Prefix}).
5564
5565@end table
5566
5567
6bf7aab6 5568@node Canceling and Superseding
2625a8f7 5569@subsection Canceling Articles
6bf7aab6
DL
5570@cindex canceling articles
5571@cindex superseding articles
5572
5573Have you ever written something, and then decided that you really,
5574really, really wish you hadn't posted that?
5575
5576Well, you can't cancel mail, but you can cancel posts.
5577
5578@findex gnus-summary-cancel-article
23f87bed 5579@kindex C (Summary)
6bf7aab6
DL
5580@c @icon{gnus-summary-cancel-article}
5581Find the article you wish to cancel (you can only cancel your own
5582articles, so don't try any funny stuff). Then press @kbd{C} or @kbd{S
5583c} (@code{gnus-summary-cancel-article}). Your article will be
5584canceled---machines all over the world will be deleting your article.
5585This command uses the process/prefix convention (@pxref{Process/Prefix}).
5586
5587Be aware, however, that not all sites honor cancels, so your article may
5588live on here and there, while most sites will delete the article in
5589question.
5590
5591Gnus will use the ``current'' select method when canceling. If you
5592want to use the standard posting method, use the @samp{a} symbolic
5593prefix (@pxref{Symbolic Prefixes}).
5594
23f87bed
MB
5595Gnus ensures that only you can cancel your own messages using a
5596@code{Cancel-Lock} header (@pxref{Canceling News, Canceling News, ,
5597message, Message Manual}).
5598
6bf7aab6
DL
5599If you discover that you have made some mistakes and want to do some
5600corrections, you can post a @dfn{superseding} article that will replace
5601your original article.
5602
5603@findex gnus-summary-supersede-article
23f87bed 5604@kindex S (Summary)
6bf7aab6
DL
5605Go to the original article and press @kbd{S s}
5606(@code{gnus-summary-supersede-article}). You will be put in a buffer
5607where you can edit the article all you want before sending it off the
5608usual way.
5609
5610The same goes for superseding as for canceling, only more so: Some
5611sites do not honor superseding. On those sites, it will appear that you
5612have posted almost the same article twice.
5613
5614If you have just posted the article, and change your mind right away,
5615there is a trick you can use to cancel/supersede the article without
5616waiting for the article to appear on your site first. You simply return
5617to the post buffer (which is called @code{*sent ...*}). There you will
5618find the article you just posted, with all the headers intact. Change
5619the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
5620header by substituting one of those words for the word
5621@code{Message-ID}. Then just press @kbd{C-c C-c} to send the article as
5622you would do normally. The previous article will be
5623canceled/superseded.
5624
5625Just remember, kids: There is no 'c' in 'supersede'.
5626
23f87bed
MB
5627@node Delayed Articles
5628@section Delayed Articles
5629@cindex delayed sending
5630@cindex send delayed
5631
5632Sometimes, you might wish to delay the sending of a message. For
5633example, you might wish to arrange for a message to turn up just in time
5634to remind your about the birthday of your Significant Other. For this,
5635there is the @code{gnus-delay} package. Setup is simple:
5636
5637@lisp
5638(gnus-delay-initialize)
5639@end lisp
5640
5641@findex gnus-delay-article
5642Normally, to send a message you use the @kbd{C-c C-c} command from
5643Message mode. To delay a message, use @kbd{C-c C-j}
5644(@code{gnus-delay-article}) instead. This will ask you for how long the
5645message should be delayed. Possible answers are:
5646
5647@itemize @bullet
5648@item
5649A time span. Consists of an integer and a letter. For example,
5650@code{42d} means to delay for 42 days. Available letters are @code{m}
5651(minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M}
5652(months) and @code{Y} (years).
5653
5654@item
5655A specific date. Looks like @code{YYYY-MM-DD}. The message will be
5656delayed until that day, at a specific time (eight o'clock by default).
5657See also @code{gnus-delay-default-hour}.
5658
5659@item
5660A specific time of day. Given in @code{hh:mm} format, 24h, no am/pm
5661stuff. The deadline will be at that time today, except if that time has
5662already passed, then it's at the given time tomorrow. So if it's ten
5663o'clock in the morning and you specify @code{11:15}, then the deadline
5664is one hour and fifteen minutes hence. But if you specify @code{9:20},
5665that means a time tomorrow.
5666@end itemize
5667
5668The action of the @code{gnus-delay-article} command is influenced by a
5669couple of variables:
5670
5671@table @code
5672@item gnus-delay-default-hour
5673@vindex gnus-delay-default-hour
5674When you specify a specific date, the message will be due on that hour
5675on the given date. Possible values are integers 0 through 23.
5676
5677@item gnus-delay-default-delay
5678@vindex gnus-delay-default-delay
5679This is a string and gives the default delay. It can be of any of the
5680formats described above.
5681
5682@item gnus-delay-group
5683@vindex gnus-delay-group
5684Delayed articles will be kept in this group on the drafts server until
5685they are due. You probably don't need to change this. The default
5686value is @code{"delayed"}.
5687
5688@item gnus-delay-header
5689@vindex gnus-delay-header
5690The deadline for each article will be stored in a header. This variable
5691is a string and gives the header name. You probably don't need to
5692change this. The default value is @code{"X-Gnus-Delayed"}.
5693@end table
5694
5695The way delaying works is like this: when you use the
5696@code{gnus-delay-article} command, you give a certain delay. Gnus
5697calculates the deadline of the message and stores it in the
5698@code{X-Gnus-Delayed} header and puts the message in the
5699@code{nndraft:delayed} group.
5700
5701@findex gnus-delay-send-queue
5702And whenever you get new news, Gnus looks through the group for articles
5703which are due and sends them. It uses the @code{gnus-delay-send-queue}
5704function for this. By default, this function is added to the hook
5705@code{gnus-get-new-news-hook}. But of course, you can change this.
5706Maybe you want to use the demon to send drafts? Just tell the demon to
5707execute the @code{gnus-delay-send-queue} function.
5708
5709@table @code
5710@item gnus-delay-initialize
5711@findex gnus-delay-initialize
5712By default, this function installs @code{gnus-delay-send-queue} in
5713@code{gnus-get-new-news-hook}. But it accepts the optional second
5714argument @code{no-check}. If it is non-@code{nil},
5715@code{gnus-get-new-news-hook} is not changed. The optional first
5716argument is ignored.
5717
5718For example, @code{(gnus-delay-initialize nil t)} means to do nothing.
5719Presumably, you want to use the demon for sending due delayed articles.
5720Just don't forget to set that up :-)
5721@end table
5722
6bf7aab6
DL
5723
5724@node Marking Articles
5725@section Marking Articles
5726@cindex article marking
5727@cindex article ticking
5728@cindex marks
5729
5730There are several marks you can set on an article.
5731
5732You have marks that decide the @dfn{readedness} (whoo, neato-keano
5733neologism ohoy!) of the article. Alphabetic marks generally mean
5734@dfn{read}, while non-alphabetic characters generally mean @dfn{unread}.
5735
5736In addition, you also have marks that do not affect readedness.
5737
6bf7aab6 5738@ifinfo
fdbc4dea 5739There's a plethora of commands for manipulating these marks.
6bf7aab6
DL
5740@end ifinfo
5741
5742@menu
fdbc4dea
JL
5743* Unread Articles:: Marks for unread articles.
5744* Read Articles:: Marks for read articles.
5745* Other Marks:: Marks that do not affect readedness.
5746* Setting Marks:: How to set and remove marks.
5747* Generic Marking Commands:: How to customize the marking.
5748* Setting Process Marks:: How to mark articles for later processing.
6bf7aab6
DL
5749@end menu
5750
5751
5752@node Unread Articles
5753@subsection Unread Articles
5754
5755The following marks mark articles as (kinda) unread, in one form or
5756other.
5757
5758@table @samp
5759@item !
5760@vindex gnus-ticked-mark
5761Marked as ticked (@code{gnus-ticked-mark}).
5762
5763@dfn{Ticked articles} are articles that will remain visible always. If
5764you see an article that you find interesting, or you want to put off
5765reading it, or replying to it, until sometime later, you'd typically
23f87bed
MB
5766tick it. However, articles can be expired (from news servers by the
5767news server software, Gnus itself never expires ticked messages), so if
5768you want to keep an article forever, you'll have to make it persistent
5769(@pxref{Persistent Articles}).
6bf7aab6
DL
5770
5771@item ?
5772@vindex gnus-dormant-mark
5773Marked as dormant (@code{gnus-dormant-mark}).
5774
5775@dfn{Dormant articles} will only appear in the summary buffer if there
5776are followups to it. If you want to see them even if they don't have
5777followups, you can use the @kbd{/ D} command (@pxref{Limiting}).
23f87bed
MB
5778Otherwise (except for the visibility issue), they are just like ticked
5779messages.
6bf7aab6 5780
23f87bed 5781@item SPACE
6bf7aab6
DL
5782@vindex gnus-unread-mark
5783Marked as unread (@code{gnus-unread-mark}).
5784
5785@dfn{Unread articles} are articles that haven't been read at all yet.
5786@end table
5787
5788
5789@node Read Articles
5790@subsection Read Articles
5791@cindex expirable mark
5792
5793All the following marks mark articles as read.
5794
5795@table @samp
5796
5797@item r
5798@vindex gnus-del-mark
5799These are articles that the user has marked as read with the @kbd{d}
5800command manually, more or less (@code{gnus-del-mark}).
5801
5802@item R
5803@vindex gnus-read-mark
5804Articles that have actually been read (@code{gnus-read-mark}).
5805
5806@item O
5807@vindex gnus-ancient-mark
5808Articles that were marked as read in previous sessions and are now
5809@dfn{old} (@code{gnus-ancient-mark}).
5810
5811@item K
5812@vindex gnus-killed-mark
5813Marked as killed (@code{gnus-killed-mark}).
5814
5815@item X
5816@vindex gnus-kill-file-mark
5817Marked as killed by kill files (@code{gnus-kill-file-mark}).
5818
5819@item Y
5820@vindex gnus-low-score-mark
5821Marked as read by having too low a score (@code{gnus-low-score-mark}).
5822
5823@item C
5824@vindex gnus-catchup-mark
5825Marked as read by a catchup (@code{gnus-catchup-mark}).
5826
5827@item G
5828@vindex gnus-canceled-mark
5829Canceled article (@code{gnus-canceled-mark})
5830
5831@item F
5832@vindex gnus-souped-mark
027f547a 5833@sc{soup}ed article (@code{gnus-souped-mark}). @xref{SOUP}.
6bf7aab6
DL
5834
5835@item Q
5836@vindex gnus-sparse-mark
5837Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing
5838Threading}.
5839
5840@item M
5841@vindex gnus-duplicate-mark
5842Article marked as read by duplicate suppression
23f87bed 5843(@code{gnus-duplicate-mark}). @xref{Duplicate Suppression}.
6bf7aab6
DL
5844
5845@end table
5846
5847All these marks just mean that the article is marked as read, really.
5848They are interpreted differently when doing adaptive scoring, though.
5849
5850One more special mark, though:
5851
5852@table @samp
5853@item E
5854@vindex gnus-expirable-mark
5855Marked as expirable (@code{gnus-expirable-mark}).
5856
5857Marking articles as @dfn{expirable} (or have them marked as such
5858automatically) doesn't make much sense in normal groups---a user doesn't
5859control expiring of news articles, but in mail groups, for instance,
5860articles marked as @dfn{expirable} can be deleted by Gnus at
5861any time.
5862@end table
5863
5864
5865@node Other Marks
5866@subsection Other Marks
5867@cindex process mark
5868@cindex bookmarks
5869
5870There are some marks that have nothing to do with whether the article is
5871read or not.
5872
5873@itemize @bullet
5874
5875@item
5876You can set a bookmark in the current article. Say you are reading a
5877long thesis on cats' urinary tracts, and have to go home for dinner
5878before you've finished reading the thesis. You can then set a bookmark
5879in the article, and Gnus will jump to this bookmark the next time it
5880encounters the article. @xref{Setting Marks}.
5881
5882@item
5883@vindex gnus-replied-mark
5884All articles that you have replied to or made a followup to (i.e., have
5885answered) will be marked with an @samp{A} in the second column
5886(@code{gnus-replied-mark}).
5887
23f87bed
MB
5888@item
5889@vindex gnus-forwarded-mark
5890All articles that you have forwarded will be marked with an @samp{F} in
5891the second column (@code{gnus-forwarded-mark}).
5892
6bf7aab6
DL
5893@item
5894@vindex gnus-cached-mark
5895Articles stored in the article cache will be marked with an @samp{*} in
5896the second column (@code{gnus-cached-mark}). @xref{Article Caching}.
5897
5898@item
5899@vindex gnus-saved-mark
5900Articles ``saved'' (in some manner or other; not necessarily
5901religiously) are marked with an @samp{S} in the second column
5902(@code{gnus-saved-mark}).
5903
23f87bed
MB
5904@item
5905@vindex gnus-recent-mark
5906Articles that according to the server haven't been shown to the user
5907before are marked with a @samp{N} in the second column
5908(@code{gnus-recent-mark}). Note that not all servers support this
5909mark, in which case it simply never appears. Compare with
5910@code{gnus-unseen-mark}.
5911
5912@item
5913@vindex gnus-unseen-mark
5914Articles that haven't been seen before in Gnus by the user are marked
5915with a @samp{.} in the second column (@code{gnus-unseen-mark}).
5916Compare with @code{gnus-recent-mark}.
5917
5918@item
5919@vindex gnus-downloaded-mark
5920When using the Gnus agent (@pxref{Agent Basics}), articles may be
5921downloaded for unplugged (offline) viewing. If you are using the
5922@samp{%O} spec, these articles get the @samp{+} mark in that spec.
5923(The variable @code{gnus-downloaded-mark} controls which character to
5924use.)
5925
5926@item
5927@vindex gnus-undownloaded-mark
5928When using the Gnus agent (@pxref{Agent Basics}), some articles might
5929not have been downloaded. Such articles cannot be viewed while you
5930are unplugged (offline). If you are using the @samp{%O} spec, these
5931articles get the @samp{-} mark in that spec. (The variable
5932@code{gnus-undownloaded-mark} controls which character to use.)
5933
5934@item
5935@vindex gnus-downloadable-mark
5936The Gnus agent (@pxref{Agent Basics}) downloads some articles
5937automatically, but it is also possible to explicitly mark articles for
5938download, even if they would not be downloaded automatically. Such
5939explicitly-marked articles get the @samp{%} mark in the first column.
5940(The variable @code{gnus-downloadable-mark} controls which character to
5941use.)
5942
6bf7aab6
DL
5943@item
5944@vindex gnus-not-empty-thread-mark
5945@vindex gnus-empty-thread-mark
5946If the @samp{%e} spec is used, the presence of threads or not will be
5947marked with @code{gnus-not-empty-thread-mark} and
5948@code{gnus-empty-thread-mark} in the third column, respectively.
5949
5950@item
5951@vindex gnus-process-mark
5952Finally we have the @dfn{process mark} (@code{gnus-process-mark}). A
5953variety of commands react to the presence of the process mark. For
5954instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view
5955all articles that have been marked with the process mark. Articles
5956marked with the process mark have a @samp{#} in the second column.
5957
5958@end itemize
5959
5960You might have noticed that most of these ``non-readedness'' marks
5961appear in the second column by default. So if you have a cached, saved,
5962replied article that you have process-marked, what will that look like?
5963
5964Nothing much. The precedence rules go as follows: process -> cache ->
5965replied -> saved. So if the article is in the cache and is replied,
5966you'll only see the cache mark and not the replied mark.
5967
5968
5969@node Setting Marks
5970@subsection Setting Marks
5971@cindex setting marks
5972
5973All the marking commands understand the numeric prefix.
5974
5975@table @kbd
5976@item M c
5977@itemx M-u
23f87bed
MB
5978@kindex M c (Summary)
5979@kindex M-u (Summary)
6bf7aab6
DL
5980@findex gnus-summary-clear-mark-forward
5981@cindex mark as unread
5982Clear all readedness-marks from the current article
5983(@code{gnus-summary-clear-mark-forward}). In other words, mark the
5984article as unread.
5985
5986@item M t
5987@itemx !
23f87bed
MB
5988@kindex ! (Summary)
5989@kindex M t (Summary)
6bf7aab6
DL
5990@findex gnus-summary-tick-article-forward
5991Tick the current article (@code{gnus-summary-tick-article-forward}).
5992@xref{Article Caching}.
5993
5994@item M ?
5995@itemx ?
23f87bed
MB
5996@kindex ? (Summary)
5997@kindex M ? (Summary)
6bf7aab6
DL
5998@findex gnus-summary-mark-as-dormant
5999Mark the current article as dormant
6000(@code{gnus-summary-mark-as-dormant}). @xref{Article Caching}.
6001
6002@item M d
6003@itemx d
23f87bed
MB
6004@kindex M d (Summary)
6005@kindex d (Summary)
6bf7aab6
DL
6006@findex gnus-summary-mark-as-read-forward
6007Mark the current article as read
6008(@code{gnus-summary-mark-as-read-forward}).
6009
6010@item D
23f87bed 6011@kindex D (Summary)
6bf7aab6
DL
6012@findex gnus-summary-mark-as-read-backward
6013Mark the current article as read and move point to the previous line
6014(@code{gnus-summary-mark-as-read-backward}).
6015
6016@item M k
6017@itemx k
23f87bed
MB
6018@kindex k (Summary)
6019@kindex M k (Summary)
6bf7aab6
DL
6020@findex gnus-summary-kill-same-subject-and-select
6021Mark all articles that have the same subject as the current one as read,
6022and then select the next unread article
6023(@code{gnus-summary-kill-same-subject-and-select}).
6024
6025@item M K
6026@itemx C-k
23f87bed
MB
6027@kindex M K (Summary)
6028@kindex C-k (Summary)
6bf7aab6
DL
6029@findex gnus-summary-kill-same-subject
6030Mark all articles that have the same subject as the current one as read
6031(@code{gnus-summary-kill-same-subject}).
6032
6033@item M C
23f87bed 6034@kindex M C (Summary)
6bf7aab6
DL
6035@findex gnus-summary-catchup
6036@c @icon{gnus-summary-catchup}
6037Mark all unread articles as read (@code{gnus-summary-catchup}).
6038
6039@item M C-c
23f87bed 6040@kindex M C-c (Summary)
6bf7aab6
DL
6041@findex gnus-summary-catchup-all
6042Mark all articles in the group as read---even the ticked and dormant
6043articles (@code{gnus-summary-catchup-all}).
6044
6045@item M H
23f87bed 6046@kindex M H (Summary)
6bf7aab6 6047@findex gnus-summary-catchup-to-here
23f87bed 6048Catchup the current group to point (before the point)
6bf7aab6
DL
6049(@code{gnus-summary-catchup-to-here}).
6050
23f87bed
MB
6051@item M h
6052@kindex M h (Summary)
6053@findex gnus-summary-catchup-from-here
6054Catchup the current group from point (after the point)
6055(@code{gnus-summary-catchup-from-here}).
6056
6bf7aab6 6057@item C-w
23f87bed 6058@kindex C-w (Summary)
6bf7aab6
DL
6059@findex gnus-summary-mark-region-as-read
6060Mark all articles between point and mark as read
6061(@code{gnus-summary-mark-region-as-read}).
6062
6063@item M V k
23f87bed 6064@kindex M V k (Summary)
6bf7aab6
DL
6065@findex gnus-summary-kill-below
6066Kill all articles with scores below the default score (or below the
6067numeric prefix) (@code{gnus-summary-kill-below}).
6068
6069@item M e
6070@itemx E
23f87bed
MB
6071@kindex M e (Summary)
6072@kindex E (Summary)
6bf7aab6
DL
6073@findex gnus-summary-mark-as-expirable
6074Mark the current article as expirable
6075(@code{gnus-summary-mark-as-expirable}).
6076
6077@item M b
23f87bed 6078@kindex M b (Summary)
6bf7aab6
DL
6079@findex gnus-summary-set-bookmark
6080Set a bookmark in the current article
6081(@code{gnus-summary-set-bookmark}).
6082
6083@item M B
23f87bed 6084@kindex M B (Summary)
6bf7aab6
DL
6085@findex gnus-summary-remove-bookmark
6086Remove the bookmark from the current article
6087(@code{gnus-summary-remove-bookmark}).
6088
6089@item M V c
23f87bed 6090@kindex M V c (Summary)
6bf7aab6
DL
6091@findex gnus-summary-clear-above
6092Clear all marks from articles with scores over the default score (or
6093over the numeric prefix) (@code{gnus-summary-clear-above}).
6094
6095@item M V u
23f87bed 6096@kindex M V u (Summary)
6bf7aab6
DL
6097@findex gnus-summary-tick-above
6098Tick all articles with scores over the default score (or over the
6099numeric prefix) (@code{gnus-summary-tick-above}).
6100
6101@item M V m
23f87bed 6102@kindex M V m (Summary)
6bf7aab6
DL
6103@findex gnus-summary-mark-above
6104Prompt for a mark, and mark all articles with scores over the default
6105score (or over the numeric prefix) with this mark
6106(@code{gnus-summary-clear-above}).
6107@end table
6108
6109@vindex gnus-summary-goto-unread
6110The @code{gnus-summary-goto-unread} variable controls what action should
6111be taken after setting a mark. If non-@code{nil}, point will move to
6112the next/previous unread article. If @code{nil}, point will just move
6113one line up or down. As a special case, if this variable is
6114@code{never}, all the marking commands as well as other commands (like
23f87bed 6115@kbd{SPACE}) will move to the next article, whether it is unread or not.
6bf7aab6
DL
6116The default is @code{t}.
6117
6118
2625a8f7
GM
6119@node Generic Marking Commands
6120@subsection Generic Marking Commands
6121
6122Some people would like the command that ticks an article (@kbd{!}) go to
6123the next article. Others would like it to go to the next unread
6124article. Yet others would like it to stay on the current article. And
6125even though I haven't heard of anybody wanting it to go to the
6126previous (unread) article, I'm sure there are people that want that as
6127well.
6128
23f87bed 6129Multiply these five behaviors with five different marking commands, and
2625a8f7
GM
6130you get a potentially complex set of variable to control what each
6131command should do.
6132
6133To sidestep that mess, Gnus provides commands that do all these
6134different things. They can be found on the @kbd{M M} map in the summary
6135buffer. Type @kbd{M M C-h} to see them all---there are too many of them
6136to list in this manual.
6137
6138While you can use these commands directly, most users would prefer
6139altering the summary mode keymap. For instance, if you would like the
6140@kbd{!} command to go to the next article instead of the next unread
6141article, you could say something like:
6142
6143@lisp
23f87bed 6144@group
2625a8f7
GM
6145(add-hook 'gnus-summary-mode-hook 'my-alter-summary-map)
6146(defun my-alter-summary-map ()
6147 (local-set-key "!" 'gnus-summary-put-mark-as-ticked-next))
23f87bed 6148@end group
2625a8f7
GM
6149@end lisp
6150
23f87bed 6151@noindent
2625a8f7
GM
6152or
6153
6154@lisp
6155(defun my-alter-summary-map ()
6156 (local-set-key "!" "MM!n"))
6157@end lisp
6158
6159
6bf7aab6
DL
6160@node Setting Process Marks
6161@subsection Setting Process Marks
6162@cindex setting process marks
6163
23f87bed
MB
6164Process marks are displayed as @code{#} in the summary buffer, and are
6165used for marking articles in such a way that other commands will
6166process these articles. For instance, if you process mark four
6167articles and then use the @kbd{*} command, Gnus will enter these four
6168commands into the cache. For more information,
6169@pxref{Process/Prefix}.
6170
6bf7aab6
DL
6171@table @kbd
6172
6173@item M P p
6174@itemx #
23f87bed
MB
6175@kindex # (Summary)
6176@kindex M P p (Summary)
6bf7aab6
DL
6177@findex gnus-summary-mark-as-processable
6178Mark the current article with the process mark
6179(@code{gnus-summary-mark-as-processable}).
6180@findex gnus-summary-unmark-as-processable
6181
6182@item M P u
6183@itemx M-#
23f87bed
MB
6184@kindex M P u (Summary)
6185@kindex M-# (Summary)
6bf7aab6
DL
6186Remove the process mark, if any, from the current article
6187(@code{gnus-summary-unmark-as-processable}).
6188
6189@item M P U
23f87bed 6190@kindex M P U (Summary)
6bf7aab6
DL
6191@findex gnus-summary-unmark-all-processable
6192Remove the process mark from all articles
6193(@code{gnus-summary-unmark-all-processable}).
6194
6195@item M P i
23f87bed 6196@kindex M P i (Summary)
6bf7aab6
DL
6197@findex gnus-uu-invert-processable
6198Invert the list of process marked articles
6199(@code{gnus-uu-invert-processable}).
6200
6201@item M P R
23f87bed 6202@kindex M P R (Summary)
6bf7aab6
DL
6203@findex gnus-uu-mark-by-regexp
6204Mark articles that have a @code{Subject} header that matches a regular
6205expression (@code{gnus-uu-mark-by-regexp}).
6206
2625a8f7 6207@item M P G
23f87bed 6208@kindex M P G (Summary)
2625a8f7
GM
6209@findex gnus-uu-unmark-by-regexp
6210Unmark articles that have a @code{Subject} header that matches a regular
6211expression (@code{gnus-uu-unmark-by-regexp}).
6212
6bf7aab6 6213@item M P r
23f87bed 6214@kindex M P r (Summary)
6bf7aab6
DL
6215@findex gnus-uu-mark-region
6216Mark articles in region (@code{gnus-uu-mark-region}).
6217
23f87bed
MB
6218@item M P g
6219@kindex M P g (Summary)
6220@findex gnus-uu-unmark-region
6221Unmark articles in region (@code{gnus-uu-unmark-region}).
6222
6bf7aab6 6223@item M P t
23f87bed 6224@kindex M P t (Summary)
6bf7aab6
DL
6225@findex gnus-uu-mark-thread
6226Mark all articles in the current (sub)thread
6227(@code{gnus-uu-mark-thread}).
6228
6229@item M P T
23f87bed 6230@kindex M P T (Summary)
6bf7aab6
DL
6231@findex gnus-uu-unmark-thread
6232Unmark all articles in the current (sub)thread
6233(@code{gnus-uu-unmark-thread}).
6234
6235@item M P v
23f87bed 6236@kindex M P v (Summary)
6bf7aab6
DL
6237@findex gnus-uu-mark-over
6238Mark all articles that have a score above the prefix argument
6239(@code{gnus-uu-mark-over}).
6240
6241@item M P s
23f87bed 6242@kindex M P s (Summary)
6bf7aab6
DL
6243@findex gnus-uu-mark-series
6244Mark all articles in the current series (@code{gnus-uu-mark-series}).
6245
6246@item M P S
23f87bed 6247@kindex M P S (Summary)
6bf7aab6
DL
6248@findex gnus-uu-mark-sparse
6249Mark all series that have already had some articles marked
6250(@code{gnus-uu-mark-sparse}).
6251
6252@item M P a
23f87bed 6253@kindex M P a (Summary)
6bf7aab6 6254@findex gnus-uu-mark-all
f4dd4ae8 6255Mark all articles in series order (@code{gnus-uu-mark-all}).
6bf7aab6
DL
6256
6257@item M P b
23f87bed 6258@kindex M P b (Summary)
6bf7aab6
DL
6259@findex gnus-uu-mark-buffer
6260Mark all articles in the buffer in the order they appear
6261(@code{gnus-uu-mark-buffer}).
6262
6263@item M P k
23f87bed 6264@kindex M P k (Summary)
6bf7aab6
DL
6265@findex gnus-summary-kill-process-mark
6266Push the current process mark set onto the stack and unmark all articles
6267(@code{gnus-summary-kill-process-mark}).
6268
6269@item M P y
23f87bed 6270@kindex M P y (Summary)
6bf7aab6
DL
6271@findex gnus-summary-yank-process-mark
6272Pop the previous process mark set from the stack and restore it
6273(@code{gnus-summary-yank-process-mark}).
6274
6275@item M P w
23f87bed 6276@kindex M P w (Summary)
6bf7aab6
DL
6277@findex gnus-summary-save-process-mark
6278Push the current process mark set onto the stack
6279(@code{gnus-summary-save-process-mark}).
6280
6281@end table
6282
23f87bed 6283Also see the @kbd{&} command in @ref{Searching for Articles}, for how to
2625a8f7
GM
6284set process marks based on article body contents.
6285
6bf7aab6
DL
6286
6287@node Limiting
6288@section Limiting
6289@cindex limiting
6290
6291It can be convenient to limit the summary buffer to just show some
6292subset of the articles currently in the group. The effect most limit
6293commands have is to remove a few (or many) articles from the summary
6294buffer.
6295
6296All limiting commands work on subsets of the articles already fetched
6297from the servers. None of these commands query the server for
6298additional articles.
6299
6300@table @kbd
6301
6302@item / /
6303@itemx / s
23f87bed 6304@kindex / / (Summary)
6bf7aab6
DL
6305@findex gnus-summary-limit-to-subject
6306Limit the summary buffer to articles that match some subject
23f87bed
MB
6307(@code{gnus-summary-limit-to-subject}). If given a prefix, exclude
6308matching articles.
6bf7aab6
DL
6309
6310@item / a
23f87bed 6311@kindex / a (Summary)
6bf7aab6
DL
6312@findex gnus-summary-limit-to-author
6313Limit the summary buffer to articles that match some author
23f87bed
MB
6314(@code{gnus-summary-limit-to-author}). If given a prefix, exclude
6315matching articles.
6bf7aab6 6316
2625a8f7 6317@item / x
23f87bed 6318@kindex / x (Summary)
2625a8f7
GM
6319@findex gnus-summary-limit-to-extra
6320Limit the summary buffer to articles that match one of the ``extra''
6321headers (@pxref{To From Newsgroups})
23f87bed
MB
6322(@code{gnus-summary-limit-to-extra}). If given a prefix, exclude
6323matching articles.
2625a8f7 6324
6bf7aab6
DL
6325@item / u
6326@itemx x
23f87bed
MB
6327@kindex / u (Summary)
6328@kindex x (Summary)
6bf7aab6
DL
6329@findex gnus-summary-limit-to-unread
6330Limit the summary buffer to articles not marked as read
6331(@code{gnus-summary-limit-to-unread}). If given a prefix, limit the
6332buffer to articles strictly unread. This means that ticked and
6333dormant articles will also be excluded.
6334
6335@item / m
23f87bed 6336@kindex / m (Summary)
6bf7aab6
DL
6337@findex gnus-summary-limit-to-marks
6338Ask for a mark and then limit to all articles that have been marked
6339with that mark (@code{gnus-summary-limit-to-marks}).
6340
6341@item / t
23f87bed 6342@kindex / t (Summary)
6bf7aab6
DL
6343@findex gnus-summary-limit-to-age
6344Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days
2625a8f7 6345(@code{gnus-summary-limit-to-age}). If given a prefix, limit to
6bf7aab6
DL
6346articles younger than that number of days.
6347
6348@item / n
23f87bed 6349@kindex / n (Summary)
6bf7aab6
DL
6350@findex gnus-summary-limit-to-articles
6351Limit the summary buffer to the current article
6352(@code{gnus-summary-limit-to-articles}). Uses the process/prefix
6353convention (@pxref{Process/Prefix}).
6354
6355@item / w
23f87bed 6356@kindex / w (Summary)
6bf7aab6
DL
6357@findex gnus-summary-pop-limit
6358Pop the previous limit off the stack and restore it
6359(@code{gnus-summary-pop-limit}). If given a prefix, pop all limits off
6360the stack.
6361
23f87bed
MB
6362@item / .
6363@kindex / . (Summary)
6364@findex gnus-summary-limit-to-unseen
6365Limit the summary buffer to the unseen articles
6366(@code{gnus-summary-limit-to-unseen}).
6367
6bf7aab6 6368@item / v
23f87bed 6369@kindex / v (Summary)
6bf7aab6
DL
6370@findex gnus-summary-limit-to-score
6371Limit the summary buffer to articles that have a score at or above some
6372score (@code{gnus-summary-limit-to-score}).
6373
23f87bed
MB
6374@item / p
6375@kindex / p (Summary)
6376@findex gnus-summary-limit-to-display-predicate
6377Limit the summary buffer to articles that satisfy the @code{display}
6378group parameter predicate
6379(@code{gnus-summary-limit-to-display-predicate}). @xref{Group
6380Parameters}, for more on this predicate.
6381
6bf7aab6
DL
6382@item / E
6383@itemx M S
23f87bed
MB
6384@kindex M S (Summary)
6385@kindex / E (Summary)
6bf7aab6
DL
6386@findex gnus-summary-limit-include-expunged
6387Include all expunged articles in the limit
6388(@code{gnus-summary-limit-include-expunged}).
6389
6390@item / D
23f87bed 6391@kindex / D (Summary)
6bf7aab6
DL
6392@findex gnus-summary-limit-include-dormant
6393Include all dormant articles in the limit
6394(@code{gnus-summary-limit-include-dormant}).
6395
6396@item / *
23f87bed 6397@kindex / * (Summary)
6bf7aab6
DL
6398@findex gnus-summary-limit-include-cached
6399Include all cached articles in the limit
6400(@code{gnus-summary-limit-include-cached}).
6401
6402@item / d
23f87bed 6403@kindex / d (Summary)
6bf7aab6
DL
6404@findex gnus-summary-limit-exclude-dormant
6405Exclude all dormant articles from the limit
6406(@code{gnus-summary-limit-exclude-dormant}).
6407
2625a8f7 6408@item / M
23f87bed 6409@kindex / M (Summary)
2625a8f7
GM
6410@findex gnus-summary-limit-exclude-marks
6411Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}).
6412
6bf7aab6 6413@item / T
23f87bed 6414@kindex / T (Summary)
6bf7aab6
DL
6415@findex gnus-summary-limit-include-thread
6416Include all the articles in the current thread in the limit.
6417
6418@item / c
23f87bed 6419@kindex / c (Summary)
6bf7aab6 6420@findex gnus-summary-limit-exclude-childless-dormant
23f87bed 6421Exclude all dormant articles that have no children from the limit@*
6bf7aab6
DL
6422(@code{gnus-summary-limit-exclude-childless-dormant}).
6423
6424@item / C
23f87bed 6425@kindex / C (Summary)
6bf7aab6
DL
6426@findex gnus-summary-limit-mark-excluded-as-read
6427Mark all excluded unread articles as read
23f87bed 6428(@code{gnus-summary-limit-mark-excluded-as-read}). If given a prefix,
6bf7aab6
DL
6429also mark excluded ticked and dormant articles as read.
6430
23f87bed
MB
6431@item / N
6432@kindex / N (Summary)
6433@findex gnus-summary-insert-new-articles
6434Insert all new articles in the summary buffer. It scans for new emails
6435if @var{back-end}@code{-get-new-mail} is non-@code{nil}.
6436
6437@item / o
6438@kindex / o (Summary)
6439@findex gnus-summary-insert-old-articles
6440Insert all old articles in the summary buffer. If given a numbered
6441prefix, fetch this number of articles.
6442
6bf7aab6
DL
6443@end table
6444
6445
6446@node Threading
6447@section Threading
6448@cindex threading
6449@cindex article threading
6450
6451Gnus threads articles by default. @dfn{To thread} is to put responses
6452to articles directly after the articles they respond to---in a
6453hierarchical fashion.
6454
6455Threading is done by looking at the @code{References} headers of the
6456articles. In a perfect world, this would be enough to build pretty
6457trees, but unfortunately, the @code{References} header is often broken
f5d4cd5e 6458or simply missing. Weird news propagation exacerbates the problem,
6bf7aab6
DL
6459so one has to employ other heuristics to get pleasing results. A
6460plethora of approaches exists, as detailed in horrible detail in
23f87bed 6461@ref{Customizing Threading}.
6bf7aab6
DL
6462
6463First, a quick overview of the concepts:
6464
6465@table @dfn
6466@item root
6467The top-most article in a thread; the first article in the thread.
6468
6469@item thread
6470A tree-like article structure.
6471
6472@item sub-thread
6473A small(er) section of this tree-like structure.
6474
6475@item loose threads
6476Threads often lose their roots due to article expiry, or due to the root
6477already having been read in a previous session, and not displayed in the
6478summary buffer. We then typically have many sub-threads that really
6479belong to one thread, but are without connecting roots. These are
6480called loose threads.
6481
6482@item thread gathering
6483An attempt to gather loose threads into bigger threads.
6484
6485@item sparse threads
6486A thread where the missing articles have been ``guessed'' at, and are
6487displayed as empty lines in the summary buffer.
6488
6489@end table
6490
6491
6492@menu
23f87bed
MB
6493* Customizing Threading:: Variables you can change to affect the threading.
6494* Thread Commands:: Thread based commands in the summary buffer.
6bf7aab6
DL
6495@end menu
6496
6497
6498@node Customizing Threading
6499@subsection Customizing Threading
6500@cindex customizing threading
6501
6502@menu
23f87bed
MB
6503* Loose Threads:: How Gnus gathers loose threads into bigger threads.
6504* Filling In Threads:: Making the threads displayed look fuller.
6505* More Threading:: Even more variables for fiddling with threads.
6506* Low-Level Threading:: You thought it was over@dots{} but you were wrong!
6bf7aab6
DL
6507@end menu
6508
6509
6510@node Loose Threads
6511@subsubsection Loose Threads
6512@cindex <
6513@cindex >
6514@cindex loose threads
6515
6516@table @code
6517@item gnus-summary-make-false-root
6518@vindex gnus-summary-make-false-root
6519If non-@code{nil}, Gnus will gather all loose subtrees into one big tree
6520and create a dummy root at the top. (Wait a minute. Root at the top?
6521Yup.) Loose subtrees occur when the real root has expired, or you've
6522read or killed the root in a previous session.
6523
6524When there is no real root of a thread, Gnus will have to fudge
6525something. This variable says what fudging method Gnus should use.
6526There are four possible values:
6527
2625a8f7
GM
6528@iftex
6529@iflatex
6530\gnusfigure{The Summary Buffer}{390}{
23f87bed
MB
6531\put(0,0){\epsfig{figure=ps/summary-adopt,width=7.5cm}}
6532\put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-empty,width=7.5cm}}}
6533\put(0,400){\makebox(0,0)[tl]{\epsfig{figure=ps/summary-none,width=7.5cm}}}
6534\put(445,400){\makebox(0,0)[tr]{\epsfig{figure=ps/summary-dummy,width=7.5cm}}}
2625a8f7
GM
6535}
6536@end iflatex
6537@end iftex
6538
6bf7aab6
DL
6539@cindex adopting articles
6540
6541@table @code
6542
6543@item adopt
6544Gnus will make the first of the orphaned articles the parent. This
6545parent will adopt all the other articles. The adopted articles will be
6546marked as such by pointy brackets (@samp{<>}) instead of the standard
6547square brackets (@samp{[]}). This is the default method.
6548
6549@item dummy
6550@vindex gnus-summary-dummy-line-format
23f87bed 6551@vindex gnus-summary-make-false-root-always
6bf7aab6
DL
6552Gnus will create a dummy summary line that will pretend to be the
6553parent. This dummy line does not correspond to any real article, so
6554selecting it will just select the first real article after the dummy
6555article. @code{gnus-summary-dummy-line-format} is used to specify the
6556format of the dummy roots. It accepts only one format spec: @samp{S},
6557which is the subject of the article. @xref{Formatting Variables}.
23f87bed
MB
6558If you want all threads to have a dummy root, even the non-gathered
6559ones, set @code{gnus-summary-make-false-root-always} to @code{t}.
6bf7aab6
DL
6560
6561@item empty
6562Gnus won't actually make any article the parent, but simply leave the
6563subject field of all orphans except the first empty. (Actually, it will
6564use @code{gnus-summary-same-subject} as the subject (@pxref{Summary
6565Buffer Format}).)
6566
6567@item none
6568Don't make any article parent at all. Just gather the threads and
6569display them after one another.
6570
6571@item nil
6572Don't gather loose threads.
6573@end table
6574
6575@item gnus-summary-gather-subject-limit
6576@vindex gnus-summary-gather-subject-limit
6577Loose threads are gathered by comparing subjects of articles. If this
6578variable is @code{nil}, Gnus requires an exact match between the
6579subjects of the loose threads before gathering them into one big
6580super-thread. This might be too strict a requirement, what with the
6581presence of stupid newsreaders that chop off long subject lines. If
6582you think so, set this variable to, say, 20 to require that only the
6583first 20 characters of the subjects have to match. If you set this
6584variable to a really low number, you'll find that Gnus will gather
6585everything in sight into one thread, which isn't very helpful.
6586
6587@cindex fuzzy article gathering
6588If you set this variable to the special value @code{fuzzy}, Gnus will
6589use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
6590Matching}).
6591
6592@item gnus-simplify-subject-fuzzy-regexp
6593@vindex gnus-simplify-subject-fuzzy-regexp
6594This can either be a regular expression or list of regular expressions
6595that match strings that will be removed from subjects if fuzzy subject
6596simplification is used.
6597
6598@item gnus-simplify-ignored-prefixes
6599@vindex gnus-simplify-ignored-prefixes
6600If you set @code{gnus-summary-gather-subject-limit} to something as low
6601as 10, you might consider setting this variable to something sensible:
6602
6603@c Written by Michael Ernst <mernst@cs.rice.edu>
6604@lisp
6605(setq gnus-simplify-ignored-prefixes
6606 (concat
6607 "\\`\\[?\\("
6608 (mapconcat
6609 'identity
6610 '("looking"
6611 "wanted" "followup" "summary\\( of\\)?"
6612 "help" "query" "problem" "question"
6613 "answer" "reference" "announce"
6614 "How can I" "How to" "Comparison of"
6615 ;; ...
6616 )
6617 "\\|")
6618 "\\)\\s *\\("
6619 (mapconcat 'identity
6620 '("for" "for reference" "with" "about")
6621 "\\|")
6622 "\\)?\\]?:?[ \t]*"))
6623@end lisp
6624
6625All words that match this regexp will be removed before comparing two
6626subjects.
6627
6628@item gnus-simplify-subject-functions
6629@vindex gnus-simplify-subject-functions
6630If non-@code{nil}, this variable overrides
6631@code{gnus-summary-gather-subject-limit}. This variable should be a
6632list of functions to apply to the @code{Subject} string iteratively to
6633arrive at the simplified version of the string.
6634
6635Useful functions to put in this list include:
6636
6637@table @code
6638@item gnus-simplify-subject-re
6639@findex gnus-simplify-subject-re
6640Strip the leading @samp{Re:}.
6641
6642@item gnus-simplify-subject-fuzzy
6643@findex gnus-simplify-subject-fuzzy
6644Simplify fuzzily.
6645
6646@item gnus-simplify-whitespace
6647@findex gnus-simplify-whitespace
6648Remove excessive whitespace.
23f87bed
MB
6649
6650@item gnus-simplify-all-whitespace
6651@findex gnus-simplify-all-whitespace
6652Remove all whitespace.
6bf7aab6
DL
6653@end table
6654
6655You may also write your own functions, of course.
6656
6657
6658@item gnus-summary-gather-exclude-subject
6659@vindex gnus-summary-gather-exclude-subject
6660Since loose thread gathering is done on subjects only, that might lead
6661to many false hits, especially with certain common subjects like
6662@samp{} and @samp{(none)}. To make the situation slightly better,
6663you can use the regexp @code{gnus-summary-gather-exclude-subject} to say
6664what subjects should be excluded from the gathering process.@*
6665The default is @samp{^ *$\\|^(none)$}.
6666
6667@item gnus-summary-thread-gathering-function
6668@vindex gnus-summary-thread-gathering-function
6669Gnus gathers threads by looking at @code{Subject} headers. This means
6670that totally unrelated articles may end up in the same ``thread'', which
6671is confusing. An alternate approach is to look at all the
6672@code{Message-ID}s in all the @code{References} headers to find matches.
6673This will ensure that no gathered threads ever include unrelated
6674articles, but it also means that people who have posted with broken
6675newsreaders won't be gathered properly. The choice is yours---plague or
6676cholera:
6677
6678@table @code
6679@item gnus-gather-threads-by-subject
6680@findex gnus-gather-threads-by-subject
6681This function is the default gathering function and looks at
6682@code{Subject}s exclusively.
6683
6684@item gnus-gather-threads-by-references
6685@findex gnus-gather-threads-by-references
6686This function looks at @code{References} headers exclusively.
6687@end table
6688
6689If you want to test gathering by @code{References}, you could say
6690something like:
6691
6692@lisp
6693(setq gnus-summary-thread-gathering-function
6694 'gnus-gather-threads-by-references)
6695@end lisp
6696
6697@end table
6698
6699
6700@node Filling In Threads
6701@subsubsection Filling In Threads
6702
6703@table @code
6704@item gnus-fetch-old-headers
6705@vindex gnus-fetch-old-headers
6706If non-@code{nil}, Gnus will attempt to build old threads by fetching
23f87bed
MB
6707more old headers---headers to articles marked as read. If you would
6708like to display as few summary lines as possible, but still connect as
6709many loose threads as possible, you should set this variable to
6710@code{some} or a number. If you set it to a number, no more than that
6711number of extra old headers will be fetched. In either case, fetching
6712old headers only works if the back end you are using carries overview
6713files---this would normally be @code{nntp}, @code{nnspool},
6714@code{nnml}, and @code{nnmaildir}. Also remember that if the root of
6715the thread has been expired by the server, there's not much Gnus can
6716do about that.
6bf7aab6
DL
6717
6718This variable can also be set to @code{invisible}. This won't have any
6719visible effects, but is useful if you use the @kbd{A T} command a lot
6720(@pxref{Finding the Parent}).
6721
23f87bed
MB
6722@item gnus-fetch-old-ephemeral-headers
6723@vindex gnus-fetch-old-ephemeral-headers
6724Same as @code{gnus-fetch-old-headers}, but only used for ephemeral
6725newsgroups.
6726
6bf7aab6
DL
6727@item gnus-build-sparse-threads
6728@vindex gnus-build-sparse-threads
6729Fetching old headers can be slow. A low-rent similar effect can be
6730gotten by setting this variable to @code{some}. Gnus will then look at
6731the complete @code{References} headers of all articles and try to string
6732together articles that belong in the same thread. This will leave
6733@dfn{gaps} in the threading display where Gnus guesses that an article
6734is missing from the thread. (These gaps appear like normal summary
6735lines. If you select a gap, Gnus will try to fetch the article in
6736question.) If this variable is @code{t}, Gnus will display all these
6737``gaps'' without regard for whether they are useful for completing the
6738thread or not. Finally, if this variable is @code{more}, Gnus won't cut
6739off sparse leaf nodes that don't lead anywhere. This variable is
6740@code{nil} by default.
6741
23f87bed
MB
6742@item gnus-read-all-available-headers
6743@vindex gnus-read-all-available-headers
6744This is a rather obscure variable that few will find useful. It's
6745intended for those non-news newsgroups where the back end has to fetch
6746quite a lot to present the summary buffer, and where it's impossible to
6747go back to parents of articles. This is mostly the case in the
6748web-based groups, like the @code{nnultimate} groups.
6749
6750If you don't use those, then it's safe to leave this as the default
6751@code{nil}. If you want to use this variable, it should be a regexp
6752that matches the group name, or @code{t} for all groups.
6753
6bf7aab6
DL
6754@end table
6755
6756
6757@node More Threading
6758@subsubsection More Threading
6759
6760@table @code
6761@item gnus-show-threads
6762@vindex gnus-show-threads
6763If this variable is @code{nil}, no threading will be done, and all of
6764the rest of the variables here will have no effect. Turning threading
6765off will speed group selection up a bit, but it is sure to make reading
6766slower and more awkward.
6767
6768@item gnus-thread-hide-subtree
6769@vindex gnus-thread-hide-subtree
6770If non-@code{nil}, all threads will be hidden when the summary buffer is
6771generated.
6772
23f87bed
MB
6773This can also be a predicate specifier (@pxref{Predicate Specifiers}).
6774Available predicates are @code{gnus-article-unread-p} and
6775@code{gnus-article-unseen-p}.
6776
6777Here's an example:
6778
6779@lisp
6780(setq gnus-thread-hide-subtree
6781 '(or gnus-article-unread-p
6782 gnus-article-unseen-p))
6783@end lisp
6784
6785(It's a pretty nonsensical example, since all unseen articles are also
6786unread, but you get my drift.)
6787
6788
6bf7aab6
DL
6789@item gnus-thread-expunge-below
6790@vindex gnus-thread-expunge-below
6791All threads that have a total score (as defined by
6792@code{gnus-thread-score-function}) less than this number will be
6793expunged. This variable is @code{nil} by default, which means that no
6794threads are expunged.
6795
6796@item gnus-thread-hide-killed
6797@vindex gnus-thread-hide-killed
6798if you kill a thread and this variable is non-@code{nil}, the subtree
6799will be hidden.
6800
6801@item gnus-thread-ignore-subject
6802@vindex gnus-thread-ignore-subject
6803Sometimes somebody changes the subject in the middle of a thread. If
23f87bed
MB
6804this variable is non-@code{nil}, which is the default, the subject
6805change is ignored. If it is @code{nil}, a change in the subject will
6806result in a new thread.
6bf7aab6
DL
6807
6808@item gnus-thread-indent-level
6809@vindex gnus-thread-indent-level
6810This is a number that says how much each sub-thread should be indented.
6811The default is 4.
6812
2625a8f7
GM
6813@item gnus-sort-gathered-threads-function
6814@vindex gnus-sort-gathered-threads-function
6815Sometimes, particularly with mailing lists, the order in which mails
6816arrive locally is not necessarily the same as the order in which they
6817arrived on the mailing list. Consequently, when sorting sub-threads
6818using the default @code{gnus-thread-sort-by-number}, responses can end
6819up appearing before the article to which they are responding to.
6820Setting this variable to an alternate value
6821(e.g. @code{gnus-thread-sort-by-date}), in a group's parameters or in an
6822appropriate hook (e.g. @code{gnus-summary-generate-hook}) can produce a
6823more logical sub-thread ordering in such instances.
6824
6bf7aab6
DL
6825@end table
6826
6827
6828@node Low-Level Threading
6829@subsubsection Low-Level Threading
6830
6831@table @code
6832
6833@item gnus-parse-headers-hook
6834@vindex gnus-parse-headers-hook
2625a8f7 6835Hook run before parsing any headers.
6bf7aab6
DL
6836
6837@item gnus-alter-header-function
6838@vindex gnus-alter-header-function
6839If non-@code{nil}, this function will be called to allow alteration of
6840article header structures. The function is called with one parameter,
6841the article header vector, which it may alter in any way. For instance,
6842if you have a mail-to-news gateway which alters the @code{Message-ID}s
6843in systematic ways (by adding prefixes and such), you can use this
6844variable to un-scramble the @code{Message-ID}s so that they are more
6845meaningful. Here's one example:
6846
6847@lisp
6848(setq gnus-alter-header-function 'my-alter-message-id)
6849
6850(defun my-alter-message-id (header)
6851 (let ((id (mail-header-id header)))
6852 (when (string-match
6853 "\\(<[^<>@@]*\\)\\.?cygnus\\..*@@\\([^<>@@]*>\\)" id)
6854 (mail-header-set-id
6855 (concat (match-string 1 id) "@@" (match-string 2 id))
6856 header))))
6857@end lisp
6858
6859@end table
6860
6861
6862@node Thread Commands
6863@subsection Thread Commands
6864@cindex thread commands
6865
6866@table @kbd
6867
6868@item T k
718fb8a1 6869@itemx C-M-k
23f87bed
MB
6870@kindex T k (Summary)
6871@kindex C-M-k (Summary)
6bf7aab6
DL
6872@findex gnus-summary-kill-thread
6873Mark all articles in the current (sub-)thread as read
6874(@code{gnus-summary-kill-thread}). If the prefix argument is positive,
6875remove all marks instead. If the prefix argument is negative, tick
6876articles instead.
6877
6878@item T l
718fb8a1 6879@itemx C-M-l
23f87bed
MB
6880@kindex T l (Summary)
6881@kindex C-M-l (Summary)
6bf7aab6
DL
6882@findex gnus-summary-lower-thread
6883Lower the score of the current (sub-)thread
6884(@code{gnus-summary-lower-thread}).
6885
6886@item T i
23f87bed 6887@kindex T i (Summary)
6bf7aab6
DL
6888@findex gnus-summary-raise-thread
6889Increase the score of the current (sub-)thread
6890(@code{gnus-summary-raise-thread}).
6891
6892@item T #
23f87bed 6893@kindex T # (Summary)
6bf7aab6
DL
6894@findex gnus-uu-mark-thread
6895Set the process mark on the current (sub-)thread
6896(@code{gnus-uu-mark-thread}).
6897
6898@item T M-#
23f87bed 6899@kindex T M-# (Summary)
6bf7aab6
DL
6900@findex gnus-uu-unmark-thread
6901Remove the process mark from the current (sub-)thread
6902(@code{gnus-uu-unmark-thread}).
6903
6904@item T T
23f87bed 6905@kindex T T (Summary)
6bf7aab6
DL
6906@findex gnus-summary-toggle-threads
6907Toggle threading (@code{gnus-summary-toggle-threads}).
6908
6909@item T s
23f87bed 6910@kindex T s (Summary)
6bf7aab6 6911@findex gnus-summary-show-thread
23f87bed 6912Expose the (sub-)thread hidden under the current article, if any@*
6bf7aab6
DL
6913(@code{gnus-summary-show-thread}).
6914
6915@item T h
23f87bed 6916@kindex T h (Summary)
6bf7aab6
DL
6917@findex gnus-summary-hide-thread
6918Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
6919
6920@item T S
23f87bed 6921@kindex T S (Summary)
6bf7aab6
DL
6922@findex gnus-summary-show-all-threads
6923Expose all hidden threads (@code{gnus-summary-show-all-threads}).
6924
6925@item T H
23f87bed 6926@kindex T H (Summary)
6bf7aab6
DL
6927@findex gnus-summary-hide-all-threads
6928Hide all threads (@code{gnus-summary-hide-all-threads}).
6929
6930@item T t
23f87bed 6931@kindex T t (Summary)
6bf7aab6
DL
6932@findex gnus-summary-rethread-current
6933Re-thread the current article's thread
6934(@code{gnus-summary-rethread-current}). This works even when the
6935summary buffer is otherwise unthreaded.
6936
6937@item T ^
23f87bed 6938@kindex T ^ (Summary)
6bf7aab6
DL
6939@findex gnus-summary-reparent-thread
6940Make the current article the child of the marked (or previous) article
6941(@code{gnus-summary-reparent-thread}).
6942
6943@end table
6944
6945The following commands are thread movement commands. They all
6946understand the numeric prefix.
6947
6948@table @kbd
6949
6950@item T n
23f87bed
MB
6951@kindex T n (Summary)
6952@itemx C-M-f
6953@kindex C-M-n (Summary)
2625a8f7 6954@itemx M-down
23f87bed 6955@kindex M-down (Summary)
6bf7aab6
DL
6956@findex gnus-summary-next-thread
6957Go to the next thread (@code{gnus-summary-next-thread}).
6958
6959@item T p
23f87bed
MB
6960@kindex T p (Summary)
6961@itemx C-M-b
6962@kindex C-M-p (Summary)
2625a8f7 6963@itemx M-up
23f87bed 6964@kindex M-up (Summary)
6bf7aab6
DL
6965@findex gnus-summary-prev-thread
6966Go to the previous thread (@code{gnus-summary-prev-thread}).
6967
6968@item T d
23f87bed 6969@kindex T d (Summary)
6bf7aab6
DL
6970@findex gnus-summary-down-thread
6971Descend the thread (@code{gnus-summary-down-thread}).
6972
6973@item T u
23f87bed 6974@kindex T u (Summary)
6bf7aab6
DL
6975@findex gnus-summary-up-thread
6976Ascend the thread (@code{gnus-summary-up-thread}).
6977
6978@item T o
23f87bed 6979@kindex T o (Summary)
6bf7aab6
DL
6980@findex gnus-summary-top-thread
6981Go to the top of the thread (@code{gnus-summary-top-thread}).
6982@end table
6983
6984@vindex gnus-thread-operation-ignore-subject
6985If you ignore subject while threading, you'll naturally end up with
6986threads that have several different subjects in them. If you then issue
ad0fd6b9 6987a command like @kbd{T k} (@code{gnus-summary-kill-thread}) you might not
6bf7aab6
DL
6988wish to kill the entire thread, but just those parts of the thread that
6989have the same subject as the current article. If you like this idea,
6990you can fiddle with @code{gnus-thread-operation-ignore-subject}. If it
6991is non-@code{nil} (which it is by default), subjects will be ignored
6992when doing thread commands. If this variable is @code{nil}, articles in
6993the same thread with different subjects will not be included in the
6994operation in question. If this variable is @code{fuzzy}, only articles
6995that have subjects fuzzily equal will be included (@pxref{Fuzzy
6996Matching}).
6997
6998
23f87bed
MB
6999@node Sorting the Summary Buffer
7000@section Sorting the Summary Buffer
6bf7aab6
DL
7001
7002@findex gnus-thread-sort-by-total-score
7003@findex gnus-thread-sort-by-date
7004@findex gnus-thread-sort-by-score
7005@findex gnus-thread-sort-by-subject
7006@findex gnus-thread-sort-by-author
7007@findex gnus-thread-sort-by-number
23f87bed 7008@findex gnus-thread-sort-by-random
6bf7aab6 7009@vindex gnus-thread-sort-functions
23f87bed
MB
7010@findex gnus-thread-sort-by-most-recent-number
7011@findex gnus-thread-sort-by-most-recent-date
6bf7aab6 7012If you are using a threaded summary display, you can sort the threads by
2625a8f7
GM
7013setting @code{gnus-thread-sort-functions}, which can be either a single
7014function, a list of functions, or a list containing functions and
7015@code{(not some-function)} elements.
7016
6bf7aab6
DL
7017By default, sorting is done on article numbers. Ready-made sorting
7018predicate functions include @code{gnus-thread-sort-by-number},
7019@code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-subject},
23f87bed
MB
7020@code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-score},
7021@code{gnus-thread-sort-by-most-recent-number},
7022@code{gnus-thread-sort-by-most-recent-date},
7023@code{gnus-thread-sort-by-random} and
6bf7aab6
DL
7024@code{gnus-thread-sort-by-total-score}.
7025
7026Each function takes two threads and returns non-@code{nil} if the first
7027thread should be sorted before the other. Note that sorting really is
2625a8f7
GM
7028normally done by looking only at the roots of each thread.
7029
7030If you use more than one function, the primary sort key should be the
7031last function in the list. You should probably always include
6bf7aab6
DL
7032@code{gnus-thread-sort-by-number} in the list of sorting
7033functions---preferably first. This will ensure that threads that are
7034equal with respect to the other sort criteria will be displayed in
7035ascending article order.
7036
2625a8f7
GM
7037If you would like to sort by reverse score, then by subject, and finally
7038by number, you could do something like:
6bf7aab6
DL
7039
7040@lisp
7041(setq gnus-thread-sort-functions
7042 '(gnus-thread-sort-by-number
7043 gnus-thread-sort-by-subject
2625a8f7 7044 (not gnus-thread-sort-by-total-score)))
6bf7aab6
DL
7045@end lisp
7046
7047The threads that have highest score will be displayed first in the
7048summary buffer. When threads have the same score, they will be sorted
7049alphabetically. The threads that have the same score and the same
7050subject will be sorted by number, which is (normally) the sequence in
7051which the articles arrived.
7052
7053If you want to sort by score and then reverse arrival order, you could
7054say something like:
7055
7056@lisp
7057(setq gnus-thread-sort-functions
7058 '((lambda (t1 t2)
7059 (not (gnus-thread-sort-by-number t1 t2)))
7060 gnus-thread-sort-by-score))
7061@end lisp
7062
7063@vindex gnus-thread-score-function
7064The function in the @code{gnus-thread-score-function} variable (default
7065@code{+}) is used for calculating the total score of a thread. Useful
7066functions might be @code{max}, @code{min}, or squared means, or whatever
7067tickles your fancy.
7068
7069@findex gnus-article-sort-functions
7070@findex gnus-article-sort-by-date
7071@findex gnus-article-sort-by-score
7072@findex gnus-article-sort-by-subject
7073@findex gnus-article-sort-by-author
23f87bed 7074@findex gnus-article-sort-by-random
6bf7aab6 7075@findex gnus-article-sort-by-number
23f87bed
MB
7076If you are using an unthreaded display for some strange reason or
7077other, you have to fiddle with the @code{gnus-article-sort-functions}
7078variable. It is very similar to the
7079@code{gnus-thread-sort-functions}, except that it uses slightly
7080different functions for article comparison. Available sorting
7081predicate functions are @code{gnus-article-sort-by-number},
7082@code{gnus-article-sort-by-author},
7083@code{gnus-article-sort-by-subject}, @code{gnus-article-sort-by-date},
7084@code{gnus-article-sort-by-random}, and
7085@code{gnus-article-sort-by-score}.
6bf7aab6
DL
7086
7087If you want to sort an unthreaded summary display by subject, you could
7088say something like:
7089
7090@lisp
7091(setq gnus-article-sort-functions
7092 '(gnus-article-sort-by-number
7093 gnus-article-sort-by-subject))
7094@end lisp
7095
7096
7097
7098@node Asynchronous Fetching
7099@section Asynchronous Article Fetching
7100@cindex asynchronous article fetching
7101@cindex article pre-fetch
7102@cindex pre-fetch
7103
23f87bed 7104If you read your news from an @acronym{NNTP} server that's far away, the
6bf7aab6
DL
7105network latencies may make reading articles a chore. You have to wait
7106for a while after pressing @kbd{n} to go to the next article before the
7107article appears. Why can't Gnus just go ahead and fetch the article
7108while you are reading the previous one? Why not, indeed.
7109
7110First, some caveats. There are some pitfalls to using asynchronous
7111article fetching, especially the way Gnus does it.
7112
7113Let's say you are reading article 1, which is short, and article 2 is
7114quite long, and you are not interested in reading that. Gnus does not
7115know this, so it goes ahead and fetches article 2. You decide to read
7116article 3, but since Gnus is in the process of fetching article 2, the
7117connection is blocked.
7118
7119To avoid these situations, Gnus will open two (count 'em two)
7120connections to the server. Some people may think this isn't a very nice
7121thing to do, but I don't see any real alternatives. Setting up that
7122extra connection takes some time, so Gnus startup will be slower.
7123
7124Gnus will fetch more articles than you will read. This will mean that
23f87bed 7125the link between your machine and the @acronym{NNTP} server will become more
6bf7aab6
DL
7126loaded than if you didn't use article pre-fetch. The server itself will
7127also become more loaded---both with the extra article requests, and the
7128extra connection.
7129
23f87bed 7130Ok, so now you know that you shouldn't really use this thing@dots{} unless
6bf7aab6
DL
7131you really want to.
7132
7133@vindex gnus-asynchronous
7134Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should
7135happen automatically.
7136
7137@vindex gnus-use-article-prefetch
7138You can control how many articles are to be pre-fetched by setting
7139@code{gnus-use-article-prefetch}. This is 30 by default, which means
a8edc211
SZ
7140that when you read an article in the group, the back end will pre-fetch
7141the next 30 articles. If this variable is @code{t}, the back end will
6bf7aab6
DL
7142pre-fetch all the articles it can without bound. If it is
7143@code{nil}, no pre-fetching will be done.
7144
7145@vindex gnus-async-prefetch-article-p
7146@findex gnus-async-read-p
7147There are probably some articles that you don't want to pre-fetch---read
23f87bed
MB
7148articles, for instance. The @code{gnus-async-prefetch-article-p}
7149variable controls whether an article is to be pre-fetched. This
7150function should return non-@code{nil} when the article in question is
7151to be pre-fetched. The default is @code{gnus-async-read-p}, which
7152returns @code{nil} on read articles. The function is called with an
7153article data structure as the only parameter.
6bf7aab6 7154
23f87bed
MB
7155If, for instance, you wish to pre-fetch only unread articles shorter
7156than 100 lines, you could say something like:
6bf7aab6
DL
7157
7158@lisp
7159(defun my-async-short-unread-p (data)
7160 "Return non-nil for short, unread articles."
7161 (and (gnus-data-unread-p data)
7162 (< (mail-header-lines (gnus-data-header data))
7163 100)))
7164
7165(setq gnus-async-prefetch-article-p 'my-async-short-unread-p)
7166@end lisp
7167
7168These functions will be called many, many times, so they should
7169preferably be short and sweet to avoid slowing down Gnus too much.
7170It's probably a good idea to byte-compile things like this.
7171
7172@vindex gnus-prefetched-article-deletion-strategy
7173Articles have to be removed from the asynch buffer sooner or later. The
7174@code{gnus-prefetched-article-deletion-strategy} says when to remove
7175articles. This is a list that may contain the following elements:
7176
7177@table @code
7178@item read
7179Remove articles when they are read.
7180
7181@item exit
7182Remove articles when exiting the group.
7183@end table
7184
7185The default value is @code{(read exit)}.
7186
7187@c @vindex gnus-use-header-prefetch
7188@c If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
7189@c from the next group.
7190
7191
7192@node Article Caching
7193@section Article Caching
7194@cindex article caching
7195@cindex caching
7196
23f87bed 7197If you have an @emph{extremely} slow @acronym{NNTP} connection, you may
6bf7aab6
DL
7198consider turning article caching on. Each article will then be stored
7199locally under your home directory. As you may surmise, this could
7200potentially use @emph{huge} amounts of disk space, as well as eat up all
7201your inodes so fast it will make your head swim. In vodka.
7202
7203Used carefully, though, it could be just an easier way to save articles.
7204
7205@vindex gnus-use-long-file-name
7206@vindex gnus-cache-directory
7207@vindex gnus-use-cache
7208To turn caching on, set @code{gnus-use-cache} to @code{t}. By default,
7209all articles ticked or marked as dormant will then be copied
7210over to your local cache (@code{gnus-cache-directory}). Whether this
f5d4cd5e 7211cache is flat or hierarchical is controlled by the
6bf7aab6
DL
7212@code{gnus-use-long-file-name} variable, as usual.
7213
7214When re-selecting a ticked or dormant article, it will be fetched from the
7215cache instead of from the server. As articles in your cache will never
7216expire, this might serve as a method of saving articles while still
7217keeping them where they belong. Just mark all articles you want to save
7218as dormant, and don't worry.
7219
7220When an article is marked as read, is it removed from the cache.
7221
7222@vindex gnus-cache-remove-articles
7223@vindex gnus-cache-enter-articles
7224The entering/removal of articles from the cache is controlled by the
7225@code{gnus-cache-enter-articles} and @code{gnus-cache-remove-articles}
7226variables. Both are lists of symbols. The first is @code{(ticked
7227dormant)} by default, meaning that ticked and dormant articles will be
7228put in the cache. The latter is @code{(read)} by default, meaning that
7229articles marked as read are removed from the cache. Possibly
7230symbols in these two lists are @code{ticked}, @code{dormant},
7231@code{unread} and @code{read}.
7232
7233@findex gnus-jog-cache
7234So where does the massive article-fetching and storing come into the
7235picture? The @code{gnus-jog-cache} command will go through all
7236subscribed newsgroups, request all unread articles, score them, and
7237store them in the cache. You should only ever, ever ever ever, use this
23f87bed 7238command if 1) your connection to the @acronym{NNTP} server is really, really,
6bf7aab6
DL
7239really slow and 2) you have a really, really, really huge disk.
7240Seriously. One way to cut down on the number of articles downloaded is
7241to score unwanted articles down and have them marked as read. They will
7242not then be downloaded by this command.
7243
7244@vindex gnus-uncacheable-groups
7245@vindex gnus-cacheable-groups
7246It is likely that you do not want caching on all groups. For instance,
7247if your @code{nnml} mail is located under your home directory, it makes no
7248sense to cache it somewhere else under your home directory. Unless you
2625a8f7 7249feel that it's neat to use twice as much space.
6bf7aab6
DL
7250
7251To limit the caching, you could set @code{gnus-cacheable-groups} to a
7252regexp of groups to cache, @samp{^nntp} for instance, or set the
7253@code{gnus-uncacheable-groups} regexp to @samp{^nnml}, for instance.
2625a8f7 7254Both variables are @code{nil} by default. If a group matches both
6bf7aab6
DL
7255variables, the group is not cached.
7256
7257@findex gnus-cache-generate-nov-databases
7258@findex gnus-cache-generate-active
7259@vindex gnus-cache-active-file
7260The cache stores information on what articles it contains in its active
7261file (@code{gnus-cache-active-file}). If this file (or any other parts
7262of the cache) becomes all messed up for some reason or other, Gnus
7263offers two functions that will try to set things right. @kbd{M-x
23f87bed 7264gnus-cache-generate-nov-databases} will (re)build all the @acronym{NOV}
6bf7aab6
DL
7265files, and @kbd{gnus-cache-generate-active} will (re)generate the active
7266file.
7267
23f87bed
MB
7268@findex gnus-cache-move-cache
7269@code{gnus-cache-move-cache} will move your whole
7270@code{gnus-cache-directory} to some other location. You get asked to
7271where, isn't that cool?
6bf7aab6
DL
7272
7273@node Persistent Articles
7274@section Persistent Articles
7275@cindex persistent articles
7276
7277Closely related to article caching, we have @dfn{persistent articles}.
7278In fact, it's just a different way of looking at caching, and much more
7279useful in my opinion.
7280
7281Say you're reading a newsgroup, and you happen on to some valuable gem
7282that you want to keep and treasure forever. You'd normally just save it
7283(using one of the many saving commands) in some file. The problem with
7284that is that it's just, well, yucky. Ideally you'd prefer just having
7285the article remain in the group where you found it forever; untouched by
7286the expiry going on at the news server.
7287
7288This is what a @dfn{persistent article} is---an article that just won't
7289be deleted. It's implemented using the normal cache functions, but
7290you use two explicit commands for managing persistent articles:
7291
7292@table @kbd
7293
7294@item *
23f87bed 7295@kindex * (Summary)
6bf7aab6
DL
7296@findex gnus-cache-enter-article
7297Make the current article persistent (@code{gnus-cache-enter-article}).
7298
7299@item M-*
23f87bed 7300@kindex M-* (Summary)
6bf7aab6
DL
7301@findex gnus-cache-remove-article
7302Remove the current article from the persistent articles
7303(@code{gnus-cache-remove-article}). This will normally delete the
7304article.
7305@end table
7306
7307Both these commands understand the process/prefix convention.
7308
7309To avoid having all ticked articles (and stuff) entered into the cache,
7310you should set @code{gnus-use-cache} to @code{passive} if you're just
7311interested in persistent articles:
7312
7313@lisp
7314(setq gnus-use-cache 'passive)
7315@end lisp
7316
7317
7318@node Article Backlog
7319@section Article Backlog
7320@cindex backlog
7321@cindex article backlog
7322
7323If you have a slow connection, but the idea of using caching seems
7324unappealing to you (and it is, really), you can help the situation some
7325by switching on the @dfn{backlog}. This is where Gnus will buffer
7326already read articles so that it doesn't have to re-fetch articles
7327you've already read. This only helps if you are in the habit of
7328re-selecting articles you've recently read, of course. If you never do
7329that, turning the backlog on will slow Gnus down a little bit, and
7330increase memory usage some.
7331
7332@vindex gnus-keep-backlog
7333If you set @code{gnus-keep-backlog} to a number @var{n}, Gnus will store
7334at most @var{n} old articles in a buffer for later re-fetching. If this
7335variable is non-@code{nil} and is not a number, Gnus will store
7336@emph{all} read articles, which means that your Emacs will grow without
7337bound before exploding and taking your machine down with you. I put
7338that in there just to keep y'all on your toes.
7339
23f87bed 7340The default value is 20.
6bf7aab6
DL
7341
7342
7343@node Saving Articles
7344@section Saving Articles
7345@cindex saving articles
7346
7347Gnus can save articles in a number of ways. Below is the documentation
7348for saving articles in a fairly straight-forward fashion (i.e., little
7349processing of the article is done before it is saved). For a different
7350approach (uudecoding, unsharing) you should use @code{gnus-uu}
7351(@pxref{Decoding Articles}).
7352
23f87bed
MB
7353For the commands listed here, the target is a file. If you want to
7354save to a group, see the @kbd{B c} (@code{gnus-summary-copy-article})
7355command (@pxref{Mail Group Commands}).
7356
6bf7aab6
DL
7357@vindex gnus-save-all-headers
7358If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete
7359unwanted headers before saving the article.
7360
7361@vindex gnus-saved-headers
7362If the preceding variable is @code{nil}, all headers that match the
7363@code{gnus-saved-headers} regexp will be kept, while the rest will be
7364deleted before saving.
7365
7366@table @kbd
7367
7368@item O o
7369@itemx o
23f87bed
MB
7370@kindex O o (Summary)
7371@kindex o (Summary)
6bf7aab6
DL
7372@findex gnus-summary-save-article
7373@c @icon{gnus-summary-save-article}
7374Save the current article using the default article saver
7375(@code{gnus-summary-save-article}).
7376
7377@item O m
23f87bed 7378@kindex O m (Summary)
6bf7aab6 7379@findex gnus-summary-save-article-mail
f18df03d 7380Save the current article in a Unix mail box (mbox) file
6bf7aab6
DL
7381(@code{gnus-summary-save-article-mail}).
7382
7383@item O r
23f87bed 7384@kindex O r (Summary)
6bf7aab6 7385@findex gnus-summary-save-article-rmail
23f87bed 7386Save the current article in Rmail format
6bf7aab6
DL
7387(@code{gnus-summary-save-article-rmail}).
7388
7389@item O f
23f87bed 7390@kindex O f (Summary)
6bf7aab6
DL
7391@findex gnus-summary-save-article-file
7392@c @icon{gnus-summary-save-article-file}
7393Save the current article in plain file format
7394(@code{gnus-summary-save-article-file}).
7395
7396@item O F
23f87bed 7397@kindex O F (Summary)
6bf7aab6
DL
7398@findex gnus-summary-write-article-file
7399Write the current article in plain file format, overwriting any previous
7400file contents (@code{gnus-summary-write-article-file}).
7401
7402@item O b
23f87bed 7403@kindex O b (Summary)
6bf7aab6
DL
7404@findex gnus-summary-save-article-body-file
7405Save the current article body in plain file format
7406(@code{gnus-summary-save-article-body-file}).
7407
7408@item O h
23f87bed 7409@kindex O h (Summary)
6bf7aab6
DL
7410@findex gnus-summary-save-article-folder
7411Save the current article in mh folder format
7412(@code{gnus-summary-save-article-folder}).
7413
7414@item O v
23f87bed 7415@kindex O v (Summary)
6bf7aab6
DL
7416@findex gnus-summary-save-article-vm
7417Save the current article in a VM folder
7418(@code{gnus-summary-save-article-vm}).
7419
7420@item O p
23f87bed
MB
7421@itemx |
7422@kindex O p (Summary)
7423@kindex | (Summary)
6bf7aab6
DL
7424@findex gnus-summary-pipe-output
7425Save the current article in a pipe. Uhm, like, what I mean is---Pipe
7426the current article to a process (@code{gnus-summary-pipe-output}).
23f87bed
MB
7427If given a symbolic prefix (@pxref{Symbolic Prefixes}), include the
7428complete headers in the piped output.
7429
7430@item O P
7431@kindex O P (Summary)
7432@findex gnus-summary-muttprint
7433@vindex gnus-summary-muttprint-program
7434Save the current article into muttprint. That is, print it using the
7435external program @uref{http://muttprint.sourceforge.net/,
7436Muttprint}. The program name and options to use is controlled by the
7437variable @code{gnus-summary-muttprint-program}.
7438(@code{gnus-summary-muttprint}).
7439
6bf7aab6
DL
7440@end table
7441
7442@vindex gnus-prompt-before-saving
7443All these commands use the process/prefix convention
7444(@pxref{Process/Prefix}). If you save bunches of articles using these
7445functions, you might get tired of being prompted for files to save each
7446and every article in. The prompting action is controlled by
7447the @code{gnus-prompt-before-saving} variable, which is @code{always} by
7448default, giving you that excessive prompting action you know and
7449loathe. If you set this variable to @code{t} instead, you'll be prompted
7450just once for each series of articles you save. If you like to really
7451have Gnus do all your thinking for you, you can even set this variable
7452to @code{nil}, which means that you will never be prompted for files to
7453save articles in. Gnus will simply save all the articles in the default
7454files.
7455
7456
7457@vindex gnus-default-article-saver
7458You can customize the @code{gnus-default-article-saver} variable to make
26c9afc3 7459Gnus do what you want it to. You can use any of the eight ready-made
6bf7aab6
DL
7460functions below, or you can create your own.
7461
7462@table @code
7463
7464@item gnus-summary-save-in-rmail
7465@findex gnus-summary-save-in-rmail
7466@vindex gnus-rmail-save-name
7467@findex gnus-plain-save-name
23f87bed 7468This is the default format, @dfn{Babyl}. Uses the function in the
6bf7aab6
DL
7469@code{gnus-rmail-save-name} variable to get a file name to save the
7470article in. The default is @code{gnus-plain-save-name}.
7471
7472@item gnus-summary-save-in-mail
7473@findex gnus-summary-save-in-mail
7474@vindex gnus-mail-save-name
7475Save in a Unix mail (mbox) file. Uses the function in the
7476@code{gnus-mail-save-name} variable to get a file name to save the
7477article in. The default is @code{gnus-plain-save-name}.
7478
7479@item gnus-summary-save-in-file
7480@findex gnus-summary-save-in-file
7481@vindex gnus-file-save-name
7482@findex gnus-numeric-save-name
7483Append the article straight to an ordinary file. Uses the function in
7484the @code{gnus-file-save-name} variable to get a file name to save the
7485article in. The default is @code{gnus-numeric-save-name}.
7486
23f87bed
MB
7487@item gnus-summary-write-to-file
7488@findex gnus-summary-write-to-file
7489Write the article straight to an ordinary file. The file is
7490overwritten if it exists. Uses the function in the
7491@code{gnus-file-save-name} variable to get a file name to save the
7492article in. The default is @code{gnus-numeric-save-name}.
7493
6bf7aab6
DL
7494@item gnus-summary-save-body-in-file
7495@findex gnus-summary-save-body-in-file
7496Append the article body to an ordinary file. Uses the function in the
7497@code{gnus-file-save-name} variable to get a file name to save the
7498article in. The default is @code{gnus-numeric-save-name}.
7499
26c9afc3
MB
7500@item gnus-summary-write-body-to-file
7501@findex gnus-summary-write-body-to-file
7502Write the article body straight to an ordinary file. The file is
7503overwritten if it exists. Uses the function in the
7504@code{gnus-file-save-name} variable to get a file name to save the
7505article in. The default is @code{gnus-numeric-save-name}.
7506
6bf7aab6
DL
7507@item gnus-summary-save-in-folder
7508@findex gnus-summary-save-in-folder
7509@findex gnus-folder-save-name
7510@findex gnus-Folder-save-name
7511@vindex gnus-folder-save-name
7512@cindex rcvstore
7513@cindex MH folders
7514Save the article to an MH folder using @code{rcvstore} from the MH
7515library. Uses the function in the @code{gnus-folder-save-name} variable
7516to get a file name to save the article in. The default is
7517@code{gnus-folder-save-name}, but you can also use
7518@code{gnus-Folder-save-name}, which creates capitalized names.
7519
7520@item gnus-summary-save-in-vm
7521@findex gnus-summary-save-in-vm
7522Save the article in a VM folder. You have to have the VM mail
7523reader to use this setting.
7524@end table
7525
26c9afc3
MB
7526The symbol of each function may have the following properties:
7527
7528@table @code
7529@item :decode
7530The value non-@code{nil} means save decoded articles. This is
7531meaningful only with @code{gnus-summary-save-in-file},
7532@code{gnus-summary-save-body-in-file},
7533@code{gnus-summary-write-to-file}, and
7534@code{gnus-summary-write-body-to-file}.
7535
7536@item :function
7537The value specifies an alternative function which appends, not
7538overwrites, articles to a file. This implies that when saving many
7539articles at a time, @code{gnus-prompt-before-saving} is bound to
7540@code{t} and all articles are saved in a single file. This is
7541meaningful only with @code{gnus-summary-write-to-file} and
7542@code{gnus-summary-write-body-to-file}.
7543
7544@item :headers
7545The value specifies the symbol of a variable of which the value
7546specifies headers to be saved. If it is omitted,
7547@code{gnus-save-all-headers} and @code{gnus-saved-headers} control what
7548headers should be saved.
7549@end table
7550
6bf7aab6
DL
7551@vindex gnus-article-save-directory
7552All of these functions, except for the last one, will save the article
7553in the @code{gnus-article-save-directory}, which is initialized from the
23f87bed 7554@env{SAVEDIR} environment variable. This is @file{~/News/} by
6bf7aab6
DL
7555default.
7556
7557As you can see above, the functions use different functions to find a
7558suitable name of a file to save the article in. Below is a list of
7559available functions that generate names:
7560
7561@table @code
7562
7563@item gnus-Numeric-save-name
7564@findex gnus-Numeric-save-name
7565File names like @file{~/News/Alt.andrea-dworkin/45}.
7566
7567@item gnus-numeric-save-name
7568@findex gnus-numeric-save-name
7569File names like @file{~/News/alt.andrea-dworkin/45}.
7570
7571@item gnus-Plain-save-name
7572@findex gnus-Plain-save-name
7573File names like @file{~/News/Alt.andrea-dworkin}.
7574
7575@item gnus-plain-save-name
7576@findex gnus-plain-save-name
7577File names like @file{~/News/alt.andrea-dworkin}.
23f87bed
MB
7578
7579@item gnus-sender-save-name
7580@findex gnus-sender-save-name
7581File names like @file{~/News/larsi}.
6bf7aab6
DL
7582@end table
7583
7584@vindex gnus-split-methods
7585You can have Gnus suggest where to save articles by plonking a regexp into
7586the @code{gnus-split-methods} alist. For instance, if you would like to
7587save articles related to Gnus in the file @file{gnus-stuff}, and articles
23f87bed 7588related to VM in @file{vm-stuff}, you could set this variable to something
6bf7aab6
DL
7589like:
7590
7591@lisp
7592(("^Subject:.*gnus\\|^Newsgroups:.*gnus" "gnus-stuff")
7593 ("^Subject:.*vm\\|^Xref:.*vm" "vm-stuff")
7594 (my-choosing-function "../other-dir/my-stuff")
7595 ((equal gnus-newsgroup-name "mail.misc") "mail-stuff"))
7596@end lisp
7597
7598We see that this is a list where each element is a list that has two
7599elements---the @dfn{match} and the @dfn{file}. The match can either be
7600a string (in which case it is used as a regexp to match on the article
7601head); it can be a symbol (which will be called as a function with the
7602group name as a parameter); or it can be a list (which will be
7603@code{eval}ed). If any of these actions have a non-@code{nil} result,
7604the @dfn{file} will be used as a default prompt. In addition, the
7605result of the operation itself will be used if the function or form
7606called returns a string or a list of strings.
7607
7608You basically end up with a list of file names that might be used when
7609saving the current article. (All ``matches'' will be used.) You will
7610then be prompted for what you really want to use as a name, with file
7611name completion over the results from applying this variable.
7612
7613This variable is @code{((gnus-article-archive-name))} by default, which
7614means that Gnus will look at the articles it saves for an
7615@code{Archive-name} line and use that as a suggestion for the file
7616name.
7617
7618Here's an example function to clean up file names somewhat. If you have
7619lots of mail groups called things like
7620@samp{nnml:mail.whatever}, you may want to chop off the beginning of
7621these group names before creating the file name to save to. The
7622following will do just that:
7623
7624@lisp
7625(defun my-save-name (group)
7626 (when (string-match "^nnml:mail." group)
7627 (substring group (match-end 0))))
7628
7629(setq gnus-split-methods
7630 '((gnus-article-archive-name)
7631 (my-save-name)))
7632@end lisp
7633
7634
7635@vindex gnus-use-long-file-name
7636Finally, you have the @code{gnus-use-long-file-name} variable. If it is
7637@code{nil}, all the preceding functions will replace all periods
7638(@samp{.}) in the group names with slashes (@samp{/})---which means that
7639the functions will generate hierarchies of directories instead of having
7640all the files in the top level directory
7641(@file{~/News/alt/andrea-dworkin} instead of
7642@file{~/News/alt.andrea-dworkin}.) This variable is @code{t} by default
7643on most systems. However, for historical reasons, this is @code{nil} on
7644Xenix and usg-unix-v machines by default.
7645
7646This function also affects kill and score file names. If this variable
7647is a list, and the list contains the element @code{not-score}, long file
7648names will not be used for score files, if it contains the element
7649@code{not-save}, long file names will not be used for saving, and if it
7650contains the element @code{not-kill}, long file names will not be used
7651for kill files.
7652
7653If you'd like to save articles in a hierarchy that looks something like
7654a spool, you could
7655
7656@lisp
23f87bed 7657(setq gnus-use-long-file-name '(not-save)) ; @r{to get a hierarchy}
177c0ea7 7658(setq gnus-default-article-saver
23f87bed 7659 'gnus-summary-save-in-file) ; @r{no encoding}
6bf7aab6
DL
7660@end lisp
7661
7662Then just save with @kbd{o}. You'd then read this hierarchy with
7663ephemeral @code{nneething} groups---@kbd{G D} in the group buffer, and
7664the top level directory as the argument (@file{~/News/}). Then just walk
7665around to the groups/directories with @code{nneething}.
7666
7667
7668@node Decoding Articles
7669@section Decoding Articles
7670@cindex decoding articles
7671
7672Sometime users post articles (or series of articles) that have been
7673encoded in some way or other. Gnus can decode them for you.
7674
7675@menu
23f87bed
MB
7676* Uuencoded Articles:: Uudecode articles.
7677* Shell Archives:: Unshar articles.
7678* PostScript Files:: Split PostScript.
7679* Other Files:: Plain save and binhex.
7680* Decoding Variables:: Variables for a happy decoding.
7681* Viewing Files:: You want to look at the result of the decoding?
6bf7aab6
DL
7682@end menu
7683
7684@cindex series
7685@cindex article series
7686All these functions use the process/prefix convention
7687(@pxref{Process/Prefix}) for finding out what articles to work on, with
7688the extension that a ``single article'' means ``a single series''. Gnus
7689can find out by itself what articles belong to a series, decode all the
7690articles and unpack/view/save the resulting file(s).
7691
7692Gnus guesses what articles are in the series according to the following
7693simplish rule: The subjects must be (nearly) identical, except for the
7694last two numbers of the line. (Spaces are largely ignored, however.)
7695
7696For example: If you choose a subject called @samp{cat.gif (2/3)}, Gnus
7697will find all the articles that match the regexp @samp{^cat.gif
7698([0-9]+/[0-9]+).*$}.
7699
7700Subjects that are non-standard, like @samp{cat.gif (2/3) Part 6 of a
7701series}, will not be properly recognized by any of the automatic viewing
7702commands, and you have to mark the articles manually with @kbd{#}.
7703
7704
7705@node Uuencoded Articles
7706@subsection Uuencoded Articles
7707@cindex uudecode
7708@cindex uuencoded articles
7709
7710@table @kbd
7711
7712@item X u
23f87bed 7713@kindex X u (Summary)
6bf7aab6
DL
7714@findex gnus-uu-decode-uu
7715@c @icon{gnus-uu-decode-uu}
7716Uudecodes the current series (@code{gnus-uu-decode-uu}).
7717
7718@item X U
23f87bed 7719@kindex X U (Summary)
6bf7aab6
DL
7720@findex gnus-uu-decode-uu-and-save
7721Uudecodes and saves the current series
7722(@code{gnus-uu-decode-uu-and-save}).
7723
7724@item X v u
23f87bed 7725@kindex X v u (Summary)
6bf7aab6
DL
7726@findex gnus-uu-decode-uu-view
7727Uudecodes and views the current series (@code{gnus-uu-decode-uu-view}).
7728
7729@item X v U
23f87bed 7730@kindex X v U (Summary)
6bf7aab6
DL
7731@findex gnus-uu-decode-uu-and-save-view
7732Uudecodes, views and saves the current series
7733(@code{gnus-uu-decode-uu-and-save-view}).
7734
7735@end table
7736
7737Remember that these all react to the presence of articles marked with
7738the process mark. If, for instance, you'd like to decode and save an
7739entire newsgroup, you'd typically do @kbd{M P a}
7740(@code{gnus-uu-mark-all}) and then @kbd{X U}
7741(@code{gnus-uu-decode-uu-and-save}).
7742
7743All this is very much different from how @code{gnus-uu} worked with
7744@sc{gnus 4.1}, where you had explicit keystrokes for everything under
7745the sun. This version of @code{gnus-uu} generally assumes that you mark
7746articles in some way (@pxref{Setting Process Marks}) and then press
7747@kbd{X u}.
7748
7749@vindex gnus-uu-notify-files
7750Note: When trying to decode articles that have names matching
7751@code{gnus-uu-notify-files}, which is hard-coded to
7752@samp{[Cc][Ii][Nn][Dd][Yy][0-9]+.\\(gif\\|jpg\\)}, @code{gnus-uu} will
7753automatically post an article on @samp{comp.unix.wizards} saying that
7754you have just viewed the file in question. This feature can't be turned
7755off.
7756
7757
7758@node Shell Archives
7759@subsection Shell Archives
7760@cindex unshar
7761@cindex shell archives
7762@cindex shared articles
7763
7764Shell archives (``shar files'') used to be a popular way to distribute
7765sources, but it isn't used all that much today. In any case, we have
7766some commands to deal with these:
7767
7768@table @kbd
7769
7770@item X s
23f87bed 7771@kindex X s (Summary)
6bf7aab6
DL
7772@findex gnus-uu-decode-unshar
7773Unshars the current series (@code{gnus-uu-decode-unshar}).
7774
7775@item X S
23f87bed 7776@kindex X S (Summary)
6bf7aab6
DL
7777@findex gnus-uu-decode-unshar-and-save
7778Unshars and saves the current series (@code{gnus-uu-decode-unshar-and-save}).
7779
7780@item X v s
23f87bed 7781@kindex X v s (Summary)
6bf7aab6
DL
7782@findex gnus-uu-decode-unshar-view
7783Unshars and views the current series (@code{gnus-uu-decode-unshar-view}).
7784
7785@item X v S
23f87bed 7786@kindex X v S (Summary)
6bf7aab6
DL
7787@findex gnus-uu-decode-unshar-and-save-view
7788Unshars, views and saves the current series
7789(@code{gnus-uu-decode-unshar-and-save-view}).
7790@end table
7791
7792
7793@node PostScript Files
7794@subsection PostScript Files
7795@cindex PostScript
7796
7797@table @kbd
7798
7799@item X p
23f87bed 7800@kindex X p (Summary)
6bf7aab6
DL
7801@findex gnus-uu-decode-postscript
7802Unpack the current PostScript series (@code{gnus-uu-decode-postscript}).
7803
7804@item X P
23f87bed 7805@kindex X P (Summary)
6bf7aab6
DL
7806@findex gnus-uu-decode-postscript-and-save
7807Unpack and save the current PostScript series
7808(@code{gnus-uu-decode-postscript-and-save}).
7809
7810@item X v p
23f87bed 7811@kindex X v p (Summary)
6bf7aab6
DL
7812@findex gnus-uu-decode-postscript-view
7813View the current PostScript series
7814(@code{gnus-uu-decode-postscript-view}).
7815
7816@item X v P
23f87bed 7817@kindex X v P (Summary)
6bf7aab6
DL
7818@findex gnus-uu-decode-postscript-and-save-view
7819View and save the current PostScript series
7820(@code{gnus-uu-decode-postscript-and-save-view}).
7821@end table
7822
7823
7824@node Other Files
7825@subsection Other Files
7826
7827@table @kbd
7828@item X o
23f87bed 7829@kindex X o (Summary)
6bf7aab6
DL
7830@findex gnus-uu-decode-save
7831Save the current series
7832(@code{gnus-uu-decode-save}).
7833
7834@item X b
23f87bed 7835@kindex X b (Summary)
6bf7aab6
DL
7836@findex gnus-uu-decode-binhex
7837Unbinhex the current series (@code{gnus-uu-decode-binhex}). This
7838doesn't really work yet.
7839@end table
7840
7841
7842@node Decoding Variables
7843@subsection Decoding Variables
7844
7845Adjective, not verb.
7846
7847@menu
23f87bed
MB
7848* Rule Variables:: Variables that say how a file is to be viewed.
7849* Other Decode Variables:: Other decode variables.
7850* Uuencoding and Posting:: Variables for customizing uuencoding.
6bf7aab6
DL
7851@end menu
7852
7853
7854@node Rule Variables
7855@subsubsection Rule Variables
7856@cindex rule variables
7857
7858Gnus uses @dfn{rule variables} to decide how to view a file. All these
7859variables are of the form
7860
7861@lisp
7862 (list '(regexp1 command2)
7863 '(regexp2 command2)
7864 ...)
7865@end lisp
7866
7867@table @code
7868
7869@item gnus-uu-user-view-rules
7870@vindex gnus-uu-user-view-rules
7871@cindex sox
7872This variable is consulted first when viewing files. If you wish to use,
23f87bed 7873for instance, @code{sox} to convert an @file{.au} sound file, you could
6bf7aab6
DL
7874say something like:
7875@lisp
7876(setq gnus-uu-user-view-rules
2625a8f7 7877 (list '("\\\\.au$" "sox %s -t .aiff > /dev/audio")))
6bf7aab6
DL
7878@end lisp
7879
7880@item gnus-uu-user-view-rules-end
7881@vindex gnus-uu-user-view-rules-end
7882This variable is consulted if Gnus couldn't make any matches from the
7883user and default view rules.
7884
7885@item gnus-uu-user-archive-rules
7886@vindex gnus-uu-user-archive-rules
7887This variable can be used to say what commands should be used to unpack
7888archives.
7889@end table
7890
7891
7892@node Other Decode Variables
7893@subsubsection Other Decode Variables
7894
7895@table @code
7896@vindex gnus-uu-grabbed-file-functions
7897
7898@item gnus-uu-grabbed-file-functions
7899All functions in this list will be called right after each file has been
7900successfully decoded---so that you can move or view files right away,
7901and don't have to wait for all files to be decoded before you can do
7902anything. Ready-made functions you can put in this list are:
7903
7904@table @code
7905
7906@item gnus-uu-grab-view
7907@findex gnus-uu-grab-view
7908View the file.
7909
7910@item gnus-uu-grab-move
7911@findex gnus-uu-grab-move
7912Move the file (if you're using a saving function.)
7913@end table
7914
7915@item gnus-uu-be-dangerous
7916@vindex gnus-uu-be-dangerous
7917Specifies what to do if unusual situations arise during decoding. If
7918@code{nil}, be as conservative as possible. If @code{t}, ignore things
7919that didn't work, and overwrite existing files. Otherwise, ask each
7920time.
7921
7922@item gnus-uu-ignore-files-by-name
7923@vindex gnus-uu-ignore-files-by-name
7924Files with name matching this regular expression won't be viewed.
7925
7926@item gnus-uu-ignore-files-by-type
7927@vindex gnus-uu-ignore-files-by-type
23f87bed 7928Files with a @acronym{MIME} type matching this variable won't be viewed.
6bf7aab6 7929Note that Gnus tries to guess what type the file is based on the name.
23f87bed 7930@code{gnus-uu} is not a @acronym{MIME} package (yet), so this is slightly
6bf7aab6
DL
7931kludgey.
7932
7933@item gnus-uu-tmp-dir
7934@vindex gnus-uu-tmp-dir
7935Where @code{gnus-uu} does its work.
7936
7937@item gnus-uu-do-not-unpack-archives
7938@vindex gnus-uu-do-not-unpack-archives
7939Non-@code{nil} means that @code{gnus-uu} won't peek inside archives
7940looking for files to display.
7941
7942@item gnus-uu-view-and-save
7943@vindex gnus-uu-view-and-save
7944Non-@code{nil} means that the user will always be asked to save a file
7945after viewing it.
7946
7947@item gnus-uu-ignore-default-view-rules
7948@vindex gnus-uu-ignore-default-view-rules
7949Non-@code{nil} means that @code{gnus-uu} will ignore the default viewing
7950rules.
7951
7952@item gnus-uu-ignore-default-archive-rules
7953@vindex gnus-uu-ignore-default-archive-rules
7954Non-@code{nil} means that @code{gnus-uu} will ignore the default archive
7955unpacking commands.
7956
7957@item gnus-uu-kill-carriage-return
7958@vindex gnus-uu-kill-carriage-return
7959Non-@code{nil} means that @code{gnus-uu} will strip all carriage returns
7960from articles.
7961
7962@item gnus-uu-unmark-articles-not-decoded
7963@vindex gnus-uu-unmark-articles-not-decoded
7964Non-@code{nil} means that @code{gnus-uu} will mark unsuccessfully
7965decoded articles as unread.
7966
7967@item gnus-uu-correct-stripped-uucode
7968@vindex gnus-uu-correct-stripped-uucode
7969Non-@code{nil} means that @code{gnus-uu} will @emph{try} to fix
7970uuencoded files that have had trailing spaces deleted.
7971
7972@item gnus-uu-pre-uudecode-hook
7973@vindex gnus-uu-pre-uudecode-hook
7974Hook run before sending a message to @code{uudecode}.
7975
7976@item gnus-uu-view-with-metamail
7977@vindex gnus-uu-view-with-metamail
7978@cindex metamail
7979Non-@code{nil} means that @code{gnus-uu} will ignore the viewing
23f87bed 7980commands defined by the rule variables and just fudge a @acronym{MIME}
6bf7aab6
DL
7981content type based on the file name. The result will be fed to
7982@code{metamail} for viewing.
7983
7984@item gnus-uu-save-in-digest
7985@vindex gnus-uu-save-in-digest
7986Non-@code{nil} means that @code{gnus-uu}, when asked to save without
7987decoding, will save in digests. If this variable is @code{nil},
7988@code{gnus-uu} will just save everything in a file without any
2625a8f7 7989embellishments. The digesting almost conforms to RFC 1153---no easy way
6bf7aab6
DL
7990to specify any meaningful volume and issue numbers were found, so I
7991simply dropped them.
7992
7993@end table
7994
7995
7996@node Uuencoding and Posting
7997@subsubsection Uuencoding and Posting
7998
7999@table @code
8000
8001@item gnus-uu-post-include-before-composing
8002@vindex gnus-uu-post-include-before-composing
8003Non-@code{nil} means that @code{gnus-uu} will ask for a file to encode
8004before you compose the article. If this variable is @code{t}, you can
8005either include an encoded file with @kbd{C-c C-i} or have one included
8006for you when you post the article.
8007
8008@item gnus-uu-post-length
8009@vindex gnus-uu-post-length
8010Maximum length of an article. The encoded file will be split into how
8011many articles it takes to post the entire file.
8012
8013@item gnus-uu-post-threaded
8014@vindex gnus-uu-post-threaded
8015Non-@code{nil} means that @code{gnus-uu} will post the encoded file in a
8016thread. This may not be smart, as no other decoder I have seen is able
8017to follow threads when collecting uuencoded articles. (Well, I have
8018seen one package that does that---@code{gnus-uu}, but somehow, I don't
23f87bed 8019think that counts@dots{}) Default is @code{nil}.
6bf7aab6
DL
8020
8021@item gnus-uu-post-separate-description
8022@vindex gnus-uu-post-separate-description
8023Non-@code{nil} means that the description will be posted in a separate
8024article. The first article will typically be numbered (0/x). If this
8025variable is @code{nil}, the description the user enters will be included
8026at the beginning of the first article, which will be numbered (1/x).
8027Default is @code{t}.
8028
8029@end table
8030
8031
8032@node Viewing Files
8033@subsection Viewing Files
8034@cindex viewing files
8035@cindex pseudo-articles
8036
8037After decoding, if the file is some sort of archive, Gnus will attempt
8038to unpack the archive and see if any of the files in the archive can be
8039viewed. For instance, if you have a gzipped tar file @file{pics.tar.gz}
8040containing the files @file{pic1.jpg} and @file{pic2.gif}, Gnus will
8041uncompress and de-tar the main file, and then view the two pictures.
8042This unpacking process is recursive, so if the archive contains archives
8043of archives, it'll all be unpacked.
8044
8045Finally, Gnus will normally insert a @dfn{pseudo-article} for each
8046extracted file into the summary buffer. If you go to these
8047``articles'', you will be prompted for a command to run (usually Gnus
8048will make a suggestion), and then the command will be run.
8049
8050@vindex gnus-view-pseudo-asynchronously
8051If @code{gnus-view-pseudo-asynchronously} is @code{nil}, Emacs will wait
8052until the viewing is done before proceeding.
8053
8054@vindex gnus-view-pseudos
8055If @code{gnus-view-pseudos} is @code{automatic}, Gnus will not insert
8056the pseudo-articles into the summary buffer, but view them
8057immediately. If this variable is @code{not-confirm}, the user won't even
8058be asked for a confirmation before viewing is done.
8059
8060@vindex gnus-view-pseudos-separately
8061If @code{gnus-view-pseudos-separately} is non-@code{nil}, one
8062pseudo-article will be created for each file to be viewed. If
8063@code{nil}, all files that use the same viewing command will be given as
8064a list of parameters to that command.
8065
8066@vindex gnus-insert-pseudo-articles
8067If @code{gnus-insert-pseudo-articles} is non-@code{nil}, insert
8068pseudo-articles when decoding. It is @code{t} by default.
8069
8070So; there you are, reading your @emph{pseudo-articles} in your
8071@emph{virtual newsgroup} from the @emph{virtual server}; and you think:
8072Why isn't anything real anymore? How did we get here?
8073
8074
8075@node Article Treatment
8076@section Article Treatment
8077
8078Reading through this huge manual, you may have quite forgotten that the
8079object of newsreaders is to actually, like, read what people have
8080written. Reading articles. Unfortunately, people are quite bad at
8081writing, so there are tons of functions and variables to make reading
8082these articles easier.
8083
8084@menu
23f87bed
MB
8085* Article Highlighting:: You want to make the article look like fruit salad.
8086* Article Fontisizing:: Making emphasized text look nice.
8087* Article Hiding:: You also want to make certain info go away.
8088* Article Washing:: Lots of way-neat functions to make life better.
8089* Article Header:: Doing various header transformations.
8090* Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
8091* Article Button Levels:: Controlling appearance of buttons.
8092* Article Date:: Grumble, UT!
8093* Article Display:: Display various stuff---X-Face, Picons, Smileys
8094* Article Signature:: What is a signature?
8095* Article Miscellanea:: Various other stuff.
6bf7aab6
DL
8096@end menu
8097
8098
8099@node Article Highlighting
8100@subsection Article Highlighting
8101@cindex highlighting
8102
8103Not only do you want your article buffer to look like fruit salad, but
2625a8f7 8104you want it to look like technicolor fruit salad.
6bf7aab6
DL
8105
8106@table @kbd
8107
8108@item W H a
23f87bed 8109@kindex W H a (Summary)
6bf7aab6
DL
8110@findex gnus-article-highlight
8111@findex gnus-article-maybe-highlight
8112Do much highlighting of the current article
8113(@code{gnus-article-highlight}). This function highlights header, cited
8114text, the signature, and adds buttons to the body and the head.
8115
6bf7aab6 8116@item W H h
23f87bed 8117@kindex W H h (Summary)
6bf7aab6
DL
8118@findex gnus-article-highlight-headers
8119@vindex gnus-header-face-alist
8120Highlight the headers (@code{gnus-article-highlight-headers}). The
8121highlighting will be done according to the @code{gnus-header-face-alist}
2625a8f7
GM
8122variable, which is a list where each element has the form
8123@code{(@var{regexp} @var{name} @var{content})}.
8124@var{regexp} is a regular expression for matching the
6bf7aab6
DL
8125header, @var{name} is the face used for highlighting the header name
8126(@pxref{Faces and Fonts}) and @var{content} is the face for highlighting
8127the header value. The first match made will be used. Note that
8128@var{regexp} shouldn't have @samp{^} prepended---Gnus will add one.
8129
8130@item W H c
23f87bed 8131@kindex W H c (Summary)
6bf7aab6
DL
8132@findex gnus-article-highlight-citation
8133Highlight cited text (@code{gnus-article-highlight-citation}).
8134
8135Some variables to customize the citation highlights:
8136
8137@table @code
8138@vindex gnus-cite-parse-max-size
8139
8140@item gnus-cite-parse-max-size
8141If the article size if bigger than this variable (which is 25000 by
8142default), no citation highlighting will be performed.
8143
6bf7aab6
DL
8144@item gnus-cite-max-prefix
8145@vindex gnus-cite-max-prefix
8146Maximum possible length for a citation prefix (default 20).
8147
8148@item gnus-cite-face-list
8149@vindex gnus-cite-face-list
8150List of faces used for highlighting citations (@pxref{Faces and Fonts}).
8151When there are citations from multiple articles in the same message,
8152Gnus will try to give each citation from each article its own face.
8153This should make it easier to see who wrote what.
8154
8155@item gnus-supercite-regexp
8156@vindex gnus-supercite-regexp
8157Regexp matching normal Supercite attribution lines.
8158
8159@item gnus-supercite-secondary-regexp
8160@vindex gnus-supercite-secondary-regexp
8161Regexp matching mangled Supercite attribution lines.
8162
8163@item gnus-cite-minimum-match-count
8164@vindex gnus-cite-minimum-match-count
8165Minimum number of identical prefixes we have to see before we believe
8166that it's a citation.
8167
8168@item gnus-cite-attribution-prefix
8169@vindex gnus-cite-attribution-prefix
8170Regexp matching the beginning of an attribution line.
8171
8172@item gnus-cite-attribution-suffix
8173@vindex gnus-cite-attribution-suffix
8174Regexp matching the end of an attribution line.
8175
8176@item gnus-cite-attribution-face
8177@vindex gnus-cite-attribution-face
8178Face used for attribution lines. It is merged with the face for the
8179cited text belonging to the attribution.
8180
23f87bed
MB
8181@item gnus-cite-ignore-quoted-from
8182@vindex gnus-cite-ignore-quoted-from
8183If non-@code{nil}, no citation highlighting will be performed on lines
8184beginning with @samp{>From }. Those lines may have been quoted by MTAs
8185in order not to mix up with the envelope From line. The default value
8186is @code{t}.
8187
6bf7aab6
DL
8188@end table
8189
8190
8191@item W H s
23f87bed 8192@kindex W H s (Summary)
6bf7aab6
DL
8193@vindex gnus-signature-separator
8194@vindex gnus-signature-face
8195@findex gnus-article-highlight-signature
8196Highlight the signature (@code{gnus-article-highlight-signature}).
8197Everything after @code{gnus-signature-separator} (@pxref{Article
8198Signature}) in an article will be considered a signature and will be
8199highlighted with @code{gnus-signature-face}, which is @code{italic} by
8200default.
8201
8202@end table
8203
8204@xref{Customizing Articles}, for how to highlight articles automatically.
8205
8206
8207@node Article Fontisizing
8208@subsection Article Fontisizing
8209@cindex emphasis
8210@cindex article emphasis
8211
8212@findex gnus-article-emphasize
23f87bed 8213@kindex W e (Summary)
6bf7aab6 8214People commonly add emphasis to words in news articles by writing things
2625a8f7
GM
8215like @samp{_this_} or @samp{*this*} or @samp{/this/}. Gnus can make
8216this look nicer by running the article through the @kbd{W e}
6bf7aab6
DL
8217(@code{gnus-article-emphasize}) command.
8218
8219@vindex gnus-emphasis-alist
8220How the emphasis is computed is controlled by the
8221@code{gnus-emphasis-alist} variable. This is an alist where the first
8222element is a regular expression to be matched. The second is a number
8223that says what regular expression grouping is used to find the entire
8224emphasized word. The third is a number that says what regexp grouping
8225should be displayed and highlighted. (The text between these two
8226groupings will be hidden.) The fourth is the face used for
8227highlighting.
8228
8229@lisp
23f87bed 8230(setq gnus-emphasis-alist
6bf7aab6
DL
8231 '(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline)
8232 ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold)))
8233@end lisp
8234
2625a8f7
GM
8235@cindex slash
8236@cindex asterisk
8237@cindex underline
8238@cindex /
8239@cindex *
8240
6bf7aab6
DL
8241@vindex gnus-emphasis-underline
8242@vindex gnus-emphasis-bold
8243@vindex gnus-emphasis-italic
8244@vindex gnus-emphasis-underline-bold
8245@vindex gnus-emphasis-underline-italic
8246@vindex gnus-emphasis-bold-italic
8247@vindex gnus-emphasis-underline-bold-italic
8248By default, there are seven rules, and they use the following faces:
8249@code{gnus-emphasis-bold}, @code{gnus-emphasis-italic},
8250@code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic},
8251@code{gnus-emphasis-underline-italic},
8252@code{gnus-emphasis-underline-bold}, and
8253@code{gnus-emphasis-underline-bold-italic}.
8254
8255If you want to change these faces, you can either use @kbd{M-x
8256customize}, or you can use @code{copy-face}. For instance, if you want
8257to make @code{gnus-emphasis-italic} use a red face instead, you could
8258say something like:
8259
8260@lisp
8261(copy-face 'red 'gnus-emphasis-italic)
8262@end lisp
8263
2625a8f7
GM
8264@vindex gnus-group-highlight-words-alist
8265
8266If you want to highlight arbitrary words, you can use the
8267@code{gnus-group-highlight-words-alist} variable, which uses the same
8268syntax as @code{gnus-emphasis-alist}. The @code{highlight-words} group
8269parameter (@pxref{Group Parameters}) can also be used.
8270
6bf7aab6
DL
8271@xref{Customizing Articles}, for how to fontize articles automatically.
8272
8273
8274@node Article Hiding
8275@subsection Article Hiding
8276@cindex article hiding
8277
8278Or rather, hiding certain things in each article. There usually is much
8279too much cruft in most articles.
8280
8281@table @kbd
8282
8283@item W W a
23f87bed 8284@kindex W W a (Summary)
6bf7aab6
DL
8285@findex gnus-article-hide
8286Do quite a lot of hiding on the article buffer
8287(@kbd{gnus-article-hide}). In particular, this function will hide
23f87bed 8288headers, @acronym{PGP}, cited text and the signature.
6bf7aab6
DL
8289
8290@item W W h
23f87bed 8291@kindex W W h (Summary)
6bf7aab6
DL
8292@findex gnus-article-hide-headers
8293Hide headers (@code{gnus-article-hide-headers}). @xref{Hiding
8294Headers}.
8295
8296@item W W b
23f87bed 8297@kindex W W b (Summary)
6bf7aab6
DL
8298@findex gnus-article-hide-boring-headers
8299Hide headers that aren't particularly interesting
8300(@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}.
8301
8302@item W W s
23f87bed 8303@kindex W W s (Summary)
6bf7aab6
DL
8304@findex gnus-article-hide-signature
8305Hide signature (@code{gnus-article-hide-signature}). @xref{Article
8306Signature}.
8307
2625a8f7 8308@item W W l
23f87bed 8309@kindex W W l (Summary)
2625a8f7
GM
8310@findex gnus-article-hide-list-identifiers
8311@vindex gnus-list-identifiers
8312Strip list identifiers specified in @code{gnus-list-identifiers}. These
8313are strings some mailing list servers add to the beginning of all
8314@code{Subject} headers---for example, @samp{[zebra 4711]}. Any leading
23f87bed 8315@samp{Re: } is skipped before stripping. @code{gnus-list-identifiers}
2625a8f7
GM
8316may not contain @code{\\(..\\)}.
8317
8318@table @code
8319
8320@item gnus-list-identifiers
8321@vindex gnus-list-identifiers
8322A regular expression that matches list identifiers to be removed from
8323subject. This can also be a list of regular expressions.
8324
8325@end table
8326
23f87bed
MB
8327@item W W P
8328@kindex W W P (Summary)
8329@findex gnus-article-hide-pem
8330Hide @acronym{PEM} (privacy enhanced messages) cruft
8331(@code{gnus-article-hide-pem}).
6bf7aab6 8332
2625a8f7 8333@item W W B
23f87bed 8334@kindex W W B (Summary)
2625a8f7 8335@findex gnus-article-strip-banner
23f87bed
MB
8336@vindex gnus-article-banner-alist
8337@vindex gnus-article-address-banner-alist
2625a8f7
GM
8338@cindex banner
8339@cindex OneList
f5d4cd5e
DL
8340@cindex stripping advertisements
8341@cindex advertisements
2625a8f7
GM
8342Strip the banner specified by the @code{banner} group parameter
8343(@code{gnus-article-strip-banner}). This is mainly used to hide those
8344annoying banners and/or signatures that some mailing lists and moderated
8345groups adds to all the messages. The way to use this function is to add
8346the @code{banner} group parameter (@pxref{Group Parameters}) to the
8347group you want banners stripped from. The parameter either be a string,
8348which will be interpreted as a regular expression matching text to be
8349removed, or the symbol @code{signature}, meaning that the (last)
8350signature should be removed, or other symbol, meaning that the
8351corresponding regular expression in @code{gnus-article-banner-alist} is
8352used.
8353
23f87bed
MB
8354Regardless of a group, you can hide things like advertisements only when
8355the sender of an article has a certain mail address specified in
8356@code{gnus-article-address-banner-alist}.
8357
8358@table @code
8359
8360@item gnus-article-address-banner-alist
8361@vindex gnus-article-address-banner-alist
8362Alist of mail addresses and banners. Each element has the form
8363@code{(@var{address} . @var{banner})}, where @var{address} is a regexp
8364matching a mail address in the From header, @var{banner} is one of a
8365symbol @code{signature}, an item in @code{gnus-article-banner-alist},
8366a regexp and @code{nil}. If @var{address} matches author's mail
8367address, it will remove things like advertisements. For example, if a
8368sender has the mail address @samp{hail@@yoo-hoo.co.jp} and there is a
8369banner something like @samp{Do You Yoo-hoo!?} in all articles he
8370sends, you can use the following element to remove them:
8371
8372@lisp
8373("@@yoo-hoo\\.co\\.jp\\'" .
8374 "\n_+\nDo You Yoo-hoo!\\?\n.*\n.*\n")
8375@end lisp
8376
8377@end table
8378
6bf7aab6 8379@item W W c
23f87bed 8380@kindex W W c (Summary)
6bf7aab6
DL
8381@findex gnus-article-hide-citation
8382Hide citation (@code{gnus-article-hide-citation}). Some variables for
8383customizing the hiding:
8384
8385@table @code
8386
8387@item gnus-cited-opened-text-button-line-format
8388@itemx gnus-cited-closed-text-button-line-format
8389@vindex gnus-cited-closed-text-button-line-format
8390@vindex gnus-cited-opened-text-button-line-format
8391Gnus adds buttons to show where the cited text has been hidden, and to
8392allow toggle hiding the text. The format of the variable is specified
8393by these format-like variable (@pxref{Formatting Variables}). These
8394specs are valid:
8395
8396@table @samp
8397@item b
8398Starting point of the hidden text.
8399@item e
8400Ending point of the hidden text.
8401@item l
8402Number of characters in the hidden region.
8403@item n
8404Number of lines of hidden text.
8405@end table
8406
8407@item gnus-cited-lines-visible
8408@vindex gnus-cited-lines-visible
2625a8f7 8409The number of lines at the beginning of the cited text to leave
23f87bed 8410shown. This can also be a cons cell with the number of lines at the top
2625a8f7 8411and bottom of the text, respectively, to remain visible.
6bf7aab6
DL
8412
8413@end table
8414
8415@item W W C-c
23f87bed 8416@kindex W W C-c (Summary)
6bf7aab6
DL
8417@findex gnus-article-hide-citation-maybe
8418
8419Hide citation (@code{gnus-article-hide-citation-maybe}) depending on the
8420following two variables:
8421
8422@table @code
8423@item gnus-cite-hide-percentage
8424@vindex gnus-cite-hide-percentage
8425If the cited text is of a bigger percentage than this variable (default
842650), hide the cited text.
8427
8428@item gnus-cite-hide-absolute
8429@vindex gnus-cite-hide-absolute
8430The cited text must have at least this length (default 10) before it
8431is hidden.
8432@end table
8433
8434@item W W C
23f87bed 8435@kindex W W C (Summary)
6bf7aab6
DL
8436@findex gnus-article-hide-citation-in-followups
8437Hide cited text in articles that aren't roots
8438(@code{gnus-article-hide-citation-in-followups}). This isn't very
8439useful as an interactive command, but might be a handy function to stick
2625a8f7 8440have happen automatically (@pxref{Customizing Articles}).
6bf7aab6
DL
8441
8442@end table
8443
8444All these ``hiding'' commands are toggles, but if you give a negative
8445prefix to these commands, they will show what they have previously
8446hidden. If you give a positive prefix, they will always hide.
8447
8448Also @pxref{Article Highlighting} for further variables for
8449citation customization.
8450
8451@xref{Customizing Articles}, for how to hide article elements
8452automatically.
8453
8454
8455@node Article Washing
8456@subsection Article Washing
8457@cindex washing
8458@cindex article washing
8459
8460We call this ``article washing'' for a really good reason. Namely, the
8461@kbd{A} key was taken, so we had to use the @kbd{W} key instead.
8462
8463@dfn{Washing} is defined by us as ``changing something from something to
8464something else'', but normally results in something looking better.
8465Cleaner, perhaps.
8466
dda5808a
DL
8467@xref{Customizing Articles}, if you want to change how Gnus displays
8468articles by default.
8469
6bf7aab6
DL
8470@table @kbd
8471
dda5808a
DL
8472@item C-u g
8473This is not really washing, it's sort of the opposite of washing. If
8474you type this, you see the article exactly as it exists on disk or on
8475the server.
8476
23f87bed
MB
8477@item g
8478Force redisplaying of the current article
8479(@code{gnus-summary-show-article}). This is also not really washing.
8480If you type this, you see the article without any previously applied
8481interactive Washing functions but with all default treatments
8482(@pxref{Customizing Articles}).
8483
6bf7aab6 8484@item W l
23f87bed 8485@kindex W l (Summary)
6bf7aab6
DL
8486@findex gnus-summary-stop-page-breaking
8487Remove page breaks from the current article
8488(@code{gnus-summary-stop-page-breaking}). @xref{Misc Article}, for page
2625a8f7 8489delimiters.
6bf7aab6
DL
8490
8491@item W r
23f87bed 8492@kindex W r (Summary)
6bf7aab6
DL
8493@findex gnus-summary-caesar-message
8494@c @icon{gnus-summary-caesar-message}
8495Do a Caesar rotate (rot13) on the article buffer
8496(@code{gnus-summary-caesar-message}).
8497Unreadable articles that tell you to read them with Caesar rotate or rot13.
8498(Typically offensive jokes and such.)
8499
23f87bed 8500It's commonly called ``rot13'' because each letter is rotated 13
6bf7aab6
DL
8501positions in the alphabet, e. g. @samp{B} (letter #2) -> @samp{O} (letter
8502#15). It is sometimes referred to as ``Caesar rotate'' because Caesar
8503is rumored to have employed this form of, uh, somewhat weak encryption.
8504
23f87bed
MB
8505@item W m
8506@kindex W m (Summary)
8507@findex gnus-summary-morse-message
8508Morse decode the article buffer (@code{gnus-summary-morse-message}).
8509
6bf7aab6 8510@item W t
2625a8f7 8511@item t
23f87bed
MB
8512@kindex W t (Summary)
8513@kindex t (Summary)
6bf7aab6
DL
8514@findex gnus-summary-toggle-header
8515Toggle whether to display all headers in the article buffer
8516(@code{gnus-summary-toggle-header}).
8517
8518@item W v
23f87bed
MB
8519@kindex W v (Summary)
8520@findex gnus-summary-verbose-headers
6bf7aab6 8521Toggle whether to display all headers in the article buffer permanently
23f87bed 8522(@code{gnus-summary-verbose-headers}).
6bf7aab6 8523
6bf7aab6 8524@item W o
23f87bed 8525@kindex W o (Summary)
6bf7aab6
DL
8526@findex gnus-article-treat-overstrike
8527Treat overstrike (@code{gnus-article-treat-overstrike}).
8528
8529@item W d
23f87bed 8530@kindex W d (Summary)
6bf7aab6 8531@findex gnus-article-treat-dumbquotes
2625a8f7
GM
8532@vindex gnus-article-dumbquotes-map
8533@cindex Smartquotes
23f87bed 8534@cindex M****s*** sm*rtq**t*s
2625a8f7 8535@cindex Latin 1
23f87bed 8536Treat M****s*** sm*rtq**t*s according to
2625a8f7
GM
8537@code{gnus-article-dumbquotes-map}
8538(@code{gnus-article-treat-dumbquotes}). Note that this function guesses
8539whether a character is a sm*rtq**t* or not, so it should only be used
8540interactively.
6bf7aab6 8541
23f87bed
MB
8542Sm*rtq**t*s are M****s***'s unilateral extension to the character map in
8543an attempt to provide more quoting characters. If you see something
8544like @code{\222} or @code{\264} where you're expecting some kind of
8545apostrophe or quotation mark, then try this wash.
8546
8547@item W Y f
8548@kindex W Y f (Summary)
8549@findex gnus-article-outlook-deuglify-article
8550@cindex Outlook Express
8551Full deuglify of broken Outlook (Express) articles: Treat dumbquotes,
8552unwrap lines, repair attribution and rearrange citation.
8553(@code{gnus-article-outlook-deuglify-article}).
8554
8555@item W Y u
8556@kindex W Y u (Summary)
8557@findex gnus-article-outlook-unwrap-lines
8558@vindex gnus-outlook-deuglify-unwrap-min
8559@vindex gnus-outlook-deuglify-unwrap-max
8560Unwrap lines that appear to be wrapped citation lines. You can control
8561what lines will be unwrapped by frobbing
8562@code{gnus-outlook-deuglify-unwrap-min} and
8563@code{gnus-outlook-deuglify-unwrap-max}, indicating the minimum and
8564maximum length of an unwrapped citation line.
8565(@code{gnus-article-outlook-unwrap-lines}).
8566
8567@item W Y a
8568@kindex W Y a (Summary)
8569@findex gnus-article-outlook-repair-attribution
8570Repair a broken attribution line.@*
8571(@code{gnus-article-outlook-repair-attribution}).
8572
8573@item W Y c
8574@kindex W Y c (Summary)
8575@findex gnus-article-outlook-rearrange-citation
8576Repair broken citations by rearranging the text.
8577(@code{gnus-article-outlook-rearrange-citation}).
dda5808a 8578
6bf7aab6 8579@item W w
23f87bed 8580@kindex W w (Summary)
6bf7aab6 8581@findex gnus-article-fill-cited-article
2625a8f7 8582Do word wrap (@code{gnus-article-fill-cited-article}).
6bf7aab6
DL
8583
8584You can give the command a numerical prefix to specify the width to use
8585when filling.
8586
2625a8f7 8587@item W Q
23f87bed 8588@kindex W Q (Summary)
177c0ea7 8589@findex gnus-article-fill-long-lines
2625a8f7
GM
8590Fill long lines (@code{gnus-article-fill-long-lines}).
8591
8592@item W C
23f87bed 8593@kindex W C (Summary)
2625a8f7
GM
8594@findex gnus-article-capitalize-sentences
8595Capitalize the first word in each sentence
8596(@code{gnus-article-capitalize-sentences}).
8597
6bf7aab6 8598@item W c
23f87bed 8599@kindex W c (Summary)
6bf7aab6 8600@findex gnus-article-remove-cr
2625a8f7
GM
8601Translate CRLF pairs (i. e., @samp{^M}s on the end of the lines) into LF
8602(this takes care of DOS line endings), and then translate any remaining
8603CRs into LF (this takes care of Mac line endings)
6bf7aab6
DL
8604(@code{gnus-article-remove-cr}).
8605
8606@item W q
23f87bed 8607@kindex W q (Summary)
6bf7aab6
DL
8608@findex gnus-article-de-quoted-unreadable
8609Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}).
23f87bed
MB
8610Quoted-Printable is one common @acronym{MIME} encoding employed when
8611sending non-@acronym{ASCII} (i.e., 8-bit) articles. It typically
8612