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