Merge changes made in Gnus trunk.
[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
acaf905b 14Copyright @copyright{} 1995-2012 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
22bcf204 1331allows you to specify that new groups should be subscribed based on the
7410c270
G
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"
e7719ea1 3183 (gnus-use-scoring t))
4009494e
GM
3184
3185 ("list\\..*"
3186 (total-expire . t)
3187 (broken-reply-to . t))))
3188@end lisp
3189
e7719ea1
G
3190All clauses that matches the group name will be used, but the last
3191setting ``wins''. So if you have two clauses that both match the
3192group name, and both set, say @code{display}, the last setting will
3193override the first.
9937bef4
G
3194
3195Parameters that are strings will be subjected to regexp substitution,
3196as the @code{to-group} example shows.
4009494e
GM
3197
3198@vindex gnus-parameters-case-fold-search
3199By default, whether comparing the group name and one of those regexps
3200specified in @code{gnus-parameters} is done in a case-sensitive manner
3201or a case-insensitive manner depends on the value of
3202@code{case-fold-search} at the time when the comparison is done. The
3203value of @code{case-fold-search} is typically @code{t}; it means, for
3204example, the element @code{("INBOX\\.FOO" (total-expire . t))} might be
3205applied to both the @samp{INBOX.FOO} group and the @samp{INBOX.foo}
3206group. If you want to make those regexps always case-sensitive, set the
3207value of the @code{gnus-parameters-case-fold-search} variable to
3208@code{nil}. Otherwise, set it to @code{t} if you want to compare them
3209always in a case-insensitive manner.
3210
01c52d31
MB
3211You can define different sorting to different groups via
3212@code{gnus-parameters}. Here is an example to sort an @acronym{NNTP}
3213group by reverse date to see the latest news at the top and an
3214@acronym{RSS} group by subject. In this example, the first group is the
3215Debian daily news group @code{gmane.linux.debian.user.news} from
3216news.gmane.org. The @acronym{RSS} group corresponds to the Debian
3217weekly news RSS feed
3218@url{http://packages.debian.org/unstable/newpkg_main.en.rdf},
3219@xref{RSS}.
3220
3221@lisp
3222(setq
3223 gnus-parameters
3224 '(("nntp.*gmane\\.debian\\.user\\.news"
3225 (gnus-show-threads nil)
3226 (gnus-article-sort-functions '((not gnus-article-sort-by-date)))
3227 (gnus-use-adaptive-scoring nil)
3228 (gnus-use-scoring nil))
3229 ("nnrss.*debian"
3230 (gnus-show-threads nil)
3231 (gnus-article-sort-functions 'gnus-article-sort-by-subject)
3232 (gnus-use-adaptive-scoring nil)
3233 (gnus-use-scoring t)
3234 (gnus-score-find-score-files-function 'gnus-score-find-single)
3235 (gnus-summary-line-format "%U%R%z%d %I%(%[ %s %]%)\n"))))
3236@end lisp
3237
4009494e
GM
3238
3239@node Listing Groups
3240@section Listing Groups
3241@cindex group listing
3242
3243These commands all list various slices of the groups available.
3244
3245@table @kbd
3246
3247@item l
3248@itemx A s
3249@kindex A s (Group)
3250@kindex l (Group)
3251@findex gnus-group-list-groups
3252List all groups that have unread articles
3253(@code{gnus-group-list-groups}). If the numeric prefix is used, this
3254command will list only groups of level ARG and lower. By default, it
3255only lists groups of level five (i.e.,
3256@code{gnus-group-default-list-level}) or lower (i.e., just subscribed
3257groups).
3258
3259@item L
3260@itemx A u
3261@kindex A u (Group)
3262@kindex L (Group)
3263@findex gnus-group-list-all-groups
3264List all groups, whether they have unread articles or not
3265(@code{gnus-group-list-all-groups}). If the numeric prefix is used,
3266this command will list only groups of level ARG and lower. By default,
3267it lists groups of level seven or lower (i.e., just subscribed and
3268unsubscribed groups).
3269
3270@item A l
3271@kindex A l (Group)
3272@findex gnus-group-list-level
3273List all unread groups on a specific level
3274(@code{gnus-group-list-level}). If given a prefix, also list the groups
3275with no unread articles.
3276
3277@item A k
3278@kindex A k (Group)
3279@findex gnus-group-list-killed
3280List all killed groups (@code{gnus-group-list-killed}). If given a
3281prefix argument, really list all groups that are available, but aren't
3282currently (un)subscribed. This could entail reading the active file
3283from the server.
3284
3285@item A z
3286@kindex A z (Group)
3287@findex gnus-group-list-zombies
3288List all zombie groups (@code{gnus-group-list-zombies}).
3289
3290@item A m
3291@kindex A m (Group)
3292@findex gnus-group-list-matching
3293List all unread, subscribed groups with names that match a regexp
3294(@code{gnus-group-list-matching}).
3295
3296@item A M
3297@kindex A M (Group)
3298@findex gnus-group-list-all-matching
3299List groups that match a regexp (@code{gnus-group-list-all-matching}).
3300
3301@item A A
3302@kindex A A (Group)
3303@findex gnus-group-list-active
3304List absolutely all groups in the active file(s) of the
3305server(s) you are connected to (@code{gnus-group-list-active}). This
3306might very well take quite a while. It might actually be a better idea
3307to do a @kbd{A M} to list all matching, and just give @samp{.} as the
3308thing to match on. Also note that this command may list groups that
3309don't exist (yet)---these will be listed as if they were killed groups.
3310Take the output with some grains of salt.
3311
3312@item A a
3313@kindex A a (Group)
3314@findex gnus-group-apropos
3315List all groups that have names that match a regexp
3316(@code{gnus-group-apropos}).
3317
3318@item A d
3319@kindex A d (Group)
3320@findex gnus-group-description-apropos
3321List all groups that have names or descriptions that match a regexp
3322(@code{gnus-group-description-apropos}).
3323
3324@item A c
3325@kindex A c (Group)
3326@findex gnus-group-list-cached
3327List all groups with cached articles (@code{gnus-group-list-cached}).
3328
3329@item A ?
3330@kindex A ? (Group)
3331@findex gnus-group-list-dormant
3332List all groups with dormant articles (@code{gnus-group-list-dormant}).
3333
a5954fa5
G
3334@item A !
3335@kindex A ! (Group)
3336@findex gnus-group-list-ticked
3337List all groups with ticked articles (@code{gnus-group-list-ticked}).
3338
4009494e
GM
3339@item A /
3340@kindex A / (Group)
3341@findex gnus-group-list-limit
0afb49a1
LMI
3342Further limit groups within the current selection
3343(@code{gnus-group-list-limit}). If you've first limited to groups
3344with dormant articles with @kbd{A ?}, you can then further limit with
3345@kbd{A / c}, which will then limit to groups with cached articles,
3346giving you the groups that have both dormant articles and cached
3347articles.
4009494e
GM
3348
3349@item A f
3350@kindex A f (Group)
3351@findex gnus-group-list-flush
3352Flush groups from the current selection (@code{gnus-group-list-flush}).
3353
3354@item A p
3355@kindex A p (Group)
3356@findex gnus-group-list-plus
3357List groups plus the current selection (@code{gnus-group-list-plus}).
3358
3359@end table
3360
3361@vindex gnus-permanently-visible-groups
3362@cindex visible group parameter
3363Groups that match the @code{gnus-permanently-visible-groups} regexp will
3364always be shown, whether they have unread articles or not. You can also
3365add the @code{visible} element to the group parameters in question to
3366get the same effect.
3367
3368@vindex gnus-list-groups-with-ticked-articles
3369Groups that have just ticked articles in it are normally listed in the
3370group buffer. If @code{gnus-list-groups-with-ticked-articles} is
3371@code{nil}, these groups will be treated just like totally empty
3372groups. It is @code{t} by default.
3373
3374
3375@node Sorting Groups
3376@section Sorting Groups
3377@cindex sorting groups
3378
3379@kindex C-c C-s (Group)
3380@findex gnus-group-sort-groups
3381@vindex gnus-group-sort-function
3382The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
3383group buffer according to the function(s) given by the
3384@code{gnus-group-sort-function} variable. Available sorting functions
3385include:
3386
3387@table @code
3388
3389@item gnus-group-sort-by-alphabet
3390@findex gnus-group-sort-by-alphabet
3391Sort the group names alphabetically. This is the default.
3392
3393@item gnus-group-sort-by-real-name
3394@findex gnus-group-sort-by-real-name
3395Sort the group alphabetically on the real (unprefixed) group names.
3396
3397@item gnus-group-sort-by-level
3398@findex gnus-group-sort-by-level
3399Sort by group level.
3400
3401@item gnus-group-sort-by-score
3402@findex gnus-group-sort-by-score
3403Sort by group score. @xref{Group Score}.
3404
3405@item gnus-group-sort-by-rank
3406@findex gnus-group-sort-by-rank
3407Sort by group score and then the group level. The level and the score
3408are, when taken together, the group's @dfn{rank}. @xref{Group Score}.
3409
3410@item gnus-group-sort-by-unread
3411@findex gnus-group-sort-by-unread
3412Sort by number of unread articles.
3413
3414@item gnus-group-sort-by-method
3415@findex gnus-group-sort-by-method
3416Sort alphabetically on the select method.
3417
3418@item gnus-group-sort-by-server
3419@findex gnus-group-sort-by-server
3420Sort alphabetically on the Gnus server name.
3421
3422
3423@end table
3424
3425@code{gnus-group-sort-function} can also be a list of sorting
3426functions. In that case, the most significant sort key function must be
3427the last one.
3428
3429
3430There are also a number of commands for sorting directly according to
3431some sorting criteria:
3432
3433@table @kbd
3434@item G S a
3435@kindex G S a (Group)
3436@findex gnus-group-sort-groups-by-alphabet
3437Sort the group buffer alphabetically by group name
3438(@code{gnus-group-sort-groups-by-alphabet}).
3439
3440@item G S u
3441@kindex G S u (Group)
3442@findex gnus-group-sort-groups-by-unread
3443Sort the group buffer by the number of unread articles
3444(@code{gnus-group-sort-groups-by-unread}).
3445
3446@item G S l
3447@kindex G S l (Group)
3448@findex gnus-group-sort-groups-by-level
3449Sort the group buffer by group level
3450(@code{gnus-group-sort-groups-by-level}).
3451
3452@item G S v
3453@kindex G S v (Group)
3454@findex gnus-group-sort-groups-by-score
3455Sort the group buffer by group score
3456(@code{gnus-group-sort-groups-by-score}). @xref{Group Score}.
3457
3458@item G S r
3459@kindex G S r (Group)
3460@findex gnus-group-sort-groups-by-rank
3461Sort the group buffer by group rank
3462(@code{gnus-group-sort-groups-by-rank}). @xref{Group Score}.
3463
3464@item G S m
3465@kindex G S m (Group)
3466@findex gnus-group-sort-groups-by-method
3467Sort the group buffer alphabetically by back end name@*
3468(@code{gnus-group-sort-groups-by-method}).
3469
3470@item G S n
3471@kindex G S n (Group)
3472@findex gnus-group-sort-groups-by-real-name
3473Sort the group buffer alphabetically by real (unprefixed) group name
3474(@code{gnus-group-sort-groups-by-real-name}).
3475
3476@end table
3477
3478All the commands below obey the process/prefix convention
3479(@pxref{Process/Prefix}).
3480
3481When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
3482commands will sort in reverse order.
3483
3484You can also sort a subset of the groups:
3485
3486@table @kbd
3487@item G P a
3488@kindex G P a (Group)
3489@findex gnus-group-sort-selected-groups-by-alphabet
3490Sort the groups alphabetically by group name
3491(@code{gnus-group-sort-selected-groups-by-alphabet}).
3492
3493@item G P u
3494@kindex G P u (Group)
3495@findex gnus-group-sort-selected-groups-by-unread
3496Sort the groups by the number of unread articles
3497(@code{gnus-group-sort-selected-groups-by-unread}).
3498
3499@item G P l
3500@kindex G P l (Group)
3501@findex gnus-group-sort-selected-groups-by-level
3502Sort the groups by group level
3503(@code{gnus-group-sort-selected-groups-by-level}).
3504
3505@item G P v
3506@kindex G P v (Group)
3507@findex gnus-group-sort-selected-groups-by-score
3508Sort the groups by group score
3509(@code{gnus-group-sort-selected-groups-by-score}). @xref{Group Score}.
3510
3511@item G P r
3512@kindex G P r (Group)
3513@findex gnus-group-sort-selected-groups-by-rank
3514Sort the groups by group rank
3515(@code{gnus-group-sort-selected-groups-by-rank}). @xref{Group Score}.
3516
3517@item G P m
3518@kindex G P m (Group)
3519@findex gnus-group-sort-selected-groups-by-method
3520Sort the groups alphabetically by back end name@*
3521(@code{gnus-group-sort-selected-groups-by-method}).
3522
3523@item G P n
3524@kindex G P n (Group)
3525@findex gnus-group-sort-selected-groups-by-real-name
3526Sort the groups alphabetically by real (unprefixed) group name
3527(@code{gnus-group-sort-selected-groups-by-real-name}).
3528
3529@item G P s
3530@kindex G P s (Group)
3531@findex gnus-group-sort-selected-groups
3532Sort the groups according to @code{gnus-group-sort-function}.
3533
3534@end table
3535
3536And finally, note that you can use @kbd{C-k} and @kbd{C-y} to manually
3537move groups around.
3538
3539
3540@node Group Maintenance
3541@section Group Maintenance
3542@cindex bogus groups
3543
3544@table @kbd
3545@item b
3546@kindex b (Group)
3547@findex gnus-group-check-bogus-groups
3548Find bogus groups and delete them
3549(@code{gnus-group-check-bogus-groups}).
3550
3551@item F
3552@kindex F (Group)
3553@findex gnus-group-find-new-groups
3554Find new groups and process them (@code{gnus-group-find-new-groups}).
3555With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
3556for new groups. With 2 @kbd{C-u}'s, use most complete method possible
3557to query the server for new groups, and subscribe the new groups as
3558zombies.
3559
3560@item C-c C-x
3561@kindex C-c C-x (Group)
3562@findex gnus-group-expire-articles
3563@cindex expiring mail
3564Run all expirable articles in the current group through the expiry
3565process (if any) (@code{gnus-group-expire-articles}). That is, delete
3566all expirable articles in the group that have been around for a while.
3567(@pxref{Expiring Mail}).
3568
3569@item C-c C-M-x
3570@kindex C-c C-M-x (Group)
3571@findex gnus-group-expire-all-groups
3572@cindex expiring mail
3573Run all expirable articles in all groups through the expiry process
3574(@code{gnus-group-expire-all-groups}).
3575
3576@end table
3577
3578
3579@node Browse Foreign Server
3580@section Browse Foreign Server
3581@cindex foreign servers
3582@cindex browsing servers
3583
3584@table @kbd
3585@item B
3586@kindex B (Group)
3587@findex gnus-group-browse-foreign-server
3588You will be queried for a select method and a server name. Gnus will
3589then attempt to contact this server and let you browse the groups there
3590(@code{gnus-group-browse-foreign-server}).
3591@end table
3592
3593@findex gnus-browse-mode
3594A new buffer with a list of available groups will appear. This buffer
3595will use the @code{gnus-browse-mode}. This buffer looks a bit (well,
3596a lot) like a normal group buffer.
3597
3598Here's a list of keystrokes available in the browse mode:
3599
3600@table @kbd
3601@item n
3602@kindex n (Browse)
3603@findex gnus-group-next-group
3604Go to the next group (@code{gnus-group-next-group}).
3605
3606@item p
3607@kindex p (Browse)
3608@findex gnus-group-prev-group
3609Go to the previous group (@code{gnus-group-prev-group}).
3610
3611@item SPACE
3612@kindex SPACE (Browse)
3613@findex gnus-browse-read-group
3614Enter the current group and display the first article
3615(@code{gnus-browse-read-group}).
3616
3617@item RET
3618@kindex RET (Browse)
3619@findex gnus-browse-select-group
3620Enter the current group (@code{gnus-browse-select-group}).
3621
3622@item u
3623@kindex u (Browse)
3624@findex gnus-browse-unsubscribe-current-group
8ccbef23 3625@vindex gnus-browse-subscribe-newsgroup-method
4009494e 3626Unsubscribe to the current group, or, as will be the case here,
8ccbef23
G
3627subscribe to it (@code{gnus-browse-unsubscribe-current-group}). You
3628can affect the way the new group is entered into the Group buffer
3629using the variable @code{gnus-browse-subscribe-newsgroup-method}. See
3630@pxref{Subscription Methods} for available options.
4009494e
GM
3631
3632@item l
3633@itemx q
3634@kindex q (Browse)
3635@kindex l (Browse)
3636@findex gnus-browse-exit
3637Exit browse mode (@code{gnus-browse-exit}).
3638
3639@item d
3640@kindex d (Browse)
3641@findex gnus-browse-describe-group
3642Describe the current group (@code{gnus-browse-describe-group}).
3643
3644@item ?
3645@kindex ? (Browse)
3646@findex gnus-browse-describe-briefly
3647Describe browse mode briefly (well, there's not much to describe, is
3648there) (@code{gnus-browse-describe-briefly}).
3649@end table
3650
3651
3652@node Exiting Gnus
3653@section Exiting Gnus
3654@cindex exiting Gnus
3655
3656Yes, Gnus is ex(c)iting.
3657
3658@table @kbd
3659@item z
3660@kindex z (Group)
3661@findex gnus-group-suspend
3662Suspend Gnus (@code{gnus-group-suspend}). This doesn't really exit Gnus,
3663but it kills all buffers except the Group buffer. I'm not sure why this
3664is a gain, but then who am I to judge?
3665
3666@item q
3667@kindex q (Group)
3668@findex gnus-group-exit
3669@c @icon{gnus-group-exit}
3670Quit Gnus (@code{gnus-group-exit}).
3671
3672@item Q
3673@kindex Q (Group)
3674@findex gnus-group-quit
3675Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
3676The dribble file will be saved, though (@pxref{Auto Save}).
3677@end table
3678
3679@vindex gnus-exit-gnus-hook
3680@vindex gnus-suspend-gnus-hook
3681@vindex gnus-after-exiting-gnus-hook
3682@code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
3683@code{gnus-exit-gnus-hook} is called when you quit Gnus, while
3684@code{gnus-after-exiting-gnus-hook} is called as the final item when
3685exiting Gnus.
3686
3687Note:
3688
3689@quotation
3690Miss Lisa Cannifax, while sitting in English class, felt her feet go
3691numbly heavy and herself fall into a hazy trance as the boy sitting
3692behind her drew repeated lines with his pencil across the back of her
3693plastic chair.
3694@end quotation
3695
3696
3697@node Group Topics
3698@section Group Topics
3699@cindex topics
3700
3701If you read lots and lots of groups, it might be convenient to group
3702them hierarchically according to topics. You put your Emacs groups over
3703here, your sex groups over there, and the rest (what, two groups or so?)
3704you put in some misc section that you never bother with anyway. You can
3705even group the Emacs sex groups as a sub-topic to either the Emacs
3706groups or the sex groups---or both! Go wild!
3707
3708@iftex
3709@iflatex
3710\gnusfigure{Group Topics}{400}{
3711\put(75,50){\epsfig{figure=ps/group-topic,height=9cm}}
3712}
3713@end iflatex
3714@end iftex
3715
3716Here's an example:
3717
3718@example
3719Gnus
3720 Emacs -- I wuw it!
3721 3: comp.emacs
3722 2: alt.religion.emacs
3723 Naughty Emacs
3724 452: alt.sex.emacs
3725 0: comp.talk.emacs.recovery
3726 Misc
3727 8: comp.binaries.fractals
3728 13: comp.sources.unix
3729@end example
3730
3731@findex gnus-topic-mode
3732@kindex t (Group)
3733To get this @emph{fab} functionality you simply turn on (ooh!) the
3734@code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This
3735is a toggling command.)
3736
3737Go ahead, just try it. I'll still be here when you get back. La de
3738dum@dots{} Nice tune, that@dots{} la la la@dots{} What, you're back?
3739Yes, and now press @kbd{l}. There. All your groups are now listed
3740under @samp{misc}. Doesn't that make you feel all warm and fuzzy?
3741Hot and bothered?
3742
3743If you want this permanently enabled, you should add that minor mode to
3744the hook for the group mode. Put the following line in your
3745@file{~/.gnus.el} file:
3746
3747@lisp
3748(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
3749@end lisp
3750
3751@menu
3752* Topic Commands:: Interactive E-Z commands.
3753* Topic Variables:: How to customize the topics the Lisp Way.
3754* Topic Sorting:: Sorting each topic individually.
3755* Topic Topology:: A map of the world.
3756* Topic Parameters:: Parameters that apply to all groups in a topic.
3757@end menu
3758
3759
3760@node Topic Commands
3761@subsection Topic Commands
3762@cindex topic commands
3763
3764When the topic minor mode is turned on, a new @kbd{T} submap will be
3765available. In addition, a few of the standard keys change their
3766definitions slightly.
3767
3768In general, the following kinds of operations are possible on topics.
3769First of all, you want to create topics. Secondly, you want to put
3770groups in topics and to move them around until you have an order you
3771like. The third kind of operation is to show/hide parts of the whole
3772shebang. You might want to hide a topic including its subtopics and
3773groups, to get a better overview of the other groups.
3774
3775Here is a list of the basic keys that you might need to set up topics
3776the way you like.
3777
3778@table @kbd
3779
3780@item T n
3781@kindex T n (Topic)
3782@findex gnus-topic-create-topic
3783Prompt for a new topic name and create it
3784(@code{gnus-topic-create-topic}).
3785
3786@item T TAB
3787@itemx TAB
3788@kindex T TAB (Topic)
3789@kindex TAB (Topic)
3790@findex gnus-topic-indent
3791``Indent'' the current topic so that it becomes a sub-topic of the
3792previous topic (@code{gnus-topic-indent}). If given a prefix,
3793``un-indent'' the topic instead.
3794
3795@item M-TAB
3796@kindex M-TAB (Topic)
3797@findex gnus-topic-unindent
3798``Un-indent'' the current topic so that it becomes a sub-topic of the
3799parent of its current parent (@code{gnus-topic-unindent}).
3800
3801@end table
3802
3803The following two keys can be used to move groups and topics around.
3804They work like the well-known cut and paste. @kbd{C-k} is like cut and
3805@kbd{C-y} is like paste. Of course, this being Emacs, we use the terms
3806kill and yank rather than cut and paste.
3807
3808@table @kbd
3809
3810@item C-k
3811@kindex C-k (Topic)
3812@findex gnus-topic-kill-group
3813Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the
3814topic will be removed along with the topic.
3815
3816@item C-y
3817@kindex C-y (Topic)
3818@findex gnus-topic-yank-group
3819Yank the previously killed group or topic
3820(@code{gnus-topic-yank-group}). Note that all topics will be yanked
3821before all groups.
3822
3823So, to move a topic to the beginning of the list of topics, just hit
3824@kbd{C-k} on it. This is like the ``cut'' part of cut and paste. Then,
3825move the cursor to the beginning of the buffer (just below the ``Gnus''
3826topic) and hit @kbd{C-y}. This is like the ``paste'' part of cut and
3827paste. Like I said -- E-Z.
3828
3829You can use @kbd{C-k} and @kbd{C-y} on groups as well as on topics. So
3830you can move topics around as well as groups.
3831
3832@end table
3833
3834After setting up the topics the way you like them, you might wish to
3835hide a topic, or to show it again. That's why we have the following
3836key.
3837
3838@table @kbd
3839
3840@item RET
3841@kindex RET (Topic)
3842@findex gnus-topic-select-group
3843@itemx SPACE
3844Either select a group or fold a topic (@code{gnus-topic-select-group}).
3845When you perform this command on a group, you'll enter the group, as
3846usual. When done on a topic line, the topic will be folded (if it was
3847visible) or unfolded (if it was folded already). So it's basically a
3848toggling command on topics. In addition, if you give a numerical
3849prefix, group on that level (and lower) will be displayed.
3850
3851@end table
3852
3853Now for a list of other commands, in no particular order.
3854
3855@table @kbd
3856
3857@item T m
3858@kindex T m (Topic)
3859@findex gnus-topic-move-group
3860Move the current group to some other topic
3861(@code{gnus-topic-move-group}). This command uses the process/prefix
3862convention (@pxref{Process/Prefix}).
3863
3864@item T j
3865@kindex T j (Topic)
3866@findex gnus-topic-jump-to-topic
3867Go to a topic (@code{gnus-topic-jump-to-topic}).
3868
3869@item T c
3870@kindex T c (Topic)
3871@findex gnus-topic-copy-group
3872Copy the current group to some other topic
3873(@code{gnus-topic-copy-group}). This command uses the process/prefix
3874convention (@pxref{Process/Prefix}).
3875
3876@item T h
3877@kindex T h (Topic)
3878@findex gnus-topic-hide-topic
3879Hide the current topic (@code{gnus-topic-hide-topic}). If given
3880a prefix, hide the topic permanently.
3881
3882@item T s
3883@kindex T s (Topic)
3884@findex gnus-topic-show-topic
3885Show the current topic (@code{gnus-topic-show-topic}). If given
3886a prefix, show the topic permanently.
3887
3888@item T D
3889@kindex T D (Topic)
3890@findex gnus-topic-remove-group
3891Remove a group from the current topic (@code{gnus-topic-remove-group}).
3892This command is mainly useful if you have the same group in several
3893topics and wish to remove it from one of the topics. You may also
3894remove a group from all topics, but in that case, Gnus will add it to
3895the root topic the next time you start Gnus. In fact, all new groups
3896(which, naturally, don't belong to any topic) will show up in the root
3897topic.
3898
3899This command uses the process/prefix convention
3900(@pxref{Process/Prefix}).
3901
3902@item T M
3903@kindex T M (Topic)
3904@findex gnus-topic-move-matching
3905Move all groups that match some regular expression to a topic
3906(@code{gnus-topic-move-matching}).
3907
3908@item T C
3909@kindex T C (Topic)
3910@findex gnus-topic-copy-matching
3911Copy all groups that match some regular expression to a topic
3912(@code{gnus-topic-copy-matching}).
3913
3914@item T H
3915@kindex T H (Topic)
3916@findex gnus-topic-toggle-display-empty-topics
3917Toggle hiding empty topics
3918(@code{gnus-topic-toggle-display-empty-topics}).
3919
3920@item T #
3921@kindex T # (Topic)
3922@findex gnus-topic-mark-topic
3923Mark all groups in the current topic with the process mark
3924(@code{gnus-topic-mark-topic}). This command works recursively on
3925sub-topics unless given a prefix.
3926
3927@item T M-#
3928@kindex T M-# (Topic)
3929@findex gnus-topic-unmark-topic
3930Remove the process mark from all groups in the current topic
3931(@code{gnus-topic-unmark-topic}). This command works recursively on
3932sub-topics unless given a prefix.
3933
3934@item C-c C-x
3935@kindex C-c C-x (Topic)
3936@findex gnus-topic-expire-articles
3937@cindex expiring mail
3938Run all expirable articles in the current group or topic through the
3939expiry process (if any)
3940(@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}).
3941
3942@item T r
3943@kindex T r (Topic)
3944@findex gnus-topic-rename
3945Rename a topic (@code{gnus-topic-rename}).
3946
3947@item T DEL
3948@kindex T DEL (Topic)
3949@findex gnus-topic-delete
3950Delete an empty topic (@code{gnus-topic-delete}).
3951
3952@item A T
3953@kindex A T (Topic)
3954@findex gnus-topic-list-active
3955List all groups that Gnus knows about in a topics-ified way
3956(@code{gnus-topic-list-active}).
3957
3958@item T M-n
3959@kindex T M-n (Topic)
3960@findex gnus-topic-goto-next-topic
3961Go to the next topic (@code{gnus-topic-goto-next-topic}).
3962
3963@item T M-p
3964@kindex T M-p (Topic)
3965@findex gnus-topic-goto-previous-topic
01c52d31 3966Go to the previous topic (@code{gnus-topic-goto-previous-topic}).
4009494e
GM
3967
3968@item G p
3969@kindex G p (Topic)
3970@findex gnus-topic-edit-parameters
3971@cindex group parameters
3972@cindex topic parameters
3973@cindex parameters
3974Edit the topic parameters (@code{gnus-topic-edit-parameters}).
3975@xref{Topic Parameters}.
3976
3977@end table
3978
3979
3980@node Topic Variables
3981@subsection Topic Variables
3982@cindex topic variables
3983
3984The previous section told you how to tell Gnus which topics to display.
3985This section explains how to tell Gnus what to display about each topic.
3986
3987@vindex gnus-topic-line-format
3988The topic lines themselves are created according to the
3989@code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
3990Valid elements are:
3991
3992@table @samp
3993@item i
3994Indentation.
3995@item n
3996Topic name.
3997@item v
3998Visibility.
3999@item l
4000Level.
4001@item g
4002Number of groups in the topic.
4003@item a
4004Number of unread articles in the topic.
4005@item A
4006Number of unread articles in the topic and all its subtopics.
4007@end table
4008
4009@vindex gnus-topic-indent-level
4010Each sub-topic (and the groups in the sub-topics) will be indented with
4011@code{gnus-topic-indent-level} times the topic level number of spaces.
4012The default is 2.
4013
4014@vindex gnus-topic-mode-hook
4015@code{gnus-topic-mode-hook} is called in topic minor mode buffers.
4016
4017@vindex gnus-topic-display-empty-topics
4018The @code{gnus-topic-display-empty-topics} says whether to display even
4019topics that have no unread articles in them. The default is @code{t}.
4020
4021
4022@node Topic Sorting
4023@subsection Topic Sorting
4024@cindex topic sorting
4025
4026You can sort the groups in each topic individually with the following
4027commands:
4028
4029
4030@table @kbd
4031@item T S a
4032@kindex T S a (Topic)
4033@findex gnus-topic-sort-groups-by-alphabet
4034Sort the current topic alphabetically by group name
4035(@code{gnus-topic-sort-groups-by-alphabet}).
4036
4037@item T S u
4038@kindex T S u (Topic)
4039@findex gnus-topic-sort-groups-by-unread
4040Sort the current topic by the number of unread articles
4041(@code{gnus-topic-sort-groups-by-unread}).
4042
4043@item T S l
4044@kindex T S l (Topic)
4045@findex gnus-topic-sort-groups-by-level
4046Sort the current topic by group level
4047(@code{gnus-topic-sort-groups-by-level}).
4048
4049@item T S v
4050@kindex T S v (Topic)
4051@findex gnus-topic-sort-groups-by-score
4052Sort the current topic by group score
4053(@code{gnus-topic-sort-groups-by-score}). @xref{Group Score}.
4054
4055@item T S r
4056@kindex T S r (Topic)
4057@findex gnus-topic-sort-groups-by-rank
4058Sort the current topic by group rank
4059(@code{gnus-topic-sort-groups-by-rank}). @xref{Group Score}.
4060
4061@item T S m
4062@kindex T S m (Topic)
4063@findex gnus-topic-sort-groups-by-method
4064Sort the current topic alphabetically by back end name
4065(@code{gnus-topic-sort-groups-by-method}).
4066
4067@item T S e
4068@kindex T S e (Topic)
4069@findex gnus-topic-sort-groups-by-server
4070Sort the current topic alphabetically by server name
4071(@code{gnus-topic-sort-groups-by-server}).
4072
4073@item T S s
4074@kindex T S s (Topic)
4075@findex gnus-topic-sort-groups
4076Sort the current topic according to the function(s) given by the
4077@code{gnus-group-sort-function} variable
4078(@code{gnus-topic-sort-groups}).
4079
4080@end table
4081
4082When given a prefix argument, all these commands will sort in reverse
4083order. @xref{Sorting Groups}, for more information about group
4084sorting.
4085
4086
4087@node Topic Topology
4088@subsection Topic Topology
4089@cindex topic topology
4090@cindex topology
4091
4092So, let's have a look at an example group buffer:
4093
4094@example
4095@group
4096Gnus
4097 Emacs -- I wuw it!
4098 3: comp.emacs
4099 2: alt.religion.emacs
4100 Naughty Emacs
4101 452: alt.sex.emacs
4102 0: comp.talk.emacs.recovery
4103 Misc
4104 8: comp.binaries.fractals
4105 13: comp.sources.unix
4106@end group
4107@end example
4108
4109So, here we have one top-level topic (@samp{Gnus}), two topics under
4110that, and one sub-topic under one of the sub-topics. (There is always
4111just one (1) top-level topic). This topology can be expressed as
4112follows:
4113
4114@lisp
4115(("Gnus" visible)
4116 (("Emacs -- I wuw it!" visible)
4117 (("Naughty Emacs" visible)))
4118 (("Misc" visible)))
4119@end lisp
4120
4121@vindex gnus-topic-topology
4122This is in fact how the variable @code{gnus-topic-topology} would look
4123for the display above. That variable is saved in the @file{.newsrc.eld}
4124file, and shouldn't be messed with manually---unless you really want
4125to. Since this variable is read from the @file{.newsrc.eld} file,
4126setting it in any other startup files will have no effect.
4127
4128This topology shows what topics are sub-topics of what topics (right),
4129and which topics are visible. Two settings are currently
4130allowed---@code{visible} and @code{invisible}.
4131
4132
4133@node Topic Parameters
4134@subsection Topic Parameters
4135@cindex topic parameters
4136
4137All groups in a topic will inherit group parameters from the parent
4138(and ancestor) topic parameters. All valid group parameters are valid
4139topic parameters (@pxref{Group Parameters}). When the agent is
4140enabled, all agent parameters (See Agent Parameters in @ref{Category
4141Syntax}) are also valid topic parameters.
4142
4143In addition, the following parameters are only valid as topic
4144parameters:
4145
4146@table @code
4147@item subscribe
4148When subscribing new groups by topic (@pxref{Subscription Methods}), the
4149@code{subscribe} topic parameter says what groups go in what topic. Its
4150value should be a regexp to match the groups that should go in that
4151topic.
4152
4153@item subscribe-level
4154When subscribing new groups by topic (see the @code{subscribe} parameter),
4155the group will be subscribed with the level specified in the
4156@code{subscribe-level} instead of @code{gnus-level-default-subscribed}.
4157
4158@end table
4159
4160Group parameters (of course) override topic parameters, and topic
4161parameters in sub-topics override topic parameters in super-topics. You
4162know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a
4163verb, although you may feel free to disagree with me here.)
4164
4165@example
4166@group
4167Gnus
4168 Emacs
4169 3: comp.emacs
4170 2: alt.religion.emacs
4171 452: alt.sex.emacs
4172 Relief
4173 452: alt.sex.emacs
4174 0: comp.talk.emacs.recovery
4175 Misc
4176 8: comp.binaries.fractals
4177 13: comp.sources.unix
4178 452: alt.sex.emacs
4179@end group
4180@end example
4181
4182The @samp{Emacs} topic has the topic parameter @code{(score-file
4183. "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
4184@code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
4185topic parameter @code{(score-file . "emacs.SCORE")}. In addition,
4186@* @samp{alt.religion.emacs} has the group parameter @code{(score-file
4187. "religion.SCORE")}.
4188
4189Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
4190will get the @file{relief.SCORE} home score file. If you enter the same
4191group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
4192score file. If you enter the group @samp{alt.religion.emacs}, you'll
4193get the @file{religion.SCORE} home score file.
4194
4195This seems rather simple and self-evident, doesn't it? Well, yes. But
4196there are some problems, especially with the @code{total-expiry}
4197parameter. Say you have a mail group in two topics; one with
4198@code{total-expiry} and one without. What happens when you do @kbd{M-x
4199gnus-expire-all-expirable-groups}? Gnus has no way of telling which one
4200of these topics you mean to expire articles from, so anything may
4201happen. In fact, I hereby declare that it is @dfn{undefined} what
4202happens. You just have to be careful if you do stuff like that.
4203
4204
01c52d31
MB
4205@node Non-ASCII Group Names
4206@section Accessing groups of non-English names
4207@cindex non-ascii group names
4208
4209There are some news servers that provide groups of which the names are
4210expressed with their native languages in the world. For instance, in a
4211certain news server there are some newsgroups of which the names are
4212spelled in Chinese, where people are talking in Chinese. You can, of
4213course, subscribe to such news groups using Gnus. Currently Gnus
4214supports non-@acronym{ASCII} group names not only with the @code{nntp}
4215back end but also with the @code{nnml} back end and the @code{nnrss}
4216back end.
4217
4218Every such group name is encoded by a certain charset in the server
4219side (in an @acronym{NNTP} server its administrator determines the
4220charset, but for groups in the other back ends it is determined by you).
4221Gnus has to display the decoded ones for you in the group buffer and the
4222article buffer, and needs to use the encoded ones when communicating
4223with servers. However, Gnus doesn't know what charset is used for each
4224non-@acronym{ASCII} group name. The following two variables are just
4225the ones for telling Gnus what charset should be used for each group:
4226
4227@table @code
4228@item gnus-group-name-charset-method-alist
4229@vindex gnus-group-name-charset-method-alist
4230An alist of select methods and charsets. The default value is
4231@code{nil}. The names of groups in the server specified by that select
4232method are all supposed to use the corresponding charset. For example:
4233
4234@lisp
4235(setq gnus-group-name-charset-method-alist
4236 '(((nntp "news.com.cn") . cn-gb-2312)))
4237@end lisp
4238
4239Charsets specified for groups with this variable are preferred to the
4240ones specified for the same groups with the
4241@code{gnus-group-name-charset-group-alist} variable (see below).
4242
4243A select method can be very long, like:
4244
4245@lisp
4246(nntp "gmane"
4247 (nntp-address "news.gmane.org")
4248 (nntp-end-of-line "\n")
4249 (nntp-open-connection-function
4250 nntp-open-via-rlogin-and-telnet)
4251 (nntp-via-rlogin-command "ssh")
4252 (nntp-via-rlogin-command-switches
4253 ("-C" "-t" "-e" "none"))
4254 (nntp-via-address @dots{}))
4255@end lisp
4256
4257In that case, you can truncate it into @code{(nntp "gmane")} in this
4258variable. That is, it is enough to contain only the back end name and
4259the server name.
4260
4261@item gnus-group-name-charset-group-alist
4262@cindex UTF-8 group names
4263@vindex gnus-group-name-charset-group-alist
4264An alist of regexp of group name and the charset for group names.
4265@code{((".*" . utf-8))} is the default value if UTF-8 is supported,
4266otherwise the default is @code{nil}. For example:
4267
4268@lisp
4269(setq gnus-group-name-charset-group-alist
4270 '(("\\.com\\.cn:" . cn-gb-2312)
4271 (".*" . utf-8)))
4272@end lisp
4273
4274Note that this variable is ignored if the match is made with
4275@code{gnus-group-name-charset-method-alist}.
4276@end table
4277
4278Those two variables are used also to determine the charset for encoding
4279and decoding non-@acronym{ASCII} group names that are in the back ends
4280other than @code{nntp}. It means that it is you who determine it. If
4281you do nothing, the charset used for group names in those back ends will
4282all be @code{utf-8} because of the last element of
4283@code{gnus-group-name-charset-group-alist}.
4284
4285There is one more important variable for non-@acronym{ASCII} group
26b9f88d 4286names:
01c52d31
MB
4287
4288@table @code
4289@item nnmail-pathname-coding-system
26b9f88d
MB
4290@vindex nnmail-pathname-coding-system
4291The value of this variable should be a coding system or @code{nil}. The
4292default is @code{nil} in Emacs, or is the aliasee of the coding system
4293named @code{file-name} (a certain coding system of which an alias is
4294@code{file-name}) in XEmacs.
4295
4296The @code{nnml} back end, the @code{nnrss} back end, the @acronym{NNTP}
4297marks feature (@pxref{NNTP marks}), the agent, and the cache use
4298non-@acronym{ASCII} group names in those files and directories. This
4299variable overrides the value of @code{file-name-coding-system} which
4300specifies the coding system used when encoding and decoding those file
4301names and directory names.
01c52d31
MB
4302
4303In XEmacs (with the @code{mule} feature), @code{file-name-coding-system}
4304is the only means to specify the coding system used to encode and decode
26b9f88d 4305file names. On the other hand, Emacs uses the value of
01c52d31 4306@code{default-file-name-coding-system} if @code{file-name-coding-system}
26b9f88d
MB
4307is @code{nil} or it is bound to the value of
4308@code{nnmail-pathname-coding-system} which is @code{nil}.
4309
4310Normally the value of @code{default-file-name-coding-system} in Emacs or
4311@code{nnmail-pathname-coding-system} in XEmacs is initialized according
4312to the locale, so you will need to do nothing if the value is suitable
4313to encode and decode non-@acronym{ASCII} group names.
01c52d31
MB
4314
4315The value of this variable (or @code{default-file-name-coding-system})
4316does not necessarily need to be the same value that is determined by
4317@code{gnus-group-name-charset-method-alist} and
4318@code{gnus-group-name-charset-group-alist}.
4319
26b9f88d
MB
4320If @code{default-file-name-coding-system} or this variable is
4321initialized by default to @code{iso-latin-1} for example, although you
4322want to subscribe to the groups spelled in Chinese, that is the most
4323typical case where you have to customize
4324@code{nnmail-pathname-coding-system}. The @code{utf-8} coding system is
4325a good candidate for it. Otherwise, you may change the locale in your
4326system so that @code{default-file-name-coding-system} or this variable
4327may be initialized to an appropriate value.
01c52d31
MB
4328@end table
4329
4330Note that when you copy or move articles from a non-@acronym{ASCII}
4331group to another group, the charset used to encode and decode group
4332names should be the same in both groups. Otherwise the Newsgroups
4333header will be displayed incorrectly in the article buffer.
4334
4335
8a1cdce5
AC
4336@node Misc Group Stuff
4337@section Misc Group Stuff
e6d2d263
MB
4338
4339@menu
8a1cdce5
AC
4340* Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
4341* Group Information:: Information and help on groups and Gnus.
4342* Group Timestamp:: Making Gnus keep track of when you last read a group.
4343* File Commands:: Reading and writing the Gnus files.
4344* Sieve Commands:: Managing Sieve scripts.
e6d2d263
MB
4345@end menu
4346
8a1cdce5 4347@table @kbd
e6d2d263 4348
8a1cdce5
AC
4349@item v
4350@kindex v (Group)
4351@cindex keys, reserved for users (Group)
4352The key @kbd{v} is reserved for users. You can bind it to some
4353command or better use it as a prefix key. For example:
e6d2d263 4354
8a1cdce5
AC
4355@lisp
4356(define-key gnus-group-mode-map (kbd "v j d")
4357 (lambda ()
4358 (interactive)
4359 (gnus-group-jump-to-group "nndraft:drafts")))
4360@end lisp
e6d2d263 4361
8a1cdce5
AC
4362On keys reserved for users in Emacs and on keybindings in general
4363@xref{Keymaps, Keymaps, , emacs, The Emacs Editor}.
e6d2d263 4364
8a1cdce5
AC
4365@item ^
4366@kindex ^ (Group)
4367@findex gnus-group-enter-server-mode
4368Enter the server buffer (@code{gnus-group-enter-server-mode}).
4369@xref{Server Buffer}.
e6d2d263 4370
8a1cdce5
AC
4371@item a
4372@kindex a (Group)
4373@findex gnus-group-post-news
4374Start composing a message (a news by default)
4375(@code{gnus-group-post-news}). If given a prefix, post to the group
4376under the point. If the prefix is 1, prompt for a group to post to.
4377Contrary to what the name of this function suggests, the prepared
4378article might be a mail instead of a news, if a mail group is specified
4379with the prefix argument. @xref{Composing Messages}.
e6d2d263 4380
8a1cdce5
AC
4381@item m
4382@kindex m (Group)
4383@findex gnus-group-mail
4384Mail a message somewhere (@code{gnus-group-mail}). If given a prefix,
4385use the posting style of the group under the point. If the prefix is 1,
4386prompt for a group name to find the posting style.
4387@xref{Composing Messages}.
e6d2d263 4388
8a1cdce5
AC
4389@item i
4390@kindex i (Group)
4391@findex gnus-group-news
4392Start composing a news (@code{gnus-group-news}). If given a prefix,
4393post to the group under the point. If the prefix is 1, prompt
4394for group to post to. @xref{Composing Messages}.
e6d2d263 4395
8a1cdce5
AC
4396This function actually prepares a news even when using mail groups.
4397This is useful for ``posting'' messages to mail groups without actually
4398sending them over the network: they're just saved directly to the group
4399in question. The corresponding back end must have a request-post method
4400for this to work though.
e6d2d263 4401
8a1cdce5
AC
4402@item G z
4403@kindex G z (Group)
4404@findex gnus-group-compact-group
e6d2d263 4405
8a1cdce5
AC
4406Compact the group under point (@code{gnus-group-compact-group}).
4407Currently implemented only in nnml (@pxref{Mail Spool}). This removes
4408gaps between article numbers, hence getting a correct total article
4409count.
e6d2d263 4410
8a1cdce5 4411@end table
e6d2d263 4412
8a1cdce5 4413Variables for the group buffer:
e6d2d263 4414
8a1cdce5 4415@table @code
e6d2d263 4416
8a1cdce5
AC
4417@item gnus-group-mode-hook
4418@vindex gnus-group-mode-hook
4419is called after the group buffer has been
4420created.
e6d2d263 4421
8a1cdce5
AC
4422@item gnus-group-prepare-hook
4423@vindex gnus-group-prepare-hook
4424is called after the group buffer is
4425generated. It may be used to modify the buffer in some strange,
4426unnatural way.
e6d2d263 4427
8a1cdce5
AC
4428@item gnus-group-prepared-hook
4429@vindex gnus-group-prepare-hook
4430is called as the very last thing after the group buffer has been
4431generated. It may be used to move point around, for instance.
e6d2d263 4432
8a1cdce5
AC
4433@item gnus-permanently-visible-groups
4434@vindex gnus-permanently-visible-groups
4435Groups matching this regexp will always be listed in the group buffer,
4436whether they are empty or not.
e6d2d263 4437
8a1cdce5 4438@end table
e6d2d263 4439
8a1cdce5
AC
4440@node Scanning New Messages
4441@subsection Scanning New Messages
4442@cindex new messages
4443@cindex scanning new news
e6d2d263 4444
8a1cdce5 4445@table @kbd
e6d2d263 4446
8a1cdce5
AC
4447@item g
4448@kindex g (Group)
4449@findex gnus-group-get-new-news
4450@c @icon{gnus-group-get-new-news}
4451Check the server(s) for new articles. If the numerical prefix is used,
4452this command will check only groups of level @var{arg} and lower
4453(@code{gnus-group-get-new-news}). If given a non-numerical prefix, this
4454command will force a total re-reading of the active file(s) from the
4455back end(s).
e6d2d263 4456
8a1cdce5
AC
4457@item M-g
4458@kindex M-g (Group)
4459@findex gnus-group-get-new-news-this-group
4460@vindex gnus-goto-next-group-when-activating
4461@c @icon{gnus-group-get-new-news-this-group}
4462Check whether new articles have arrived in the current group
4463(@code{gnus-group-get-new-news-this-group}).
4464@code{gnus-goto-next-group-when-activating} says whether this command is
4465to move point to the next group or not. It is @code{t} by default.
e6d2d263 4466
8a1cdce5
AC
4467@findex gnus-activate-all-groups
4468@cindex activating groups
4469@item C-c M-g
4470@kindex C-c M-g (Group)
4471Activate absolutely all groups (@code{gnus-activate-all-groups}).
e6d2d263 4472
8a1cdce5
AC
4473@item R
4474@kindex R (Group)
4475@cindex restarting
4476@findex gnus-group-restart
4477Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
4478file(s), closes the connection to all servers, clears up all run-time
4479Gnus variables, and then starts Gnus all over again.
e6d2d263 4480
8a1cdce5 4481@end table
e6d2d263 4482
8a1cdce5
AC
4483@vindex gnus-get-new-news-hook
4484@code{gnus-get-new-news-hook} is run just before checking for new news.
e6d2d263 4485
8a1cdce5
AC
4486@vindex gnus-after-getting-new-news-hook
4487@code{gnus-after-getting-new-news-hook} is run after checking for new
4488news.
e6d2d263 4489
e6d2d263 4490
8a1cdce5
AC
4491@node Group Information
4492@subsection Group Information
4493@cindex group information
4494@cindex information on groups
e6d2d263 4495
8a1cdce5 4496@table @kbd
e6d2d263 4497
e6d2d263 4498
8a1cdce5
AC
4499@item H d
4500@itemx C-c C-d
4501@c @icon{gnus-group-describe-group}
4502@kindex H d (Group)
4503@kindex C-c C-d (Group)
4504@cindex describing groups
4505@cindex group description
4506@findex gnus-group-describe-group
4507Describe the current group (@code{gnus-group-describe-group}). If given
4508a prefix, force Gnus to re-read the description from the server.
2b968687 4509
8a1cdce5
AC
4510@item M-d
4511@kindex M-d (Group)
4512@findex gnus-group-describe-all-groups
4513Describe all groups (@code{gnus-group-describe-all-groups}). If given a
4514prefix, force Gnus to re-read the description file from the server.
2b968687 4515
8a1cdce5
AC
4516@item H v
4517@itemx V
4518@kindex V (Group)
4519@kindex H v (Group)
4520@cindex version
4521@findex gnus-version
4522Display current Gnus version numbers (@code{gnus-version}).
2b968687 4523
8a1cdce5
AC
4524@item ?
4525@kindex ? (Group)
4526@findex gnus-group-describe-briefly
4527Give a very short help message (@code{gnus-group-describe-briefly}).
2b968687 4528
8a1cdce5
AC
4529@item C-c C-i
4530@kindex C-c C-i (Group)
4531@cindex info
4532@cindex manual
4533@findex gnus-info-find-node
4534Go to the Gnus info node (@code{gnus-info-find-node}).
4535@end table
e6d2d263 4536
e6d2d263 4537
8a1cdce5
AC
4538@node Group Timestamp
4539@subsection Group Timestamp
4540@cindex timestamps
4541@cindex group timestamps
e6d2d263 4542
8a1cdce5
AC
4543It can be convenient to let Gnus keep track of when you last read a
4544group. To set the ball rolling, you should add
4545@code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
e6d2d263 4546
8a1cdce5
AC
4547@lisp
4548(add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
4549@end lisp
e6d2d263 4550
8a1cdce5 4551After doing this, each time you enter a group, it'll be recorded.
e6d2d263 4552
8a1cdce5
AC
4553This information can be displayed in various ways---the easiest is to
4554use the @samp{%d} spec in the group line format:
e6d2d263 4555
8a1cdce5
AC
4556@lisp
4557(setq gnus-group-line-format
4558 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
4559@end lisp
e6d2d263 4560
8a1cdce5 4561This will result in lines looking like:
e6d2d263 4562
8a1cdce5
AC
4563@example
4564* 0: mail.ding 19961002T012943
4565 0: custom 19961002T012713
4566@end example
e6d2d263 4567
8a1cdce5
AC
4568As you can see, the date is displayed in compact ISO 8601 format. This
4569may be a bit too much, so to just display the date, you could say
4570something like:
e6d2d263 4571
8a1cdce5
AC
4572@lisp
4573(setq gnus-group-line-format
4574 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
4575@end lisp
e6d2d263 4576
8a1cdce5
AC
4577If you would like greater control of the time format, you can use a
4578user-defined format spec. Something like the following should do the
4579trick:
e6d2d263 4580
8a1cdce5
AC
4581@lisp
4582(setq gnus-group-line-format
4583 "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n")
4584(defun gnus-user-format-function-d (headers)
4585 (let ((time (gnus-group-timestamp gnus-tmp-group)))
4586 (if time
4587 (format-time-string "%b %d %H:%M" time)
4588 "")))
4589@end lisp
e6d2d263 4590
e6d2d263 4591
8a1cdce5
AC
4592@node File Commands
4593@subsection File Commands
4594@cindex file commands
e6d2d263 4595
8a1cdce5 4596@table @kbd
e6d2d263 4597
8a1cdce5
AC
4598@item r
4599@kindex r (Group)
4600@findex gnus-group-read-init-file
4601@vindex gnus-init-file
4602@cindex reading init file
4603Re-read the init file (@code{gnus-init-file}, which defaults to
4604@file{~/.gnus.el}) (@code{gnus-group-read-init-file}).
e6d2d263 4605
8a1cdce5
AC
4606@item s
4607@kindex s (Group)
4608@findex gnus-group-save-newsrc
4609@cindex saving .newsrc
4610Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
4611(@code{gnus-group-save-newsrc}). If given a prefix, force saving the
4612file(s) whether Gnus thinks it is necessary or not.
e6d2d263 4613
8a1cdce5
AC
4614@c @item Z
4615@c @kindex Z (Group)
4616@c @findex gnus-group-clear-dribble
4617@c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
e6d2d263 4618
8a1cdce5 4619@end table
e6d2d263 4620
e6d2d263 4621
8a1cdce5
AC
4622@node Sieve Commands
4623@subsection Sieve Commands
4624@cindex group sieve commands
e6d2d263 4625
8a1cdce5
AC
4626Sieve is a server-side mail filtering language. In Gnus you can use
4627the @code{sieve} group parameter (@pxref{Group Parameters}) to specify
4628sieve rules that should apply to each group. Gnus provides two
4629commands to translate all these group parameters into a proper Sieve
333f9019 4630script that can be transferred to the server somehow.
e6d2d263 4631
8a1cdce5
AC
4632@vindex gnus-sieve-file
4633@vindex gnus-sieve-region-start
4634@vindex gnus-sieve-region-end
4635The generated Sieve script is placed in @code{gnus-sieve-file} (by
4636default @file{~/.sieve}). The Sieve code that Gnus generate is placed
4637between two delimiters, @code{gnus-sieve-region-start} and
4638@code{gnus-sieve-region-end}, so you may write additional Sieve code
4639outside these delimiters that will not be removed the next time you
4640regenerate the Sieve script.
e6d2d263 4641
8a1cdce5
AC
4642@vindex gnus-sieve-crosspost
4643The variable @code{gnus-sieve-crosspost} controls how the Sieve script
4644is generated. If it is non-@code{nil} (the default) articles is
4645placed in all groups that have matching rules, otherwise the article
4646is only placed in the group with the first matching rule. For
4647example, the group parameter @samp{(sieve address "sender"
4648"owner-ding@@hpc.uh.edu")} will generate the following piece of Sieve
4649code if @code{gnus-sieve-crosspost} is @code{nil}. (When
4650@code{gnus-sieve-crosspost} is non-@code{nil}, it looks the same
4651except that the line containing the call to @code{stop} is removed.)
e6d2d263 4652
8a1cdce5
AC
4653@example
4654if address "sender" "owner-ding@@hpc.uh.edu" @{
4655 fileinto "INBOX.ding";
4656 stop;
4657@}
4658@end example
e6d2d263 4659
8a1cdce5 4660@xref{Top, Emacs Sieve, Top, sieve, Emacs Sieve}.
e6d2d263
MB
4661
4662@table @kbd
4663
8a1cdce5
AC
4664@item D g
4665@kindex D g (Group)
4666@findex gnus-sieve-generate
4667@vindex gnus-sieve-file
4668@cindex generating sieve script
4669Regenerate a Sieve script from the @code{sieve} group parameters and
4670put you into the @code{gnus-sieve-file} without saving it.
e6d2d263 4671
8a1cdce5
AC
4672@item D u
4673@kindex D u (Group)
4674@findex gnus-sieve-update
4675@vindex gnus-sieve-file
4676@cindex updating sieve script
4677Regenerates the Gnus managed part of @code{gnus-sieve-file} using the
4678@code{sieve} group parameters, save the file and upload it to the
4679server using the @code{sieveshell} program.
e6d2d263
MB
4680
4681@end table
4682
e6d2d263 4683
8a1cdce5
AC
4684@node Summary Buffer
4685@chapter Summary Buffer
4686@cindex summary buffer
e6d2d263 4687
8a1cdce5
AC
4688A line for each article is displayed in the summary buffer. You can
4689move around, read articles, post articles and reply to articles.
e6d2d263 4690
8a1cdce5
AC
4691The most common way to a summary buffer is to select a group from the
4692group buffer (@pxref{Selecting a Group}).
e6d2d263 4693
8a1cdce5 4694You can have as many summary buffers open as you wish.
e6d2d263 4695
8a1cdce5
AC
4696You can customize the Summary Mode tool bar, see @kbd{M-x
4697customize-apropos RET gnus-summary-tool-bar}. This feature is only
4698available in Emacs.
e6d2d263 4699
8a1cdce5
AC
4700@kindex v (Summary)
4701@cindex keys, reserved for users (Summary)
4702The key @kbd{v} is reserved for users. You can bind it to some
4703command or better use it as a prefix key. For example:
4704@lisp
4705(define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
4706@end lisp
e6d2d263 4707
8a1cdce5
AC
4708@menu
4709* Summary Buffer Format:: Deciding how the summary buffer is to look.
4710* Summary Maneuvering:: Moving around the summary buffer.
4711* Choosing Articles:: Reading articles.
4712* Paging the Article:: Scrolling the current article.
4713* Reply Followup and Post:: Posting articles.
4714* Delayed Articles:: Send articles at a later time.
4715* Marking Articles:: Marking articles as read, expirable, etc.
4716* Limiting:: You can limit the summary buffer.
4717* Threading:: How threads are made.
4718* Sorting the Summary Buffer:: How articles and threads are sorted.
4719* Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
4720* Article Caching:: You may store articles in a cache.
4721* Persistent Articles:: Making articles expiry-resistant.
4722* Sticky Articles:: Article buffers that are not reused.
4723* Article Backlog:: Having already read articles hang around.
4724* Saving Articles:: Ways of customizing article saving.
4725* Decoding Articles:: Gnus can treat series of (uu)encoded articles.
4726* Article Treatment:: The article buffer can be mangled at will.
4727* MIME Commands:: Doing MIMEy things with the articles.
4728* Charsets:: Character set issues.
4729* Article Commands:: Doing various things with the article buffer.
4730* Summary Sorting:: Sorting the summary buffer in various ways.
4731* Finding the Parent:: No child support? Get the parent.
4732* Alternative Approaches:: Reading using non-default summaries.
4733* Tree Display:: A more visual display of threads.
4734* Mail Group Commands:: Some commands can only be used in mail groups.
4735* Various Summary Stuff:: What didn't fit anywhere else.
4736* Exiting the Summary Buffer:: Returning to the Group buffer,
4737 or reselecting the current group.
4738* Crosspost Handling:: How crossposted articles are dealt with.
4739* Duplicate Suppression:: An alternative when crosspost handling fails.
4740* Security:: Decrypt and Verify.
4741* Mailing List:: Mailing list minor mode.
4742@end menu
e6d2d263 4743
e6d2d263 4744
8a1cdce5
AC
4745@node Summary Buffer Format
4746@section Summary Buffer Format
4747@cindex summary buffer format
e6d2d263 4748
8a1cdce5
AC
4749@iftex
4750@iflatex
4751\gnusfigure{The Summary Buffer}{180}{
4752\put(0,0){\epsfig{figure=ps/summary,width=7.5cm}}
4753\put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-article,width=7.5cm}}}
4754}
4755@end iflatex
4756@end iftex
e6d2d263 4757
8a1cdce5
AC
4758@menu
4759* Summary Buffer Lines:: You can specify how summary lines should look.
4760* To From Newsgroups:: How to not display your own name.
4761* Summary Buffer Mode Line:: You can say how the mode line should look.
4762* Summary Highlighting:: Making the summary buffer all pretty and nice.
4763@end menu
e6d2d263 4764
8a1cdce5
AC
4765@findex mail-extract-address-components
4766@findex gnus-extract-address-components
4767@vindex gnus-extract-address-components
4768Gnus will use the value of the @code{gnus-extract-address-components}
4769variable as a function for getting the name and address parts of a
4770@code{From} header. Two pre-defined functions exist:
4771@code{gnus-extract-address-components}, which is the default, quite
4772fast, and too simplistic solution; and
4773@code{mail-extract-address-components}, which works very nicely, but is
4774slower. The default function will return the wrong answer in 5% of the
4775cases. If this is unacceptable to you, use the other function instead:
e6d2d263
MB
4776
4777@lisp
8a1cdce5
AC
4778(setq gnus-extract-address-components
4779 'mail-extract-address-components)
e6d2d263
MB
4780@end lisp
4781
8a1cdce5
AC
4782@vindex gnus-summary-same-subject
4783@code{gnus-summary-same-subject} is a string indicating that the current
4784article has the same subject as the previous. This string will be used
4785with those specs that require it. The default is @code{""}.
e6d2d263 4786
e6d2d263 4787
8a1cdce5
AC
4788@node Summary Buffer Lines
4789@subsection Summary Buffer Lines
e6d2d263 4790
8a1cdce5
AC
4791@vindex gnus-summary-line-format
4792You can change the format of the lines in the summary buffer by changing
4793the @code{gnus-summary-line-format} variable. It works along the same
4794lines as a normal @code{format} string, with some extensions
4795(@pxref{Formatting Variables}).
e6d2d263 4796
8a1cdce5
AC
4797There should always be a colon or a point position marker on the line;
4798the cursor always moves to the point position marker or the colon after
4799performing an operation. (Of course, Gnus wouldn't be Gnus if it wasn't
4800possible to change this. Just write a new function
4801@code{gnus-goto-colon} which does whatever you like with the cursor.)
4802@xref{Positioning Point}.
e6d2d263 4803
8a1cdce5 4804The default string is @samp{%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n}.
e6d2d263 4805
8a1cdce5
AC
4806The following format specification characters and extended format
4807specification(s) are understood:
e6d2d263 4808
8a1cdce5
AC
4809@table @samp
4810@item N
4811Article number.
4812@item S
4813Subject string. List identifiers stripped,
4814@code{gnus-list-identifiers}. @xref{Article Hiding}.
4815@item s
4816Subject if the article is the root of the thread or the previous article
4817had a different subject, @code{gnus-summary-same-subject} otherwise.
4818(@code{gnus-summary-same-subject} defaults to @code{""}.)
4819@item F
4820Full @code{From} header.
4821@item n
4822The name (from the @code{From} header).
4823@item f
4824The name, @code{To} header or the @code{Newsgroups} header (@pxref{To
4825From Newsgroups}).
4826@item a
4827The name (from the @code{From} header). This differs from the @code{n}
4828spec in that it uses the function designated by the
4829@code{gnus-extract-address-components} variable, which is slower, but
4830may be more thorough.
4831@item A
4832The address (from the @code{From} header). This works the same way as
4833the @code{a} spec.
4834@item L
4835Number of lines in the article.
4836@item c
4837Number of characters in the article. This specifier is not supported
4838in some methods (like nnfolder).
4839@item k
4840Pretty-printed version of the number of characters in the article;
4841for example, @samp{1.2k} or @samp{0.4M}.
4842@item I
4843Indentation based on thread level (@pxref{Customizing Threading}).
4844@item B
4845A complex trn-style thread tree, showing response-connecting trace
4846lines. A thread could be drawn like this:
e6d2d263 4847
8a1cdce5
AC
4848@example
4849>
4850+->
4851| +->
4852| | \->
4853| | \->
4854| \->
4855+->
4856\->
4857@end example
e6d2d263 4858
8a1cdce5
AC
4859You can customize the appearance with the following options. Note
4860that it is possible to make the thread display look really neat by
4861replacing the default @acronym{ASCII} characters with graphic
4862line-drawing glyphs.
4863@table @code
4864@item gnus-sum-thread-tree-root
4865@vindex gnus-sum-thread-tree-root
4866Used for the root of a thread. If @code{nil}, use subject
4867instead. The default is @samp{> }.
e6d2d263 4868
8a1cdce5
AC
4869@item gnus-sum-thread-tree-false-root
4870@vindex gnus-sum-thread-tree-false-root
4871Used for the false root of a thread (@pxref{Loose Threads}). If
4872@code{nil}, use subject instead. The default is @samp{> }.
e6d2d263 4873
8a1cdce5
AC
4874@item gnus-sum-thread-tree-single-indent
4875@vindex gnus-sum-thread-tree-single-indent
4876Used for a thread with just one message. If @code{nil}, use subject
4877instead. The default is @samp{}.
030cca00 4878
8a1cdce5
AC
4879@item gnus-sum-thread-tree-vertical
4880@vindex gnus-sum-thread-tree-vertical
4881Used for drawing a vertical line. The default is @samp{| }.
030cca00 4882
8a1cdce5
AC
4883@item gnus-sum-thread-tree-indent
4884@vindex gnus-sum-thread-tree-indent
4885Used for indenting. The default is @samp{ }.
e6d2d263 4886
8a1cdce5
AC
4887@item gnus-sum-thread-tree-leaf-with-other
4888@vindex gnus-sum-thread-tree-leaf-with-other
4889Used for a leaf with brothers. The default is @samp{+-> }.
e6d2d263 4890
8a1cdce5
AC
4891@item gnus-sum-thread-tree-single-leaf
4892@vindex gnus-sum-thread-tree-single-leaf
4893Used for a leaf without brothers. The default is @samp{\-> }
e6d2d263 4894
8a1cdce5 4895@end table
030cca00 4896
8a1cdce5
AC
4897@item T
4898Nothing if the article is a root and lots of spaces if it isn't (it
4899pushes everything after it off the screen).
4900@item [
4901Opening bracket, which is normally @samp{[}, but can also be @samp{<}
4902for adopted articles (@pxref{Customizing Threading}).
4903@item ]
4904Closing bracket, which is normally @samp{]}, but can also be @samp{>}
4905for adopted articles.
4906@item >
4907One space for each thread level.
4908@item <
4909Twenty minus thread level spaces.
4910@item U
4911Unread. @xref{Read Articles}.
e6d2d263 4912
8a1cdce5
AC
4913@item R
4914This misleadingly named specifier is the @dfn{secondary mark}. This
4915mark will say whether the article has been replied to, has been cached,
4916or has been saved. @xref{Other Marks}.
e6d2d263 4917
8a1cdce5
AC
4918@item i
4919Score as a number (@pxref{Scoring}).
4920@item z
4921@vindex gnus-summary-zcore-fuzz
4922Zcore, @samp{+} if above the default level and @samp{-} if below the
4923default level. If the difference between
4924@code{gnus-summary-default-score} and the score is less than
4925@code{gnus-summary-zcore-fuzz}, this spec will not be used.
4926@item V
4927Total thread score.
4928@item x
4929@code{Xref}.
4930@item D
4931@code{Date}.
4932@item d
4933The @code{Date} in @code{DD-MMM} format.
4934@item o
4935The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format.
4936@item M
4937@code{Message-ID}.
4938@item r
4939@code{References}.
4940@item t
4941Number of articles in the current sub-thread. Using this spec will slow
4942down summary buffer generation somewhat.
4943@item e
4944An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
4945article has any children.
4946@item P
4947The line number.
4948@item O
4949Download mark.
4950@item *
4951Desired cursor position (instead of after first colon).
4952@item &user-date;
4953Age sensitive date format. Various date format is defined in
c2f51e23 4954@code{gnus-user-date-format-alist}.
8a1cdce5
AC
4955@item u
4956User defined specifier. The next character in the format string should
4957be a letter. Gnus will call the function
4958@code{gnus-user-format-function-@var{x}}, where @var{x} is the letter
4959following @samp{%u}. The function will be passed the current header as
4960argument. The function should return a string, which will be inserted
4961into the summary just like information from any other summary specifier.
4962@end table
e6d2d263 4963
8a1cdce5
AC
4964Text between @samp{%(} and @samp{%)} will be highlighted with
4965@code{gnus-mouse-face} when the mouse point is placed inside the area.
4966There can only be one such area.
e6d2d263 4967
8a1cdce5
AC
4968The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
4969have to be handled with care. For reasons of efficiency, Gnus will
4970compute what column these characters will end up in, and ``hard-code''
4971that. This means that it is invalid to have these specs after a
4972variable-length spec. Well, you might not be arrested, but your summary
4973buffer will look strange, which is bad enough.
e6d2d263 4974
8a1cdce5
AC
4975The smart choice is to have these specs as far to the left as possible.
4976(Isn't that the case with everything, though? But I digress.)
e6d2d263 4977
8a1cdce5 4978This restriction may disappear in later versions of Gnus.
e6d2d263 4979
4009494e 4980
8a1cdce5
AC
4981@node To From Newsgroups
4982@subsection To From Newsgroups
4983@cindex To
4984@cindex Newsgroups
4009494e 4985
8a1cdce5
AC
4986In some groups (particularly in archive groups), the @code{From} header
4987isn't very interesting, since all the articles there are written by
4988you. To display the information in the @code{To} or @code{Newsgroups}
4989headers instead, you need to decide three things: What information to
4990gather; where to display it; and when to display it.
4009494e 4991
8a1cdce5
AC
4992@enumerate
4993@item
4994@vindex gnus-extra-headers
4995The reading of extra header information is controlled by the
4996@code{gnus-extra-headers}. This is a list of header symbols. For
4997instance:
4009494e
GM
4998
4999@lisp
8a1cdce5
AC
5000(setq gnus-extra-headers
5001 '(To Newsgroups X-Newsreader))
4009494e
GM
5002@end lisp
5003
8a1cdce5
AC
5004This will result in Gnus trying to obtain these three headers, and
5005storing it in header structures for later easy retrieval.
4009494e 5006
8a1cdce5
AC
5007@item
5008@findex gnus-extra-header
5009The value of these extra headers can be accessed via the
5010@code{gnus-extra-header} function. Here's a format line spec that will
5011access the @code{X-Newsreader} header:
4009494e 5012
8a1cdce5
AC
5013@example
5014"%~(form (gnus-extra-header 'X-Newsreader))@@"
5015@end example
4009494e 5016
8a1cdce5
AC
5017@item
5018@vindex gnus-ignored-from-addresses
5019The @code{gnus-ignored-from-addresses} variable says when the @samp{%f}
5020summary line spec returns the @code{To}, @code{Newsreader} or
5021@code{From} header. If this regexp matches the contents of the
5022@code{From} header, the value of the @code{To} or @code{Newsreader}
5023headers are used instead.
4009494e 5024
8a1cdce5
AC
5025To distinguish regular articles from those where the @code{From} field
5026has been swapped, a string is prefixed to the @code{To} or
5027@code{Newsgroups} header in the summary line. By default the string is
5028@samp{-> } for @code{To} and @samp{=> } for @code{Newsgroups}, you can
5029customize these strings with @code{gnus-summary-to-prefix} and
5030@code{gnus-summary-newsgroup-prefix}.
4009494e 5031
8a1cdce5 5032@end enumerate
4009494e 5033
8a1cdce5
AC
5034@vindex nnmail-extra-headers
5035A related variable is @code{nnmail-extra-headers}, which controls when
5036to include extra headers when generating overview (@acronym{NOV}) files.
5037If you have old overview files, you should regenerate them after
5038changing this variable, by entering the server buffer using @kbd{^},
5039and then @kbd{g} on the appropriate mail server (e.g. nnml) to cause
5040regeneration.
01c52d31 5041
8a1cdce5
AC
5042@vindex gnus-summary-line-format
5043You also have to instruct Gnus to display the data by changing the
5044@code{%n} spec to the @code{%f} spec in the
5045@code{gnus-summary-line-format} variable.
01c52d31 5046
8a1cdce5
AC
5047In summary, you'd typically put something like the following in
5048@file{~/.gnus.el}:
4009494e 5049
8a1cdce5
AC
5050@lisp
5051(setq gnus-extra-headers
5052 '(To Newsgroups))
5053(setq nnmail-extra-headers gnus-extra-headers)
5054(setq gnus-summary-line-format
5055 "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
5056(setq gnus-ignored-from-addresses
5057 "Your Name Here")
5058@end lisp
4009494e 5059
8a1cdce5
AC
5060(The values listed above are the default values in Gnus. Alter them
5061to fit your needs.)
4009494e 5062
8a1cdce5
AC
5063A note for news server administrators, or for users who wish to try to
5064convince their news server administrator to provide some additional
5065support:
4009494e 5066
8a1cdce5
AC
5067The above is mostly useful for mail groups, where you have control over
5068the @acronym{NOV} files that are created. However, if you can persuade your
5069nntp admin to add (in the usual implementation, notably INN):
4009494e 5070
8a1cdce5
AC
5071@example
5072Newsgroups:full
5073@end example
4009494e 5074
8a1cdce5
AC
5075to the end of her @file{overview.fmt} file, then you can use that just
5076as you would the extra headers from the mail groups.
4009494e 5077
4009494e 5078
8a1cdce5
AC
5079@node Summary Buffer Mode Line
5080@subsection Summary Buffer Mode Line
4009494e 5081
8a1cdce5
AC
5082@vindex gnus-summary-mode-line-format
5083You can also change the format of the summary mode bar (@pxref{Mode Line
5084Formatting}). Set @code{gnus-summary-mode-line-format} to whatever you
5085like. The default is @samp{Gnus: %%b [%A] %Z}.
5086
5087Here are the elements you can play with:
4009494e 5088
8a1cdce5
AC
5089@table @samp
5090@item G
5091Group name.
5092@item p
5093Unprefixed group name.
5094@item A
5095Current article number.
5096@item z
5097Current article score.
5098@item V
5099Gnus version.
5100@item U
5101Number of unread articles in this group.
5102@item e
5103Number of unread articles in this group that aren't displayed in the
5104summary buffer.
5105@item Z
5106A string with the number of unread and unselected articles represented
5107either as @samp{<%U(+%e) more>} if there are both unread and unselected
5108articles, and just as @samp{<%U more>} if there are just unread articles
5109and no unselected ones.
4009494e 5110@item g
8a1cdce5
AC
5111Shortish group name. For instance, @samp{rec.arts.anime} will be
5112shortened to @samp{r.a.anime}.
5113@item S
5114Subject of the current article.
5115@item u
5116User-defined spec (@pxref{User-Defined Specs}).
5117@item s
5118Name of the current score file (@pxref{Scoring}).
5119@item d
5120Number of dormant articles (@pxref{Unread Articles}).
5121@item t
5122Number of ticked articles (@pxref{Unread Articles}).
5123@item r
5124Number of articles that have been marked as read in this session.
5125@item E
5126Number of articles expunged by the score files.
5127@end table
4009494e 5128
4009494e 5129
8a1cdce5
AC
5130@node Summary Highlighting
5131@subsection Summary Highlighting
4009494e 5132
8a1cdce5
AC
5133@table @code
5134
5135@item gnus-visual-mark-article-hook
5136@vindex gnus-visual-mark-article-hook
5137This hook is run after selecting an article. It is meant to be used for
5138highlighting the article in some way. It is not run if
5139@code{gnus-visual} is @code{nil}.
5140
5141@item gnus-summary-update-hook
5142@vindex gnus-summary-update-hook
5143This hook is called when a summary line is changed. It is not run if
5144@code{gnus-visual} is @code{nil}.
5145
5146@item gnus-summary-selected-face
5147@vindex gnus-summary-selected-face
5148This is the face (or @dfn{font} as some people call it) used to
5149highlight the current article in the summary buffer.
4009494e 5150
8a1cdce5
AC
5151@item gnus-summary-highlight
5152@vindex gnus-summary-highlight
5153Summary lines are highlighted according to this variable, which is a
5154list where the elements are of the format @code{(@var{form}
5155. @var{face})}. If you would, for instance, like ticked articles to be
5156italic and high-scored articles to be bold, you could set this variable
5157to something like
5158@lisp
5159(((eq mark gnus-ticked-mark) . italic)
5160 ((> score default) . bold))
5161@end lisp
5162As you may have guessed, if @var{form} returns a non-@code{nil} value,
5163@var{face} will be applied to the line.
4009494e
GM
5164@end table
5165
4009494e 5166
8a1cdce5
AC
5167@node Summary Maneuvering
5168@section Summary Maneuvering
5169@cindex summary movement
4009494e 5170
8a1cdce5
AC
5171All the straight movement commands understand the numeric prefix and
5172behave pretty much as you'd expect.
4009494e 5173
8a1cdce5 5174None of these commands select articles.
4009494e
GM
5175
5176@table @kbd
8a1cdce5
AC
5177@item G M-n
5178@itemx M-n
5179@kindex M-n (Summary)
5180@kindex G M-n (Summary)
5181@findex gnus-summary-next-unread-subject
5182Go to the next summary line of an unread article
5183(@code{gnus-summary-next-unread-subject}).
4009494e 5184
8a1cdce5
AC
5185@item G M-p
5186@itemx M-p
5187@kindex M-p (Summary)
5188@kindex G M-p (Summary)
5189@findex gnus-summary-prev-unread-subject
5190Go to the previous summary line of an unread article
5191(@code{gnus-summary-prev-unread-subject}).
4009494e 5192
8a1cdce5
AC
5193@item G g
5194@kindex G g (Summary)
5195@findex gnus-summary-goto-subject
5196Ask for an article number and then go to the summary line of that article
5197without displaying the article (@code{gnus-summary-goto-subject}).
5198@end table
4009494e 5199
8a1cdce5
AC
5200If Gnus asks you to press a key to confirm going to the next group, you
5201can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
5202buffer, searching for the next group to read without actually returning
5203to the group buffer.
4009494e 5204
8a1cdce5 5205Variables related to summary movement:
4009494e 5206
8a1cdce5 5207@table @code
4009494e 5208
8a1cdce5
AC
5209@vindex gnus-auto-select-next
5210@item gnus-auto-select-next
5211If you issue one of the movement commands (like @kbd{n}) and there are
5212no more unread articles after the current one, Gnus will offer to go to
5213the next group. If this variable is @code{t} and the next group is
5214empty, Gnus will exit summary mode and return to the group buffer. If
5215this variable is neither @code{t} nor @code{nil}, Gnus will select the
5216next group with unread articles. As a special case, if this variable
5217is @code{quietly}, Gnus will select the next group without asking for
5218confirmation. If this variable is @code{almost-quietly}, the same
5219will happen only if you are located on the last article in the group.
5220Finally, if this variable is @code{slightly-quietly}, the @kbd{Z n}
5221command will go to the next group without confirmation. Also
5222@pxref{Group Levels}.
4009494e 5223
8a1cdce5
AC
5224@item gnus-auto-select-same
5225@vindex gnus-auto-select-same
5226If non-@code{nil}, all the movement commands will try to go to the next
5227article with the same subject as the current. (@dfn{Same} here might
5228mean @dfn{roughly equal}. See @code{gnus-summary-gather-subject-limit}
5229for details (@pxref{Customizing Threading}).) If there are no more
5230articles with the same subject, go to the first unread article.
4009494e 5231
8a1cdce5 5232This variable is not particularly useful if you use a threaded display.
4009494e 5233
8a1cdce5
AC
5234@item gnus-summary-check-current
5235@vindex gnus-summary-check-current
5236If non-@code{nil}, all the ``unread'' movement commands will not proceed
5237to the next (or previous) article if the current article is unread.
5238Instead, they will choose the current article.
4009494e 5239
8a1cdce5
AC
5240@item gnus-auto-center-summary
5241@vindex gnus-auto-center-summary
5242If non-@code{nil}, Gnus will keep the point in the summary buffer
5243centered at all times. This makes things quite tidy, but if you have a
5244slow network connection, or simply do not like this un-Emacsism, you can
5245set this variable to @code{nil} to get the normal Emacs scrolling
5246action. This will also inhibit horizontal re-centering of the summary
5247buffer, which might make it more inconvenient to read extremely long
5248threads.
4009494e 5249
8a1cdce5
AC
5250This variable can also be a number. In that case, center the window at
5251the given number of lines from the top.
4009494e 5252
8a1cdce5
AC
5253@item gnus-summary-stop-at-end-of-message
5254@vindex gnus-summary-stop-at-end-of-message
5255If non-@code{nil}, don't go to the next article when hitting
5256@kbd{SPC}, and you're at the end of the article.
4009494e 5257
8a1cdce5 5258@end table
4009494e 5259
4009494e 5260
8a1cdce5
AC
5261@node Choosing Articles
5262@section Choosing Articles
5263@cindex selecting articles
4009494e 5264
8a1cdce5
AC
5265@menu
5266* Choosing Commands:: Commands for choosing articles.
5267* Choosing Variables:: Variables that influence these commands.
5268@end menu
4009494e 5269
4009494e 5270
8a1cdce5
AC
5271@node Choosing Commands
5272@subsection Choosing Commands
4009494e 5273
8a1cdce5
AC
5274None of the following movement commands understand the numeric prefix,
5275and they all select and display an article.
4009494e 5276
8a1cdce5
AC
5277If you want to fetch new articles or redisplay the group, see
5278@ref{Exiting the Summary Buffer}.
4009494e 5279
8a1cdce5
AC
5280@table @kbd
5281@item SPACE
5282@kindex SPACE (Summary)
5283@findex gnus-summary-next-page
5284Select the current article, or, if that one's read already, the next
5285unread article (@code{gnus-summary-next-page}).
4009494e 5286
8a1cdce5
AC
5287If you have an article window open already and you press @kbd{SPACE}
5288again, the article will be scrolled. This lets you conveniently
5289@kbd{SPACE} through an entire newsgroup. @xref{Paging the Article}.
4009494e 5290
8a1cdce5
AC
5291@item G n
5292@itemx n
5293@kindex n (Summary)
5294@kindex G n (Summary)
5295@findex gnus-summary-next-unread-article
5296@c @icon{gnus-summary-next-unread}
5297Go to next unread article (@code{gnus-summary-next-unread-article}).
4009494e 5298
8a1cdce5
AC
5299@item G p
5300@itemx p
5301@kindex p (Summary)
5302@findex gnus-summary-prev-unread-article
5303@c @icon{gnus-summary-prev-unread}
5304Go to previous unread article (@code{gnus-summary-prev-unread-article}).
4009494e 5305
8a1cdce5
AC
5306@item G N
5307@itemx N
5308@kindex N (Summary)
5309@kindex G N (Summary)
5310@findex gnus-summary-next-article
5311Go to the next article (@code{gnus-summary-next-article}).
4009494e 5312
8a1cdce5
AC
5313@item G P
5314@itemx P
5315@kindex P (Summary)
5316@kindex G P (Summary)
5317@findex gnus-summary-prev-article
5318Go to the previous article (@code{gnus-summary-prev-article}).
4009494e 5319
8a1cdce5
AC
5320@item G C-n
5321@kindex G C-n (Summary)
5322@findex gnus-summary-next-same-subject
5323Go to the next article with the same subject
5324(@code{gnus-summary-next-same-subject}).
4009494e 5325
8a1cdce5
AC
5326@item G C-p
5327@kindex G C-p (Summary)
5328@findex gnus-summary-prev-same-subject
5329Go to the previous article with the same subject
5330(@code{gnus-summary-prev-same-subject}).
4009494e 5331
8a1cdce5
AC
5332@item G f
5333@itemx .
5334@kindex G f (Summary)
5335@kindex . (Summary)
5336@findex gnus-summary-first-unread-article
5337Go to the first unread article
5338(@code{gnus-summary-first-unread-article}).
4009494e 5339
8a1cdce5
AC
5340@item G b
5341@itemx ,
5342@kindex G b (Summary)
5343@kindex , (Summary)
5344@findex gnus-summary-best-unread-article
5345Go to the unread article with the highest score
5346(@code{gnus-summary-best-unread-article}). If given a prefix argument,
5347go to the first unread article that has a score over the default score.
4009494e 5348
8a1cdce5
AC
5349@item G l
5350@itemx l
5351@kindex l (Summary)
5352@kindex G l (Summary)
5353@findex gnus-summary-goto-last-article
5354Go to the previous article read (@code{gnus-summary-goto-last-article}).
4009494e 5355
8a1cdce5
AC
5356@item G o
5357@kindex G o (Summary)
5358@findex gnus-summary-pop-article
5359@cindex history
5360@cindex article history
5361Pop an article off the summary history and go to this article
5362(@code{gnus-summary-pop-article}). This command differs from the
5363command above in that you can pop as many previous articles off the
5364history as you like, while @kbd{l} toggles the two last read articles.
5365For a somewhat related issue (if you use these commands a lot),
5366@pxref{Article Backlog}.
4009494e 5367
8a1cdce5
AC
5368@item G j
5369@itemx j
5370@kindex j (Summary)
5371@kindex G j (Summary)
5372@findex gnus-summary-goto-article
5373Ask for an article number or @code{Message-ID}, and then go to that
5374article (@code{gnus-summary-goto-article}).
4009494e 5375
8a1cdce5 5376@end table
4009494e 5377
4009494e 5378
8a1cdce5
AC
5379@node Choosing Variables
5380@subsection Choosing Variables
4009494e 5381
8a1cdce5 5382Some variables relevant for moving and selecting articles:
4009494e 5383
8a1cdce5
AC
5384@table @code
5385@item gnus-auto-extend-newsgroup
5386@vindex gnus-auto-extend-newsgroup
5387All the movement commands will try to go to the previous (or next)
5388article, even if that article isn't displayed in the Summary buffer if
5389this variable is non-@code{nil}. Gnus will then fetch the article from
5390the server and display it in the article buffer.
4009494e 5391
8a1cdce5
AC
5392@item gnus-select-article-hook
5393@vindex gnus-select-article-hook
5394This hook is called whenever an article is selected. The default is
5395@code{nil}. If you would like each article to be saved in the Agent as
5396you read it, putting @code{gnus-agent-fetch-selected-article} on this
5397hook will do so.
4009494e 5398
8a1cdce5
AC
5399@item gnus-mark-article-hook
5400@vindex gnus-mark-article-hook
5401@findex gnus-summary-mark-unread-as-read
5402@findex gnus-summary-mark-read-and-unread-as-read
5403@findex gnus-unread-mark
5404This hook is called whenever an article is selected. It is intended to
5405be used for marking articles as read. The default value is
5406@code{gnus-summary-mark-read-and-unread-as-read}, and will change the
5407mark of almost any article you read to @code{gnus-read-mark}. The only
5408articles not affected by this function are ticked, dormant, and
5409expirable articles. If you'd instead like to just have unread articles
5410marked as read, you can use @code{gnus-summary-mark-unread-as-read}
5411instead. It will leave marks like @code{gnus-low-score-mark},
5412@code{gnus-del-mark} (and so on) alone.
4009494e 5413
8a1cdce5 5414@end table
4009494e 5415
4009494e 5416
8a1cdce5
AC
5417@node Paging the Article
5418@section Scrolling the Article
5419@cindex article scrolling
4009494e 5420
8a1cdce5 5421@table @kbd
4009494e 5422
8a1cdce5
AC
5423@item SPACE
5424@kindex SPACE (Summary)
5425@findex gnus-summary-next-page
5426Pressing @kbd{SPACE} will scroll the current article forward one page,
5427or, if you have come to the end of the current article, will choose the
5428next article (@code{gnus-summary-next-page}).
4009494e 5429
8a1cdce5
AC
5430@vindex gnus-article-boring-faces
5431@vindex gnus-article-skip-boring
5432If @code{gnus-article-skip-boring} is non-@code{nil} and the rest of
5433the article consists only of citations and signature, then it will be
5434skipped; the next article will be shown instead. You can customize
5435what is considered uninteresting with
5436@code{gnus-article-boring-faces}. You can manually view the article's
5437pages, no matter how boring, using @kbd{C-M-v}.
4009494e 5438
8a1cdce5
AC
5439@item DEL
5440@kindex DEL (Summary)
5441@findex gnus-summary-prev-page
5442Scroll the current article back one page (@code{gnus-summary-prev-page}).
4009494e 5443
8a1cdce5
AC
5444@item RET
5445@kindex RET (Summary)
5446@findex gnus-summary-scroll-up
5447Scroll the current article one line forward
5448(@code{gnus-summary-scroll-up}).
4009494e 5449
8a1cdce5
AC
5450@item M-RET
5451@kindex M-RET (Summary)
5452@findex gnus-summary-scroll-down
5453Scroll the current article one line backward
5454(@code{gnus-summary-scroll-down}).
4009494e 5455
8a1cdce5
AC
5456@item A g
5457@itemx g
5458@kindex A g (Summary)
5459@kindex g (Summary)
5460@findex gnus-summary-show-article
5461@vindex gnus-summary-show-article-charset-alist
5462(Re)fetch the current article (@code{gnus-summary-show-article}). If
5463given a prefix, show a completely ``raw'' article, just the way it
5464came from the server. If given a prefix twice (i.e., @kbd{C-u C-u
5465g'}), fetch the current article, but don't run any of the article
5466treatment functions.
4009494e 5467
8a1cdce5
AC
5468@cindex charset, view article with different charset
5469If given a numerical prefix, you can do semi-manual charset stuff.
5470@kbd{C-u 0 g cn-gb-2312 RET} will decode the message as if it were
5471encoded in the @code{cn-gb-2312} charset. If you have
4009494e
GM
5472
5473@lisp
8a1cdce5
AC
5474(setq gnus-summary-show-article-charset-alist
5475 '((1 . cn-gb-2312)
5476 (2 . big5)))
4009494e
GM
5477@end lisp
5478
8a1cdce5 5479then you can say @kbd{C-u 1 g} to get the same effect.
4009494e 5480
8a1cdce5
AC
5481@item A <
5482@itemx <
5483@kindex < (Summary)
5484@kindex A < (Summary)
5485@findex gnus-summary-beginning-of-article
5486Scroll to the beginning of the article
5487(@code{gnus-summary-beginning-of-article}).
4009494e 5488
8a1cdce5
AC
5489@item A >
5490@itemx >
5491@kindex > (Summary)
5492@kindex A > (Summary)
5493@findex gnus-summary-end-of-article
5494Scroll to the end of the article (@code{gnus-summary-end-of-article}).
4009494e 5495
8a1cdce5
AC
5496@item A s
5497@itemx s
5498@kindex A s (Summary)
5499@kindex s (Summary)
5500@findex gnus-summary-isearch-article
5501Perform an isearch in the article buffer
5502(@code{gnus-summary-isearch-article}).
4009494e 5503
8a1cdce5
AC
5504@item h
5505@kindex h (Summary)
5506@findex gnus-summary-select-article-buffer
5507Select the article buffer (@code{gnus-summary-select-article-buffer}).
4009494e 5508
8a1cdce5 5509@end table
4009494e 5510
4009494e 5511
8a1cdce5
AC
5512@node Reply Followup and Post
5513@section Reply, Followup and Post
4009494e 5514
8a1cdce5
AC
5515@menu
5516* Summary Mail Commands:: Sending mail.
5517* Summary Post Commands:: Sending news.
5518* Summary Message Commands:: Other Message-related commands.
5519* Canceling and Superseding::
5520@end menu
4009494e 5521
4009494e 5522
8a1cdce5
AC
5523@node Summary Mail Commands
5524@subsection Summary Mail Commands
5525@cindex mail
5526@cindex composing mail
4009494e 5527
8a1cdce5 5528Commands for composing a mail message:
4009494e 5529
8a1cdce5 5530@table @kbd
4009494e 5531
8a1cdce5
AC
5532@item S r
5533@itemx r
5534@kindex S r (Summary)
5535@kindex r (Summary)
5536@findex gnus-summary-reply
5537@c @icon{gnus-summary-mail-reply}
5538@c @icon{gnus-summary-reply}
5539Mail a reply to the author of the current article
5540(@code{gnus-summary-reply}).
4009494e 5541
8a1cdce5
AC
5542@item S R
5543@itemx R
5544@kindex R (Summary)
5545@kindex S R (Summary)
5546@findex gnus-summary-reply-with-original
5547@c @icon{gnus-summary-reply-with-original}
5548Mail a reply to the author of the current article and include the
5549original message (@code{gnus-summary-reply-with-original}). This
5550command uses the process/prefix convention.
4009494e 5551
8a1cdce5
AC
5552@item S w
5553@kindex S w (Summary)
5554@findex gnus-summary-wide-reply
5555Mail a wide reply to the author of the current article
5556(@code{gnus-summary-wide-reply}). A @dfn{wide reply} is a reply that
5557goes out to all people listed in the @code{To}, @code{From} (or
5558@code{Reply-to}) and @code{Cc} headers. If @code{Mail-Followup-To} is
5559present, that's used instead.
4009494e 5560
8a1cdce5
AC
5561@item S W
5562@kindex S W (Summary)
5563@findex gnus-summary-wide-reply-with-original
5564Mail a wide reply to the current article and include the original
5565message (@code{gnus-summary-wide-reply-with-original}). This command uses
5566the process/prefix convention, but only uses the headers from the
5567first article to determine the recipients.
5568
60a0884e
G
5569@item S L
5570@kindex S L (Summary)
5571@findex gnus-summary-reply-to-list-with-original
5572When replying to a message from a mailing list, send a reply to that
5573message to the mailing list, and include the original message
5574(@code{gnus-summary-reply-to-list-with-original}).
5575
8a1cdce5
AC
5576@item S v
5577@kindex S v (Summary)
5578@findex gnus-summary-very-wide-reply
5579Mail a very wide reply to the author of the current article
5580(@code{gnus-summary-wide-reply}). A @dfn{very wide reply} is a reply
5581that goes out to all people listed in the @code{To}, @code{From} (or
5582@code{Reply-to}) and @code{Cc} headers in all the process/prefixed
5583articles. This command uses the process/prefix convention.
5584
5585@item S V
5586@kindex S V (Summary)
5587@findex gnus-summary-very-wide-reply-with-original
5588Mail a very wide reply to the author of the current article and include the
5589original message (@code{gnus-summary-very-wide-reply-with-original}). This
5590command uses the process/prefix convention.
5591
5592@item S B r
5593@kindex S B r (Summary)
5594@findex gnus-summary-reply-broken-reply-to
5595Mail a reply to the author of the current article but ignore the
5596@code{Reply-To} field (@code{gnus-summary-reply-broken-reply-to}).
5597If you need this because a mailing list incorrectly sets a
5598@code{Reply-To} header pointing to the list, you probably want to set
5599the @code{broken-reply-to} group parameter instead, so things will work
5600correctly. @xref{Group Parameters}.
5601
5602@item S B R
5603@kindex S B R (Summary)
5604@findex gnus-summary-reply-broken-reply-to-with-original
5605Mail a reply to the author of the current article and include the
5606original message but ignore the @code{Reply-To} field
5607(@code{gnus-summary-reply-broken-reply-to-with-original}).
5608
5609@item S o m
5610@itemx C-c C-f
5611@kindex S o m (Summary)
5612@kindex C-c C-f (Summary)
5613@findex gnus-summary-mail-forward
5614@c @icon{gnus-summary-mail-forward}
5615Forward the current article to some other person
5616(@code{gnus-summary-mail-forward}). If no prefix is given, the message
5617is forwarded according to the value of (@code{message-forward-as-mime})
5618and (@code{message-forward-show-mml}); if the prefix is 1, decode the
5619message and forward directly inline; if the prefix is 2, forward message
5620as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5621forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
5622directly inline; otherwise, the message is forwarded as no prefix given
5623but use the flipped value of (@code{message-forward-as-mime}). By
5624default, the message is decoded and forwarded as an rfc822 @acronym{MIME}
5625section.
5626
5627@item S m
5628@itemx m
5629@kindex m (Summary)
5630@kindex S m (Summary)
5631@findex gnus-summary-mail-other-window
5632@c @icon{gnus-summary-mail-originate}
5633Prepare a mail (@code{gnus-summary-mail-other-window}). By default, use
5634the posting style of the current group. If given a prefix, disable that.
5635If the prefix is 1, prompt for a group name to find the posting style.
5636
5637@item S i
5638@kindex S i (Summary)
5639@findex gnus-summary-news-other-window
5640Prepare a news (@code{gnus-summary-news-other-window}). By default,
5641post to the current group. If given a prefix, disable that. If the
5642prefix is 1, prompt for a group to post to.
5643
5644This function actually prepares a news even when using mail groups.
5645This is useful for ``posting'' messages to mail groups without actually
5646sending them over the network: they're just saved directly to the group
5647in question. The corresponding back end must have a request-post method
5648for this to work though.
5649
5650@item S D b
5651@kindex S D b (Summary)
5652@findex gnus-summary-resend-bounced-mail
5653@cindex bouncing mail
5654If you have sent a mail, but the mail was bounced back to you for some
5655reason (wrong address, transient failure), you can use this command to
5656resend that bounced mail (@code{gnus-summary-resend-bounced-mail}). You
5657will be popped into a mail buffer where you can edit the headers before
5658sending the mail off again. If you give a prefix to this command, and
5659the bounced mail is a reply to some other mail, Gnus will try to fetch
5660that mail and display it for easy perusal of its headers. This might
5661very well fail, though.
5662
5663@item S D r
5664@kindex S D r (Summary)
5665@findex gnus-summary-resend-message
5666Not to be confused with the previous command,
5667@code{gnus-summary-resend-message} will prompt you for an address to
5668send the current message off to, and then send it to that place. The
5669headers of the message won't be altered---but lots of headers that say
5670@code{Resent-To}, @code{Resent-From} and so on will be added. This
5671means that you actually send a mail to someone that has a @code{To}
5672header that (probably) points to yourself. This will confuse people.
5673So, natcherly you'll only do that if you're really eVIl.
5674
5675This command is mainly used if you have several accounts and want to
5676ship a mail to a different account of yours. (If you're both
5677@code{root} and @code{postmaster} and get a mail for @code{postmaster}
5678to the @code{root} account, you may want to resend it to
5679@code{postmaster}. Ordnung muss sein!
5680
5681This command understands the process/prefix convention
5682(@pxref{Process/Prefix}).
5683
5684@item S D e
5685@kindex S D e (Summary)
5686@findex gnus-summary-resend-message-edit
5687
5688Like the previous command, but will allow you to edit the message as
5689if it were a new message before resending.
5690
5691@item S O m
5692@kindex S O m (Summary)
5693@findex gnus-uu-digest-mail-forward
5694Digest the current series (@pxref{Decoding Articles}) and forward the
5695result using mail (@code{gnus-uu-digest-mail-forward}). This command
5696uses the process/prefix convention (@pxref{Process/Prefix}).
5697
5698@item S M-c
5699@kindex S M-c (Summary)
5700@findex gnus-summary-mail-crosspost-complaint
5701@cindex crossposting
5702@cindex excessive crossposting
5703Send a complaint about excessive crossposting to the author of the
5704current article (@code{gnus-summary-mail-crosspost-complaint}).
5705
5706@findex gnus-crosspost-complaint
5707This command is provided as a way to fight back against the current
5708crossposting pandemic that's sweeping Usenet. It will compose a reply
5709using the @code{gnus-crosspost-complaint} variable as a preamble. This
5710command understands the process/prefix convention
5711(@pxref{Process/Prefix}) and will prompt you before sending each mail.
4009494e 5712
4009494e
GM
5713@end table
5714
8a1cdce5
AC
5715Also @xref{Header Commands, ,Header Commands, message, The Message
5716Manual}, for more information.
4009494e 5717
4009494e 5718
8a1cdce5
AC
5719@node Summary Post Commands
5720@subsection Summary Post Commands
5721@cindex post
5722@cindex composing news
4009494e 5723
8a1cdce5 5724Commands for posting a news article:
4009494e 5725
8a1cdce5
AC
5726@table @kbd
5727@item S p
5728@itemx a
5729@kindex a (Summary)
5730@kindex S p (Summary)
5731@findex gnus-summary-post-news
5732@c @icon{gnus-summary-post-news}
5733Prepare for posting an article (@code{gnus-summary-post-news}). By
5734default, post to the current group. If given a prefix, disable that.
5735If the prefix is 1, prompt for another group instead.
4009494e 5736
8a1cdce5
AC
5737@item S f
5738@itemx f
5739@kindex f (Summary)
5740@kindex S f (Summary)
5741@findex gnus-summary-followup
5742@c @icon{gnus-summary-followup}
5743Post a followup to the current article (@code{gnus-summary-followup}).
4009494e 5744
8a1cdce5
AC
5745@item S F
5746@itemx F
5747@kindex S F (Summary)
5748@kindex F (Summary)
5749@c @icon{gnus-summary-followup-with-original}
5750@findex gnus-summary-followup-with-original
5751Post a followup to the current article and include the original message
5752(@code{gnus-summary-followup-with-original}). This command uses the
5753process/prefix convention.
4009494e 5754
8a1cdce5
AC
5755@item S n
5756@kindex S n (Summary)
5757@findex gnus-summary-followup-to-mail
5758Post a followup to the current article via news, even if you got the
5759message through mail (@code{gnus-summary-followup-to-mail}).
5760
5761@item S N
5762@kindex S N (Summary)
5763@findex gnus-summary-followup-to-mail-with-original
5764Post a followup to the current article via news, even if you got the
5765message through mail and include the original message
5766(@code{gnus-summary-followup-to-mail-with-original}). This command uses
5767the process/prefix convention.
5768
5769@item S o p
5770@kindex S o p (Summary)
5771@findex gnus-summary-post-forward
5772Forward the current article to a newsgroup
5773(@code{gnus-summary-post-forward}).
5774 If no prefix is given, the message is forwarded according to the value
5775of (@code{message-forward-as-mime}) and
5776(@code{message-forward-show-mml}); if the prefix is 1, decode the
5777message and forward directly inline; if the prefix is 2, forward message
5778as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5779forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
5780directly inline; otherwise, the message is forwarded as no prefix given
5781but use the flipped value of (@code{message-forward-as-mime}). By
5782default, the message is decoded and forwarded as an rfc822 @acronym{MIME} section.
4009494e 5783
8a1cdce5
AC
5784@item S O p
5785@kindex S O p (Summary)
5786@findex gnus-uu-digest-post-forward
5787@cindex digests
5788@cindex making digests
5789Digest the current series and forward the result to a newsgroup
5790(@code{gnus-uu-digest-post-forward}). This command uses the
5791process/prefix convention.
4009494e 5792
8a1cdce5
AC
5793@item S u
5794@kindex S u (Summary)
5795@findex gnus-uu-post-news
5796@c @icon{gnus-uu-post-news}
5797Uuencode a file, split it into parts, and post it as a series
5798(@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}).
5799@end table
4009494e 5800
8a1cdce5
AC
5801Also @xref{Header Commands, ,Header Commands, message, The Message
5802Manual}, for more information.
4009494e 5803
4009494e 5804
8a1cdce5
AC
5805@node Summary Message Commands
5806@subsection Summary Message Commands
4009494e 5807
8a1cdce5
AC
5808@table @kbd
5809@item S y
5810@kindex S y (Summary)
5811@findex gnus-summary-yank-message
5812Yank the current article into an already existing Message composition
5813buffer (@code{gnus-summary-yank-message}). This command prompts for
5814what message buffer you want to yank into, and understands the
5815process/prefix convention (@pxref{Process/Prefix}).
01c52d31 5816
8a1cdce5 5817@end table
4009494e 5818
4009494e 5819
8a1cdce5
AC
5820@node Canceling and Superseding
5821@subsection Canceling Articles
5822@cindex canceling articles
5823@cindex superseding articles
4009494e 5824
8a1cdce5
AC
5825Have you ever written something, and then decided that you really,
5826really, really wish you hadn't posted that?
4009494e 5827
8a1cdce5 5828Well, you can't cancel mail, but you can cancel posts.
4009494e 5829
8a1cdce5
AC
5830@findex gnus-summary-cancel-article
5831@kindex C (Summary)
5832@c @icon{gnus-summary-cancel-article}
5833Find the article you wish to cancel (you can only cancel your own
5834articles, so don't try any funny stuff). Then press @kbd{C} or @kbd{S
5835c} (@code{gnus-summary-cancel-article}). Your article will be
5836canceled---machines all over the world will be deleting your article.
5837This command uses the process/prefix convention (@pxref{Process/Prefix}).
4009494e 5838
8a1cdce5
AC
5839Be aware, however, that not all sites honor cancels, so your article may
5840live on here and there, while most sites will delete the article in
5841question.
4009494e 5842
8a1cdce5
AC
5843Gnus will use the ``current'' select method when canceling. If you
5844want to use the standard posting method, use the @samp{a} symbolic
5845prefix (@pxref{Symbolic Prefixes}).
4009494e 5846
8a1cdce5
AC
5847Gnus ensures that only you can cancel your own messages using a
5848@code{Cancel-Lock} header (@pxref{Canceling News, Canceling News, ,
5849message, Message Manual}).
4009494e 5850
8a1cdce5
AC
5851If you discover that you have made some mistakes and want to do some
5852corrections, you can post a @dfn{superseding} article that will replace
5853your original article.
4009494e 5854
8a1cdce5
AC
5855@findex gnus-summary-supersede-article
5856@kindex S (Summary)
5857Go to the original article and press @kbd{S s}
5858(@code{gnus-summary-supersede-article}). You will be put in a buffer
5859where you can edit the article all you want before sending it off the
5860usual way.
4009494e 5861
8a1cdce5
AC
5862The same goes for superseding as for canceling, only more so: Some
5863sites do not honor superseding. On those sites, it will appear that you
5864have posted almost the same article twice.
4009494e 5865
8a1cdce5
AC
5866If you have just posted the article, and change your mind right away,
5867there is a trick you can use to cancel/supersede the article without
5868waiting for the article to appear on your site first. You simply return
5869to the post buffer (which is called @code{*sent ...*}). There you will
5870find the article you just posted, with all the headers intact. Change
5871the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
5872header by substituting one of those words for the word
5873@code{Message-ID}. Then just press @kbd{C-c C-c} to send the article as
5874you would do normally. The previous article will be
5875canceled/superseded.
4009494e 5876
8a1cdce5 5877Just remember, kids: There is no 'c' in 'supersede'.
4009494e 5878
8a1cdce5
AC
5879@node Delayed Articles
5880@section Delayed Articles
5881@cindex delayed sending
5882@cindex send delayed
5883
5884Sometimes, you might wish to delay the sending of a message. For
5885example, you might wish to arrange for a message to turn up just in time
5886to remind your about the birthday of your Significant Other. For this,
5887there is the @code{gnus-delay} package. Setup is simple:
4009494e 5888
8a1cdce5
AC
5889@lisp
5890(gnus-delay-initialize)
5891@end lisp
4009494e 5892
8a1cdce5
AC
5893@findex gnus-delay-article
5894Normally, to send a message you use the @kbd{C-c C-c} command from
5895Message mode. To delay a message, use @kbd{C-c C-j}
5896(@code{gnus-delay-article}) instead. This will ask you for how long the
5897message should be delayed. Possible answers are:
4009494e 5898
8a1cdce5
AC
5899@itemize @bullet
5900@item
5901A time span. Consists of an integer and a letter. For example,
5902@code{42d} means to delay for 42 days. Available letters are @code{m}
5903(minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M}
5904(months) and @code{Y} (years).
4009494e 5905
8a1cdce5
AC
5906@item
5907A specific date. Looks like @code{YYYY-MM-DD}. The message will be
5908delayed until that day, at a specific time (eight o'clock by default).
5909See also @code{gnus-delay-default-hour}.
4009494e 5910
8a1cdce5
AC
5911@item
5912A specific time of day. Given in @code{hh:mm} format, 24h, no am/pm
5913stuff. The deadline will be at that time today, except if that time has
5914already passed, then it's at the given time tomorrow. So if it's ten
5915o'clock in the morning and you specify @code{11:15}, then the deadline
5916is one hour and fifteen minutes hence. But if you specify @code{9:20},
5917that means a time tomorrow.
5918@end itemize
4009494e 5919
8a1cdce5
AC
5920The action of the @code{gnus-delay-article} command is influenced by a
5921couple of variables:
4009494e 5922
8a1cdce5
AC
5923@table @code
5924@item gnus-delay-default-hour
5925@vindex gnus-delay-default-hour
5926When you specify a specific date, the message will be due on that hour
5927on the given date. Possible values are integers 0 through 23.
4009494e 5928
8a1cdce5
AC
5929@item gnus-delay-default-delay
5930@vindex gnus-delay-default-delay
5931This is a string and gives the default delay. It can be of any of the
5932formats described above.
4009494e 5933
8a1cdce5
AC
5934@item gnus-delay-group
5935@vindex gnus-delay-group
5936Delayed articles will be kept in this group on the drafts server until
5937they are due. You probably don't need to change this. The default
5938value is @code{"delayed"}.
4009494e 5939
8a1cdce5
AC
5940@item gnus-delay-header
5941@vindex gnus-delay-header
5942The deadline for each article will be stored in a header. This variable
5943is a string and gives the header name. You probably don't need to
5944change this. The default value is @code{"X-Gnus-Delayed"}.
5945@end table
4009494e 5946
8a1cdce5
AC
5947The way delaying works is like this: when you use the
5948@code{gnus-delay-article} command, you give a certain delay. Gnus
5949calculates the deadline of the message and stores it in the
5950@code{X-Gnus-Delayed} header and puts the message in the
5951@code{nndraft:delayed} group.
4009494e 5952
8a1cdce5
AC
5953@findex gnus-delay-send-queue
5954And whenever you get new news, Gnus looks through the group for articles
5955which are due and sends them. It uses the @code{gnus-delay-send-queue}
5956function for this. By default, this function is added to the hook
5957@code{gnus-get-new-news-hook}. But of course, you can change this.
5958Maybe you want to use the demon to send drafts? Just tell the demon to
5959execute the @code{gnus-delay-send-queue} function.
4009494e 5960
8a1cdce5
AC
5961@table @code
5962@item gnus-delay-initialize
5963@findex gnus-delay-initialize
5964By default, this function installs @code{gnus-delay-send-queue} in
5965@code{gnus-get-new-news-hook}. But it accepts the optional second
5966argument @code{no-check}. If it is non-@code{nil},
5967@code{gnus-get-new-news-hook} is not changed. The optional first
5968argument is ignored.
4009494e 5969
8a1cdce5
AC
5970For example, @code{(gnus-delay-initialize nil t)} means to do nothing.
5971Presumably, you want to use the demon for sending due delayed articles.
5972Just don't forget to set that up :-)
4009494e
GM
5973@end table
5974
8a1cdce5
AC
5975When delaying an article with @kbd{C-c C-j}, Message mode will
5976automatically add a @code{"Date"} header with the current time. In
5977many cases you probably want the @code{"Date"} header to reflect the
5978time the message is sent instead. To do this, you have to delete
5979@code{Date} from @code{message-draft-headers}.
4009494e 5980
4009494e 5981
8a1cdce5
AC
5982@node Marking Articles
5983@section Marking Articles
5984@cindex article marking
5985@cindex article ticking
5986@cindex marks
4009494e 5987
8a1cdce5 5988There are several marks you can set on an article.
4009494e 5989
8a1cdce5
AC
5990You have marks that decide the @dfn{readedness} (whoo, neato-keano
5991neologism ohoy!) of the article. Alphabetic marks generally mean
5992@dfn{read}, while non-alphabetic characters generally mean @dfn{unread}.
4009494e 5993
8a1cdce5 5994In addition, you also have marks that do not affect readedness.
4009494e 5995
8a1cdce5
AC
5996@ifinfo
5997There's a plethora of commands for manipulating these marks.
5998@end ifinfo
4009494e 5999
8a1cdce5
AC
6000@menu
6001* Unread Articles:: Marks for unread articles.
6002* Read Articles:: Marks for read articles.
6003* Other Marks:: Marks that do not affect readedness.
6004* Setting Marks:: How to set and remove marks.
6005* Generic Marking Commands:: How to customize the marking.
6006* Setting Process Marks:: How to mark articles for later processing.
6007@end menu
4009494e 6008
4009494e 6009
8a1cdce5
AC
6010@node Unread Articles
6011@subsection Unread Articles
85115796 6012
8a1cdce5
AC
6013The following marks mark articles as (kinda) unread, in one form or
6014other.
4009494e 6015
8a1cdce5
AC
6016@table @samp
6017@item !
6018@vindex gnus-ticked-mark
6019Marked as ticked (@code{gnus-ticked-mark}).
4009494e 6020
8a1cdce5
AC
6021@dfn{Ticked articles} are articles that will remain visible always. If
6022you see an article that you find interesting, or you want to put off
6023reading it, or replying to it, until sometime later, you'd typically
6024tick it. However, articles can be expired (from news servers by the
6025news server software, Gnus itself never expires ticked messages), so if
6026you want to keep an article forever, you'll have to make it persistent
6027(@pxref{Persistent Articles}).
4009494e 6028
8a1cdce5
AC
6029@item ?
6030@vindex gnus-dormant-mark
6031Marked as dormant (@code{gnus-dormant-mark}).
4009494e 6032
8a1cdce5
AC
6033@dfn{Dormant articles} will only appear in the summary buffer if there
6034are followups to it. If you want to see them even if they don't have
6035followups, you can use the @kbd{/ D} command (@pxref{Limiting}).
6036Otherwise (except for the visibility issue), they are just like ticked
6037messages.
4009494e 6038
8a1cdce5
AC
6039@item SPACE
6040@vindex gnus-unread-mark
6041Marked as unread (@code{gnus-unread-mark}).
4009494e 6042
8a1cdce5
AC
6043@dfn{Unread articles} are articles that haven't been read at all yet.
6044@end table
4009494e 6045
4009494e 6046
8a1cdce5
AC
6047@node Read Articles
6048@subsection Read Articles
6049@cindex expirable mark
4009494e 6050
8a1cdce5 6051All the following marks mark articles as read.
4009494e 6052
8a1cdce5 6053@table @samp
4009494e 6054
8a1cdce5
AC
6055@item r
6056@vindex gnus-del-mark
6057These are articles that the user has marked as read with the @kbd{d}
6058command manually, more or less (@code{gnus-del-mark}).
4009494e 6059
8a1cdce5
AC
6060@item R
6061@vindex gnus-read-mark
6062Articles that have actually been read (@code{gnus-read-mark}).
4009494e 6063
8a1cdce5
AC
6064@item O
6065@vindex gnus-ancient-mark
6066Articles that were marked as read in previous sessions and are now
6067@dfn{old} (@code{gnus-ancient-mark}).
4009494e 6068
8a1cdce5
AC
6069@item K
6070@vindex gnus-killed-mark
6071Marked as killed (@code{gnus-killed-mark}).
4009494e 6072
8a1cdce5
AC
6073@item X
6074@vindex gnus-kill-file-mark
6075Marked as killed by kill files (@code{gnus-kill-file-mark}).
4009494e 6076
8a1cdce5
AC
6077@item Y
6078@vindex gnus-low-score-mark
6079Marked as read by having too low a score (@code{gnus-low-score-mark}).
4009494e 6080
8a1cdce5
AC
6081@item C
6082@vindex gnus-catchup-mark
6083Marked as read by a catchup (@code{gnus-catchup-mark}).
4009494e 6084
8a1cdce5
AC
6085@item G
6086@vindex gnus-canceled-mark
6087Canceled article (@code{gnus-canceled-mark})
4009494e 6088
8a1cdce5
AC
6089@item Q
6090@vindex gnus-sparse-mark
6091Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing
6092Threading}.
4009494e 6093
8a1cdce5
AC
6094@item M
6095@vindex gnus-duplicate-mark
6096Article marked as read by duplicate suppression
6097(@code{gnus-duplicate-mark}). @xref{Duplicate Suppression}.
4009494e
GM
6098
6099@end table
6100
8a1cdce5
AC
6101All these marks just mean that the article is marked as read, really.
6102They are interpreted differently when doing adaptive scoring, though.
4009494e 6103
8a1cdce5 6104One more special mark, though:
4009494e 6105
8a1cdce5
AC
6106@table @samp
6107@item E
6108@vindex gnus-expirable-mark
6109Marked as expirable (@code{gnus-expirable-mark}).
4009494e 6110
8a1cdce5
AC
6111Marking articles as @dfn{expirable} (or have them marked as such
6112automatically) doesn't make much sense in normal groups---a user doesn't
6113control expiring of news articles, but in mail groups, for instance,
6114articles marked as @dfn{expirable} can be deleted by Gnus at
6115any time.
6116@end table
4009494e 6117
4009494e 6118
8a1cdce5
AC
6119@node Other Marks
6120@subsection Other Marks
6121@cindex process mark
6122@cindex bookmarks
4009494e 6123
8a1cdce5
AC
6124There are some marks that have nothing to do with whether the article is
6125read or not.
4009494e 6126
8a1cdce5 6127@itemize @bullet
4009494e 6128
8a1cdce5
AC
6129@item
6130You can set a bookmark in the current article. Say you are reading a
6131long thesis on cats' urinary tracts, and have to go home for dinner
6132before you've finished reading the thesis. You can then set a bookmark
6133in the article, and Gnus will jump to this bookmark the next time it
6134encounters the article. @xref{Setting Marks}.
4009494e 6135
8a1cdce5
AC
6136@item
6137@vindex gnus-replied-mark
6138All articles that you have replied to or made a followup to (i.e., have
6139answered) will be marked with an @samp{A} in the second column
6140(@code{gnus-replied-mark}).
4009494e 6141
8a1cdce5
AC
6142@item
6143@vindex gnus-forwarded-mark
6144All articles that you have forwarded will be marked with an @samp{F} in
6145the second column (@code{gnus-forwarded-mark}).
4009494e 6146
8a1cdce5
AC
6147@item
6148@vindex gnus-cached-mark
6149Articles stored in the article cache will be marked with an @samp{*} in
6150the second column (@code{gnus-cached-mark}). @xref{Article Caching}.
4009494e 6151
8a1cdce5
AC
6152@item
6153@vindex gnus-saved-mark
6154Articles ``saved'' (in some manner or other; not necessarily
6155religiously) are marked with an @samp{S} in the second column
6156(@code{gnus-saved-mark}).
4009494e 6157
8a1cdce5
AC
6158@item
6159@vindex gnus-unseen-mark
6160Articles that haven't been seen before in Gnus by the user are marked
6161with a @samp{.} in the second column (@code{gnus-unseen-mark}).
4009494e 6162
8a1cdce5
AC
6163@item
6164@vindex gnus-downloaded-mark
6165When using the Gnus agent (@pxref{Agent Basics}), articles may be
6166downloaded for unplugged (offline) viewing. If you are using the
6167@samp{%O} spec, these articles get the @samp{+} mark in that spec.
6168(The variable @code{gnus-downloaded-mark} controls which character to
6169use.)
4009494e 6170
8a1cdce5
AC
6171@item
6172@vindex gnus-undownloaded-mark
6173When using the Gnus agent (@pxref{Agent Basics}), some articles might
6174not have been downloaded. Such articles cannot be viewed while you
6175are unplugged (offline). If you are using the @samp{%O} spec, these
6176articles get the @samp{-} mark in that spec. (The variable
6177@code{gnus-undownloaded-mark} controls which character to use.)
4009494e 6178
8a1cdce5
AC
6179@item
6180@vindex gnus-downloadable-mark
6181The Gnus agent (@pxref{Agent Basics}) downloads some articles
6182automatically, but it is also possible to explicitly mark articles for
6183download, even if they would not be downloaded automatically. Such
6184explicitly-marked articles get the @samp{%} mark in the first column.
6185(The variable @code{gnus-downloadable-mark} controls which character to
6186use.)
4009494e 6187
8a1cdce5
AC
6188@item
6189@vindex gnus-not-empty-thread-mark
6190@vindex gnus-empty-thread-mark
6191If the @samp{%e} spec is used, the presence of threads or not will be
6192marked with @code{gnus-not-empty-thread-mark} and
6193@code{gnus-empty-thread-mark} in the third column, respectively.
4009494e 6194
8a1cdce5
AC
6195@item
6196@vindex gnus-process-mark
6197Finally we have the @dfn{process mark} (@code{gnus-process-mark}). A
6198variety of commands react to the presence of the process mark. For
6199instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view
6200all articles that have been marked with the process mark. Articles
6201marked with the process mark have a @samp{#} in the second column.
4009494e 6202
8a1cdce5 6203@end itemize
4009494e 6204
8a1cdce5
AC
6205You might have noticed that most of these ``non-readedness'' marks
6206appear in the second column by default. So if you have a cached, saved,
6207replied article that you have process-marked, what will that look like?
4009494e 6208
8a1cdce5
AC
6209Nothing much. The precedence rules go as follows: process -> cache ->
6210replied -> saved. So if the article is in the cache and is replied,
6211you'll only see the cache mark and not the replied mark.
4009494e 6212
4009494e 6213
8a1cdce5
AC
6214@node Setting Marks
6215@subsection Setting Marks
6216@cindex setting marks
6217
6218All the marking commands understand the numeric prefix.
4009494e 6219
8a1cdce5
AC
6220@table @kbd
6221@item M c
6222@itemx M-u
6223@kindex M c (Summary)
6224@kindex M-u (Summary)
6225@findex gnus-summary-clear-mark-forward
6226@cindex mark as unread
6227Clear all readedness-marks from the current article
6228(@code{gnus-summary-clear-mark-forward}). In other words, mark the
6229article as unread.
4009494e 6230
8a1cdce5
AC
6231@item M t
6232@itemx !
6233@kindex ! (Summary)
6234@kindex M t (Summary)
6235@findex gnus-summary-tick-article-forward
6236Tick the current article (@code{gnus-summary-tick-article-forward}).
6237@xref{Article Caching}.
4009494e 6238
8a1cdce5
AC
6239@item M ?
6240@itemx ?
6241@kindex ? (Summary)
6242@kindex M ? (Summary)
6243@findex gnus-summary-mark-as-dormant
6244Mark the current article as dormant
6245(@code{gnus-summary-mark-as-dormant}). @xref{Article Caching}.
4009494e 6246
8a1cdce5
AC
6247@item M d
6248@itemx d
6249@kindex M d (Summary)
6250@kindex d (Summary)
6251@findex gnus-summary-mark-as-read-forward
6252Mark the current article as read
6253(@code{gnus-summary-mark-as-read-forward}).
4009494e 6254
8a1cdce5
AC
6255@item D
6256@kindex D (Summary)
6257@findex gnus-summary-mark-as-read-backward
6258Mark the current article as read and move point to the previous line
6259(@code{gnus-summary-mark-as-read-backward}).
4009494e 6260
8a1cdce5
AC
6261@item M k
6262@itemx k
6263@kindex k (Summary)
6264@kindex M k (Summary)
6265@findex gnus-summary-kill-same-subject-and-select
6266Mark all articles that have the same subject as the current one as read,
6267and then select the next unread article
6268(@code{gnus-summary-kill-same-subject-and-select}).
4009494e 6269
8a1cdce5
AC
6270@item M K
6271@itemx C-k
6272@kindex M K (Summary)
6273@kindex C-k (Summary)
6274@findex gnus-summary-kill-same-subject
6275Mark all articles that have the same subject as the current one as read
6276(@code{gnus-summary-kill-same-subject}).
4009494e 6277
8a1cdce5
AC
6278@item M C
6279@kindex M C (Summary)
6280@findex gnus-summary-catchup
6281@c @icon{gnus-summary-catchup}
6282Mark all unread articles as read (@code{gnus-summary-catchup}).
4009494e 6283
8a1cdce5
AC
6284@item M C-c
6285@kindex M C-c (Summary)
6286@findex gnus-summary-catchup-all
6287Mark all articles in the group as read---even the ticked and dormant
6288articles (@code{gnus-summary-catchup-all}).
4009494e 6289
8a1cdce5
AC
6290@item M H
6291@kindex M H (Summary)
6292@findex gnus-summary-catchup-to-here
6293Catchup the current group to point (before the point)
6294(@code{gnus-summary-catchup-to-here}).
4009494e 6295
8a1cdce5
AC
6296@item M h
6297@kindex M h (Summary)
6298@findex gnus-summary-catchup-from-here
6299Catchup the current group from point (after the point)
6300(@code{gnus-summary-catchup-from-here}).
4009494e 6301
8a1cdce5
AC
6302@item C-w
6303@kindex C-w (Summary)
6304@findex gnus-summary-mark-region-as-read
6305Mark all articles between point and mark as read
6306(@code{gnus-summary-mark-region-as-read}).
4009494e 6307
8a1cdce5
AC
6308@item M V k
6309@kindex M V k (Summary)
6310@findex gnus-summary-kill-below
6311Kill all articles with scores below the default score (or below the
6312numeric prefix) (@code{gnus-summary-kill-below}).
4009494e 6313
8a1cdce5
AC
6314@item M e
6315@itemx E
6316@kindex M e (Summary)
6317@kindex E (Summary)
6318@findex gnus-summary-mark-as-expirable
6319Mark the current article as expirable
6320(@code{gnus-summary-mark-as-expirable}).
4009494e 6321
8a1cdce5
AC
6322@item M b
6323@kindex M b (Summary)
6324@findex gnus-summary-set-bookmark
6325Set a bookmark in the current article
6326(@code{gnus-summary-set-bookmark}).
4009494e 6327
8a1cdce5
AC
6328@item M B
6329@kindex M B (Summary)
6330@findex gnus-summary-remove-bookmark
6331Remove the bookmark from the current article
6332(@code{gnus-summary-remove-bookmark}).
4009494e 6333
8a1cdce5
AC
6334@item M V c
6335@kindex M V c (Summary)
6336@findex gnus-summary-clear-above
6337Clear all marks from articles with scores over the default score (or
6338over the numeric prefix) (@code{gnus-summary-clear-above}).
4009494e 6339
8a1cdce5
AC
6340@item M V u
6341@kindex M V u (Summary)
6342@findex gnus-summary-tick-above
6343Tick all articles with scores over the default score (or over the
6344numeric prefix) (@code{gnus-summary-tick-above}).
4009494e 6345
8a1cdce5
AC
6346@item M V m
6347@kindex M V m (Summary)
6348@findex gnus-summary-mark-above
6349Prompt for a mark, and mark all articles with scores over the default
6350score (or over the numeric prefix) with this mark
6351(@code{gnus-summary-clear-above}).
6352@end table
4009494e 6353
8a1cdce5
AC
6354@vindex gnus-summary-goto-unread
6355The @code{gnus-summary-goto-unread} variable controls what action should
6356be taken after setting a mark. If non-@code{nil}, point will move to
6357the next/previous unread article. If @code{nil}, point will just move
6358one line up or down. As a special case, if this variable is
6359@code{never}, all the marking commands as well as other commands (like
6360@kbd{SPACE}) will move to the next article, whether it is unread or not.
6361The default is @code{t}.
4009494e 6362
4009494e 6363
8a1cdce5
AC
6364@node Generic Marking Commands
6365@subsection Generic Marking Commands
4009494e 6366
8a1cdce5
AC
6367Some people would like the command that ticks an article (@kbd{!}) go to
6368the next article. Others would like it to go to the next unread
6369article. Yet others would like it to stay on the current article. And
6370even though I haven't heard of anybody wanting it to go to the
6371previous (unread) article, I'm sure there are people that want that as
6372well.
4009494e 6373
8a1cdce5
AC
6374Multiply these five behaviors with five different marking commands, and
6375you get a potentially complex set of variable to control what each
6376command should do.
4009494e 6377
8a1cdce5
AC
6378To sidestep that mess, Gnus provides commands that do all these
6379different things. They can be found on the @kbd{M M} map in the summary
6380buffer. Type @kbd{M M C-h} to see them all---there are too many of them
6381to list in this manual.
4009494e 6382
8a1cdce5
AC
6383While you can use these commands directly, most users would prefer
6384altering the summary mode keymap. For instance, if you would like the
6385@kbd{!} command to go to the next article instead of the next unread
6386article, you could say something like:
4009494e 6387
8a1cdce5
AC
6388@lisp
6389@group
6390(add-hook 'gnus-summary-mode-hook 'my-alter-summary-map)
6391(defun my-alter-summary-map ()
6392 (local-set-key "!" 'gnus-summary-put-mark-as-ticked-next))
6393@end group
6394@end lisp
4009494e 6395
8a1cdce5
AC
6396@noindent
6397or
4009494e 6398
8a1cdce5
AC
6399@lisp
6400(defun my-alter-summary-map ()
6401 (local-set-key "!" "MM!n"))
6402@end lisp
4009494e
GM
6403
6404
8a1cdce5
AC
6405@node Setting Process Marks
6406@subsection Setting Process Marks
6407@cindex setting process marks
4009494e 6408
8a1cdce5
AC
6409Process marks are displayed as @code{#} in the summary buffer, and are
6410used for marking articles in such a way that other commands will
6411process these articles. For instance, if you process mark four
6412articles and then use the @kbd{*} command, Gnus will enter these four
6413articles into the cache. For more information,
6414@pxref{Process/Prefix}.
4009494e
GM
6415
6416@table @kbd
4009494e 6417
8a1cdce5
AC
6418@item M P p
6419@itemx #
6420@kindex # (Summary)
6421@kindex M P p (Summary)
6422@findex gnus-summary-mark-as-processable
6423Mark the current article with the process mark
6424(@code{gnus-summary-mark-as-processable}).
6425@findex gnus-summary-unmark-as-processable
4009494e 6426
8a1cdce5
AC
6427@item M P u
6428@itemx M-#
6429@kindex M P u (Summary)
6430@kindex M-# (Summary)
6431Remove the process mark, if any, from the current article
6432(@code{gnus-summary-unmark-as-processable}).
4009494e 6433
8a1cdce5
AC
6434@item M P U
6435@kindex M P U (Summary)
6436@findex gnus-summary-unmark-all-processable
6437Remove the process mark from all articles
6438(@code{gnus-summary-unmark-all-processable}).
4009494e 6439
8a1cdce5
AC
6440@item M P i
6441@kindex M P i (Summary)
6442@findex gnus-uu-invert-processable
6443Invert the list of process marked articles
6444(@code{gnus-uu-invert-processable}).
4009494e 6445
8a1cdce5
AC
6446@item M P R
6447@kindex M P R (Summary)
6448@findex gnus-uu-mark-by-regexp
6449Mark articles that have a @code{Subject} header that matches a regular
6450expression (@code{gnus-uu-mark-by-regexp}).
4009494e 6451
8a1cdce5
AC
6452@item M P G
6453@kindex M P G (Summary)
6454@findex gnus-uu-unmark-by-regexp
6455Unmark articles that have a @code{Subject} header that matches a regular
6456expression (@code{gnus-uu-unmark-by-regexp}).
4009494e 6457
8a1cdce5
AC
6458@item M P r
6459@kindex M P r (Summary)
6460@findex gnus-uu-mark-region
6461Mark articles in region (@code{gnus-uu-mark-region}).
4009494e 6462
8a1cdce5
AC
6463@item M P g
6464@kindex M P g (Summary)
6465@findex gnus-uu-unmark-region
6466Unmark articles in region (@code{gnus-uu-unmark-region}).
4009494e 6467
8a1cdce5
AC
6468@item M P t
6469@kindex M P t (Summary)
6470@findex gnus-uu-mark-thread
6471Mark all articles in the current (sub)thread
6472(@code{gnus-uu-mark-thread}).
4009494e 6473
8a1cdce5
AC
6474@item M P T
6475@kindex M P T (Summary)
6476@findex gnus-uu-unmark-thread
6477Unmark all articles in the current (sub)thread
6478(@code{gnus-uu-unmark-thread}).
4009494e 6479
8a1cdce5
AC
6480@item M P v
6481@kindex M P v (Summary)
6482@findex gnus-uu-mark-over
6483Mark all articles that have a score above the prefix argument
6484(@code{gnus-uu-mark-over}).
4009494e 6485
8a1cdce5
AC
6486@item M P s
6487@kindex M P s (Summary)
6488@findex gnus-uu-mark-series
6489Mark all articles in the current series (@code{gnus-uu-mark-series}).
4009494e 6490
8a1cdce5
AC
6491@item M P S
6492@kindex M P S (Summary)
6493@findex gnus-uu-mark-sparse
6494Mark all series that have already had some articles marked
6495(@code{gnus-uu-mark-sparse}).
4009494e 6496
8a1cdce5
AC
6497@item M P a
6498@kindex M P a (Summary)
6499@findex gnus-uu-mark-all
6500Mark all articles in series order (@code{gnus-uu-mark-all}).
6501
6502@item M P b
6503@kindex M P b (Summary)
6504@findex gnus-uu-mark-buffer
6505Mark all articles in the buffer in the order they appear
6506(@code{gnus-uu-mark-buffer}).
6507
6508@item M P k
6509@kindex M P k (Summary)
6510@findex gnus-summary-kill-process-mark
6511Push the current process mark set onto the stack and unmark all articles
6512(@code{gnus-summary-kill-process-mark}).
6513
6514@item M P y
6515@kindex M P y (Summary)
6516@findex gnus-summary-yank-process-mark
6517Pop the previous process mark set from the stack and restore it
6518(@code{gnus-summary-yank-process-mark}).
4009494e 6519
8a1cdce5
AC
6520@item M P w
6521@kindex M P w (Summary)
6522@findex gnus-summary-save-process-mark
6523Push the current process mark set onto the stack
6524(@code{gnus-summary-save-process-mark}).
4009494e 6525
8a1cdce5 6526@end table
4009494e 6527
8a1cdce5
AC
6528Also see the @kbd{&} command in @ref{Searching for Articles}, for how to
6529set process marks based on article body contents.
4009494e 6530
4009494e 6531
8a1cdce5
AC
6532@node Limiting
6533@section Limiting
6534@cindex limiting
4009494e 6535
8a1cdce5
AC
6536It can be convenient to limit the summary buffer to just show some
6537subset of the articles currently in the group. The effect most limit
6538commands have is to remove a few (or many) articles from the summary
6539buffer.
4009494e 6540
8a1cdce5
AC
6541Limiting commands work on subsets of the articles already fetched from
6542the servers. These commands don't query the server for additional
6543articles.
4009494e 6544
8a1cdce5 6545@table @kbd
4009494e 6546
8a1cdce5
AC
6547@item / /
6548@itemx / s
6549@kindex / / (Summary)
6550@findex gnus-summary-limit-to-subject
6551Limit the summary buffer to articles that match some subject
6552(@code{gnus-summary-limit-to-subject}). If given a prefix, exclude
6553matching articles.
4009494e 6554
8a1cdce5
AC
6555@item / a
6556@kindex / a (Summary)
6557@findex gnus-summary-limit-to-author
6558Limit the summary buffer to articles that match some author
6559(@code{gnus-summary-limit-to-author}). If given a prefix, exclude
6560matching articles.
4009494e 6561
8a1cdce5
AC
6562@item / R
6563@kindex / R (Summary)
6564@findex gnus-summary-limit-to-recipient
6565Limit the summary buffer to articles that match some recipient
6566(@code{gnus-summary-limit-to-recipient}). If given a prefix, exclude
6567matching articles.
4009494e 6568
8a1cdce5
AC
6569@item / A
6570@kindex / A (Summary)
6571@findex gnus-summary-limit-to-address
6572Limit the summary buffer to articles in which contents of From, To or Cc
6573header match a given address (@code{gnus-summary-limit-to-address}). If
6574given a prefix, exclude matching articles.
4009494e 6575
8a1cdce5
AC
6576@item / S
6577@kindex / S (Summary)
6578@findex gnus-summary-limit-to-singletons
6579Limit the summary buffer to articles that aren't part of any displayed
6580threads (@code{gnus-summary-limit-to-singletons}). If given a prefix,
6581limit to articles that are part of displayed threads.
4009494e 6582
8a1cdce5
AC
6583@item / x
6584@kindex / x (Summary)
6585@findex gnus-summary-limit-to-extra
6586Limit the summary buffer to articles that match one of the ``extra''
6587headers (@pxref{To From Newsgroups})
6588(@code{gnus-summary-limit-to-extra}). If given a prefix, exclude
6589matching articles.
4009494e 6590
8a1cdce5
AC
6591@item / u
6592@itemx x
6593@kindex / u (Summary)
6594@kindex x (Summary)
6595@findex gnus-summary-limit-to-unread
6596Limit the summary buffer to articles not marked as read
6597(@code{gnus-summary-limit-to-unread}). If given a prefix, limit the
6598buffer to articles strictly unread. This means that ticked and
6599dormant articles will also be excluded.
4009494e 6600
8a1cdce5
AC
6601@item / m
6602@kindex / m (Summary)
6603@findex gnus-summary-limit-to-marks
6604Ask for a mark and then limit to all articles that have been marked
6605with that mark (@code{gnus-summary-limit-to-marks}).
4009494e 6606
8a1cdce5
AC
6607@item / t
6608@kindex / t (Summary)
6609@findex gnus-summary-limit-to-age
6610Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days
6611(@code{gnus-summary-limit-to-age}). If given a prefix, limit to
6612articles younger than that number of days.
4009494e 6613
8a1cdce5
AC
6614@item / n
6615@kindex / n (Summary)
6616@findex gnus-summary-limit-to-articles
6617With prefix @samp{n}, limit the summary buffer to the next @samp{n}
6618articles. If not given a prefix, use the process marked articles
6619instead. (@code{gnus-summary-limit-to-articles}).
4009494e 6620
8a1cdce5
AC
6621@item / w
6622@kindex / w (Summary)
6623@findex gnus-summary-pop-limit
6624Pop the previous limit off the stack and restore it
6625(@code{gnus-summary-pop-limit}). If given a prefix, pop all limits off
6626the stack.
4009494e 6627
8a1cdce5
AC
6628@item / .
6629@kindex / . (Summary)
6630@findex gnus-summary-limit-to-unseen
6631Limit the summary buffer to the unseen articles
6632(@code{gnus-summary-limit-to-unseen}).
4009494e 6633
8a1cdce5
AC
6634@item / v
6635@kindex / v (Summary)
6636@findex gnus-summary-limit-to-score
6637Limit the summary buffer to articles that have a score at or above some
6638score (@code{gnus-summary-limit-to-score}).
4009494e 6639
8a1cdce5
AC
6640@item / p
6641@kindex / p (Summary)
6642@findex gnus-summary-limit-to-display-predicate
6643Limit the summary buffer to articles that satisfy the @code{display}
6644group parameter predicate
6645(@code{gnus-summary-limit-to-display-predicate}). @xref{Group
6646Parameters}, for more on this predicate.
4009494e 6647
8a1cdce5
AC
6648@item / r
6649@kindex / r (Summary)
6650@findex gnus-summary-limit-to-replied
6651Limit the summary buffer to replied articles
6652(@code{gnus-summary-limit-to-replied}). If given a prefix, exclude
6653replied articles.
4009494e 6654
8a1cdce5
AC
6655@item / E
6656@itemx M S
6657@kindex M S (Summary)
6658@kindex / E (Summary)
6659@findex gnus-summary-limit-include-expunged
6660Include all expunged articles in the limit
6661(@code{gnus-summary-limit-include-expunged}).
4009494e 6662
8a1cdce5
AC
6663@item / D
6664@kindex / D (Summary)
6665@findex gnus-summary-limit-include-dormant
6666Include all dormant articles in the limit
6667(@code{gnus-summary-limit-include-dormant}).
4009494e 6668
8a1cdce5
AC
6669@item / *
6670@kindex / * (Summary)
6671@findex gnus-summary-limit-include-cached
6672Include all cached articles in the limit
6673(@code{gnus-summary-limit-include-cached}).
4009494e 6674
8a1cdce5
AC
6675@item / d
6676@kindex / d (Summary)
6677@findex gnus-summary-limit-exclude-dormant
6678Exclude all dormant articles from the limit
6679(@code{gnus-summary-limit-exclude-dormant}).
4009494e 6680
8a1cdce5
AC
6681@item / M
6682@kindex / M (Summary)
6683@findex gnus-summary-limit-exclude-marks
6684Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}).
e7842e69 6685
8a1cdce5
AC
6686@item / T
6687@kindex / T (Summary)
6688@findex gnus-summary-limit-include-thread
6689Include all the articles in the current thread in the limit.
4009494e 6690
8a1cdce5
AC
6691@item / c
6692@kindex / c (Summary)
6693@findex gnus-summary-limit-exclude-childless-dormant
6694Exclude all dormant articles that have no children from the limit@*
6695(@code{gnus-summary-limit-exclude-childless-dormant}).
4009494e 6696
8a1cdce5
AC
6697@item / C
6698@kindex / C (Summary)
6699@findex gnus-summary-limit-mark-excluded-as-read
6700Mark all excluded unread articles as read
6701(@code{gnus-summary-limit-mark-excluded-as-read}). If given a prefix,
6702also mark excluded ticked and dormant articles as read.
4009494e 6703
8a1cdce5
AC
6704@item / b
6705@kindex / b (Summary)
6706@findex gnus-summary-limit-to-bodies
6707Limit the summary buffer to articles that have bodies that match a
6708certain regexp (@code{gnus-summary-limit-to-bodies}). If given a
6709prefix, reverse the limit. This command is quite slow since it
6710requires selecting each article to find the matches.
4009494e 6711
8a1cdce5
AC
6712@item / h
6713@kindex / h (Summary)
6714@findex gnus-summary-limit-to-headers
6715Like the previous command, only limit to headers instead
6716(@code{gnus-summary-limit-to-headers}).
4009494e 6717
8a1cdce5 6718@end table
4009494e 6719
4009494e 6720
8a1cdce5
AC
6721The following commands aren't limiting commands, but use the @kbd{/}
6722prefix as well.
4009494e 6723
8a1cdce5
AC
6724@table @kbd
6725@item / N
6726@kindex / N (Summary)
6727@findex gnus-summary-insert-new-articles
6728Insert all new articles in the summary buffer. It scans for new emails
6729if @var{back-end}@code{-get-new-mail} is non-@code{nil}.
4009494e 6730
8a1cdce5
AC
6731@item / o
6732@kindex / o (Summary)
6733@findex gnus-summary-insert-old-articles
6734Insert all old articles in the summary buffer. If given a numbered
6735prefix, fetch this number of articles.
4009494e 6736
8a1cdce5 6737@end table
4009494e 6738
4009494e 6739
8a1cdce5
AC
6740@node Threading
6741@section Threading
6742@cindex threading
6743@cindex article threading
4009494e 6744
8a1cdce5
AC
6745Gnus threads articles by default. @dfn{To thread} is to put responses
6746to articles directly after the articles they respond to---in a
6747hierarchical fashion.
4009494e 6748
8a1cdce5
AC
6749Threading is done by looking at the @code{References} headers of the
6750articles. In a perfect world, this would be enough to build pretty
6751trees, but unfortunately, the @code{References} header is often broken
6752or simply missing. Weird news propagation exacerbates the problem,
6753so one has to employ other heuristics to get pleasing results. A
6754plethora of approaches exists, as detailed in horrible detail in
6755@ref{Customizing Threading}.
4009494e 6756
8a1cdce5 6757First, a quick overview of the concepts:
4009494e 6758
8a1cdce5
AC
6759@table @dfn
6760@item root
6761The top-most article in a thread; the first article in the thread.
4009494e 6762
8a1cdce5
AC
6763@item thread
6764A tree-like article structure.
4009494e 6765
8a1cdce5
AC
6766@item sub-thread
6767A small(er) section of this tree-like structure.
4009494e 6768
8a1cdce5
AC
6769@item loose threads
6770Threads often lose their roots due to article expiry, or due to the root
6771already having been read in a previous session, and not displayed in the
6772summary buffer. We then typically have many sub-threads that really
6773belong to one thread, but are without connecting roots. These are
6774called loose threads.
4009494e 6775
8a1cdce5
AC
6776@item thread gathering
6777An attempt to gather loose threads into bigger threads.
4009494e 6778
8a1cdce5
AC
6779@item sparse threads
6780A thread where the missing articles have been ``guessed'' at, and are
6781displayed as empty lines in the summary buffer.
4009494e 6782
8a1cdce5 6783@end table
4009494e 6784
4009494e 6785
8a1cdce5
AC
6786@menu
6787* Customizing Threading:: Variables you can change to affect the threading.
6788* Thread Commands:: Thread based commands in the summary buffer.
6789@end menu
4009494e 6790
4009494e 6791
8a1cdce5
AC
6792@node Customizing Threading
6793@subsection Customizing Threading
6794@cindex customizing threading
4009494e 6795
8a1cdce5
AC
6796@menu
6797* Loose Threads:: How Gnus gathers loose threads into bigger threads.
6798* Filling In Threads:: Making the threads displayed look fuller.
6799* More Threading:: Even more variables for fiddling with threads.
6800* Low-Level Threading:: You thought it was over@dots{} but you were wrong!
6801@end menu
4009494e 6802
4009494e 6803
8a1cdce5
AC
6804@node Loose Threads
6805@subsubsection Loose Threads
6806@cindex <
6807@cindex >
6808@cindex loose threads
4009494e 6809
8a1cdce5
AC
6810@table @code
6811@item gnus-summary-make-false-root
6812@vindex gnus-summary-make-false-root
6813If non-@code{nil}, Gnus will gather all loose subtrees into one big tree
6814and create a dummy root at the top. (Wait a minute. Root at the top?
6815Yup.) Loose subtrees occur when the real root has expired, or you've
6816read or killed the root in a previous session.
4009494e 6817
8a1cdce5
AC
6818When there is no real root of a thread, Gnus will have to fudge
6819something. This variable says what fudging method Gnus should use.
6820There are four possible values:
4009494e 6821
8a1cdce5
AC
6822@iftex
6823@iflatex
6824\gnusfigure{The Summary Buffer}{390}{
6825\put(0,0){\epsfig{figure=ps/summary-adopt,width=7.5cm}}
6826\put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-empty,width=7.5cm}}}
6827\put(0,400){\makebox(0,0)[tl]{\epsfig{figure=ps/summary-none,width=7.5cm}}}
6828\put(445,400){\makebox(0,0)[tr]{\epsfig{figure=ps/summary-dummy,width=7.5cm}}}
6829}
6830@end iflatex
6831@end iftex
4009494e 6832
8a1cdce5 6833@cindex adopting articles
4009494e 6834
8a1cdce5 6835@table @code
4009494e 6836
8a1cdce5
AC
6837@item adopt
6838Gnus will make the first of the orphaned articles the parent. This
6839parent will adopt all the other articles. The adopted articles will be
6840marked as such by pointy brackets (@samp{<>}) instead of the standard
6841square brackets (@samp{[]}). This is the default method.
4009494e 6842
8a1cdce5
AC
6843@item dummy
6844@vindex gnus-summary-dummy-line-format
6845@vindex gnus-summary-make-false-root-always
6846Gnus will create a dummy summary line that will pretend to be the
6847parent. This dummy line does not correspond to any real article, so
6848selecting it will just select the first real article after the dummy
6849article. @code{gnus-summary-dummy-line-format} is used to specify the
6850format of the dummy roots. It accepts only one format spec: @samp{S},
6851which is the subject of the article. @xref{Formatting Variables}.
6852If you want all threads to have a dummy root, even the non-gathered
6853ones, set @code{gnus-summary-make-false-root-always} to @code{t}.
4009494e 6854
8a1cdce5
AC
6855@item empty
6856Gnus won't actually make any article the parent, but simply leave the
6857subject field of all orphans except the first empty. (Actually, it will
6858use @code{gnus-summary-same-subject} as the subject (@pxref{Summary
6859Buffer Format}).)
4009494e 6860
8a1cdce5
AC
6861@item none
6862Don't make any article parent at all. Just gather the threads and
6863display them after one another.
4009494e 6864
8a1cdce5
AC
6865@item nil
6866Don't gather loose threads.
6867@end table
4009494e 6868
8a1cdce5
AC
6869@item gnus-summary-gather-subject-limit
6870@vindex gnus-summary-gather-subject-limit
6871Loose threads are gathered by comparing subjects of articles. If this
6872variable is @code{nil}, Gnus requires an exact match between the
6873subjects of the loose threads before gathering them into one big
6874super-thread. This might be too strict a requirement, what with the
6875presence of stupid newsreaders that chop off long subject lines. If
6876you think so, set this variable to, say, 20 to require that only the
6877first 20 characters of the subjects have to match. If you set this
6878variable to a really low number, you'll find that Gnus will gather
6879everything in sight into one thread, which isn't very helpful.
4009494e 6880
8a1cdce5
AC
6881@cindex fuzzy article gathering
6882If you set this variable to the special value @code{fuzzy}, Gnus will
6883use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
6884Matching}).
4009494e 6885
8a1cdce5
AC
6886@item gnus-simplify-subject-fuzzy-regexp
6887@vindex gnus-simplify-subject-fuzzy-regexp
6888This can either be a regular expression or list of regular expressions
6889that match strings that will be removed from subjects if fuzzy subject
6890simplification is used.
4009494e 6891
8a1cdce5
AC
6892@item gnus-simplify-ignored-prefixes
6893@vindex gnus-simplify-ignored-prefixes
6894If you set @code{gnus-summary-gather-subject-limit} to something as low
6895as 10, you might consider setting this variable to something sensible:
4009494e 6896
8a1cdce5
AC
6897@c Written by Michael Ernst <mernst@cs.rice.edu>
6898@lisp
6899(setq gnus-simplify-ignored-prefixes
6900 (concat
6901 "\\`\\[?\\("
6902 (mapconcat
6903 'identity
6904 '("looking"
6905 "wanted" "followup" "summary\\( of\\)?"
6906 "help" "query" "problem" "question"
6907 "answer" "reference" "announce"
6908 "How can I" "How to" "Comparison of"
6909 ;; ...
6910 )
6911 "\\|")
6912 "\\)\\s *\\("
6913 (mapconcat 'identity
6914 '("for" "for reference" "with" "about")
6915 "\\|")
6916 "\\)?\\]?:?[ \t]*"))
6917@end lisp
4009494e 6918
8a1cdce5
AC
6919All words that match this regexp will be removed before comparing two
6920subjects.
4009494e 6921
8a1cdce5
AC
6922@item gnus-simplify-subject-functions
6923@vindex gnus-simplify-subject-functions
6924If non-@code{nil}, this variable overrides
6925@code{gnus-summary-gather-subject-limit}. This variable should be a
6926list of functions to apply to the @code{Subject} string iteratively to
6927arrive at the simplified version of the string.
4009494e 6928
8a1cdce5 6929Useful functions to put in this list include:
4009494e 6930
8a1cdce5
AC
6931@table @code
6932@item gnus-simplify-subject-re
6933@findex gnus-simplify-subject-re
6934Strip the leading @samp{Re:}.
4009494e 6935
8a1cdce5
AC
6936@item gnus-simplify-subject-fuzzy
6937@findex gnus-simplify-subject-fuzzy
6938Simplify fuzzily.
4009494e 6939
8a1cdce5
AC
6940@item gnus-simplify-whitespace
6941@findex gnus-simplify-whitespace
6942Remove excessive whitespace.
4009494e 6943
8a1cdce5
AC
6944@item gnus-simplify-all-whitespace
6945@findex gnus-simplify-all-whitespace
6946Remove all whitespace.
6947@end table
4009494e 6948
8a1cdce5 6949You may also write your own functions, of course.
4009494e 6950
4009494e 6951
8a1cdce5
AC
6952@item gnus-summary-gather-exclude-subject
6953@vindex gnus-summary-gather-exclude-subject
6954Since loose thread gathering is done on subjects only, that might lead
6955to many false hits, especially with certain common subjects like
6956@samp{} and @samp{(none)}. To make the situation slightly better,
6957you can use the regexp @code{gnus-summary-gather-exclude-subject} to say
6958what subjects should be excluded from the gathering process.@*
6959The default is @samp{^ *$\\|^(none)$}.
4009494e 6960
8a1cdce5
AC
6961@item gnus-summary-thread-gathering-function
6962@vindex gnus-summary-thread-gathering-function
6963Gnus gathers threads by looking at @code{Subject} headers. This means
6964that totally unrelated articles may end up in the same ``thread'', which
6965is confusing. An alternate approach is to look at all the
6966@code{Message-ID}s in all the @code{References} headers to find matches.
6967This will ensure that no gathered threads ever include unrelated
6968articles, but it also means that people who have posted with broken
6969newsreaders won't be gathered properly. The choice is yours---plague or
6970cholera:
4009494e 6971
8a1cdce5
AC
6972@table @code
6973@item gnus-gather-threads-by-subject
6974@findex gnus-gather-threads-by-subject
6975This function is the default gathering function and looks at
6976@code{Subject}s exclusively.
4009494e 6977
8a1cdce5
AC
6978@item gnus-gather-threads-by-references
6979@findex gnus-gather-threads-by-references
6980This function looks at @code{References} headers exclusively.
6981@end table
4009494e 6982
8a1cdce5
AC
6983If you want to test gathering by @code{References}, you could say
6984something like:
4009494e 6985
8a1cdce5
AC
6986@lisp
6987(setq gnus-summary-thread-gathering-function
6988 'gnus-gather-threads-by-references)
6989@end lisp
4009494e 6990
8a1cdce5 6991@end table
4009494e 6992
4009494e 6993
8a1cdce5
AC
6994@node Filling In Threads
6995@subsubsection Filling In Threads
4009494e 6996
8a1cdce5
AC
6997@table @code
6998@item gnus-fetch-old-headers
6999@vindex gnus-fetch-old-headers
7000If non-@code{nil}, Gnus will attempt to build old threads by fetching
7001more old headers---headers to articles marked as read. If you would
7002like to display as few summary lines as possible, but still connect as
7003many loose threads as possible, you should set this variable to
7004@code{some} or a number. If you set it to a number, no more than that
7005number of extra old headers will be fetched. In either case, fetching
7006old headers only works if the back end you are using carries overview
7007files---this would normally be @code{nntp}, @code{nnspool},
7008@code{nnml}, and @code{nnmaildir}. Also remember that if the root of
7009the thread has been expired by the server, there's not much Gnus can
7010do about that.
4009494e 7011
8a1cdce5
AC
7012This variable can also be set to @code{invisible}. This won't have any
7013visible effects, but is useful if you use the @kbd{A T} command a lot
7014(@pxref{Finding the Parent}).
4009494e 7015
8a1cdce5 7016The server has to support @acronym{NOV} for any of this to work.
4009494e 7017
8a1cdce5
AC
7018@cindex Gmane, gnus-fetch-old-headers
7019This feature can seriously impact performance it ignores all locally
7020cached header entries. Setting it to @code{t} for groups for a server
7021that doesn't expire articles (such as news.gmane.org), leads to very
7022slow summary generation.
4009494e 7023
8a1cdce5
AC
7024@item gnus-fetch-old-ephemeral-headers
7025@vindex gnus-fetch-old-ephemeral-headers
7026Same as @code{gnus-fetch-old-headers}, but only used for ephemeral
7027newsgroups.
4009494e 7028
8a1cdce5
AC
7029@item gnus-build-sparse-threads
7030@vindex gnus-build-sparse-threads
7031Fetching old headers can be slow. A low-rent similar effect can be
7032gotten by setting this variable to @code{some}. Gnus will then look at
7033the complete @code{References} headers of all articles and try to string
7034together articles that belong in the same thread. This will leave
7035@dfn{gaps} in the threading display where Gnus guesses that an article
7036is missing from the thread. (These gaps appear like normal summary
7037lines. If you select a gap, Gnus will try to fetch the article in
7038question.) If this variable is @code{t}, Gnus will display all these
7039``gaps'' without regard for whether they are useful for completing the
7040thread or not. Finally, if this variable is @code{more}, Gnus won't cut
7041off sparse leaf nodes that don't lead anywhere. This variable is
7042@code{nil} by default.
4009494e 7043
8a1cdce5
AC
7044@item gnus-read-all-available-headers
7045@vindex gnus-read-all-available-headers
7046This is a rather obscure variable that few will find useful. It's
7047intended for those non-news newsgroups where the back end has to fetch
7048quite a lot to present the summary buffer, and where it's impossible to
7049go back to parents of articles. This is mostly the case in the
7050web-based groups.
4009494e 7051
8a1cdce5
AC
7052If you don't use those, then it's safe to leave this as the default
7053@code{nil}. If you want to use this variable, it should be a regexp
7054that matches the group name, or @code{t} for all groups.
4009494e 7055
8a1cdce5 7056@end table
4009494e 7057
4009494e 7058
8a1cdce5
AC
7059@node More Threading
7060@subsubsection More Threading
4009494e 7061
8a1cdce5
AC
7062@table @code
7063@item gnus-show-threads
7064@vindex gnus-show-threads
7065If this variable is @code{nil}, no threading will be done, and all of
7066the rest of the variables here will have no effect. Turning threading
7067off will speed group selection up a bit, but it is sure to make reading
7068slower and more awkward.
4009494e 7069
8a1cdce5
AC
7070@item gnus-thread-hide-subtree
7071@vindex gnus-thread-hide-subtree
7072If non-@code{nil}, all threads will be hidden when the summary buffer is
7073generated.
4009494e 7074
8a1cdce5
AC
7075This can also be a predicate specifier (@pxref{Predicate Specifiers}).
7076Available predicates are @code{gnus-article-unread-p} and
7077@code{gnus-article-unseen-p}.
4009494e 7078
8a1cdce5 7079Here's an example:
4009494e 7080
8a1cdce5
AC
7081@lisp
7082(setq gnus-thread-hide-subtree
7083 '(or gnus-article-unread-p
7084 gnus-article-unseen-p))
7085@end lisp
4009494e 7086
8a1cdce5
AC
7087(It's a pretty nonsensical example, since all unseen articles are also
7088unread, but you get my drift.)
4009494e 7089
4009494e 7090
8a1cdce5
AC
7091@item gnus-thread-expunge-below
7092@vindex gnus-thread-expunge-below
7093All threads that have a total score (as defined by
7094@code{gnus-thread-score-function}) less than this number will be
7095expunged. This variable is @code{nil} by default, which means that no
7096threads are expunged.
4009494e 7097
8a1cdce5
AC
7098@item gnus-thread-hide-killed
7099@vindex gnus-thread-hide-killed
7100if you kill a thread and this variable is non-@code{nil}, the subtree
7101will be hidden.
4009494e 7102
8a1cdce5
AC
7103@item gnus-thread-ignore-subject
7104@vindex gnus-thread-ignore-subject
7105Sometimes somebody changes the subject in the middle of a thread. If
7106this variable is non-@code{nil}, which is the default, the subject
7107change is ignored. If it is @code{nil}, a change in the subject will
7108result in a new thread.
4009494e 7109
8a1cdce5
AC
7110@item gnus-thread-indent-level
7111@vindex gnus-thread-indent-level
7112This is a number that says how much each sub-thread should be indented.
7113The default is 4.
4009494e 7114
8a1cdce5
AC
7115@item gnus-sort-gathered-threads-function
7116@vindex gnus-sort-gathered-threads-function
7117Sometimes, particularly with mailing lists, the order in which mails
7118arrive locally is not necessarily the same as the order in which they
7119arrived on the mailing list. Consequently, when sorting sub-threads
7120using the default @code{gnus-thread-sort-by-number}, responses can end
7121up appearing before the article to which they are responding to.
7122Setting this variable to an alternate value
7123(e.g. @code{gnus-thread-sort-by-date}), in a group's parameters or in an
7124appropriate hook (e.g. @code{gnus-summary-generate-hook}) can produce a
7125more logical sub-thread ordering in such instances.
4009494e 7126
8a1cdce5 7127@end table
4009494e 7128
4009494e 7129
8a1cdce5
AC
7130@node Low-Level Threading
7131@subsubsection Low-Level Threading
4009494e 7132
8a1cdce5 7133@table @code
4009494e 7134
8a1cdce5
AC
7135@item gnus-parse-headers-hook
7136@vindex gnus-parse-headers-hook
7137Hook run before parsing any headers.
4009494e 7138
8a1cdce5
AC
7139@item gnus-alter-header-function
7140@vindex gnus-alter-header-function
7141If non-@code{nil}, this function will be called to allow alteration of
7142article header structures. The function is called with one parameter,
7143the article header vector, which it may alter in any way. For instance,
7144if you have a mail-to-news gateway which alters the @code{Message-ID}s
7145in systematic ways (by adding prefixes and such), you can use this
7146variable to un-scramble the @code{Message-ID}s so that they are more
7147meaningful. Here's one example:
4009494e 7148
8a1cdce5
AC
7149@lisp
7150(setq gnus-alter-header-function 'my-alter-message-id)
7151
7152(defun my-alter-message-id (header)
7153 (let ((id (mail-header-id header)))
7154 (when (string-match
7155 "\\(<[^<>@@]*\\)\\.?cygnus\\..*@@\\([^<>@@]*>\\)" id)
7156 (mail-header-set-id
7157 (concat (match-string 1 id) "@@" (match-string 2 id))
7158 header))))
7159@end lisp
4009494e 7160
8a1cdce5 7161@end table
4009494e 7162
4009494e 7163
8a1cdce5
AC
7164@node Thread Commands
7165@subsection Thread Commands
7166@cindex thread commands
4009494e 7167
8a1cdce5 7168@table @kbd
4009494e 7169
8a1cdce5
AC
7170@item T k
7171@itemx C-M-k
7172@kindex T k (Summary)
7173@kindex C-M-k (Summary)
7174@findex gnus-summary-kill-thread
7175Mark all articles in the current (sub-)thread as read
7176(@code{gnus-summary-kill-thread}). If the prefix argument is positive,
7177remove all marks instead. If the prefix argument is negative, tick
7178articles instead.
4009494e 7179
8a1cdce5
AC
7180@item T l
7181@itemx C-M-l
7182@kindex T l (Summary)
7183@kindex C-M-l (Summary)
7184@findex gnus-summary-lower-thread
7185Lower the score of the current (sub-)thread
7186(@code{gnus-summary-lower-thread}).
7187
7188@item T i
7189@kindex T i (Summary)
7190@findex gnus-summary-raise-thread
7191Increase the score of the current (sub-)thread
7192(@code{gnus-summary-raise-thread}).
7193
7194@item T #
7195@kindex T # (Summary)
4009494e 7196@findex gnus-uu-mark-thread
8a1cdce5 7197Set the process mark on the current (sub-)thread
4009494e
GM
7198(@code{gnus-uu-mark-thread}).
7199
8a1cdce5
AC
7200@item T M-#
7201@kindex T M-# (Summary)
4009494e 7202@findex gnus-uu-unmark-thread
8a1cdce5 7203Remove the process mark from the current (sub-)thread
4009494e
GM
7204(@code{gnus-uu-unmark-thread}).
7205
8a1cdce5
AC
7206@item T T
7207@kindex T T (Summary)
7208@findex gnus-summary-toggle-threads
7209Toggle threading (@code{gnus-summary-toggle-threads}).
4009494e 7210
8a1cdce5
AC
7211@item T s
7212@kindex T s (Summary)
7213@findex gnus-summary-show-thread
7214Expose the (sub-)thread hidden under the current article, if any@*
7215(@code{gnus-summary-show-thread}).
4009494e 7216
8a1cdce5
AC
7217@item T h
7218@kindex T h (Summary)
7219@findex gnus-summary-hide-thread
7220Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
4009494e 7221
8a1cdce5
AC
7222@item T S
7223@kindex T S (Summary)
7224@findex gnus-summary-show-all-threads
7225Expose all hidden threads (@code{gnus-summary-show-all-threads}).
4009494e 7226
8a1cdce5
AC
7227@item T H
7228@kindex T H (Summary)
7229@findex gnus-summary-hide-all-threads
7230Hide all threads (@code{gnus-summary-hide-all-threads}).
4009494e 7231
8a1cdce5
AC
7232@item T t
7233@kindex T t (Summary)
7234@findex gnus-summary-rethread-current
7235Re-thread the current article's thread
7236(@code{gnus-summary-rethread-current}). This works even when the
7237summary buffer is otherwise unthreaded.
4009494e 7238
8a1cdce5
AC
7239@item T ^
7240@kindex T ^ (Summary)
7241@findex gnus-summary-reparent-thread
7242Make the current article the child of the marked (or previous) article
7243(@code{gnus-summary-reparent-thread}).
4009494e 7244
8a1cdce5
AC
7245@item T M-^
7246@kindex T M-^ (Summary)
7247@findex gnus-summary-reparent-children
7248Make the current article the parent of the marked articles
7249(@code{gnus-summary-reparent-children}).
4009494e
GM
7250
7251@end table
7252
8a1cdce5
AC
7253The following commands are thread movement commands. They all
7254understand the numeric prefix.
4009494e
GM
7255
7256@table @kbd
7257
8a1cdce5
AC
7258@item T n
7259@kindex T n (Summary)
7260@itemx C-M-f
7261@kindex C-M-n (Summary)
7262@itemx M-down
7263@kindex M-down (Summary)
7264@findex gnus-summary-next-thread
7265Go to the next thread (@code{gnus-summary-next-thread}).
01c52d31 7266
8a1cdce5
AC
7267@item T p
7268@kindex T p (Summary)
7269@itemx C-M-b
7270@kindex C-M-p (Summary)
7271@itemx M-up
7272@kindex M-up (Summary)
7273@findex gnus-summary-prev-thread
7274Go to the previous thread (@code{gnus-summary-prev-thread}).
01c52d31 7275
8a1cdce5
AC
7276@item T d
7277@kindex T d (Summary)
7278@findex gnus-summary-down-thread
7279Descend the thread (@code{gnus-summary-down-thread}).
4009494e 7280
8a1cdce5
AC
7281@item T u
7282@kindex T u (Summary)
7283@findex gnus-summary-up-thread
7284Ascend the thread (@code{gnus-summary-up-thread}).
4009494e 7285
8a1cdce5
AC
7286@item T o
7287@kindex T o (Summary)
7288@findex gnus-summary-top-thread
7289Go to the top of the thread (@code{gnus-summary-top-thread}).
7290@end table
4009494e 7291
8a1cdce5
AC
7292@vindex gnus-thread-operation-ignore-subject
7293If you ignore subject while threading, you'll naturally end up with
7294threads that have several different subjects in them. If you then issue
7295a command like @kbd{T k} (@code{gnus-summary-kill-thread}) you might not
7296wish to kill the entire thread, but just those parts of the thread that
7297have the same subject as the current article. If you like this idea,
7298you can fiddle with @code{gnus-thread-operation-ignore-subject}. If it
7299is non-@code{nil} (which it is by default), subjects will be ignored
7300when doing thread commands. If this variable is @code{nil}, articles in
7301the same thread with different subjects will not be included in the
7302operation in question. If this variable is @code{fuzzy}, only articles
7303that have subjects fuzzily equal will be included (@pxref{Fuzzy
7304Matching}).
4009494e 7305
4009494e 7306
8a1cdce5
AC
7307@node Sorting the Summary Buffer
7308@section Sorting the Summary Buffer
4009494e 7309
8a1cdce5
AC
7310@findex gnus-thread-sort-by-total-score
7311@findex gnus-thread-sort-by-date
7312@findex gnus-thread-sort-by-score
7313@findex gnus-thread-sort-by-subject
7314@findex gnus-thread-sort-by-author
7315@findex gnus-thread-sort-by-recipient
7316@findex gnus-thread-sort-by-number
7317@findex gnus-thread-sort-by-random
7318@vindex gnus-thread-sort-functions
7319@findex gnus-thread-sort-by-most-recent-number
7320@findex gnus-thread-sort-by-most-recent-date
7321If you are using a threaded summary display, you can sort the threads by
7322setting @code{gnus-thread-sort-functions}, which can be either a single
7323function, a list of functions, or a list containing functions and
7324@code{(not some-function)} elements.
4009494e 7325
8a1cdce5
AC
7326By default, sorting is done on article numbers. Ready-made sorting
7327predicate functions include @code{gnus-thread-sort-by-number},
7328@code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-recipient},
7329@code{gnus-thread-sort-by-subject},
7330@code{gnus-thread-sort-by-date},
7331@code{gnus-thread-sort-by-score},
7332@code{gnus-thread-sort-by-most-recent-number},
7333@code{gnus-thread-sort-by-most-recent-date},
7334@code{gnus-thread-sort-by-random} and
7335@code{gnus-thread-sort-by-total-score}.
4009494e 7336
8a1cdce5
AC
7337Each function takes two threads and returns non-@code{nil} if the first
7338thread should be sorted before the other. Note that sorting really is
c2f51e23
G
7339normally done by looking only at the roots of each thread. Exceptions
7340to this rule are @code{gnus-thread-sort-by-most-recent-number} and
7341@code{gnus-thread-sort-by-most-recent-date}.
4009494e 7342
8a1cdce5
AC
7343If you use more than one function, the primary sort key should be the
7344last function in the list. You should probably always include
7345@code{gnus-thread-sort-by-number} in the list of sorting
7346functions---preferably first. This will ensure that threads that are
7347equal with respect to the other sort criteria will be displayed in
7348ascending article order.
01c52d31 7349
8a1cdce5
AC
7350If you would like to sort by reverse score, then by subject, and finally
7351by number, you could do something like:
4009494e 7352
8a1cdce5
AC
7353@lisp
7354(setq gnus-thread-sort-functions
7355 '(gnus-thread-sort-by-number
7356 gnus-thread-sort-by-subject
7357 (not gnus-thread-sort-by-total-score)))
7358@end lisp
4009494e 7359
8a1cdce5
AC
7360The threads that have highest score will be displayed first in the
7361summary buffer. When threads have the same score, they will be sorted
7362alphabetically. The threads that have the same score and the same
7363subject will be sorted by number, which is (normally) the sequence in
7364which the articles arrived.
4009494e 7365
8a1cdce5
AC
7366If you want to sort by score and then reverse arrival order, you could
7367say something like:
4009494e 7368
8a1cdce5
AC
7369@lisp
7370(setq gnus-thread-sort-functions
7371 '((not gnus-thread-sort-by-number)
7372 gnus-thread-sort-by-score))
7373@end lisp
4009494e 7374
8a1cdce5
AC
7375@vindex gnus-thread-score-function
7376The function in the @code{gnus-thread-score-function} variable (default
7377@code{+}) is used for calculating the total score of a thread. Useful
7378functions might be @code{max}, @code{min}, or squared means, or whatever
7379tickles your fancy.
4009494e 7380
8a1cdce5
AC
7381@findex gnus-article-sort-functions
7382@findex gnus-article-sort-by-date
7383@findex gnus-article-sort-by-most-recent-date
7384@findex gnus-article-sort-by-score
7385@findex gnus-article-sort-by-subject
7386@findex gnus-article-sort-by-author
7387@findex gnus-article-sort-by-random
7388@findex gnus-article-sort-by-number
7389@findex gnus-article-sort-by-most-recent-number
7390If you are using an unthreaded display for some strange reason or
7391other, you have to fiddle with the @code{gnus-article-sort-functions}
7392variable. It is very similar to the
7393@code{gnus-thread-sort-functions}, except that it uses slightly
7394different functions for article comparison. Available sorting
7395predicate functions are @code{gnus-article-sort-by-number},
7396@code{gnus-article-sort-by-author},
7397@code{gnus-article-sort-by-subject}, @code{gnus-article-sort-by-date},
7398@code{gnus-article-sort-by-random}, and
7399@code{gnus-article-sort-by-score}.
4009494e 7400
8a1cdce5
AC
7401If you want to sort an unthreaded summary display by subject, you could
7402say something like:
4009494e 7403
8a1cdce5
AC
7404@lisp
7405(setq gnus-article-sort-functions
7406 '(gnus-article-sort-by-number
7407 gnus-article-sort-by-subject))
7408@end lisp
01c52d31 7409
8a1cdce5
AC
7410You can define group specific sorting via @code{gnus-parameters},
7411@xref{Group Parameters}.
01c52d31 7412
4009494e 7413
8a1cdce5
AC
7414@node Asynchronous Fetching
7415@section Asynchronous Article Fetching
7416@cindex asynchronous article fetching
7417@cindex article pre-fetch
7418@cindex pre-fetch
4009494e 7419
8a1cdce5
AC
7420If you read your news from an @acronym{NNTP} server that's far away, the
7421network latencies may make reading articles a chore. You have to wait
7422for a while after pressing @kbd{n} to go to the next article before the
7423article appears. Why can't Gnus just go ahead and fetch the article
7424while you are reading the previous one? Why not, indeed.
26b9f88d 7425
8a1cdce5
AC
7426First, some caveats. There are some pitfalls to using asynchronous
7427article fetching, especially the way Gnus does it.
26b9f88d 7428
8a1cdce5
AC
7429Let's say you are reading article 1, which is short, and article 2 is
7430quite long, and you are not interested in reading that. Gnus does not
7431know this, so it goes ahead and fetches article 2. You decide to read
7432article 3, but since Gnus is in the process of fetching article 2, the
7433connection is blocked.
26b9f88d 7434
8a1cdce5
AC
7435To avoid these situations, Gnus will open two (count 'em two)
7436connections to the server. Some people may think this isn't a very nice
7437thing to do, but I don't see any real alternatives. Setting up that
7438extra connection takes some time, so Gnus startup will be slower.
26b9f88d 7439
8a1cdce5
AC
7440Gnus will fetch more articles than you will read. This will mean that
7441the link between your machine and the @acronym{NNTP} server will become more
7442loaded than if you didn't use article pre-fetch. The server itself will
7443also become more loaded---both with the extra article requests, and the
7444extra connection.
26b9f88d 7445
8a1cdce5
AC
7446Ok, so now you know that you shouldn't really use this thing@dots{} unless
7447you really want to.
4009494e 7448
8a1cdce5
AC
7449@vindex gnus-asynchronous
7450Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should
7451happen automatically.
4009494e 7452
8a1cdce5
AC
7453@vindex gnus-use-article-prefetch
7454You can control how many articles are to be pre-fetched by setting
7455@code{gnus-use-article-prefetch}. This is 30 by default, which means
7456that when you read an article in the group, the back end will pre-fetch
7457the next 30 articles. If this variable is @code{t}, the back end will
7458pre-fetch all the articles it can without bound. If it is
7459@code{nil}, no pre-fetching will be done.
7460
7461@vindex gnus-async-prefetch-article-p
7462@findex gnus-async-unread-p
7463There are probably some articles that you don't want to pre-fetch---read
7464articles, for instance. The @code{gnus-async-prefetch-article-p}
7465variable controls whether an article is to be pre-fetched. This
7466function should return non-@code{nil} when the article in question is
7467to be pre-fetched. The default is @code{gnus-async-unread-p}, which
7468returns @code{nil} on read articles. The function is called with an
7469article data structure as the only parameter.
4009494e 7470
8a1cdce5
AC
7471If, for instance, you wish to pre-fetch only unread articles shorter
7472than 100 lines, you could say something like:
4009494e 7473
8a1cdce5
AC
7474@lisp
7475(defun my-async-short-unread-p (data)
7476 "Return non-nil for short, unread articles."
7477 (and (gnus-data-unread-p data)
7478 (< (mail-header-lines (gnus-data-header data))
7479 100)))
4009494e 7480
8a1cdce5
AC
7481(setq gnus-async-prefetch-article-p 'my-async-short-unread-p)
7482@end lisp
4009494e 7483
8a1cdce5
AC
7484These functions will be called many, many times, so they should
7485preferably be short and sweet to avoid slowing down Gnus too much.
7486It's probably a good idea to byte-compile things like this.
4009494e 7487
8a1cdce5
AC
7488@vindex gnus-async-post-fetch-function
7489@findex gnus-html-prefetch-images
7490After an article has been prefetched, this
7491@code{gnus-async-post-fetch-function} will be called. The buffer will
7492be narrowed to the region of the article that was fetched. A useful
7493value would be @code{gnus-html-prefetch-images}, which will prefetch
7494and store images referenced in the article, so that you don't have to
7495wait for them to be fetched when you read the article. This is useful
7496for @acronym{HTML} messages that have external images.
4009494e 7497
8a1cdce5
AC
7498@vindex gnus-prefetched-article-deletion-strategy
7499Articles have to be removed from the asynch buffer sooner or later. The
7500@code{gnus-prefetched-article-deletion-strategy} says when to remove
7501articles. This is a list that may contain the following elements:
4009494e 7502
8a1cdce5
AC
7503@table @code
7504@item read
7505Remove articles when they are read.
4009494e 7506
8a1cdce5
AC
7507@item exit
7508Remove articles when exiting the group.
4009494e
GM
7509@end table
7510
8a1cdce5 7511The default value is @code{(read exit)}.
4009494e 7512
8a1cdce5
AC
7513@c @vindex gnus-use-header-prefetch
7514@c If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
7515@c from the next group.
4009494e 7516
4009494e 7517
8a1cdce5
AC
7518@node Article Caching
7519@section Article Caching
7520@cindex article caching
7521@cindex caching
4009494e 7522
8a1cdce5
AC
7523If you have an @emph{extremely} slow @acronym{NNTP} connection, you may
7524consider turning article caching on. Each article will then be stored
7525locally under your home directory. As you may surmise, this could
7526potentially use @emph{huge} amounts of disk space, as well as eat up all
7527your inodes so fast it will make your head swim. In vodka.
4009494e 7528
8a1cdce5 7529Used carefully, though, it could be just an easier way to save articles.
4009494e 7530
8a1cdce5
AC
7531@vindex gnus-use-long-file-name
7532@vindex gnus-cache-directory
7533@vindex gnus-use-cache
7534To turn caching on, set @code{gnus-use-cache} to @code{t}. By default,
7535all articles ticked or marked as dormant will then be copied
7536over to your local cache (@code{gnus-cache-directory}). Whether this
7537cache is flat or hierarchical is controlled by the
7538@code{gnus-use-long-file-name} variable, as usual.
4009494e 7539
8a1cdce5
AC
7540When re-selecting a ticked or dormant article, it will be fetched from the
7541cache instead of from the server. As articles in your cache will never
7542expire, this might serve as a method of saving articles while still
7543keeping them where they belong. Just mark all articles you want to save
7544as dormant, and don't worry.
4009494e 7545
8a1cdce5 7546When an article is marked as read, is it removed from the cache.
4009494e 7547
8a1cdce5
AC
7548@vindex gnus-cache-remove-articles
7549@vindex gnus-cache-enter-articles
7550The entering/removal of articles from the cache is controlled by the
7551@code{gnus-cache-enter-articles} and @code{gnus-cache-remove-articles}
7552variables. Both are lists of symbols. The first is @code{(ticked
7553dormant)} by default, meaning that ticked and dormant articles will be
7554put in the cache. The latter is @code{(read)} by default, meaning that
7555articles marked as read are removed from the cache. Possibly
7556symbols in these two lists are @code{ticked}, @code{dormant},
7557@code{unread} and @code{read}.
4009494e 7558
8a1cdce5
AC
7559@findex gnus-jog-cache
7560So where does the massive article-fetching and storing come into the
7561picture? The @code{gnus-jog-cache} command will go through all
7562subscribed newsgroups, request all unread articles, score them, and
7563store them in the cache. You should only ever, ever ever ever, use this
7564command if 1) your connection to the @acronym{NNTP} server is really, really,
7565really slow and 2) you have a really, really, really huge disk.
7566Seriously. One way to cut down on the number of articles downloaded is
7567to score unwanted articles down and have them marked as read. They will
7568not then be downloaded by this command.
4009494e 7569
8a1cdce5
AC
7570@vindex gnus-uncacheable-groups
7571@vindex gnus-cacheable-groups
7572It is likely that you do not want caching on all groups. For instance,
7573if your @code{nnml} mail is located under your home directory, it makes no
7574sense to cache it somewhere else under your home directory. Unless you
7575feel that it's neat to use twice as much space.
4009494e 7576
8a1cdce5
AC
7577To limit the caching, you could set @code{gnus-cacheable-groups} to a
7578regexp of groups to cache, @samp{^nntp} for instance, or set the
7579@code{gnus-uncacheable-groups} regexp to @samp{^nnml}, for instance.
7580Both variables are @code{nil} by default. If a group matches both
7581variables, the group is not cached.
4009494e 7582
8a1cdce5
AC
7583@findex gnus-cache-generate-nov-databases
7584@findex gnus-cache-generate-active
7585@vindex gnus-cache-active-file
7586The cache stores information on what articles it contains in its active
7587file (@code{gnus-cache-active-file}). If this file (or any other parts
7588of the cache) becomes all messed up for some reason or other, Gnus
7589offers two functions that will try to set things right. @kbd{M-x
7590gnus-cache-generate-nov-databases} will (re)build all the @acronym{NOV}
7591files, and @kbd{gnus-cache-generate-active} will (re)generate the active
7592file.
4009494e 7593
8a1cdce5
AC
7594@findex gnus-cache-move-cache
7595@code{gnus-cache-move-cache} will move your whole
7596@code{gnus-cache-directory} to some other location. You get asked to
7597where, isn't that cool?
4009494e 7598
8a1cdce5
AC
7599@node Persistent Articles
7600@section Persistent Articles
7601@cindex persistent articles
4009494e 7602
8a1cdce5
AC
7603Closely related to article caching, we have @dfn{persistent articles}.
7604In fact, it's just a different way of looking at caching, and much more
7605useful in my opinion.
4009494e 7606
8a1cdce5
AC
7607Say you're reading a newsgroup, and you happen on to some valuable gem
7608that you want to keep and treasure forever. You'd normally just save it
7609(using one of the many saving commands) in some file. The problem with
7610that is that it's just, well, yucky. Ideally you'd prefer just having
7611the article remain in the group where you found it forever; untouched by
7612the expiry going on at the news server.
4009494e 7613
8a1cdce5
AC
7614This is what a @dfn{persistent article} is---an article that just won't
7615be deleted. It's implemented using the normal cache functions, but
7616you use two explicit commands for managing persistent articles:
4009494e 7617
8a1cdce5 7618@table @kbd
4009494e 7619
8a1cdce5
AC
7620@item *
7621@kindex * (Summary)
7622@findex gnus-cache-enter-article
7623Make the current article persistent (@code{gnus-cache-enter-article}).
7624
7625@item M-*
7626@kindex M-* (Summary)
7627@findex gnus-cache-remove-article
7628Remove the current article from the persistent articles
7629(@code{gnus-cache-remove-article}). This will normally delete the
7630article.
7631@end table
7632
7633Both these commands understand the process/prefix convention.
7634
7635To avoid having all ticked articles (and stuff) entered into the cache,
7636you should set @code{gnus-use-cache} to @code{passive} if you're just
7637interested in persistent articles:
7638
7639@lisp
7640(setq gnus-use-cache 'passive)
4009494e
GM
7641@end lisp
7642
8a1cdce5
AC
7643@node Sticky Articles
7644@section Sticky Articles
7645@cindex sticky articles
4009494e 7646
8a1cdce5
AC
7647When you select an article the current article buffer will be reused
7648according to the value of the variable
7649@code{gnus-single-article-buffer}. If its value is non-@code{nil} (the
7650default) all articles reuse the same article buffer. Else each group
7651has its own article buffer.
4009494e 7652
8a1cdce5
AC
7653This implies that it's not possible to have more than one article buffer
7654in a group at a time. But sometimes you might want to display all the
7655latest emails from your mother, your father, your aunt, your uncle and
da6062e6 7656your 17 cousins to coordinate the next Christmas party.
4009494e 7657
8a1cdce5
AC
7658That's where sticky articles come in handy. A sticky article buffer
7659basically is a normal article buffer, but it won't be reused when you
7660select another article. You can make an article sticky with:
4009494e 7661
8a1cdce5
AC
7662@table @kbd
7663@item A S
7664@kindex A S (Summary)
7665@findex gnus-sticky-article
7666Make the current article sticky. If a prefix arg is given, ask for a
7667name for this sticky article buffer.
7668@end table
4009494e 7669
8a1cdce5 7670To close a sticky article buffer you can use these commands:
4009494e 7671
8a1cdce5
AC
7672@table @kbd
7673@item q
7674@kindex q (Article)
7675@findex bury-buffer
7676Puts this sticky article buffer at the end of the list of all buffers.
7677
7678@item k
7679@kindex k (Article)
7680@findex gnus-kill-sticky-article-buffer
7681Kills this sticky article buffer.
4009494e
GM
7682@end table
7683
8a1cdce5 7684To kill all sticky article buffers you can use:
4009494e 7685
8a1cdce5
AC
7686@defun gnus-kill-sticky-article-buffers ARG
7687Kill all sticky article buffers.
7688If a prefix ARG is given, ask for confirmation.
7689@end defun
4009494e 7690
8a1cdce5
AC
7691@node Article Backlog
7692@section Article Backlog
7693@cindex backlog
7694@cindex article backlog
4009494e 7695
8a1cdce5
AC
7696If you have a slow connection, but the idea of using caching seems
7697unappealing to you (and it is, really), you can help the situation some
7698by switching on the @dfn{backlog}. This is where Gnus will buffer
7699already read articles so that it doesn't have to re-fetch articles
7700you've already read. This only helps if you are in the habit of
7701re-selecting articles you've recently read, of course. If you never do
7702that, turning the backlog on will slow Gnus down a little bit, and
7703increase memory usage some.
4009494e 7704
8a1cdce5
AC
7705@vindex gnus-keep-backlog
7706If you set @code{gnus-keep-backlog} to a number @var{n}, Gnus will store
7707at most @var{n} old articles in a buffer for later re-fetching. If this
7708variable is non-@code{nil} and is not a number, Gnus will store
7709@emph{all} read articles, which means that your Emacs will grow without
7710bound before exploding and taking your machine down with you. I put
7711that in there just to keep y'all on your toes.
4009494e 7712
8a1cdce5 7713The default value is 20.
4009494e 7714
4009494e 7715
8a1cdce5
AC
7716@node Saving Articles
7717@section Saving Articles
7718@cindex saving articles
4009494e 7719
8a1cdce5
AC
7720Gnus can save articles in a number of ways. Below is the documentation
7721for saving articles in a fairly straight-forward fashion (i.e., little
7722processing of the article is done before it is saved). For a different
7723approach (uudecoding, unsharing) you should use @code{gnus-uu}
7724(@pxref{Decoding Articles}).
4009494e 7725
8a1cdce5
AC
7726For the commands listed here, the target is a file. If you want to
7727save to a group, see the @kbd{B c} (@code{gnus-summary-copy-article})
7728command (@pxref{Mail Group Commands}).
4009494e 7729
8a1cdce5
AC
7730@vindex gnus-save-all-headers
7731If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete
7732unwanted headers before saving the article.
4009494e 7733
8a1cdce5
AC
7734@vindex gnus-saved-headers
7735If the preceding variable is @code{nil}, all headers that match the
7736@code{gnus-saved-headers} regexp will be kept, while the rest will be
7737deleted before saving.
4009494e 7738
8a1cdce5 7739@table @kbd
4009494e 7740
8a1cdce5
AC
7741@item O o
7742@itemx o
7743@kindex O o (Summary)
7744@kindex o (Summary)
7745@findex gnus-summary-save-article
7746@c @icon{gnus-summary-save-article}
7747Save the current article using the default article saver
7748(@code{gnus-summary-save-article}).
f394fa25 7749
8a1cdce5
AC
7750@item O m
7751@kindex O m (Summary)
7752@findex gnus-summary-save-article-mail
7753Save the current article in a Unix mail box (mbox) file
7754(@code{gnus-summary-save-article-mail}).
f394fa25 7755
8a1cdce5
AC
7756@item O r
7757@kindex O r (Summary)
7758@findex gnus-summary-save-article-rmail
7759Save the current article in Rmail format
7760(@code{gnus-summary-save-article-rmail}). This is mbox since Emacs 23,
7761Babyl in older versions.
4009494e 7762
8a1cdce5
AC
7763@item O f
7764@kindex O f (Summary)
7765@findex gnus-summary-save-article-file
7766@c @icon{gnus-summary-save-article-file}
7767Save the current article in plain file format
7768(@code{gnus-summary-save-article-file}).
4009494e 7769
8a1cdce5
AC
7770@item O F
7771@kindex O F (Summary)
7772@findex gnus-summary-write-article-file
7773Write the current article in plain file format, overwriting any previous
7774file contents (@code{gnus-summary-write-article-file}).
7775
7776@item O b
7777@kindex O b (Summary)
7778@findex gnus-summary-save-article-body-file
7779Save the current article body in plain file format
7780(@code{gnus-summary-save-article-body-file}).
7781
7782@item O h
7783@kindex O h (Summary)
7784@findex gnus-summary-save-article-folder
7785Save the current article in mh folder format
7786(@code{gnus-summary-save-article-folder}).
7787
7788@item O v
7789@kindex O v (Summary)
7790@findex gnus-summary-save-article-vm
7791Save the current article in a VM folder
7792(@code{gnus-summary-save-article-vm}).
7793
7794@item O p
7795@itemx |
7796@kindex O p (Summary)
7797@kindex | (Summary)
7798@findex gnus-summary-pipe-output
7799@vindex gnus-summary-pipe-output-default-command
7800Save the current article in a pipe. Uhm, like, what I mean is---Pipe
7801the current article to a process (@code{gnus-summary-pipe-output}).
7802If given a symbolic prefix (@pxref{Symbolic Prefixes}), include the
7803complete headers in the piped output. The symbolic prefix @code{r} is
7804special; it lets this command pipe a raw article including all headers.
7805The @code{gnus-summary-pipe-output-default-command} variable can be set
7806to a string containing the default command and options (default
7807@code{nil}).
4009494e 7808
8a1cdce5
AC
7809@item O P
7810@kindex O P (Summary)
7811@findex gnus-summary-muttprint
7812@vindex gnus-summary-muttprint-program
7813Save the current article into muttprint. That is, print it using the
7814external program @uref{http://muttprint.sourceforge.net/,
7815Muttprint}. The program name and options to use is controlled by the
7816variable @code{gnus-summary-muttprint-program}.
7817(@code{gnus-summary-muttprint}).
4009494e
GM
7818
7819@end table
7820
8a1cdce5
AC
7821@vindex gnus-prompt-before-saving
7822All these commands use the process/prefix convention
7823(@pxref{Process/Prefix}). If you save bunches of articles using these
7824functions, you might get tired of being prompted for files to save each
7825and every article in. The prompting action is controlled by
7826the @code{gnus-prompt-before-saving} variable, which is @code{always} by
7827default, giving you that excessive prompting action you know and
7828loathe. If you set this variable to @code{t} instead, you'll be prompted
7829just once for each series of articles you save. If you like to really
7830have Gnus do all your thinking for you, you can even set this variable
7831to @code{nil}, which means that you will never be prompted for files to
7832save articles in. Gnus will simply save all the articles in the default
7833files.
7834
4009494e 7835
8a1cdce5
AC
7836@vindex gnus-default-article-saver
7837You can customize the @code{gnus-default-article-saver} variable to make
7838Gnus do what you want it to. You can use any of the eight ready-made
7839functions below, or you can create your own.
4009494e
GM
7840
7841@table @code
4009494e 7842
8a1cdce5
AC
7843@item gnus-summary-save-in-rmail
7844@findex gnus-summary-save-in-rmail
7845@vindex gnus-rmail-save-name
7846@findex gnus-plain-save-name
7847This is the default format, that used by the Rmail package. Since Emacs
784823, Rmail uses standard mbox format. Before this, it used the
7849@dfn{Babyl} format. Accordingly, this command writes mbox format since
7850Emacs 23, unless appending to an existing Babyl file. In older versions
7851of Emacs, it always uses Babyl format. Uses the function in the
7852@code{gnus-rmail-save-name} variable to get a file name to save the
7853article in. The default is @code{gnus-plain-save-name}.
4009494e 7854
8a1cdce5
AC
7855@item gnus-summary-save-in-mail
7856@findex gnus-summary-save-in-mail
7857@vindex gnus-mail-save-name
7858Save in a Unix mail (mbox) file. Uses the function in the
7859@code{gnus-mail-save-name} variable to get a file name to save the
7860article in. The default is @code{gnus-plain-save-name}.
4009494e 7861
8a1cdce5
AC
7862@item gnus-summary-save-in-file
7863@findex gnus-summary-save-in-file
7864@vindex gnus-file-save-name
7865@findex gnus-numeric-save-name
7866Append the article straight to an ordinary file. Uses the function in
7867the @code{gnus-file-save-name} variable to get a file name to save the
7868article in. The default is @code{gnus-numeric-save-name}.
4009494e 7869
8a1cdce5
AC
7870@item gnus-summary-write-to-file
7871@findex gnus-summary-write-to-file
7872Write the article straight to an ordinary file. The file is
7873overwritten if it exists. Uses the function in the
7874@code{gnus-file-save-name} variable to get a file name to save the
7875article in. The default is @code{gnus-numeric-save-name}.
4009494e 7876
8a1cdce5
AC
7877@item gnus-summary-save-body-in-file
7878@findex gnus-summary-save-body-in-file
7879Append the article body to an ordinary file. Uses the function in the
7880@code{gnus-file-save-name} variable to get a file name to save the
7881article in. The default is @code{gnus-numeric-save-name}.
4009494e 7882
8a1cdce5
AC
7883@item gnus-summary-write-body-to-file
7884@findex gnus-summary-write-body-to-file
7885Write the article body straight to an ordinary file. The file is
7886overwritten if it exists. Uses the function in the
7887@code{gnus-file-save-name} variable to get a file name to save the
7888article in. The default is @code{gnus-numeric-save-name}.
4009494e 7889
8a1cdce5
AC
7890@item gnus-summary-save-in-folder
7891@findex gnus-summary-save-in-folder
7892@findex gnus-folder-save-name
7893@findex gnus-Folder-save-name
7894@vindex gnus-folder-save-name
7895@cindex rcvstore
7896@cindex MH folders
7897Save the article to an MH folder using @code{rcvstore} from the MH
7898library. Uses the function in the @code{gnus-folder-save-name} variable
7899to get a file name to save the article in. The default is
7900@code{gnus-folder-save-name}, but you can also use
7901@code{gnus-Folder-save-name}, which creates capitalized names.
4009494e 7902
8a1cdce5
AC
7903@item gnus-summary-save-in-vm
7904@findex gnus-summary-save-in-vm
7905Save the article in a VM folder. You have to have the VM mail
7906reader to use this setting.
4009494e 7907
8a1cdce5
AC
7908@item gnus-summary-save-in-pipe
7909@findex gnus-summary-save-in-pipe
7910Pipe the article to a shell command. This function takes optional two
7911arguments COMMAND and RAW. Valid values for COMMAND include:
4009494e 7912
8a1cdce5
AC
7913@itemize @bullet
7914@item a string@*
7915The executable command name and possibly arguments.
7916@item @code{nil}@*
7917You will be prompted for the command in the minibuffer.
7918@item the symbol @code{default}@*
7919It will be replaced with the command which the variable
7920@code{gnus-summary-pipe-output-default-command} holds or the command
7921last used for saving.
7922@end itemize
4009494e 7923
8a1cdce5
AC
7924Non-@code{nil} value for RAW overrides @code{:decode} and
7925@code{:headers} properties (see below) and the raw article including all
7926headers will be piped.
4009494e
GM
7927@end table
7928
8a1cdce5 7929The symbol of each function may have the following properties:
4009494e
GM
7930
7931@table @code
8a1cdce5
AC
7932@item :decode
7933The value non-@code{nil} means save decoded articles. This is
7934meaningful only with @code{gnus-summary-save-in-file},
7935@code{gnus-summary-save-body-in-file},
7936@code{gnus-summary-write-to-file},
7937@code{gnus-summary-write-body-to-file}, and
7938@code{gnus-summary-save-in-pipe}.
4009494e 7939
8a1cdce5
AC
7940@item :function
7941The value specifies an alternative function which appends, not
7942overwrites, articles to a file. This implies that when saving many
7943articles at a time, @code{gnus-prompt-before-saving} is bound to
7944@code{t} and all articles are saved in a single file. This is
7945meaningful only with @code{gnus-summary-write-to-file} and
7946@code{gnus-summary-write-body-to-file}.
4009494e 7947
8a1cdce5
AC
7948@item :headers
7949The value specifies the symbol of a variable of which the value
7950specifies headers to be saved. If it is omitted,
7951@code{gnus-save-all-headers} and @code{gnus-saved-headers} control what
7952headers should be saved.
4009494e
GM
7953@end table
7954
8a1cdce5
AC
7955@vindex gnus-article-save-directory
7956All of these functions, except for the last one, will save the article
7957in the @code{gnus-article-save-directory}, which is initialized from the
7958@env{SAVEDIR} environment variable. This is @file{~/News/} by
7959default.
4009494e 7960
8a1cdce5
AC
7961As you can see above, the functions use different functions to find a
7962suitable name of a file to save the article in. Below is a list of
7963available functions that generate names:
4009494e 7964
8a1cdce5 7965@table @code
4009494e 7966
8a1cdce5
AC
7967@item gnus-Numeric-save-name
7968@findex gnus-Numeric-save-name
7969File names like @file{~/News/Alt.andrea-dworkin/45}.
4009494e 7970
8a1cdce5
AC
7971@item gnus-numeric-save-name
7972@findex gnus-numeric-save-name
7973File names like @file{~/News/alt.andrea-dworkin/45}.
4009494e 7974
8a1cdce5
AC
7975@item gnus-Plain-save-name
7976@findex gnus-Plain-save-name
7977File names like @file{~/News/Alt.andrea-dworkin}.
4009494e 7978
8a1cdce5
AC
7979@item gnus-plain-save-name
7980@findex gnus-plain-save-name
7981File names like @file{~/News/alt.andrea-dworkin}.
4009494e 7982
8a1cdce5
AC
7983@item gnus-sender-save-name
7984@findex gnus-sender-save-name
7985File names like @file{~/News/larsi}.
7986@end table
4009494e 7987
8a1cdce5
AC
7988@vindex gnus-split-methods
7989You can have Gnus suggest where to save articles by plonking a regexp into
7990the @code{gnus-split-methods} alist. For instance, if you would like to
7991save articles related to Gnus in the file @file{gnus-stuff}, and articles
7992related to VM in @file{vm-stuff}, you could set this variable to something
7993like:
4009494e 7994
8a1cdce5
AC
7995@lisp
7996(("^Subject:.*gnus\\|^Newsgroups:.*gnus" "gnus-stuff")
7997 ("^Subject:.*vm\\|^Xref:.*vm" "vm-stuff")
7998 (my-choosing-function "../other-dir/my-stuff")
7999 ((equal gnus-newsgroup-name "mail.misc") "mail-stuff"))
8000@end lisp
4009494e 8001
8a1cdce5
AC
8002We see that this is a list where each element is a list that has two
8003elements---the @dfn{match} and the @dfn{file}. The match can either be
8004a string (in which case it is used as a regexp to match on the article
8005head); it can be a symbol (which will be called as a function with the
8006group name as a parameter); or it can be a list (which will be
8007@code{eval}ed). If any of these actions have a non-@code{nil} result,
8008the @dfn{file} will be used as a default prompt. In addition, the
8009result of the operation itself will be used if the function or form
8010called returns a string or a list of strings.
01c52d31 8011
8a1cdce5
AC
8012You basically end up with a list of file names that might be used when
8013saving the current article. (All ``matches'' will be used.) You will
8014then be prompted for what you really want to use as a name, with file
8015name completion over the results from applying this variable.
4009494e 8016
8a1cdce5
AC
8017This variable is @code{((gnus-article-archive-name))} by default, which
8018means that Gnus will look at the articles it saves for an
8019@code{Archive-name} line and use that as a suggestion for the file
8020name.
4009494e 8021
8a1cdce5
AC
8022Here's an example function to clean up file names somewhat. If you have
8023lots of mail groups called things like
8024@samp{nnml:mail.whatever}, you may want to chop off the beginning of
8025these group names before creating the file name to save to. The
8026following will do just that:
4009494e 8027
8a1cdce5
AC
8028@lisp
8029(defun my-save-name (group)
8030 (when (string-match "^nnml:mail." group)
8031 (substring group (match-end 0))))
4009494e 8032
8a1cdce5
AC
8033(setq gnus-split-methods
8034 '((gnus-article-archive-name)
8035 (my-save-name)))
8036@end lisp
4009494e 8037
4009494e 8038
8a1cdce5
AC
8039@vindex gnus-use-long-file-name
8040Finally, you have the @code{gnus-use-long-file-name} variable. If it is
8041@code{nil}, all the preceding functions will replace all periods
8042(@samp{.}) in the group names with slashes (@samp{/})---which means that
8043the functions will generate hierarchies of directories instead of having
8044all the files in the top level directory
8045(@file{~/News/alt/andrea-dworkin} instead of
8046@file{~/News/alt.andrea-dworkin}.) This variable is @code{t} by default
8047on most systems. However, for historical reasons, this is @code{nil} on
8048Xenix and usg-unix-v machines by default.
4009494e 8049
8a1cdce5
AC
8050This function also affects kill and score file names. If this variable
8051is a list, and the list contains the element @code{not-score}, long file
8052names will not be used for score files, if it contains the element
8053@code{not-save}, long file names will not be used for saving, and if it
8054contains the element @code{not-kill}, long file names will not be used
8055for kill files.
4009494e 8056
8a1cdce5
AC
8057If you'd like to save articles in a hierarchy that looks something like
8058a spool, you could
4009494e 8059
8a1cdce5
AC
8060@lisp
8061(setq gnus-use-long-file-name '(not-save)) ; @r{to get a hierarchy}
8062(setq gnus-default-article-saver
8063 'gnus-summary-save-in-file) ; @r{no encoding}
8064@end lisp
4009494e 8065
8a1cdce5
AC
8066Then just save with @kbd{o}. You'd then read this hierarchy with
8067ephemeral @code{nneething} groups---@kbd{G D} in the group buffer, and
8068the top level directory as the argument (@file{~/News/}). Then just walk
8069around to the groups/directories with @code{nneething}.
4009494e 8070
4009494e 8071
8a1cdce5
AC
8072@node Decoding Articles
8073@section Decoding Articles
8074@cindex decoding articles
4009494e 8075
8a1cdce5
AC
8076Sometime users post articles (or series of articles) that have been
8077encoded in some way or other. Gnus can decode them for you.
4009494e 8078
8a1cdce5
AC
8079@menu
8080* Uuencoded Articles:: Uudecode articles.
8081* Shell Archives:: Unshar articles.
8082* PostScript Files:: Split PostScript.
8083* Other Files:: Plain save and binhex.
8084* Decoding Variables:: Variables for a happy decoding.
8085* Viewing Files:: You want to look at the result of the decoding?
8086@end menu
4009494e 8087
8a1cdce5
AC
8088@cindex series
8089@cindex article series
8090All these functions use the process/prefix convention
8091(@pxref{Process/Prefix}) for finding out what articles to work on, with
8092the extension that a ``single article'' means ``a single series''. Gnus
8093can find out by itself what articles belong to a series, decode all the
8094articles and unpack/view/save the resulting file(s).
4009494e 8095
8a1cdce5
AC
8096Gnus guesses what articles are in the series according to the following
8097simplish rule: The subjects must be (nearly) identical, except for the
8098last two numbers of the line. (Spaces are largely ignored, however.)
4009494e 8099
8a1cdce5
AC
8100For example: If you choose a subject called @samp{cat.gif (2/3)}, Gnus
8101will find all the articles that match the regexp @samp{^cat.gif
8102([0-9]+/[0-9]+).*$}.
4009494e 8103
8a1cdce5
AC
8104Subjects that are non-standard, like @samp{cat.gif (2/3) Part 6 of a
8105series}, will not be properly recognized by any of the automatic viewing
8106commands, and you have to mark the articles manually with @kbd{#}.
4009494e 8107
4009494e 8108
8a1cdce5
AC
8109@node Uuencoded Articles
8110@subsection Uuencoded Articles
8111@cindex uudecode
8112@cindex uuencoded articles
4009494e 8113
8a1cdce5 8114@table @kbd
4009494e 8115
8a1cdce5
AC
8116@item X u
8117@kindex X u (Summary)
8118@findex gnus-uu-decode-uu
8119@c @icon{gnus-uu-decode-uu}
8120Uudecodes the current series (@code{gnus-uu-decode-uu}).
4009494e 8121
8a1cdce5
AC
8122@item X U
8123@kindex X U (Summary)
8124@findex gnus-uu-decode-uu-and-save
8125Uudecodes and saves the current series
8126(@code{gnus-uu-decode-uu-and-save}).
4009494e 8127
8a1cdce5
AC
8128@item X v u
8129@kindex X v u (Summary)
8130@findex gnus-uu-decode-uu-view
8131Uudecodes and views the current series (@code{gnus-uu-decode-uu-view}).
4009494e 8132
8a1cdce5
AC
8133@item X v U
8134@kindex X v U (Summary)
8135@findex gnus-uu-decode-uu-and-save-view
8136Uudecodes, views and saves the current series
8137(@code{gnus-uu-decode-uu-and-save-view}).
4009494e 8138
8a1cdce5 8139@end table
4009494e 8140
8a1cdce5
AC
8141Remember that these all react to the presence of articles marked with
8142the process mark. If, for instance, you'd like to decode and save an
8143entire newsgroup, you'd typically do @kbd{M P a}
8144(@code{gnus-uu-mark-all}) and then @kbd{X U}
8145(@code{gnus-uu-decode-uu-and-save}).
4009494e 8146
8a1cdce5
AC
8147All this is very much different from how @code{gnus-uu} worked with
8148@sc{gnus 4.1}, where you had explicit keystrokes for everything under
8149the sun. This version of @code{gnus-uu} generally assumes that you mark
8150articles in some way (@pxref{Setting Process Marks}) and then press
8151@kbd{X u}.
4009494e 8152
8a1cdce5
AC
8153@vindex gnus-uu-notify-files
8154Note: When trying to decode articles that have names matching
8155@code{gnus-uu-notify-files}, which is hard-coded to
8156@samp{[Cc][Ii][Nn][Dd][Yy][0-9]+.\\(gif\\|jpg\\)}, @code{gnus-uu} will
8157automatically post an article on @samp{comp.unix.wizards} saying that
8158you have just viewed the file in question. This feature can't be turned
8159off.
4009494e 8160
4009494e 8161
8a1cdce5
AC
8162@node Shell Archives
8163@subsection Shell Archives
8164@cindex unshar
8165@cindex shell archives
8166@cindex shared articles
4009494e 8167
8a1cdce5
AC
8168Shell archives (``shar files'') used to be a popular way to distribute
8169sources, but it isn't used all that much today. In any case, we have
8170some commands to deal with these:
4009494e 8171
8a1cdce5 8172@table @kbd
4009494e 8173
8a1cdce5
AC
8174@item X s
8175@kindex X s (Summary)
8176@findex gnus-uu-decode-unshar
8177Unshars the current series (@code{gnus-uu-decode-unshar}).
4009494e 8178
8a1cdce5
AC
8179@item X S
8180@kindex X S (Summary)
8181@findex gnus-uu-decode-unshar-and-save
8182Unshars and saves the current series (@code{gnus-uu-decode-unshar-and-save}).
4009494e 8183
8a1cdce5
AC
8184@item X v s
8185@kindex X v s (Summary)
8186@findex gnus-uu-decode-unshar-view
8187Unshars and views the current series (@code{gnus-uu-decode-unshar-view}).
4009494e 8188
8a1cdce5
AC
8189@item X v S
8190@kindex X v S (Summary)
8191@findex gnus-uu-decode-unshar-and-save-view
8192Unshars, views and saves the current series
8193(@code{gnus-uu-decode-unshar-and-save-view}).
8194@end table
4009494e 8195
4009494e 8196
8a1cdce5
AC
8197@node PostScript Files
8198@subsection PostScript Files
8199@cindex PostScript
4009494e 8200
8a1cdce5 8201@table @kbd
85115796 8202
8a1cdce5
AC
8203@item X p
8204@kindex X p (Summary)
8205@findex gnus-uu-decode-postscript
8206Unpack the current PostScript series (@code{gnus-uu-decode-postscript}).
4009494e 8207
8a1cdce5
AC
8208@item X P
8209@kindex X P (Summary)
8210@findex gnus-uu-decode-postscript-and-save
8211Unpack and save the current PostScript series
8212(@code{gnus-uu-decode-postscript-and-save}).
4009494e 8213
8a1cdce5
AC
8214@item X v p
8215@kindex X v p (Summary)
8216@findex gnus-uu-decode-postscript-view
8217View the current PostScript series
8218(@code{gnus-uu-decode-postscript-view}).
4009494e 8219
8a1cdce5
AC
8220@item X v P
8221@kindex X v P (Summary)
8222@findex gnus-uu-decode-postscript-and-save-view
8223View and save the current PostScript series
8224(@code{gnus-uu-decode-postscript-and-save-view}).
8225@end table
4009494e 8226
4009494e 8227
8a1cdce5
AC
8228@node Other Files
8229@subsection Other Files
4009494e 8230
8a1cdce5
AC
8231@table @kbd
8232@item X o
8233@kindex X o (Summary)
8234@findex gnus-uu-decode-save
8235Save the current series
8236(@code{gnus-uu-decode-save}).
4009494e 8237
8a1cdce5
AC
8238@item X b
8239@kindex X b (Summary)
8240@findex gnus-uu-decode-binhex
8241Unbinhex the current series (@code{gnus-uu-decode-binhex}). This
8242doesn't really work yet.
4009494e 8243
8a1cdce5
AC
8244@item X Y
8245@kindex X Y (Summary)
8246@findex gnus-uu-decode-yenc
8247yEnc-decode the current series and save it (@code{gnus-uu-decode-yenc}).
8248@end table
4009494e 8249
4009494e 8250
8a1cdce5
AC
8251@node Decoding Variables
8252@subsection Decoding Variables
4009494e 8253
8a1cdce5 8254Adjective, not verb.
4009494e 8255
8a1cdce5
AC
8256@menu
8257* Rule Variables:: Variables that say how a file is to be viewed.
8258* Other Decode Variables:: Other decode variables.
8259* Uuencoding and Posting:: Variables for customizing uuencoding.
8260@end menu
4009494e 8261
4009494e 8262
8a1cdce5
AC
8263@node Rule Variables
8264@subsubsection Rule Variables
8265@cindex rule variables
4009494e 8266
8a1cdce5
AC
8267Gnus uses @dfn{rule variables} to decide how to view a file. All these
8268variables are of the form
4009494e 8269
8a1cdce5
AC
8270@lisp
8271 (list '(regexp1 command2)
8272 '(regexp2 command2)
8273 ...)
8274@end lisp
4009494e 8275
8a1cdce5 8276@table @code
4009494e 8277
8a1cdce5
AC
8278@item gnus-uu-user-view-rules
8279@vindex gnus-uu-user-view-rules
8280@cindex sox
8281This variable is consulted first when viewing files. If you wish to use,
8282for instance, @code{sox} to convert an @file{.au} sound file, you could
8283say something like:
8284@lisp
8285(setq gnus-uu-user-view-rules
8286 (list '("\\\\.au$" "sox %s -t .aiff > /dev/audio")))
8287@end lisp
4009494e 8288
8a1cdce5
AC
8289@item gnus-uu-user-view-rules-end
8290@vindex gnus-uu-user-view-rules-end
8291This variable is consulted if Gnus couldn't make any matches from the
8292user and default view rules.
4009494e 8293
8a1cdce5
AC
8294@item gnus-uu-user-archive-rules
8295@vindex gnus-uu-user-archive-rules
8296This variable can be used to say what commands should be used to unpack
8297archives.
8298@end table
4009494e 8299
4009494e 8300
8a1cdce5
AC
8301@node Other Decode Variables
8302@subsubsection Other Decode Variables
4009494e 8303
8a1cdce5
AC
8304@table @code
8305@vindex gnus-uu-grabbed-file-functions
4009494e 8306
8a1cdce5
AC
8307@item gnus-uu-grabbed-file-functions
8308All functions in this list will be called right after each file has been
8309successfully decoded---so that you can move or view files right away,
8310and don't have to wait for all files to be decoded before you can do
8311anything. Ready-made functions you can put in this list are:
4009494e 8312
8a1cdce5 8313@table @code
4009494e 8314
8a1cdce5
AC
8315@item gnus-uu-grab-view
8316@findex gnus-uu-grab-view
8317View the file.
4009494e 8318
8a1cdce5
AC
8319@item gnus-uu-grab-move
8320@findex gnus-uu-grab-move
8321Move the file (if you're using a saving function.)
8322@end table
4009494e 8323
8a1cdce5
AC
8324@item gnus-uu-be-dangerous
8325@vindex gnus-uu-be-dangerous
8326Specifies what to do if unusual situations arise during decoding. If
8327@code{nil}, be as conservative as possible. If @code{t}, ignore things
8328that didn't work, and overwrite existing files. Otherwise, ask each
8329time.
01c52d31 8330
8a1cdce5
AC
8331@item gnus-uu-ignore-files-by-name
8332@vindex gnus-uu-ignore-files-by-name
8333Files with name matching this regular expression won't be viewed.
01c52d31 8334
8a1cdce5
AC
8335@item gnus-uu-ignore-files-by-type
8336@vindex gnus-uu-ignore-files-by-type
8337Files with a @acronym{MIME} type matching this variable won't be viewed.
8338Note that Gnus tries to guess what type the file is based on the name.
8339@code{gnus-uu} is not a @acronym{MIME} package (yet), so this is slightly
333f9019 8340kludgy.
01c52d31 8341
8a1cdce5
AC
8342@item gnus-uu-tmp-dir
8343@vindex gnus-uu-tmp-dir
8344Where @code{gnus-uu} does its work.
01c52d31 8345
8a1cdce5
AC
8346@item gnus-uu-do-not-unpack-archives
8347@vindex gnus-uu-do-not-unpack-archives
8348Non-@code{nil} means that @code{gnus-uu} won't peek inside archives
8349looking for files to display.
01c52d31 8350
8a1cdce5
AC
8351@item gnus-uu-view-and-save
8352@vindex gnus-uu-view-and-save
8353Non-@code{nil} means that the user will always be asked to save a file
8354after viewing it.
01c52d31 8355
8a1cdce5
AC
8356@item gnus-uu-ignore-default-view-rules
8357@vindex gnus-uu-ignore-default-view-rules
8358Non-@code{nil} means that @code{gnus-uu} will ignore the default viewing
8359rules.
01c52d31 8360
8a1cdce5
AC
8361@item gnus-uu-ignore-default-archive-rules
8362@vindex gnus-uu-ignore-default-archive-rules
8363Non-@code{nil} means that @code{gnus-uu} will ignore the default archive
8364unpacking commands.
01c52d31 8365
8a1cdce5
AC
8366@item gnus-uu-kill-carriage-return
8367@vindex gnus-uu-kill-carriage-return
8368Non-@code{nil} means that @code{gnus-uu} will strip all carriage returns
8369from articles.
01c52d31 8370
8a1cdce5
AC
8371@item gnus-uu-unmark-articles-not-decoded
8372@vindex gnus-uu-unmark-articles-not-decoded
8373Non-@code{nil} means that @code{gnus-uu} will mark unsuccessfully
8374decoded articles as unread.
4009494e 8375
8a1cdce5
AC
8376@item gnus-uu-correct-stripped-uucode
8377@vindex gnus-uu-correct-stripped-uucode
8378Non-@code{nil} means that @code{gnus-uu} will @emph{try} to fix
8379uuencoded files that have had trailing spaces deleted.
4009494e 8380
8a1cdce5
AC
8381@item gnus-uu-pre-uudecode-hook
8382@vindex gnus-uu-pre-uudecode-hook
8383Hook run before sending a message to @code{uudecode}.
4009494e 8384
8a1cdce5
AC
8385@item gnus-uu-view-with-metamail
8386@vindex gnus-uu-view-with-metamail
8387@cindex metamail
8388Non-@code{nil} means that @code{gnus-uu} will ignore the viewing
8389commands defined by the rule variables and just fudge a @acronym{MIME}
8390content type based on the file name. The result will be fed to
8391@code{metamail} for viewing.
4009494e 8392
8a1cdce5
AC
8393@item gnus-uu-save-in-digest
8394@vindex gnus-uu-save-in-digest
8395Non-@code{nil} means that @code{gnus-uu}, when asked to save without
8396decoding, will save in digests. If this variable is @code{nil},
8397@code{gnus-uu} will just save everything in a file without any
8398embellishments. The digesting almost conforms to RFC 1153---no easy way
8399to specify any meaningful volume and issue numbers were found, so I
8400simply dropped them.
4009494e 8401
8a1cdce5 8402@end table
4009494e 8403
4009494e 8404
8a1cdce5
AC
8405@node Uuencoding and Posting
8406@subsubsection Uuencoding and Posting
4009494e 8407
8a1cdce5 8408@table @code
4009494e 8409
8a1cdce5
AC
8410@item gnus-uu-post-include-before-composing
8411@vindex gnus-uu-post-include-before-composing
8412Non-@code{nil} means that @code{gnus-uu} will ask for a file to encode
8413before you compose the article. If this variable is @code{t}, you can
8414either include an encoded file with @kbd{C-c C-i} or have one included
8415for you when you post the article.
4009494e 8416
8a1cdce5
AC
8417@item gnus-uu-post-length
8418@vindex gnus-uu-post-length
8419Maximum length of an article. The encoded file will be split into how
8420many articles it takes to post the entire file.
4009494e 8421
8a1cdce5
AC
8422@item gnus-uu-post-threaded
8423@vindex gnus-uu-post-threaded
8424Non-@code{nil} means that @code{gnus-uu} will post the encoded file in a
8425thread. This may not be smart, as no other decoder I have seen is able
8426to follow threads when collecting uuencoded articles. (Well, I have
8427seen one package that does that---@code{gnus-uu}, but somehow, I don't
8428think that counts@dots{}) Default is @code{nil}.
4009494e 8429
8a1cdce5
AC
8430@item gnus-uu-post-separate-description
8431@vindex gnus-uu-post-separate-description
8432Non-@code{nil} means that the description will be posted in a separate
8433article. The first article will typically be numbered (0/x). If this
8434variable is @code{nil}, the description the user enters will be included
8435at the beginning of the first article, which will be numbered (1/x).
8436Default is @code{t}.
4009494e 8437
8a1cdce5 8438@end table
4009494e 8439
4009494e 8440
8a1cdce5
AC
8441@node Viewing Files
8442@subsection Viewing Files
8443@cindex viewing files
8444@cindex pseudo-articles
4009494e 8445
8a1cdce5
AC
8446After decoding, if the file is some sort of archive, Gnus will attempt
8447to unpack the archive and see if any of the files in the archive can be
8448viewed. For instance, if you have a gzipped tar file @file{pics.tar.gz}
8449containing the files @file{pic1.jpg} and @file{pic2.gif}, Gnus will
8450uncompress and de-tar the main file, and then view the two pictures.
8451This unpacking process is recursive, so if the archive contains archives
8452of archives, it'll all be unpacked.
4009494e 8453
8a1cdce5
AC
8454Finally, Gnus will normally insert a @dfn{pseudo-article} for each
8455extracted file into the summary buffer. If you go to these
8456``articles'', you will be prompted for a command to run (usually Gnus
8457will make a suggestion), and then the command will be run.
4009494e 8458
8a1cdce5
AC
8459@vindex gnus-view-pseudo-asynchronously
8460If @code{gnus-view-pseudo-asynchronously} is @code{nil}, Emacs will wait
8461until the viewing is done before proceeding.
4009494e 8462
8a1cdce5
AC
8463@vindex gnus-view-pseudos
8464If @code{gnus-view-pseudos} is @code{automatic}, Gnus will not insert
8465the pseudo-articles into the summary buffer, but view them
8466immediately. If this variable is @code{not-confirm}, the user won't even
8467be asked for a confirmation before viewing is done.
4009494e 8468
8a1cdce5
AC
8469@vindex gnus-view-pseudos-separately
8470If @code{gnus-view-pseudos-separately} is non-@code{nil}, one
8471pseudo-article will be created for each file to be viewed. If
8472@code{nil}, all files that use the same viewing command will be given as
8473a list of parameters to that command.
4009494e 8474
8a1cdce5
AC
8475@vindex gnus-insert-pseudo-articles
8476If @code{gnus-insert-pseudo-articles} is non-@code{nil}, insert
8477pseudo-articles when decoding. It is @code{t} by default.
4009494e 8478
8a1cdce5
AC
8479So; there you are, reading your @emph{pseudo-articles} in your
8480@emph{virtual newsgroup} from the @emph{virtual server}; and you think:
8481Why isn't anything real anymore? How did we get here?
4009494e 8482
4009494e 8483
8a1cdce5
AC
8484@node Article Treatment
8485@section Article Treatment
4009494e 8486
8a1cdce5
AC
8487Reading through this huge manual, you may have quite forgotten that the
8488object of newsreaders is to actually, like, read what people have
8489written. Reading articles. Unfortunately, people are quite bad at
8490writing, so there are tons of functions and variables to make reading
8491these articles easier.
4009494e 8492
8a1cdce5
AC
8493@menu
8494* Article Highlighting:: You want to make the article look like fruit salad.
8495* Article Fontisizing:: Making emphasized text look nice.
8496* Article Hiding:: You also want to make certain info go away.
8497* Article Washing:: Lots of way-neat functions to make life better.
8498* Article Header:: Doing various header transformations.
8499* Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
8500* Article Button Levels:: Controlling appearance of buttons.
8501* Article Date:: Grumble, UT!
8502* Article Display:: Display various stuff:
8503 X-Face, Picons, Gravatars, Smileys.
8504* Article Signature:: What is a signature?
8505* Article Miscellanea:: Various other stuff.
8506@end menu
4009494e 8507
4009494e 8508
8a1cdce5
AC
8509@node Article Highlighting
8510@subsection Article Highlighting
8511@cindex highlighting
4009494e 8512
8a1cdce5
AC
8513Not only do you want your article buffer to look like fruit salad, but
8514you want it to look like technicolor fruit salad.
4009494e 8515
8a1cdce5 8516@table @kbd
4009494e 8517
8a1cdce5
AC
8518@item W H a
8519@kindex W H a (Summary)
8520@findex gnus-article-highlight
8521@findex gnus-article-maybe-highlight
8522Do much highlighting of the current article
8523(@code{gnus-article-highlight}). This function highlights header, cited
8524text, the signature, and adds buttons to the body and the head.
4009494e 8525
8a1cdce5
AC
8526@item W H h
8527@kindex W H h (Summary)
8528@findex gnus-article-highlight-headers
8529@vindex gnus-header-face-alist
8530Highlight the headers (@code{gnus-article-highlight-headers}). The
8531highlighting will be done according to the @code{gnus-header-face-alist}
8532variable, which is a list where each element has the form
8533@code{(@var{regexp} @var{name} @var{content})}.
8534@var{regexp} is a regular expression for matching the
8535header, @var{name} is the face used for highlighting the header name
8536(@pxref{Faces and Fonts}) and @var{content} is the face for highlighting
8537the header value. The first match made will be used. Note that
8538@var{regexp} shouldn't have @samp{^} prepended---Gnus will add one.
4009494e 8539
8a1cdce5
AC
8540@item W H c
8541@kindex W H c (Summary)
8542@findex gnus-article-highlight-citation
8543Highlight cited text (@code{gnus-article-highlight-citation}).
4009494e 8544
8a1cdce5 8545Some variables to customize the citation highlights:
89167438 8546
8a1cdce5
AC
8547@table @code
8548@vindex gnus-cite-parse-max-size
d62672f3 8549
8a1cdce5
AC
8550@item gnus-cite-parse-max-size
8551If the article size in bytes is bigger than this variable (which is
855225000 by default), no citation highlighting will be performed.
d62672f3 8553
8a1cdce5
AC
8554@item gnus-cite-max-prefix
8555@vindex gnus-cite-max-prefix
8556Maximum possible length for a citation prefix (default 20).
4009494e 8557
8a1cdce5
AC
8558@item gnus-cite-face-list
8559@vindex gnus-cite-face-list
8560List of faces used for highlighting citations (@pxref{Faces and Fonts}).
8561When there are citations from multiple articles in the same message,
8562Gnus will try to give each citation from each article its own face.
8563This should make it easier to see who wrote what.
4009494e 8564
8a1cdce5
AC
8565@item gnus-supercite-regexp
8566@vindex gnus-supercite-regexp
8567Regexp matching normal Supercite attribution lines.
4009494e 8568
8a1cdce5
AC
8569@item gnus-supercite-secondary-regexp
8570@vindex gnus-supercite-secondary-regexp
8571Regexp matching mangled Supercite attribution lines.
4009494e 8572
8a1cdce5
AC
8573@item gnus-cite-minimum-match-count
8574@vindex gnus-cite-minimum-match-count
8575Minimum number of identical prefixes we have to see before we believe
8576that it's a citation.
4009494e 8577
8a1cdce5
AC
8578@item gnus-cite-attribution-prefix
8579@vindex gnus-cite-attribution-prefix
8580Regexp matching the beginning of an attribution line.
4009494e 8581
8a1cdce5
AC
8582@item gnus-cite-attribution-suffix
8583@vindex gnus-cite-attribution-suffix
8584Regexp matching the end of an attribution line.
4009494e 8585
8a1cdce5
AC
8586@item gnus-cite-attribution-face
8587@vindex gnus-cite-attribution-face
8588Face used for attribution lines. It is merged with the face for the
8589cited text belonging to the attribution.
4009494e 8590
8a1cdce5
AC
8591@item gnus-cite-ignore-quoted-from
8592@vindex gnus-cite-ignore-quoted-from
8593If non-@code{nil}, no citation highlighting will be performed on lines
8594beginning with @samp{>From }. Those lines may have been quoted by MTAs
8595in order not to mix up with the envelope From line. The default value
8596is @code{t}.
4009494e 8597
8a1cdce5 8598@end table
4009494e 8599
4009494e 8600
8a1cdce5
AC
8601@item W H s
8602@kindex W H s (Summary)
8603@vindex gnus-signature-separator
8604@vindex gnus-signature-face
8605@findex gnus-article-highlight-signature
8606Highlight the signature (@code{gnus-article-highlight-signature}).
8607Everything after @code{gnus-signature-separator} (@pxref{Article
8608Signature}) in an article will be considered a signature and will be
8609highlighted with @code{gnus-signature-face}, which is @code{italic} by
8610default.
4009494e 8611
4009494e
GM
8612@end table
8613
8a1cdce5 8614@xref{Customizing Articles}, for how to highlight articles automatically.
4009494e 8615
4009494e 8616
8a1cdce5
AC
8617@node Article Fontisizing
8618@subsection Article Fontisizing
8619@cindex emphasis
8620@cindex article emphasis
4009494e 8621
8a1cdce5
AC
8622@findex gnus-article-emphasize
8623@kindex W e (Summary)
8624People commonly add emphasis to words in news articles by writing things
8625like @samp{_this_} or @samp{*this*} or @samp{/this/}. Gnus can make
8626this look nicer by running the article through the @kbd{W e}
8627(@code{gnus-article-emphasize}) command.
4009494e 8628
8a1cdce5
AC
8629@vindex gnus-emphasis-alist
8630How the emphasis is computed is controlled by the
8631@code{gnus-emphasis-alist} variable. This is an alist where the first
8632element is a regular expression to be matched. The second is a number
8633that says what regular expression grouping is used to find the entire
8634emphasized word. The third is a number that says what regexp grouping
8635should be displayed and highlighted. (The text between these two
8636groupings will be hidden.) The fourth is the face used for
8637highlighting.
4009494e
GM
8638
8639@lisp
8a1cdce5
AC
8640(setq gnus-emphasis-alist
8641 '(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline)
8642 ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold)))
4009494e
GM
8643@end lisp
8644
8a1cdce5
AC
8645@cindex slash
8646@cindex asterisk
8647@cindex underline
8648@cindex /
8649@cindex *
4009494e 8650
8a1cdce5
AC
8651@vindex gnus-emphasis-underline
8652@vindex gnus-emphasis-bold
8653@vindex gnus-emphasis-italic
8654@vindex gnus-emphasis-underline-bold
8655@vindex gnus-emphasis-underline-italic
8656@vindex gnus-emphasis-bold-italic
8657@vindex gnus-emphasis-underline-bold-italic
8658By default, there are seven rules, and they use the following faces:
8659@code{gnus-emphasis-bold}, @code{gnus-emphasis-italic},
8660@code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic},
8661@code{gnus-emphasis-underline-italic},
8662@code{gnus-emphasis-underline-bold}, and
8663@code{gnus-emphasis-underline-bold-italic}.
4009494e 8664
8a1cdce5
AC
8665If you want to change these faces, you can either use @kbd{M-x
8666customize}, or you can use @code{copy-face}. For instance, if you want
8667to make @code{gnus-emphasis-italic} use a red face instead, you could
8668say something like:
4009494e
GM
8669
8670@lisp
8a1cdce5 8671(copy-face 'red 'gnus-emphasis-italic)
4009494e
GM
8672@end lisp
8673
8a1cdce5 8674@vindex gnus-group-highlight-words-alist
4009494e 8675
8a1cdce5
AC
8676If you want to highlight arbitrary words, you can use the
8677@code{gnus-group-highlight-words-alist} variable, which uses the same
8678syntax as @code{gnus-emphasis-alist}. The @code{highlight-words} group
8679parameter (@pxref{Group Parameters}) can also be used.
4009494e 8680
8a1cdce5 8681@xref{Customizing Articles}, for how to fontize articles automatically.
4009494e 8682
4009494e 8683
8a1cdce5
AC
8684@node Article Hiding
8685@subsection Article Hiding
8686@cindex article hiding
4009494e 8687
8a1cdce5
AC
8688Or rather, hiding certain things in each article. There usually is much
8689too much cruft in most articles.
4009494e 8690
8a1cdce5 8691@table @kbd
4009494e 8692
8a1cdce5
AC
8693@item W W a
8694@kindex W W a (Summary)
8695@findex gnus-article-hide
8696Do quite a lot of hiding on the article buffer
8697(@kbd{gnus-article-hide}). In particular, this function will hide
8698headers, @acronym{PGP}, cited text and the signature.
4009494e 8699
8a1cdce5
AC
8700@item W W h
8701@kindex W W h (Summary)
8702@findex gnus-article-hide-headers
8703Hide headers (@code{gnus-article-hide-headers}). @xref{Hiding
8704Headers}.
4009494e 8705
8a1cdce5
AC
8706@item W W b
8707@kindex W W b (Summary)
8708@findex gnus-article-hide-boring-headers
8709Hide headers that aren't particularly interesting
8710(@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}.
4009494e 8711
8a1cdce5
AC
8712@item W W s
8713@kindex W W s (Summary)
8714@findex gnus-article-hide-signature
8715Hide signature (@code{gnus-article-hide-signature}). @xref{Article
8716Signature}.
4009494e 8717
8a1cdce5
AC
8718@item W W l
8719@kindex W W l (Summary)
8720@findex gnus-article-hide-list-identifiers
8721@vindex gnus-list-identifiers
8722Strip list identifiers specified in @code{gnus-list-identifiers}. These
8723are strings some mailing list servers add to the beginning of all
8724@code{Subject} headers---for example, @samp{[zebra 4711]}. Any leading
8725@samp{Re: } is skipped before stripping. @code{gnus-list-identifiers}
8726may not contain @code{\\(..\\)}.
4009494e 8727
8a1cdce5 8728@table @code
4009494e 8729
8a1cdce5
AC
8730@item gnus-list-identifiers
8731@vindex gnus-list-identifiers
8732A regular expression that matches list identifiers to be removed from
8733subject. This can also be a list of regular expressions.
4009494e 8734
8a1cdce5 8735@end table
4009494e 8736
8a1cdce5
AC
8737@item W W P
8738@kindex W W P (Summary)
8739@findex gnus-article-hide-pem
8740Hide @acronym{PEM} (privacy enhanced messages) cruft
8741(@code{gnus-article-hide-pem}).
4009494e 8742
8a1cdce5
AC
8743@item W W B
8744@kindex W W B (Summary)
8745@findex gnus-article-strip-banner
8746@vindex gnus-article-banner-alist
8747@vindex gnus-article-address-banner-alist
8748@cindex banner
8749@cindex OneList
8750@cindex stripping advertisements
8751@cindex advertisements
8752Strip the banner specified by the @code{banner} group parameter
8753(@code{gnus-article-strip-banner}). This is mainly used to hide those
8754annoying banners and/or signatures that some mailing lists and moderated
8755groups adds to all the messages. The way to use this function is to add
8756the @code{banner} group parameter (@pxref{Group Parameters}) to the
8757group you want banners stripped from. The parameter either be a string,
8758which will be interpreted as a regular expression matching text to be
8759removed, or the symbol @code{signature}, meaning that the (last)
8760signature should be removed, or other symbol, meaning that the
8761corresponding regular expression in @code{gnus-article-banner-alist} is
8762used.
4009494e 8763
8a1cdce5 8764For instance:
4009494e 8765
8a1cdce5
AC
8766@lisp
8767(setq gnus-article-banner-alist
8768 ((googleGroups .
8769 "^\n*--~--~---------\\(.+\n\\)+")))
8770@end lisp
4009494e 8771
8a1cdce5
AC
8772Regardless of a group, you can hide things like advertisements only when
8773the sender of an article has a certain mail address specified in
8774@code{gnus-article-address-banner-alist}.
4009494e 8775
8a1cdce5 8776@table @code
4009494e 8777
8a1cdce5
AC
8778@item gnus-article-address-banner-alist
8779@vindex gnus-article-address-banner-alist
8780Alist of mail addresses and banners. Each element has the form
8781@code{(@var{address} . @var{banner})}, where @var{address} is a regexp
8782matching a mail address in the From header, @var{banner} is one of a
8783symbol @code{signature}, an item in @code{gnus-article-banner-alist},
8784a regexp and @code{nil}. If @var{address} matches author's mail
8785address, it will remove things like advertisements. For example, if a
8786sender has the mail address @samp{hail@@yoo-hoo.co.jp} and there is a
8787banner something like @samp{Do You Yoo-hoo!?} in all articles he
8788sends, you can use the following element to remove them:
4009494e 8789
8a1cdce5
AC
8790@lisp
8791("@@yoo-hoo\\.co\\.jp\\'" .
8792 "\n_+\nDo You Yoo-hoo!\\?\n.*\n.*\n")
8793@end lisp
4009494e 8794
8a1cdce5 8795@end table
4009494e 8796
8a1cdce5
AC
8797@item W W c
8798@kindex W W c (Summary)
8799@findex gnus-article-hide-citation
8800Hide citation (@code{gnus-article-hide-citation}). Some variables for
8801customizing the hiding:
4009494e 8802
8a1cdce5 8803@table @code
4009494e 8804
8a1cdce5
AC
8805@item gnus-cited-opened-text-button-line-format
8806@itemx gnus-cited-closed-text-button-line-format
8807@vindex gnus-cited-closed-text-button-line-format
8808@vindex gnus-cited-opened-text-button-line-format
8809Gnus adds buttons to show where the cited text has been hidden, and to
8810allow toggle hiding the text. The format of the variable is specified
8811by these format-like variable (@pxref{Formatting Variables}). These
8812specs are valid:
4009494e 8813
8a1cdce5
AC
8814@table @samp
8815@item b
8816Starting point of the hidden text.
8817@item e
8818Ending point of the hidden text.
8819@item l
8820Number of characters in the hidden region.
8821@item n
8822Number of lines of hidden text.
4009494e
GM
8823@end table
8824
8a1cdce5
AC
8825@item gnus-cited-lines-visible
8826@vindex gnus-cited-lines-visible
8827The number of lines at the beginning of the cited text to leave
8828shown. This can also be a cons cell with the number of lines at the top
8829and bottom of the text, respectively, to remain visible.
4009494e 8830
8a1cdce5 8831@end table
4009494e 8832
8a1cdce5
AC
8833@item W W C-c
8834@kindex W W C-c (Summary)
8835@findex gnus-article-hide-citation-maybe
4009494e 8836
8a1cdce5
AC
8837Hide citation (@code{gnus-article-hide-citation-maybe}) depending on the
8838following two variables:
4009494e 8839
8a1cdce5
AC
8840@table @code
8841@item gnus-cite-hide-percentage
8842@vindex gnus-cite-hide-percentage
8843If the cited text is of a bigger percentage than this variable (default
884450), hide the cited text.
4009494e 8845
8a1cdce5
AC
8846@item gnus-cite-hide-absolute
8847@vindex gnus-cite-hide-absolute
8848The cited text must have at least this length (default 10) before it
8849is hidden.
4009494e
GM
8850@end table
8851
8a1cdce5
AC
8852@item W W C
8853@kindex W W C (Summary)
8854@findex gnus-article-hide-citation-in-followups
8855Hide cited text in articles that aren't roots
8856(@code{gnus-article-hide-citation-in-followups}). This isn't very
8857useful as an interactive command, but might be a handy function to stick
8858have happen automatically (@pxref{Customizing Articles}).
4009494e 8859
8a1cdce5 8860@end table
4009494e 8861
8a1cdce5
AC
8862All these ``hiding'' commands are toggles, but if you give a negative
8863prefix to these commands, they will show what they have previously
8864hidden. If you give a positive prefix, they will always hide.
b890d447 8865
8a1cdce5
AC
8866Also @pxref{Article Highlighting} for further variables for
8867citation customization.
4009494e 8868
8a1cdce5
AC
8869@xref{Customizing Articles}, for how to hide article elements
8870automatically.
4009494e 8871
4009494e 8872
8a1cdce5
AC
8873@node Article Washing
8874@subsection Article Washing
8875@cindex washing
8876@cindex article washing
4009494e 8877
8a1cdce5
AC
8878We call this ``article washing'' for a really good reason. Namely, the
8879@kbd{A} key was taken, so we had to use the @kbd{W} key instead.
4009494e 8880
8a1cdce5
AC
8881@dfn{Washing} is defined by us as ``changing something from something to
8882something else'', but normally results in something looking better.
8883Cleaner, perhaps.
4009494e 8884
8a1cdce5
AC
8885@xref{Customizing Articles}, if you want to change how Gnus displays
8886articles by default.
4009494e 8887
8a1cdce5 8888@table @kbd
4009494e 8889
8a1cdce5
AC
8890@item C-u g
8891This is not really washing, it's sort of the opposite of washing. If
8892you type this, you see the article exactly as it exists on disk or on
8893the server.
4009494e 8894
8a1cdce5
AC
8895@item g
8896Force redisplaying of the current article
8897(@code{gnus-summary-show-article}). This is also not really washing.
8898If you type this, you see the article without any previously applied
8899interactive Washing functions but with all default treatments
8900(@pxref{Customizing Articles}).
4009494e 8901
8a1cdce5
AC
8902@item W l
8903@kindex W l (Summary)
8904@findex gnus-summary-stop-page-breaking
8905Remove page breaks from the current article
8906(@code{gnus-summary-stop-page-breaking}). @xref{Misc Article}, for page
8907delimiters.
4009494e 8908
8a1cdce5
AC
8909@item W r
8910@kindex W r (Summary)
8911@findex gnus-summary-caesar-message
8912@c @icon{gnus-summary-caesar-message}
8913Do a Caesar rotate (rot13) on the article buffer
8914(@code{gnus-summary-caesar-message}).
8915Unreadable articles that tell you to read them with Caesar rotate or rot13.
8916(Typically offensive jokes and such.)
4009494e 8917
8a1cdce5
AC
8918It's commonly called ``rot13'' because each letter is rotated 13
8919positions in the alphabet, e. g. @samp{B} (letter #2) -> @samp{O} (letter
8920#15). It is sometimes referred to as ``Caesar rotate'' because Caesar
8921is rumored to have employed this form of, uh, somewhat weak encryption.
4009494e 8922
8a1cdce5
AC
8923@item W m
8924@kindex W m (Summary)
8925@findex gnus-summary-morse-message
8926Morse decode the article buffer (@code{gnus-summary-morse-message}).
4009494e 8927
8a1cdce5
AC
8928@item W i
8929@kindex W i (Summary)
8930@findex gnus-summary-idna-message
8931Decode IDNA encoded domain names in the current articles. IDNA
8932encoded domain names looks like @samp{xn--bar}. If a string remain
8933unencoded after running invoking this, it is likely an invalid IDNA
8934string (@samp{xn--bar} is invalid). You must have GNU Libidn
8935(@url{http://www.gnu.org/software/libidn/}) installed for this command
8936to work.
4009494e 8937
8a1cdce5
AC
8938@item W t
8939@item t
8940@kindex W t (Summary)
8941@kindex t (Summary)
8942@findex gnus-summary-toggle-header
8943Toggle whether to display all headers in the article buffer
8944(@code{gnus-summary-toggle-header}).
4009494e 8945
8a1cdce5
AC
8946@item W v
8947@kindex W v (Summary)
8948@findex gnus-summary-verbose-headers
8949Toggle whether to display all headers in the article buffer permanently
8950(@code{gnus-summary-verbose-headers}).
4009494e 8951
8a1cdce5
AC
8952@item W o
8953@kindex W o (Summary)
8954@findex gnus-article-treat-overstrike
8955Treat overstrike (@code{gnus-article-treat-overstrike}).
4009494e 8956
8a1cdce5
AC
8957@item W d
8958@kindex W d (Summary)
8959@findex gnus-article-treat-dumbquotes
8960@vindex gnus-article-dumbquotes-map
8961@cindex Smartquotes
8962@cindex M****s*** sm*rtq**t*s
8963@cindex Latin 1
8964Treat M****s*** sm*rtq**t*s according to
8965@code{gnus-article-dumbquotes-map}
8966(@code{gnus-article-treat-dumbquotes}). Note that this function guesses
8967whether a character is a sm*rtq**t* or not, so it should only be used
8968interactively.
4009494e 8969
8a1cdce5
AC
8970Sm*rtq**t*s are M****s***'s unilateral extension to the character map in
8971an attempt to provide more quoting characters. If you see something
8972like @code{\222} or @code{\264} where you're expecting some kind of
8973apostrophe or quotation mark, then try this wash.
4009494e 8974
8a1cdce5
AC
8975@item W U
8976@kindex W U (Summary)
8977@findex gnus-article-treat-non-ascii
8978@cindex Unicode
8979@cindex Non-@acronym{ASCII}
8980Translate many non-@acronym{ASCII} characters into their
8981@acronym{ASCII} equivalents (@code{gnus-article-treat-non-ascii}).
8982This is mostly useful if you're on a terminal that has a limited font
fe7a3057 8983and doesn't show accented characters, ``advanced'' punctuation, and the
fa463103 8984