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