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