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