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