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