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