Trailing whitespace deleted.
[bpt/emacs.git] / man / gnus.texi
CommitLineData
7a113368 1\input texinfo @c -*- mode: texinfo; coding: iso-latin-1; -*-
6bf7aab6 2
a28afc5f 3@setfilename ../info/gnus
6bf7aab6
DL
4@settitle Gnus Manual
5@synindex fn cp
6@synindex vr cp
7@synindex pg cp
64566c03 8@dircategory Emacs
6bf7aab6
DL
9@direntry
10* Gnus: (gnus). The newsreader Gnus.
11@end direntry
12@iftex
13@finalout
14@end iftex
15@setchapternewpage odd
16
17@iftex
2625a8f7
GM
18@iflatex
19\documentclass[twoside,a4paper,openright,11pt]{book}
20\usepackage[latin1]{inputenc}
21\usepackage{pagestyle}
22\usepackage{epsfig}
23\usepackage{bembo}
24\usepackage{pixidx}
25
26\makeindex
27\begin{document}
28
29\newcommand{\gnuschaptername}{}
30\newcommand{\gnussectionname}{}
31
32\newcommand{\gnusbackslash}{/}
33
34\newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}}
35\newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}}
36
37\newcommand{\gnuskindex}[1]{\index{#1}}
38\newcommand{\gnusindex}[1]{\index{#1}}
39
40\newcommand{\gnustt}[1]{{\fontfamily{pfu}\fontsize{10pt}{10}\selectfont #1}}
41\newcommand{\gnuscode}[1]{\gnustt{#1}}
42\newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\fontfamily{pfu}\fontsize{10pt}{10}\selectfont #1}''}
43\newcommand{\gnuslisp}[1]{\gnustt{#1}}
44\newcommand{\gnuskbd}[1]{`\gnustt{#1}'}
45\newcommand{\gnusfile}[1]{`\gnustt{#1}'}
46\newcommand{\gnusdfn}[1]{\textit{#1}}
47\newcommand{\gnusi}[1]{\textit{#1}}
48\newcommand{\gnusstrong}[1]{\textbf{#1}}
49\newcommand{\gnusemph}[1]{\textit{#1}}
50\newcommand{\gnusvar}[1]{{\fontsize{10pt}{10}\selectfont\textsl{\textsf{#1}}}}
51\newcommand{\gnussc}[1]{\textsc{#1}}
52\newcommand{\gnustitle}[1]{{\huge\textbf{#1}}}
53\newcommand{\gnusauthor}[1]{{\large\textbf{#1}}}
54\newcommand{\gnusresult}[1]{\gnustt{=> #1}}
55
56\newcommand{\gnusbullet}{{${\bullet}$}}
57\newcommand{\gnusdollar}{\$}
58\newcommand{\gnusampersand}{\&}
59\newcommand{\gnuspercent}{\%}
60\newcommand{\gnushash}{\#}
61\newcommand{\gnushat}{\symbol{"5E}}
62\newcommand{\gnusunderline}{\symbol{"5F}}
63\newcommand{\gnusnot}{$\neg$}
64\newcommand{\gnustilde}{\symbol{"7E}}
65\newcommand{\gnusless}{{$<$}}
66\newcommand{\gnusgreater}{{$>$}}
67\newcommand{\gnusbraceleft}{{$>$}}
68\newcommand{\gnusbraceright}{{$>$}}
69
70\newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=ps/gnus-head.eps,height=1cm}}}
71\newcommand{\gnusinteresting}{
72\marginpar[\mbox{}\hfill\gnushead]{\gnushead}
73}
74
75\newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi}
76
77\newcommand{\gnuspagechapter}[1]{
78{\mbox{}}
79}
80
81\newdimen{\gnusdimen}
82\gnusdimen 0pt
83
84\newcommand{\gnuschapter}[2]{
85\gnuscleardoublepage
86\ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi
87\chapter{#2}
88\renewcommand{\gnussectionname}{}
89\renewcommand{\gnuschaptername}{#2}
90\thispagestyle{empty}
91\hspace*{-2cm}
92\begin{picture}(500,500)(0,0)
93\put(480,350){\makebox(0,0)[tr]{#1}}
94\put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}}
95\end{picture}
96\clearpage
97}
98
99\newcommand{\gnusfigure}[3]{
100\begin{figure}
101\mbox{}\ifodd\count0\hspace*{-0.8cm}\else\hspace*{-3cm}\fi\begin{picture}(440,#2)
102#3
103\end{picture}
104\caption{#1}
105\end{figure}
106}
107
108\newcommand{\gnusicon}[1]{
109\marginpar[\mbox{}\hfill\raisebox{-1.5cm}{\epsfig{figure=tmp/#1-up.ps,height=1.5cm}}]{\raisebox{-1cm}{\epsfig{figure=tmp/#1-up.ps,height=1cm}}}
110}
111
112\newcommand{\gnuspicon}[1]{
113\margindex{\epsfig{figure=#1,width=2cm}}
114}
115
116\newcommand{\gnusxface}[2]{
117\margindex{\epsfig{figure=#1,width=1cm}\epsfig{figure=#2,width=1cm}}
118}
119
120\newcommand{\gnussmiley}[2]{
121\margindex{\makebox[2cm]{\hfill\epsfig{figure=#1,width=0.5cm}\hfill\epsfig{figure=#2,width=0.5cm}\hfill}}
122}
123
124\newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
125
126\newcommand{\gnussection}[1]{
127\renewcommand{\gnussectionname}{#1}
128\section{#1}
129}
130
131\newenvironment{codelist}%
132{\begin{list}{}{
133}
134}{\end{list}}
135
136\newenvironment{kbdlist}%
137{\begin{list}{}{
138\labelwidth=0cm
139}
140}{\end{list}}
141
142\newenvironment{dfnlist}%
143{\begin{list}{}{
144}
145}{\end{list}}
146
147\newenvironment{stronglist}%
148{\begin{list}{}{
149}
150}{\end{list}}
151
152\newenvironment{samplist}%
153{\begin{list}{}{
154}
155}{\end{list}}
156
157\newenvironment{varlist}%
158{\begin{list}{}{
159}
160}{\end{list}}
161
162\newenvironment{emphlist}%
163{\begin{list}{}{
164}
165}{\end{list}}
166
167\newlength\gnusheadtextwidth
168\setlength{\gnusheadtextwidth}{\headtextwidth}
169\addtolength{\gnusheadtextwidth}{1cm}
170
171\newpagestyle{gnuspreamble}%
172{
173{
174\ifodd\count0
175{
176\hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}}
177}
178\else
179{
180\hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}}
181}
182}
183\fi
184}
185}
186{
187\ifodd\count0
188\mbox{} \hfill
189\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
190\else
191\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
192\hfill \mbox{}
193\fi
194}
195
196\newpagestyle{gnusindex}%
197{
198{
199\ifodd\count0
200{
201\hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}}
202}
203\else
204{
205\hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
206}
207\fi
208}
209}
210{
211\ifodd\count0
212\mbox{} \hfill
213\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
214\else
215\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
216\hfill \mbox{}
217\fi
218}
219
220\newpagestyle{gnus}%
221{
222{
223\ifodd\count0
224{
225\makebox[12cm]{\hspace*{3.1cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}}
226}
227\else
228{
229\makebox[12cm]{\hspace*{-2.95cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}}
230}
231\fi
232}
233}
234{
235\ifodd\count0
236\mbox{} \hfill
237\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
238\else
239\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
240\hfill \mbox{}
241\fi
242}
243
244\pagenumbering{roman}
245\pagestyle{gnuspreamble}
246
247@end iflatex
6bf7aab6
DL
248@end iftex
249
2625a8f7
GM
250@iftex
251@iflatex
252\begin{titlepage}
253{
254
255%\addtolength{\oddsidemargin}{-5cm}
256%\addtolength{\evensidemargin}{-5cm}
257\parindent=0cm
258\addtolength{\textheight}{2cm}
259
260\gnustitle{\gnustitlename}\\
261\rule{15cm}{1mm}\\
262\vfill
263\hspace*{0cm}\epsfig{figure=ps/gnus-big-logo.eps,height=15cm}
264\vfill
265\rule{15cm}{1mm}\\
266\gnusauthor{by Lars Magne Ingebrigtsen}
267\newpage
268}
269
270\mbox{}
271\vfill
272
273\thispagestyle{empty}
274
04aa48d6 275Copyright \copyright{} 1995,96,97,98,99,2000,2001 Free Software Foundation, Inc.
2625a8f7
GM
276
277
278Permission is granted to copy, distribute and/or modify this document
279under the terms of the GNU Free Documentation License, Version 1.1 or
280any later version published by the Free Software Foundation; with no
281Invariant Sections, with the Front-Cover texts being ``A GNU
282Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
283license is included in the section entitled ``GNU Free Documentation
284License'' in the Emacs manual.
285
286(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
287this GNU Manual, like GNU software. Copies published by the Free
288Software Foundation raise funds for GNU development.''
289
290This document is part of a collection distributed under the GNU Free
291Documentation License. If you want to distribute this document
292separately from the collection, you can do so by adding a copy of the
293license to the document, as described in section 6 of the license.
294\newpage
295\end{titlepage}
296@end iflatex
297@end iftex
6bf7aab6 298
2625a8f7 299@ifnottex
6bf7aab6
DL
300
301This file documents Gnus, the GNU Emacs newsreader.
302
04aa48d6 303Copyright (C) 1995,96,97,98,99,2000,2001 Free Software Foundation, Inc.
6bf7aab6 304
2625a8f7
GM
305Permission is granted to copy, distribute and/or modify this document
306under the terms of the GNU Free Documentation License, Version 1.1 or
307any later version published by the Free Software Foundation; with the
308Invariant Sections being none, with the Front-Cover texts being ``A GNU
309Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
310license is included in the section entitled ``GNU Free Documentation
311License'' in the Emacs manual.
6bf7aab6 312
2625a8f7
GM
313(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
314this GNU Manual, like GNU software. Copies published by the Free
315Software Foundation raise funds for GNU development.''
6bf7aab6 316
2625a8f7
GM
317This document is part of a collection distributed under the GNU Free
318Documentation License. If you want to distribute this document
319separately from the collection, you can do so by adding a copy of the
320license to the document, as described in section 6 of the license.
321@end ifnottex
6bf7aab6
DL
322
323@tex
324
325@titlepage
2625a8f7 326@title Gnus Manual
6bf7aab6
DL
327
328@author by Lars Magne Ingebrigtsen
329@page
330
331@vskip 0pt plus 1filll
04aa48d6 332Copyright @copyright{} 1995,96,97,98,99,2000,2001 Free Software Foundation, Inc.
6bf7aab6 333
2625a8f7
GM
334Permission is granted to copy, distribute and/or modify this document
335under the terms of the GNU Free Documentation License, Version 1.1 or
336any later version published by the Free Software Foundation; with no
337Invariant Sections, with the Front-Cover texts being ``A GNU
338Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
339license is included in the section entitled ``GNU Free Documentation
340License'' in the Emacs manual.
6bf7aab6 341
2625a8f7
GM
342(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
343this GNU Manual, like GNU software. Copies published by the Free
344Software Foundation raise funds for GNU development.''
6bf7aab6 345
2625a8f7
GM
346This document is part of a collection distributed under the GNU Free
347Documentation License. If you want to distribute this document
348separately from the collection, you can do so by adding a copy of the
349license to the document, as described in section 6 of the license.
6bf7aab6
DL
350
351@end titlepage
352@page
353
354@end tex
355
356
357@node Top
358@top The Gnus Newsreader
359
360@ifinfo
361
362You can read news (and mail) from within Emacs by using Gnus. The news
363can be gotten by any nefarious means you can think of---@sc{nntp}, local
364spool or your mbox file. All at the same time, if you want to push your
365luck.
366
f3a5300d 367This manual corresponds to Gnus 5.9.0.
6bf7aab6
DL
368
369@end ifinfo
370
371@iftex
372
2625a8f7
GM
373@iflatex
374\tableofcontents
375\gnuscleardoublepage
376@end iflatex
377
6bf7aab6
DL
378Gnus is the advanced, self-documenting, customizable, extensible
379unreal-time newsreader for GNU Emacs.
380
381Oops. That sounds oddly familiar, so let's start over again to avoid
382being accused of plagiarism:
383
384Gnus is a message-reading laboratory. It will let you look at just
385about anything as if it were a newsgroup. You can read mail with it,
2625a8f7
GM
386you can browse directories with it, you can @code{ftp} with it---you
387can even read news with it!
6bf7aab6
DL
388
389Gnus tries to empower people who read news the same way Emacs empowers
390people who edit text. Gnus sets no limits to what the user should be
391allowed to do. Users are encouraged to extend Gnus to make it behave
392like they want it to behave. A program should not control people;
393people should be empowered to do what they want by using (or abusing)
394the program.
395
396@end iftex
397
6bf7aab6
DL
398@menu
399* Starting Up:: Finding news can be a pain.
400* The Group Buffer:: Selecting, subscribing and killing groups.
401* The Summary Buffer:: Reading, saving and posting articles.
402* The Article Buffer:: Displaying and handling articles.
403* Composing Messages:: Information on sending mail and news.
404* Select Methods:: Gnus reads all messages from various select methods.
405* Scoring:: Assigning values to articles.
406* Various:: General purpose settings.
407* The End:: Farewell and goodbye.
408* Appendices:: Terminology, Emacs intro, FAQ, History, Internals.
409* Index:: Variable, function and concept index.
410* Key Index:: Key Index.
2625a8f7
GM
411
412@detailmenu
413 --- The Detailed Node Listing ---
414
415Starting Gnus
416
417* Finding the News:: Choosing a method for getting news.
418* The First Time:: What does Gnus do the first time you start it?
419* The Server is Down:: How can I read my mail then?
420* Slave Gnusae:: You can have more than one Gnus active at a time.
421* Fetching a Group:: Starting Gnus just to read a group.
422* New Groups:: What is Gnus supposed to do with new groups?
423* Startup Files:: Those pesky startup files---@file{.newsrc}.
424* Auto Save:: Recovering from a crash.
425* The Active File:: Reading the active file over a slow line Takes Time.
426* Changing Servers:: You may want to move from one server to another.
427* Startup Variables:: Other variables you might change.
428
429New Groups
430
431* Checking New Groups:: Determining what groups are new.
432* Subscription Methods:: What Gnus should do with new groups.
433* Filtering New Groups:: Making Gnus ignore certain new groups.
434
435The Group Buffer
436
437* Group Buffer Format:: Information listed and how you can change it.
438* Group Maneuvering:: Commands for moving in the group buffer.
439* Selecting a Group:: Actually reading news.
440* Group Data:: Changing the info for a group.
441* Subscription Commands:: Unsubscribing, killing, subscribing.
442* Group Levels:: Levels? What are those, then?
443* Group Score:: A mechanism for finding out what groups you like.
444* Marking Groups:: You can mark groups for later processing.
445* Foreign Groups:: Creating and editing groups.
446* Group Parameters:: Each group may have different parameters set.
447* Listing Groups:: Gnus can list various subsets of the groups.
448* Sorting Groups:: Re-arrange the group order.
449* Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
450* Browse Foreign Server:: You can browse a server. See what it has to offer.
451* Exiting Gnus:: Stop reading news and get some work done.
452* Group Topics:: A folding group mode divided into topics.
453* Misc Group Stuff:: Other stuff that you can to do.
454
455Group Buffer Format
456
457* Group Line Specification:: Deciding how the group buffer is to look.
458* Group Modeline Specification:: The group buffer modeline.
459* Group Highlighting:: Having nice colors in the group buffer.
460
461Group Topics
462
463* Topic Variables:: How to customize the topics the Lisp Way.
464* Topic Commands:: Interactive E-Z commands.
465* Topic Sorting:: Sorting each topic individually.
466* Topic Topology:: A map of the world.
467* Topic Parameters:: Parameters that apply to all groups in a topic.
468
469Misc Group Stuff
470
471* Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
472* Group Information:: Information and help on groups and Gnus.
473* Group Timestamp:: Making Gnus keep track of when you last read a group.
474* File Commands:: Reading and writing the Gnus files.
475
476The Summary Buffer
477
478* Summary Buffer Format:: Deciding how the summary buffer is to look.
479* Summary Maneuvering:: Moving around the summary buffer.
480* Choosing Articles:: Reading articles.
481* Paging the Article:: Scrolling the current article.
482* Reply Followup and Post:: Posting articles.
483* Marking Articles:: Marking articles as read, expirable, etc.
484* Limiting:: You can limit the summary buffer.
485* Threading:: How threads are made.
486* Sorting:: How articles and threads are sorted.
487* Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
488* Article Caching:: You may store articles in a cache.
489* Persistent Articles:: Making articles expiry-resistant.
490* Article Backlog:: Having already read articles hang around.
491* Saving Articles:: Ways of customizing article saving.
492* Decoding Articles:: Gnus can treat series of (uu)encoded articles.
493* Article Treatment:: The article buffer can be mangled at will.
494* MIME Commands:: Doing MIMEy things with the articles.
495* Charsets:: Character set issues.
496* Article Commands:: Doing various things with the article buffer.
497* Summary Sorting:: Sorting the summary buffer in various ways.
498* Finding the Parent:: No child support? Get the parent.
499* Alternative Approaches:: Reading using non-default summaries.
500* Tree Display:: A more visual display of threads.
501* Mail Group Commands:: Some commands can only be used in mail groups.
502* Various Summary Stuff:: What didn't fit anywhere else.
503* Exiting the Summary Buffer:: Returning to the Group buffer.
504* Crosspost Handling:: How crossposted articles are dealt with.
505* Duplicate Suppression:: An alternative when crosspost handling fails.
506
507Summary Buffer Format
508
509* Summary Buffer Lines:: You can specify how summary lines should look.
510* To From Newsgroups:: How to not display your own name.
511* Summary Buffer Mode Line:: You can say how the mode line should look.
512* Summary Highlighting:: Making the summary buffer all pretty and nice.
513
514Choosing Articles
515
516* Choosing Commands:: Commands for choosing articles.
517* Choosing Variables:: Variables that influence these commands.
518
519Reply, Followup and Post
520
521* Summary Mail Commands:: Sending mail.
522* Summary Post Commands:: Sending news.
523* Summary Message Commands:: Other Message-related commands.
524* Canceling and Superseding:: ``Whoops, I shouldn't have called him that.''
525
526Marking Articles
527
528* Unread Articles:: Marks for unread articles.
529* Read Articles:: Marks for read articles.
530* Other Marks:: Marks that do not affect readedness.
531* Setting Marks:: How to set and remove marks.
532* Generic Marking Commands:: How to customize the marking.
533* Setting Process Marks:: How to mark articles for later processing.
534
535Threading
536
537* Customizing Threading:: Variables you can change to affect the threading.
538* Thread Commands:: Thread based commands in the summary buffer.
539
540Customizing Threading
541
542* Loose Threads:: How Gnus gathers loose threads into bigger threads.
543* Filling In Threads:: Making the threads displayed look fuller.
544* More Threading:: Even more variables for fiddling with threads.
545* Low-Level Threading:: You thought it was over... but you were wrong!
546
547Decoding Articles
548
549* Uuencoded Articles:: Uudecode articles.
550* Shell Archives:: Unshar articles.
551* PostScript Files:: Split PostScript.
552* Other Files:: Plain save and binhex.
553* Decoding Variables:: Variables for a happy decoding.
554* Viewing Files:: You want to look at the result of the decoding?
555
556Decoding Variables
557
558* Rule Variables:: Variables that say how a file is to be viewed.
559* Other Decode Variables:: Other decode variables.
560* Uuencoding and Posting:: Variables for customizing uuencoding.
561
562Article Treatment
563
564* Article Highlighting:: You want to make the article look like fruit salad.
565* Article Fontisizing:: Making emphasized text look nice.
566* Article Hiding:: You also want to make certain info go away.
567* Article Washing:: Lots of way-neat functions to make life better.
568* Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
569* Article Date:: Grumble, UT!
570* Article Signature:: What is a signature?
28665d46 571* Article Miscellanea:: Various other stuff.
2625a8f7
GM
572
573Alternative Approaches
574
575* Pick and Read:: First mark articles and then read them.
576* Binary Groups:: Auto-decode all articles.
577
578Various Summary Stuff
579
580* Summary Group Information:: Information oriented commands.
581* Searching for Articles:: Multiple article commands.
582* Summary Generation Commands:: (Re)generating the summary buffer.
583* Really Various Summary Commands:: Those pesky non-conformant commands.
584
585The Article Buffer
586
587* Hiding Headers:: Deciding what headers should be displayed.
588* Using MIME:: Pushing articles through @sc{mime} before reading them.
589* Customizing Articles:: Tailoring the look of the articles.
590* Article Keymap:: Keystrokes available in the article buffer.
591* Misc Article:: Other stuff.
592
593Composing Messages
594
595* Mail:: Mailing and replying.
2625a8f7
GM
596* Posting Server:: What server should you post via?
597* Mail and Post:: Mailing and posting at the same time.
598* Archived Messages:: Where Gnus stores the messages you've sent.
599* Posting Styles:: An easier way to specify who you are.
600* Drafts:: Postponing messages and rejected messages.
601* Rejected Articles:: What happens if the server doesn't like your article?
602
603Select Methods
604
605* The Server Buffer:: Making and editing virtual servers.
606* Getting News:: Reading USENET news with Gnus.
607* Getting Mail:: Reading your personal mail with Gnus.
608* Browsing the Web:: Getting messages from a plethora of Web sources.
609* Other Sources:: Reading directories, files, SOUP packets.
610* Combined Groups:: Combining groups into one group.
611* Gnus Unplugged:: Reading news and mail offline.
612
613The Server Buffer
614
615* Server Buffer Format:: You can customize the look of this buffer.
616* Server Commands:: Commands to manipulate servers.
617* Example Methods:: Examples server specifications.
618* Creating a Virtual Server:: An example session.
619* Server Variables:: Which variables to set.
620* Servers and Methods:: You can use server names as select methods.
621* Unavailable Servers:: Some servers you try to contact may be down.
622
623Getting News
624
625* NNTP:: Reading news from an @sc{nntp} server.
626* News Spool:: Reading news from the local spool.
627
628Getting Mail
629
177c0ea7 630* Mail in a Newsreader:: Important introductory notes.
2625a8f7
GM
631* Getting Started Reading Mail:: A simple cookbook example.
632* Splitting Mail:: How to create mail groups.
633* Mail Sources:: How to tell Gnus where to get mail from.
a8edc211 634* Mail Back End Variables:: Variables for customizing mail handling.
2625a8f7
GM
635* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
636* Group Mail Splitting:: Use group customize to drive mail splitting.
637* Incorporating Old Mail:: What about the old mail you have?
638* Expiring Mail:: Getting rid of unwanted mail.
5b4e44da 639* Washing Mail:: Removing cruft from the mail you get.
2625a8f7 640* Duplicates:: Dealing with duplicated mail.
a8edc211
SZ
641* Not Reading Mail:: Using mail back ends for reading other files.
642* Choosing a Mail Back End:: Gnus can read a variety of mail formats.
2625a8f7
GM
643
644Mail Sources
645
646* Mail Source Specifiers:: How to specify what a mail source is.
647* Mail Source Customization:: Some variables that influence things.
648* Fetching Mail:: Using the mail source specifiers.
649
a8edc211 650Choosing a Mail Back End
2625a8f7
GM
651
652* Unix Mail Box:: Using the (quite) standard Un*x mbox.
653* Rmail Babyl:: Emacs programs use the rmail babyl format.
654* Mail Spool:: Store your mail in a private spool?
a8edc211 655* MH Spool:: An mhspool-like back end.
2625a8f7 656* Mail Folders:: Having one file for each group.
a8edc211 657* Comparing Mail Back Ends:: An in-depth looks at pros and cons.
2625a8f7
GM
658
659Browsing the Web
660
661* Web Searches:: Creating groups from articles that match a string.
662* Slashdot:: Reading the Slashdot comments.
663* Ultimate:: The Ultimate Bulletin Board systems.
664* Web Archive:: Reading mailing list archived on web.
665
666Other Sources
667
668* Directory Groups:: You can read a directory as if it was a newsgroup.
669* Anything Groups:: Dired? Who needs dired?
670* Document Groups:: Single files can be the basis of a group.
671* SOUP:: Reading @sc{soup} packets ``offline''.
672* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
673* IMAP:: Using Gnus as a @sc{imap} client.
674
675Document Groups
676
677* Document Server Internals:: How to add your own document types.
678
679SOUP
680
681* SOUP Commands:: Commands for creating and sending @sc{soup} packets
a8edc211 682* SOUP Groups:: A back end for reading @sc{soup} packets.
2625a8f7
GM
683* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
684
685@sc{imap}
686
687* Splitting in IMAP:: Splitting mail with nnimap.
688* Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox.
689* Expunging mailboxes:: Equivalent of a "compress mailbox" button.
690
691Combined Groups
692
693* Virtual Groups:: Combining articles from many groups.
694* Kibozed Groups:: Looking through parts of the newsfeed for articles.
695
696Gnus Unplugged
697
698* Agent Basics:: How it all is supposed to work.
699* Agent Categories:: How to tell the Gnus Agent what to download.
700* Agent Commands:: New commands for all the buffers.
701* Agent Expiry:: How to make old articles go away.
702* Agent and IMAP:: How to use the Agent with IMAP.
703* Outgoing Messages:: What happens when you post/mail something?
704* Agent Variables:: Customizing is fun.
705* Example Setup:: An example @file{.gnus.el} file for offline people.
706* Batching Agents:: How to fetch news from a @code{cron} job.
707* Agent Caveats:: What you think it'll do and what it does.
708
709Agent Categories
710
711* Category Syntax:: What a category looks like.
712* The Category Buffer:: A buffer for maintaining categories.
713* Category Variables:: Customize'r'Us.
714
715Agent Commands
716
717* Group Agent Commands::
718* Summary Agent Commands::
719* Server Agent Commands::
720
721Scoring
722
723* Summary Score Commands:: Adding score entries for the current group.
724* Group Score Commands:: General score commands.
725* Score Variables:: Customize your scoring. (My, what terminology).
726* Score File Format:: What a score file may contain.
727* Score File Editing:: You can edit score files by hand as well.
728* Adaptive Scoring:: Big Sister Gnus knows what you read.
729* Home Score File:: How to say where new score entries are to go.
730* Followups To Yourself:: Having Gnus notice when people answer you.
731* Scoring Tips:: How to score effectively.
732* Reverse Scoring:: That problem child of old is not problem.
733* Global Score Files:: Earth-spanning, ear-splitting score files.
734* Kill Files:: They are still here, but they can be ignored.
735* Converting Kill Files:: Translating kill files to score files.
736* GroupLens:: Getting predictions on what you like to read.
737* Advanced Scoring:: Using logical expressions to build score rules.
738* Score Decays:: It can be useful to let scores wither away.
739
740GroupLens
741
742* Using GroupLens:: How to make Gnus use GroupLens.
743* Rating Articles:: Letting GroupLens know how you rate articles.
744* Displaying Predictions:: Displaying predictions given by GroupLens.
745* GroupLens Variables:: Customizing GroupLens.
746
747Advanced Scoring
748
749* Advanced Scoring Syntax:: A definition.
750* Advanced Scoring Examples:: What they look like.
751* Advanced Scoring Tips:: Getting the most out of it.
752
753Various
754
755* Process/Prefix:: A convention used by many treatment commands.
756* Interactive:: Making Gnus ask you many questions.
757* Symbolic Prefixes:: How to supply some Gnus functions with options.
758* Formatting Variables:: You can specify what buffers should look like.
759* Windows Configuration:: Configuring the Gnus buffer windows.
760* Faces and Fonts:: How to change how faces look.
761* Compilation:: How to speed Gnus up.
762* Mode Lines:: Displaying information in the mode lines.
763* Highlighting and Menus:: Making buffers look all nice and cozy.
f5d4cd5e 764* Buttons:: Get tendinitis in ten easy steps!
2625a8f7
GM
765* Daemons:: Gnus can do things behind your back.
766* NoCeM:: How to avoid spam and other fatty foods.
767* Undo:: Some actions can be undone.
768* Moderation:: What to do if you're a moderator.
769* XEmacs Enhancements:: There are more pictures and stuff under XEmacs.
770* Fuzzy Matching:: What's the big fuzz?
771* Thwarting Email Spam:: A how-to on avoiding unsolicited commercial email.
772* Various Various:: Things that are really various.
773
774Formatting Variables
775
776* Formatting Basics:: A formatting variable is basically a format string.
777* Mode Line Formatting:: Some rules about mode line formatting variables.
778* Advanced Formatting:: Modifying output in various ways.
779* User-Defined Specs:: Having Gnus call your own functions.
780* Formatting Fonts:: Making the formatting look colorful and nice.
781
782XEmacs Enhancements
783
784* Picons:: How to display pictures of what your reading.
785* Smileys:: Show all those happy faces the way they were meant to be shown.
786* Toolbar:: Click'n'drool.
787* XVarious:: Other XEmacsy Gnusey variables.
788
789Picons
790
791* Picon Basics:: What are picons and How do I get them.
792* Picon Requirements:: Don't go further if you aren't using XEmacs.
793* Easy Picons:: Displaying Picons---the easy way.
794* Hard Picons:: The way you should do it. You'll learn something.
795* Picon Useless Configuration:: Other variables you can trash/tweak/munge/play with.
796
797Appendices
798
799* History:: How Gnus got where it is today.
800* On Writing Manuals:: Why this is not a beginner's guide.
801* Terminology:: We use really difficult, like, words here.
802* Customization:: Tailoring Gnus to your needs.
803* Troubleshooting:: What you might try if things do not work.
804* Gnus Reference Guide:: Rilly, rilly technical stuff.
805* Emacs for Heathens:: A short introduction to Emacsian terms.
806* Frequently Asked Questions:: A question-and-answer session.
807
808History
809
810* Gnus Versions:: What Gnus versions have been released.
811* Other Gnus Versions:: Other Gnus versions that also have been released.
812* Why?:: What's the point of Gnus?
813* Compatibility:: Just how compatible is Gnus with @sc{gnus}?
814* Conformity:: Gnus tries to conform to all standards.
815* Emacsen:: Gnus can be run on a few modern Emacsen.
816* Gnus Development:: How Gnus is developed.
817* Contributors:: Oodles of people.
818* New Features:: Pointers to some of the new stuff in Gnus.
2625a8f7
GM
819
820New Features
821
822* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
fb6de1b5 823* September Gnus:: The Thing Formally Known As Gnus 5.2/5.3.
2625a8f7
GM
824* Red Gnus:: Third time best---Gnus 5.4/5.5.
825* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7.
fb6de1b5 826* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9.
2625a8f7
GM
827
828Customization
829
830* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
831* Slow Terminal Connection:: You run a remote Emacs.
832* Little Disk Space:: You feel that having large setup files is icky.
833* Slow Machine:: You feel like buying a faster machine.
834
835Gnus Reference Guide
836
837* Gnus Utility Functions:: Common functions and variable to use.
a8edc211 838* Back End Interface:: How Gnus communicates with the servers.
2625a8f7
GM
839* Score File Syntax:: A BNF definition of the score file standard.
840* Headers:: How Gnus stores headers internally.
841* Ranges:: A handy format for storing mucho numbers.
842* Group Info:: The group info format.
843* Extended Interactive:: Symbolic prefixes and stuff.
844* Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen.
845* Various File Formats:: Formats of files that Gnus use.
846
a8edc211 847Back End Interface
2625a8f7 848
a8edc211
SZ
849* Required Back End Functions:: Functions that must be implemented.
850* Optional Back End Functions:: Functions that need not be implemented.
2625a8f7 851* Error Messaging:: How to get messages and report errors.
a8edc211 852* Writing New Back Ends:: Extending old back ends.
49cef826
GM
853* Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end.
854* Mail-like Back Ends:: Some tips on mail back ends.
2625a8f7
GM
855
856Various File Formats
857
858* Active File Format:: Information on articles and groups available.
859* Newsgroups File Format:: Group descriptions.
860
861Emacs for Heathens
862
863* Keystrokes:: Entering text and executing commands.
864* Emacs Lisp:: The built-in Emacs programming language.
865
866@end detailmenu
6bf7aab6
DL
867@end menu
868
869@node Starting Up
870@chapter Starting Gnus
871@cindex starting up
872
873@kindex M-x gnus
874@findex gnus
875If your system administrator has set things up properly, starting Gnus
876and reading news is extremely easy---you just type @kbd{M-x gnus} in
877your Emacs.
878
879@findex gnus-other-frame
880@kindex M-x gnus-other-frame
881If you want to start Gnus in a different frame, you can use the command
882@kbd{M-x gnus-other-frame} instead.
883
884If things do not go smoothly at startup, you have to twiddle some
885variables in your @file{~/.gnus} file. This file is similar to
886@file{~/.emacs}, but is read when gnus starts.
887
888If you puzzle at any terms used in this manual, please refer to the
889terminology section (@pxref{Terminology}).
890
891@menu
892* Finding the News:: Choosing a method for getting news.
893* The First Time:: What does Gnus do the first time you start it?
894* The Server is Down:: How can I read my mail then?
895* Slave Gnusae:: You can have more than one Gnus active at a time.
896* Fetching a Group:: Starting Gnus just to read a group.
897* New Groups:: What is Gnus supposed to do with new groups?
898* Startup Files:: Those pesky startup files---@file{.newsrc}.
899* Auto Save:: Recovering from a crash.
900* The Active File:: Reading the active file over a slow line Takes Time.
901* Changing Servers:: You may want to move from one server to another.
902* Startup Variables:: Other variables you might change.
903@end menu
904
905
906@node Finding the News
907@section Finding the News
908@cindex finding news
909
910@vindex gnus-select-method
911@c @head
912The @code{gnus-select-method} variable says where Gnus should look for
913news. This variable should be a list where the first element says
914@dfn{how} and the second element says @dfn{where}. This method is your
915native method. All groups not fetched with this method are
916foreign groups.
917
918For instance, if the @samp{news.somewhere.edu} @sc{nntp} server is where
919you want to get your daily dosage of news from, you'd say:
920
921@lisp
922(setq gnus-select-method '(nntp "news.somewhere.edu"))
923@end lisp
924
925If you want to read directly from the local spool, say:
926
927@lisp
928(setq gnus-select-method '(nnspool ""))
929@end lisp
930
931If you can use a local spool, you probably should, as it will almost
932certainly be much faster.
933
934@vindex gnus-nntpserver-file
935@cindex NNTPSERVER
936@cindex @sc{nntp} server
937If this variable is not set, Gnus will take a look at the
938@code{NNTPSERVER} environment variable. If that variable isn't set,
939Gnus will see whether @code{gnus-nntpserver-file}
940(@file{/etc/nntpserver} by default) has any opinions on the matter. If
941that fails as well, Gnus will try to use the machine running Emacs as an @sc{nntp} server. That's a long shot, though.
942
943@vindex gnus-nntp-server
944If @code{gnus-nntp-server} is set, this variable will override
945@code{gnus-select-method}. You should therefore set
946@code{gnus-nntp-server} to @code{nil}, which is what it is by default.
947
948@vindex gnus-secondary-servers
2625a8f7 949@vindex gnus-nntp-server
6bf7aab6
DL
950You can also make Gnus prompt you interactively for the name of an
951@sc{nntp} server. If you give a non-numerical prefix to @code{gnus}
952(i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
953in the @code{gnus-secondary-servers} list (if any). You can also just
2625a8f7
GM
954type in the name of any server you feel like visiting. (Note that this
955will set @code{gnus-nntp-server}, which means that if you then @kbd{M-x
956gnus} later in the same Emacs session, Gnus will contact the same
957server.)
6bf7aab6
DL
958
959@findex gnus-group-browse-foreign-server
ad0fd6b9 960@kindex B @r{(Group)}
6bf7aab6
DL
961However, if you use one @sc{nntp} server regularly and are just
962interested in a couple of groups from a different server, you would be
963better served by using the @kbd{B} command in the group buffer. It will
964let you have a look at what groups are available, and you can subscribe
965to any of the groups you want to. This also makes @file{.newsrc}
966maintenance much tidier. @xref{Foreign Groups}.
967
968@vindex gnus-secondary-select-methods
969@c @head
970A slightly different approach to foreign groups is to set the
971@code{gnus-secondary-select-methods} variable. The select methods
972listed in this variable are in many ways just as native as the
973@code{gnus-select-method} server. They will also be queried for active
974files during startup (if that's required), and new newsgroups that
975appear on these servers will be subscribed (or not) just as native
976groups are.
977
a8edc211
SZ
978For instance, if you use the @code{nnmbox} back end to read your mail,
979you would typically set this variable to
6bf7aab6
DL
980
981@lisp
982(setq gnus-secondary-select-methods '((nnmbox "")))
983@end lisp
984
985
986@node The First Time
987@section The First Time
988@cindex first time usage
989
990If no startup files exist, Gnus will try to determine what groups should
991be subscribed by default.
992
993@vindex gnus-default-subscribed-newsgroups
994If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
995will subscribe you to just those groups in that list, leaving the rest
996killed. Your system administrator should have set this variable to
997something useful.
998
999Since she hasn't, Gnus will just subscribe you to a few arbitrarily
1000picked groups (i.e., @samp{*.newusers}). (@dfn{Arbitrary} is defined
1001here as @dfn{whatever Lars thinks you should read}.)
1002
1003You'll also be subscribed to the Gnus documentation group, which should
1004help you with most common problems.
1005
1006If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
1007use the normal functions for handling new groups, and not do anything
1008special.
1009
1010
1011@node The Server is Down
1012@section The Server is Down
1013@cindex server errors
1014
1015If the default server is down, Gnus will understandably have some
1016problems starting. However, if you have some mail groups in addition to
1017the news groups, you may want to start Gnus anyway.
1018
1019Gnus, being the trusting sort of program, will ask whether to proceed
1020without a native select method if that server can't be contacted. This
1021will happen whether the server doesn't actually exist (i.e., you have
1022given the wrong address) or the server has just momentarily taken ill
1023for some reason or other. If you decide to continue and have no foreign
1024groups, you'll find it difficult to actually do anything in the group
1025buffer. But, hey, that's your problem. Blllrph!
1026
1027@findex gnus-no-server
1028@kindex M-x gnus-no-server
1029@c @head
1030If you know that the server is definitely down, or you just want to read
1031your mail without bothering with the server at all, you can use the
1032@code{gnus-no-server} command to start Gnus. That might come in handy
1033if you're in a hurry as well. This command will not attempt to contact
1034your primary server---instead, it will just activate all groups on level
10351 and 2. (You should preferably keep no native groups on those two
1036levels.)
1037
1038
1039@node Slave Gnusae
1040@section Slave Gnusae
1041@cindex slave
1042
1043You might want to run more than one Emacs with more than one Gnus at the
1044same time. If you are using different @file{.newsrc} files (e.g., if you
1045are using the two different Gnusae to read from two different servers),
1046that is no problem whatsoever. You just do it.
1047
1048The problem appears when you want to run two Gnusae that use the same
1049@code{.newsrc} file.
1050
1051To work around that problem some, we here at the Think-Tank at the Gnus
1052Towers have come up with a new concept: @dfn{Masters} and
1053@dfn{slaves}. (We have applied for a patent on this concept, and have
1054taken out a copyright on those words. If you wish to use those words in
1055conjunction with each other, you have to send $1 per usage instance to
1056me. Usage of the patent (@dfn{Master/Slave Relationships In Computer
1057Applications}) will be much more expensive, of course.)
1058
f5d4cd5e 1059Anyway, you start one Gnus up the normal way with @kbd{M-x gnus} (or
6bf7aab6
DL
1060however you do it). Each subsequent slave Gnusae should be started with
1061@kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc}
1062files, but instead save @dfn{slave files} that contain information only
1063on what groups have been read in the slave session. When a master Gnus
1064starts, it will read (and delete) these slave files, incorporating all
1065information from them. (The slave files will be read in the sequence
1066they were created, so the latest changes will have precedence.)
1067
1068Information from the slave files has, of course, precedence over the
1069information in the normal (i.e., master) @code{.newsrc} file.
1070
1071
1072@node Fetching a Group
1073@section Fetching a Group
1074@cindex fetching a group
1075
1076@findex gnus-fetch-group
1077It is sometimes convenient to be able to just say ``I want to read this
1078group and I don't care whether Gnus has been started or not''. This is
1079perhaps more useful for people who write code than for users, but the
1080command @code{gnus-fetch-group} provides this functionality in any case.
1081It takes the group name as a parameter.
1082
1083
1084@node New Groups
1085@section New Groups
1086@cindex new groups
1087@cindex subscription
1088
1089@vindex gnus-check-new-newsgroups
1090If you are satisfied that you really never want to see any new groups,
1091you can set @code{gnus-check-new-newsgroups} to @code{nil}. This will
1092also save you some time at startup. Even if this variable is
1093@code{nil}, you can always subscribe to the new groups just by pressing
1094@kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable
1095is @code{ask-server} by default. If you set this variable to
a8edc211 1096@code{always}, then Gnus will query the back ends for new groups even
6bf7aab6
DL
1097when you do the @kbd{g} command (@pxref{Scanning New Messages}).
1098
1099@menu
1100* Checking New Groups:: Determining what groups are new.
1101* Subscription Methods:: What Gnus should do with new groups.
1102* Filtering New Groups:: Making Gnus ignore certain new groups.
1103@end menu
1104
1105
1106@node Checking New Groups
1107@subsection Checking New Groups
1108
1109Gnus normally determines whether a group is new or not by comparing the
1110list of groups from the active file(s) with the lists of subscribed and
1111dead groups. This isn't a particularly fast method. If
1112@code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
1113server for new groups since the last time. This is both faster and
1114cheaper. This also means that you can get rid of the list of killed
1115groups altogether, so you may set @code{gnus-save-killed-list} to
1116@code{nil}, which will save time both at startup, at exit, and all over.
1117Saves disk space, too. Why isn't this the default, then?
1118Unfortunately, not all servers support this command.
1119
1120I bet I know what you're thinking now: How do I find out whether my
1121server supports @code{ask-server}? No? Good, because I don't have a
1122fail-safe answer. I would suggest just setting this variable to
1123@code{ask-server} and see whether any new groups appear within the next
1124few days. If any do, then it works. If none do, then it doesn't
1125work. I could write a function to make Gnus guess whether the server
1126supports @code{ask-server}, but it would just be a guess. So I won't.
1127You could @code{telnet} to the server and say @code{HELP} and see
1128whether it lists @samp{NEWGROUPS} among the commands it understands. If
1129it does, then it might work. (But there are servers that lists
1130@samp{NEWGROUPS} without supporting the function properly.)
1131
1132This variable can also be a list of select methods. If so, Gnus will
1133issue an @code{ask-server} command to each of the select methods, and
1134subscribe them (or not) using the normal methods. This might be handy
1135if you are monitoring a few servers for new groups. A side effect is
1136that startup will take much longer, so you can meditate while waiting.
1137Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
1138
1139
1140@node Subscription Methods
1141@subsection Subscription Methods
1142
1143@vindex gnus-subscribe-newsgroup-method
1144What Gnus does when it encounters a new group is determined by the
1145@code{gnus-subscribe-newsgroup-method} variable.
1146
1147This variable should contain a function. This function will be called
1148with the name of the new group as the only parameter.
1149
1150Some handy pre-fab functions are:
1151
1152@table @code
1153
1154@item gnus-subscribe-zombies
1155@vindex gnus-subscribe-zombies
1156Make all new groups zombies. This is the default. You can browse the
1157zombies later (with @kbd{A z}) and either kill them all off properly
1158(with @kbd{S z}), or subscribe to them (with @kbd{u}).
1159
1160@item gnus-subscribe-randomly
1161@vindex gnus-subscribe-randomly
1162Subscribe all new groups in arbitrary order. This really means that all
1163new groups will be added at ``the top'' of the group buffer.
1164
1165@item gnus-subscribe-alphabetically
1166@vindex gnus-subscribe-alphabetically
1167Subscribe all new groups in alphabetical order.
1168
1169@item gnus-subscribe-hierarchically
1170@vindex gnus-subscribe-hierarchically
1171Subscribe all new groups hierarchically. The difference between this
1172function and @code{gnus-subscribe-alphabetically} is slight.
1173@code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
2625a8f7 1174alphabetical fashion, while this function will enter groups into its
6bf7aab6
DL
1175hierarchy. So if you want to have the @samp{rec} hierarchy before the
1176@samp{comp} hierarchy, this function will not mess that configuration
1177up. Or something like that.
1178
1179@item gnus-subscribe-interactively
1180@vindex gnus-subscribe-interactively
1181Subscribe new groups interactively. This means that Gnus will ask
1182you about @strong{all} new groups. The groups you choose to subscribe
1183to will be subscribed hierarchically.
1184
1185@item gnus-subscribe-killed
1186@vindex gnus-subscribe-killed
1187Kill all new groups.
1188
2625a8f7
GM
1189@item gnus-subscribe-topics
1190@vindex gnus-subscribe-topics
177c0ea7 1191Put the groups into the topic that has a matching @code{subscribe} topic
2625a8f7
GM
1192parameter (@pxref{Topic Parameters}). For instance, a @code{subscribe}
1193topic parameter that looks like
1194
1195@example
1196"nnslashdot"
1197@end example
1198
177c0ea7 1199will mean that all groups that match that regex will be subscribed under
2625a8f7
GM
1200that topic.
1201
1202If no topics match the groups, the groups will be subscribed in the
1203top-level topic.
1204
6bf7aab6
DL
1205@end table
1206
1207@vindex gnus-subscribe-hierarchical-interactive
1208A closely related variable is
1209@code{gnus-subscribe-hierarchical-interactive}. (That's quite a
1210mouthful.) If this variable is non-@code{nil}, Gnus will ask you in a
1211hierarchical fashion whether to subscribe to new groups or not. Gnus
1212will ask you for each sub-hierarchy whether you want to descend the
1213hierarchy or not.
1214
1215One common mistake is to set the variable a few paragraphs above
1216(@code{gnus-subscribe-newsgroup-method}) to
1217@code{gnus-subscribe-hierarchical-interactive}. This is an error. This
1218will not work. This is ga-ga. So don't do it.
1219
1220
1221@node Filtering New Groups
1222@subsection Filtering New Groups
1223
1224A nice and portable way to control which new newsgroups should be
1225subscribed (or ignored) is to put an @dfn{options} line at the start of
1226the @file{.newsrc} file. Here's an example:
1227
1228@example
1229options -n !alt.all !rec.all sci.all
1230@end example
1231
1232@vindex gnus-subscribe-options-newsgroup-method
1233This line obviously belongs to a serious-minded intellectual scientific
1234person (or she may just be plain old boring), because it says that all
1235groups that have names beginning with @samp{alt} and @samp{rec} should
1236be ignored, and all groups with names beginning with @samp{sci} should
1237be subscribed. Gnus will not use the normal subscription method for
1238subscribing these groups.
1239@code{gnus-subscribe-options-newsgroup-method} is used instead. This
1240variable defaults to @code{gnus-subscribe-alphabetically}.
1241
1242@vindex gnus-options-not-subscribe
1243@vindex gnus-options-subscribe
1244If you don't want to mess with your @file{.newsrc} file, you can just
1245set the two variables @code{gnus-options-subscribe} and
1246@code{gnus-options-not-subscribe}. These two variables do exactly the
1247same as the @file{.newsrc} @samp{options -n} trick. Both are regexps,
1248and if the new group matches the former, it will be unconditionally
1249subscribed, and if it matches the latter, it will be ignored.
1250
1251@vindex gnus-auto-subscribed-groups
1252Yet another variable that meddles here is
1253@code{gnus-auto-subscribed-groups}. It works exactly like
1254@code{gnus-options-subscribe}, and is therefore really superfluous, but I
1255thought it would be nice to have two of these. This variable is more
1256meant for setting some ground rules, while the other variable is used
1257more for user fiddling. By default this variable makes all new groups
a8edc211 1258that come from mail back ends (@code{nnml}, @code{nnbabyl},
6bf7aab6
DL
1259@code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you
1260don't like that, just set this variable to @code{nil}.
1261
1262New groups that match this regexp are subscribed using
1263@code{gnus-subscribe-options-newsgroup-method}.
1264
1265
1266@node Changing Servers
1267@section Changing Servers
1268@cindex changing servers
1269
1270Sometimes it is necessary to move from one @sc{nntp} server to another.
1271This happens very rarely, but perhaps you change jobs, or one server is
1272very flaky and you want to use another.
1273
1274Changing the server is pretty easy, right? You just change
1275@code{gnus-select-method} to point to the new server?
1276
1277@emph{Wrong!}
1278
1279Article numbers are not (in any way) kept synchronized between different
1280@sc{nntp} servers, and the only way Gnus keeps track of what articles
1281you have read is by keeping track of article numbers. So when you
1282change @code{gnus-select-method}, your @file{.newsrc} file becomes
1283worthless.
1284
1285Gnus provides a few functions to attempt to translate a @file{.newsrc}
1286file from one server to another. They all have one thing in
1287common---they take a looong time to run. You don't want to use these
1288functions more than absolutely necessary.
1289
1290@kindex M-x gnus-change-server
1291@findex gnus-change-server
1292If you have access to both servers, Gnus can request the headers for all
1293the articles you have read and compare @code{Message-ID}s and map the
1294article numbers of the read articles and article marks. The @kbd{M-x
1295gnus-change-server} command will do this for all your native groups. It
1296will prompt for the method you want to move to.
1297
1298@kindex M-x gnus-group-move-group-to-server
1299@findex gnus-group-move-group-to-server
1300You can also move individual groups with the @kbd{M-x
1301gnus-group-move-group-to-server} command. This is useful if you want to
1302move a (foreign) group from one server to another.
1303
1304@kindex M-x gnus-group-clear-data-on-native-groups
1305@findex gnus-group-clear-data-on-native-groups
1306If you don't have access to both the old and new server, all your marks
1307and read ranges have become worthless. You can use the @kbd{M-x
1308gnus-group-clear-data-on-native-groups} command to clear out all data
1309that you have on your native groups. Use with caution.
1310
2625a8f7
GM
1311After changing servers, you @strong{must} move the cache hierarchy away,
1312since the cached articles will have wrong article numbers, which will
1313affect which articles Gnus thinks are read.
1314
6bf7aab6
DL
1315
1316@node Startup Files
1317@section Startup Files
1318@cindex startup files
1319@cindex .newsrc
1320@cindex .newsrc.el
1321@cindex .newsrc.eld
1322
1323Now, you all know about the @file{.newsrc} file. All subscription
1324information is traditionally stored in this file.
1325
1326Things got a bit more complicated with @sc{gnus}. In addition to
1327keeping the @file{.newsrc} file updated, it also used a file called
1328@file{.newsrc.el} for storing all the information that didn't fit into
1329the @file{.newsrc} file. (Actually, it also duplicated everything in
1330the @file{.newsrc} file.) @sc{gnus} would read whichever one of these
1331files was the most recently saved, which enabled people to swap between
1332@sc{gnus} and other newsreaders.
1333
1334That was kinda silly, so Gnus went one better: In addition to the
1335@file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
1336@file{.newsrc.eld}. It will read whichever of these files that are most
1337recent, but it will never write a @file{.newsrc.el} file. You should
1338never delete the @file{.newsrc.eld} file---it contains much information
1339not stored in the @file{.newsrc} file.
1340
1341@vindex gnus-save-newsrc-file
2625a8f7 1342@vindex gnus-read-newsrc-file
6bf7aab6
DL
1343You can turn off writing the @file{.newsrc} file by setting
1344@code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
1345the file and save some space, as well as exiting from Gnus faster.
1346However, this will make it impossible to use other newsreaders than
2625a8f7
GM
1347Gnus. But hey, who would want to, right? Similarly, setting
1348@code{gnus-read-newsrc-file} to @code{nil} makes Gnus ignore the
1349@file{.newsrc} file and any @file{.newsrc-SERVER} files, which is
1350convenient if you have a tendency to use Netscape once in a while.
6bf7aab6
DL
1351
1352@vindex gnus-save-killed-list
1353If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
1354will not save the list of killed groups to the startup file. This will
1355save both time (when starting and quitting) and space (on disk). It
1356will also mean that Gnus has no record of what groups are new or old,
1357so the automatic new groups subscription methods become meaningless.
1358You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
1359@code{ask-server} if you set this variable to @code{nil} (@pxref{New
1360Groups}). This variable can also be a regular expression. If that's
1361the case, remove all groups that do not match this regexp before
1362saving. This can be useful in certain obscure situations that involve
1363several servers where not all servers support @code{ask-server}.
1364
1365@vindex gnus-startup-file
1366The @code{gnus-startup-file} variable says where the startup files are.
1367The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
1368file being whatever that one is, with a @samp{.eld} appended.
1369
1370@vindex gnus-save-newsrc-hook
1371@vindex gnus-save-quick-newsrc-hook
1372@vindex gnus-save-standard-newsrc-hook
1373@code{gnus-save-newsrc-hook} is called before saving any of the newsrc
1374files, while @code{gnus-save-quick-newsrc-hook} is called just before
1375saving the @file{.newsrc.eld} file, and
1376@code{gnus-save-standard-newsrc-hook} is called just before saving the
1377@file{.newsrc} file. The latter two are commonly used to turn version
1378control on or off. Version control is on by default when saving the
1379startup files. If you want to turn backup creation off, say something like:
1380
1381@lisp
1382(defun turn-off-backup ()
1383 (set (make-local-variable 'backup-inhibited) t))
1384
1385(add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
1386(add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
1387@end lisp
1388
1389@vindex gnus-init-file
1390When Gnus starts, it will read the @code{gnus-site-init-file}
1391(@file{.../site-lisp/gnus} by default) and @code{gnus-init-file}
1392(@file{~/.gnus} by default) files. These are normal Emacs Lisp files
1393and can be used to avoid cluttering your @file{~/.emacs} and
1394@file{site-init} files with Gnus stuff. Gnus will also check for files
1395with the same names as these, but with @file{.elc} and @file{.el}
1396suffixes. In other words, if you have set @code{gnus-init-file} to
1397@file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
1398and finally @file{~/.gnus} (in this order).
1399
1400
1401
1402@node Auto Save
1403@section Auto Save
1404@cindex dribble file
1405@cindex auto-save
1406
1407Whenever you do something that changes the Gnus data (reading articles,
1408catching up, killing/subscribing groups), the change is added to a
1409special @dfn{dribble buffer}. This buffer is auto-saved the normal
1410Emacs way. If your Emacs should crash before you have saved the
1411@file{.newsrc} files, all changes you have made can be recovered from
1412this file.
1413
1414If Gnus detects this file at startup, it will ask the user whether to
1415read it. The auto save file is deleted whenever the real startup file is
1416saved.
1417
1418@vindex gnus-use-dribble-file
1419If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
1420maintain a dribble buffer. The default is @code{t}.
1421
1422@vindex gnus-dribble-directory
1423Gnus will put the dribble file(s) in @code{gnus-dribble-directory}. If
1424this variable is @code{nil}, which it is by default, Gnus will dribble
1425into the directory where the @file{.newsrc} file is located. (This is
1426normally the user's home directory.) The dribble file will get the same
1427file permissions as the @code{.newsrc} file.
1428
1429@vindex gnus-always-read-dribble-file
1430If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will
1431read the dribble file on startup without querying the user.
1432
1433
1434@node The Active File
1435@section The Active File
1436@cindex active file
1437@cindex ignored groups
1438
1439When Gnus starts, or indeed whenever it tries to determine whether new
1440articles have arrived, it reads the active file. This is a very large
1441file that lists all the active groups and articles on the server.
1442
1443@vindex gnus-ignored-newsgroups
1444Before examining the active file, Gnus deletes all lines that match the
1445regexp @code{gnus-ignored-newsgroups}. This is done primarily to reject
1446any groups with bogus names, but you can use this variable to make Gnus
1447ignore hierarchies you aren't ever interested in. However, this is not
1448recommended. In fact, it's highly discouraged. Instead, @pxref{New
1449Groups} for an overview of other variables that can be used instead.
1450
1451@c This variable is
1452@c @code{nil} by default, and will slow down active file handling somewhat
1453@c if you set it to anything else.
1454
1455@vindex gnus-read-active-file
1456@c @head
1457The active file can be rather Huge, so if you have a slow network, you
1458can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
1459reading the active file. This variable is @code{some} by default.
1460
1461Gnus will try to make do by getting information just on the groups that
1462you actually subscribe to.
1463
1464Note that if you subscribe to lots and lots of groups, setting this
1465variable to @code{nil} will probably make Gnus slower, not faster. At
1466present, having this variable @code{nil} will slow Gnus down
1467considerably, unless you read news over a 2400 baud modem.
1468
1469This variable can also have the value @code{some}. Gnus will then
1470attempt to read active info only on the subscribed groups. On some
1471servers this is quite fast (on sparkling, brand new INN servers that
1472support the @code{LIST ACTIVE group} command), on others this isn't fast
1473at all. In any case, @code{some} should be faster than @code{nil}, and
1474is certainly faster than @code{t} over slow lines.
1475
9e374264
DL
1476Some news servers (old versions of Leafnode and old versions of INN, for
1477instance) do not support the @code{LIST ACTIVE group}. For these
1478servers, @code{nil} is probably the most efficient value for this
1479variable.
2625a8f7 1480
6bf7aab6
DL
1481If this variable is @code{nil}, Gnus will ask for group info in total
1482lock-step, which isn't very fast. If it is @code{some} and you use an
1483@sc{nntp} server, Gnus will pump out commands as fast as it can, and
1484read all the replies in one swoop. This will normally result in better
1485performance, but if the server does not support the aforementioned
1486@code{LIST ACTIVE group} command, this isn't very nice to the server.
1487
2625a8f7 1488If you think that starting up Gnus takes too long, try all the three
177c0ea7 1489different values for this variable and see what works best for you.
2625a8f7 1490
6bf7aab6
DL
1491In any case, if you use @code{some} or @code{nil}, you should definitely
1492kill all groups that you aren't interested in to speed things up.
1493
1494Note that this variable also affects active file retrieval from
1495secondary select methods.
1496
1497
1498@node Startup Variables
1499@section Startup Variables
1500
1501@table @code
1502
1503@item gnus-load-hook
1504@vindex gnus-load-hook
1505A hook run while Gnus is being loaded. Note that this hook will
1506normally be run just once in each Emacs session, no matter how many
1507times you start Gnus.
1508
1509@item gnus-before-startup-hook
1510@vindex gnus-before-startup-hook
1511A hook run after starting up Gnus successfully.
1512
1513@item gnus-startup-hook
1514@vindex gnus-startup-hook
1515A hook run as the very last thing after starting up Gnus
1516
1517@item gnus-started-hook
1518@vindex gnus-started-hook
1519A hook that is run as the very last thing after starting up Gnus
1520successfully.
1521
2625a8f7
GM
1522@item gnus-setup-news-hook
1523@vindex gnus-setup-news-hook
6bf7aab6
DL
1524A hook that is run after reading the @file{.newsrc} file(s), but before
1525generating the group buffer.
1526
1527@item gnus-check-bogus-newsgroups
1528@vindex gnus-check-bogus-newsgroups
1529If non-@code{nil}, Gnus will check for and delete all bogus groups at
1530startup. A @dfn{bogus group} is a group that you have in your
1531@file{.newsrc} file, but doesn't exist on the news server. Checking for
1532bogus groups can take quite a while, so to save time and resources it's
1533best to leave this option off, and do the checking for bogus groups once
1534in a while from the group buffer instead (@pxref{Group Maintenance}).
1535
1536@item gnus-inhibit-startup-message
1537@vindex gnus-inhibit-startup-message
1538If non-@code{nil}, the startup message won't be displayed. That way,
1539your boss might not notice as easily that you are reading news instead
1540of doing your job. Note that this variable is used before
1541@file{.gnus.el} is loaded, so it should be set in @code{.emacs} instead.
1542
1543@item gnus-no-groups-message
1544@vindex gnus-no-groups-message
1545Message displayed by Gnus when no groups are available.
1546
1547@item gnus-play-startup-jingle
1548@vindex gnus-play-startup-jingle
1549If non-@code{nil}, play the Gnus jingle at startup.
1550
1551@item gnus-startup-jingle
1552@vindex gnus-startup-jingle
1553Jingle to be played if the above variable is non-@code{nil}. The
1554default is @samp{Tuxedomoon.Jingle4.au}.
1555
1556@end table
1557
1558
1559@node The Group Buffer
1560@chapter The Group Buffer
1561@cindex group buffer
1562
1563The @dfn{group buffer} lists all (or parts) of the available groups. It
1564is the first buffer shown when Gnus starts, and will never be killed as
1565long as Gnus is active.
1566
2625a8f7
GM
1567@iftex
1568@iflatex
1569\gnusfigure{The Group Buffer}{320}{
1570\put(75,50){\epsfig{figure=tmp/group.ps,height=9cm}}
1571\put(120,37){\makebox(0,0)[t]{Buffer name}}
1572\put(120,38){\vector(1,2){10}}
1573\put(40,60){\makebox(0,0)[r]{Mode line}}
1574\put(40,58){\vector(1,0){30}}
1575\put(200,28){\makebox(0,0)[t]{Native select method}}
1576\put(200,26){\vector(-1,2){15}}
1577}
1578@end iflatex
1579@end iftex
6bf7aab6
DL
1580
1581@menu
1582* Group Buffer Format:: Information listed and how you can change it.
1583* Group Maneuvering:: Commands for moving in the group buffer.
1584* Selecting a Group:: Actually reading news.
1585* Group Data:: Changing the info for a group.
1586* Subscription Commands:: Unsubscribing, killing, subscribing.
1587* Group Levels:: Levels? What are those, then?
1588* Group Score:: A mechanism for finding out what groups you like.
1589* Marking Groups:: You can mark groups for later processing.
1590* Foreign Groups:: Creating and editing groups.
1591* Group Parameters:: Each group may have different parameters set.
1592* Listing Groups:: Gnus can list various subsets of the groups.
1593* Sorting Groups:: Re-arrange the group order.
1594* Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
1595* Browse Foreign Server:: You can browse a server. See what it has to offer.
1596* Exiting Gnus:: Stop reading news and get some work done.
1597* Group Topics:: A folding group mode divided into topics.
1598* Misc Group Stuff:: Other stuff that you can to do.
1599@end menu
1600
1601
1602@node Group Buffer Format
1603@section Group Buffer Format
1604
1605@menu
1606* Group Line Specification:: Deciding how the group buffer is to look.
1607* Group Modeline Specification:: The group buffer modeline.
1608* Group Highlighting:: Having nice colors in the group buffer.
1609@end menu
1610
1611
1612@node Group Line Specification
1613@subsection Group Line Specification
1614@cindex group buffer format
1615
1616The default format of the group buffer is nice and dull, but you can
1617make it as exciting and ugly as you feel like.
1618
1619Here's a couple of example group lines:
1620
1621@example
1622 25: news.announce.newusers
1623 * 0: alt.fan.andrea-dworkin
1624@end example
1625
1626Quite simple, huh?
1627
1628You can see that there are 25 unread articles in
1629@samp{news.announce.newusers}. There are no unread articles, but some
1630ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
1631asterisk at the beginning of the line?).
1632
1633@vindex gnus-group-line-format
1634You can change that format to whatever you want by fiddling with the
1635@code{gnus-group-line-format} variable. This variable works along the
1636lines of a @code{format} specification, which is pretty much the same as
1637a @code{printf} specifications, for those of you who use (feh!) C.
1638@xref{Formatting Variables}.
1639
1640@samp{%M%S%5y: %(%g%)\n} is the value that produced those lines above.
1641
1642There should always be a colon on the line; the cursor always moves to
1643the colon after performing an operation. Nothing else is required---not
1644even the group name. All displayed text is just window dressing, and is
1645never examined by Gnus. Gnus stores all real information it needs using
1646text properties.
1647
1648(Note that if you make a really strange, wonderful, spreadsheet-like
1649layout, everybody will believe you are hard at work with the accounting
1650instead of wasting time reading news.)
1651
1652Here's a list of all available format characters:
1653
1654@table @samp
1655
1656@item M
1657An asterisk if the group only has marked articles.
1658
1659@item S
1660Whether the group is subscribed.
1661
1662@item L
1663Level of subscribedness.
1664
1665@item N
1666Number of unread articles.
1667
1668@item I
1669Number of dormant articles.
1670
1671@item T
1672Number of ticked articles.
1673
1674@item R
1675Number of read articles.
1676
1677@item t
1678Estimated total number of articles. (This is really @var{max-number}
1679minus @var{min-number} plus 1.)
1680
1681@item y
1682Number of unread, unticked, non-dormant articles.
1683
1684@item i
1685Number of ticked and dormant articles.
1686
1687@item g
1688Full group name.
1689
1690@item G
1691Group name.
1692
1693@item D
1694Newsgroup description.
1695
1696@item o
1697@samp{m} if moderated.
1698
1699@item O
1700@samp{(m)} if moderated.
1701
1702@item s
1703Select method.
1704
1705@item n
1706Select from where.
1707
1708@item z
1709A string that looks like @samp{<%s:%n>} if a foreign select method is
1710used.
1711
1712@item P
1713Indentation based on the level of the topic (@pxref{Group Topics}).
1714
1715@item c
1716@vindex gnus-group-uncollapsed-levels
1717Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels}
1718variable says how many levels to leave at the end of the group name.
1719The default is 1---this will mean that group names like
2625a8f7 1720@samp{gnu.emacs.gnus} will be shortened to @samp{g.e.gnus}.
6bf7aab6
DL
1721
1722@item m
1723@vindex gnus-new-mail-mark
1724@cindex %
1725@samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1726the group lately.
1727
dda5808a
DL
1728@item p
1729@samp{#} (@code{gnus-process-mark}) if the group is process marked.
1730
6bf7aab6
DL
1731@item d
1732A string that says when you last read the group (@pxref{Group
1733Timestamp}).
1734
1735@item u
1736User defined specifier. The next character in the format string should
1737be a letter. Gnus will call the function
1738@code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
1739following @samp{%u}. The function will be passed a single dummy
1740parameter as argument. The function should return a string, which will
1741be inserted into the buffer just like information from any other
1742specifier.
1743@end table
1744
1745@cindex *
1746All the ``number-of'' specs will be filled with an asterisk (@samp{*})
1747if no info is available---for instance, if it is a non-activated foreign
1748group, or a bogus native group.
1749
1750
1751@node Group Modeline Specification
1752@subsection Group Modeline Specification
1753@cindex group modeline
1754
1755@vindex gnus-group-mode-line-format
1756The mode line can be changed by setting
1757@code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}). It
1758doesn't understand that many format specifiers:
1759
1760@table @samp
1761@item S
1762The native news server.
1763@item M
1764The native select method.
1765@end table
1766
1767
1768@node Group Highlighting
1769@subsection Group Highlighting
1770@cindex highlighting
1771@cindex group highlighting
1772
1773@vindex gnus-group-highlight
1774Highlighting in the group buffer is controlled by the
1775@code{gnus-group-highlight} variable. This is an alist with elements
027f547a 1776that look like @code{(@var{form} . @var{face})}. If @var{form} evaluates to
6bf7aab6
DL
1777something non-@code{nil}, the @var{face} will be used on the line.
1778
1779Here's an example value for this variable that might look nice if the
1780background is dark:
1781
1782@lisp
2625a8f7
GM
1783(cond (window-system
1784 (setq custom-background-mode 'light)
1785 (defface my-group-face-1
1786 '((t (:foreground "Red" :bold t))) "First group face")
1787 (defface my-group-face-2
1788 '((t (:foreground "DarkSeaGreen4" :bold t))) "Second group face")
1789 (defface my-group-face-3
1790 '((t (:foreground "Green4" :bold t))) "Third group face")
1791 (defface my-group-face-4
1792 '((t (:foreground "SteelBlue" :bold t))) "Fourth group face")
1793 (defface my-group-face-5
1794 '((t (:foreground "Blue" :bold t))) "Fifth group face")))
6bf7aab6
DL
1795
1796(setq gnus-group-highlight
1797 '(((> unread 200) . my-group-face-1)
1798 ((and (< level 3) (zerop unread)) . my-group-face-2)
1799 ((< level 3) . my-group-face-3)
1800 ((zerop unread) . my-group-face-4)
1801 (t . my-group-face-5)))
1802@end lisp
1803
1804Also @pxref{Faces and Fonts}.
1805
1806Variables that are dynamically bound when the forms are evaluated
1807include:
1808
1809@table @code
1810@item group
1811The group name.
1812@item unread
1813The number of unread articles in the group.
1814@item method
1815The select method.
1816@item mailp
1817Whether the group is a mail group.
1818@item level
1819The level of the group.
1820@item score
1821The score of the group.
1822@item ticked
1823The number of ticked articles in the group.
1824@item total
1825The total number of articles in the group. Or rather, MAX-NUMBER minus
1826MIN-NUMBER plus one.
1827@item topic
1828When using the topic minor mode, this variable is bound to the current
1829topic being inserted.
1830@end table
1831
1832When the forms are @code{eval}ed, point is at the beginning of the line
1833of the group in question, so you can use many of the normal Gnus
1834functions for snarfing info on the group.
1835
1836@vindex gnus-group-update-hook
1837@findex gnus-group-highlight-line
1838@code{gnus-group-update-hook} is called when a group line is changed.
1839It will not be called when @code{gnus-visual} is @code{nil}. This hook
1840calls @code{gnus-group-highlight-line} by default.
1841
1842
1843@node Group Maneuvering
1844@section Group Maneuvering
1845@cindex group movement
1846
1847All movement commands understand the numeric prefix and will behave as
1848expected, hopefully.
1849
1850@table @kbd
1851
1852@item n
ad0fd6b9 1853@kindex n @r{(Group)}
6bf7aab6
DL
1854@findex gnus-group-next-unread-group
1855Go to the next group that has unread articles
1856(@code{gnus-group-next-unread-group}).
1857
1858@item p
ad0fd6b9
RS
1859@itemx @key{DEL}
1860@kindex @key{DEL} @r{(Group)}
1861@kindex p @r{(Group)}
6bf7aab6
DL
1862@findex gnus-group-prev-unread-group
1863Go to the previous group that has unread articles
1864(@code{gnus-group-prev-unread-group}).
1865
1866@item N
ad0fd6b9 1867@kindex N @r{(Group)}
6bf7aab6
DL
1868@findex gnus-group-next-group
1869Go to the next group (@code{gnus-group-next-group}).
1870
1871@item P
ad0fd6b9 1872@kindex P @r{(Group)}
6bf7aab6
DL
1873@findex gnus-group-prev-group
1874Go to the previous group (@code{gnus-group-prev-group}).
1875
1876@item M-n
ad0fd6b9 1877@kindex M-n @r{(Group)}
6bf7aab6
DL
1878@findex gnus-group-next-unread-group-same-level
1879Go to the next unread group on the same (or lower) level
1880(@code{gnus-group-next-unread-group-same-level}).
1881
1882@item M-p
ad0fd6b9 1883@kindex M-p @r{(Group)}
6bf7aab6
DL
1884@findex gnus-group-prev-unread-group-same-level
1885Go to the previous unread group on the same (or lower) level
1886(@code{gnus-group-prev-unread-group-same-level}).
1887@end table
1888
1889Three commands for jumping to groups:
1890
1891@table @kbd
1892
1893@item j
ad0fd6b9 1894@kindex j @r{(Group)}
6bf7aab6
DL
1895@findex gnus-group-jump-to-group
1896Jump to a group (and make it visible if it isn't already)
1897(@code{gnus-group-jump-to-group}). Killed groups can be jumped to, just
1898like living groups.
1899
1900@item ,
ad0fd6b9 1901@kindex , @r{(Group)}
6bf7aab6
DL
1902@findex gnus-group-best-unread-group
1903Jump to the unread group with the lowest level
1904(@code{gnus-group-best-unread-group}).
1905
1906@item .
ad0fd6b9 1907@kindex . @r{(Group)}
6bf7aab6
DL
1908@findex gnus-group-first-unread-group
1909Jump to the first group with unread articles
1910(@code{gnus-group-first-unread-group}).
1911@end table
1912
1913@vindex gnus-group-goto-unread
1914If @code{gnus-group-goto-unread} is @code{nil}, all the movement
1915commands will move to the next group, not the next unread group. Even
1916the commands that say they move to the next unread group. The default
1917is @code{t}.
1918
1919
1920@node Selecting a Group
1921@section Selecting a Group
1922@cindex group selection
1923
1924@table @kbd
1925
ad0fd6b9
RS
1926@item @key{SPC}
1927@kindex @key{SPC} @r{(Group)}
6bf7aab6
DL
1928@findex gnus-group-read-group
1929Select the current group, switch to the summary buffer and display the
1930first unread article (@code{gnus-group-read-group}). If there are no
1931unread articles in the group, or if you give a non-numerical prefix to
1932this command, Gnus will offer to fetch all the old articles in this
1933group from the server. If you give a numerical prefix @var{N}, @var{N}
1934determines the number of articles Gnus will fetch. If @var{N} is
1935positive, Gnus fetches the @var{N} newest articles, if @var{N} is
2625a8f7 1936negative, Gnus fetches the @code{abs(@var{N})} oldest articles.
6bf7aab6 1937
9e374264
DL
1938Thus, @kbd{SPC} enters the group normally, @kbd{C-u SPC} offers old
1939articles, @kbd{C-u 4 2 SPC} fetches the 42 newest articles, and @kbd{C-u
1940- 4 2 SPC} fetches the 42 oldest ones.
1941
1942When you are in the group (in the Summary buffer), you can type
1943@kbd{M-g} to fetch new articles, or @kbd{C-u M-g} to also show the old
1944ones.
1945
ad0fd6b9
RS
1946@item @key{RET}
1947@kindex @key{RET} @r{(Group)}
1948
6bf7aab6
DL
1949@findex gnus-group-select-group
1950Select the current group and switch to the summary buffer
1951(@code{gnus-group-select-group}). Takes the same arguments as
1952@code{gnus-group-read-group}---the only difference is that this command
1953does not display the first unread article automatically upon group
1954entry.
1955
ad0fd6b9
RS
1956@item M-@key{RET}
1957@kindex M-@key{RET} @r{(Group)}
6bf7aab6
DL
1958@findex gnus-group-quick-select-group
1959This does the same as the command above, but tries to do it with the
1960minimum amount of fuzz (@code{gnus-group-quick-select-group}). No
1961scoring/killing will be performed, there will be no highlights and no
1962expunging. This might be useful if you're in a real hurry and have to
1963enter some humongous group. If you give a 0 prefix to this command
ad0fd6b9 1964(i.e., @kbd{0 M-@key{RET}}), Gnus won't even generate the summary buffer,
6bf7aab6
DL
1965which is useful if you want to toggle threading before generating the
1966summary buffer (@pxref{Summary Generation Commands}).
1967
ad0fd6b9
RS
1968@item M-@key{SPC}
1969@kindex M-@key{SPC} @r{(Group)}
6bf7aab6 1970@findex gnus-group-visible-select-group
ad0fd6b9 1971This is yet one more command that does the same as the @key{RET}
6bf7aab6
DL
1972command, but this one does it without expunging and hiding dormants
1973(@code{gnus-group-visible-select-group}).
1974
718fb8a1
EZ
1975@item C-M-@key{RET}
1976@kindex C-M-@key{RET} @r{(Group)}
6bf7aab6
DL
1977@findex gnus-group-select-group-ephemerally
1978Finally, this command selects the current group ephemerally without
1979doing any processing of its contents
1980(@code{gnus-group-select-group-ephemerally}). Even threading has been
1981turned off. Everything you do in the group after selecting it in this
1982manner will have no permanent effects.
1983
1984@end table
1985
1986@vindex gnus-large-newsgroup
1987The @code{gnus-large-newsgroup} variable says what Gnus should consider
1988to be a big group. This is 200 by default. If the group has more
1989(unread and/or ticked) articles than this, Gnus will query the user
1990before entering the group. The user can then specify how many articles
1991should be fetched from the server. If the user specifies a negative
1992number (@code{-n}), the @code{n} oldest articles will be fetched. If it
1993is positive, the @code{n} articles that have arrived most recently will
1994be fetched.
1995
1996@vindex gnus-select-group-hook
1997@vindex gnus-auto-select-first
1998@code{gnus-auto-select-first} control whether any articles are selected
ad0fd6b9 1999automatically when entering a group with the @key{SPC} command.
6bf7aab6
DL
2000
2001@table @code
2002
2003@item nil
2004Don't select any articles when entering the group. Just display the
2005full summary buffer.
2006
2007@item t
2008Select the first unread article when entering the group.
2009
2010@item best
2011Select the highest scored article in the group when entering the
2012group.
2625a8f7
GM
2013
2014@end table
2015
2016This variable can also be a function. In that case, that function will
2017be called to place point on a subject line, and/or select some article.
2018Useful functions include:
2019
2020@table @code
2021@item gnus-summary-first-unread-subject
2022Place point on the subject line of the first unread article, but
2023don't select the article.
2024
2025@item gnus-summary-first-unread-article
2026Select the first unread article.
2027
2028@item gnus-summary-best-unread-article
2029Select the highest-scored unread article.
6bf7aab6
DL
2030@end table
2031
2625a8f7 2032
6bf7aab6
DL
2033If you want to prevent automatic selection in some group (say, in a
2034binary group with Huge articles) you can set this variable to @code{nil}
2035in @code{gnus-select-group-hook}, which is called when a group is
2036selected.
2037
2038
2039@node Subscription Commands
2040@section Subscription Commands
2041@cindex subscription
2042
2043@table @kbd
2044
2045@item S t
2046@itemx u
ad0fd6b9
RS
2047@kindex S t @r{(Group)}
2048@kindex u @r{(Group)}
6bf7aab6
DL
2049@findex gnus-group-unsubscribe-current-group
2050@c @icon{gnus-group-unsubscribe}
2051Toggle subscription to the current group
2052(@code{gnus-group-unsubscribe-current-group}).
2053
2054@item S s
2055@itemx U
ad0fd6b9
RS
2056@kindex S s @r{(Group)}
2057@kindex U @r{(Group)}
6bf7aab6
DL
2058@findex gnus-group-unsubscribe-group
2059Prompt for a group to subscribe, and then subscribe it. If it was
2060subscribed already, unsubscribe it instead
2061(@code{gnus-group-unsubscribe-group}).
2062
2063@item S k
2064@itemx C-k
ad0fd6b9
RS
2065@kindex S k @r{(Group)}
2066@kindex C-k @r{(Group)}
6bf7aab6
DL
2067@findex gnus-group-kill-group
2068@c @icon{gnus-group-kill-group}
2069Kill the current group (@code{gnus-group-kill-group}).
2070
2071@item S y
2072@itemx C-y
ad0fd6b9
RS
2073@kindex S y @r{(Group)}
2074@kindex C-y @r{(Group)}
6bf7aab6
DL
2075@findex gnus-group-yank-group
2076Yank the last killed group (@code{gnus-group-yank-group}).
2077
2078@item C-x C-t
ad0fd6b9 2079@kindex C-x C-t @r{(Group)}
6bf7aab6
DL
2080@findex gnus-group-transpose-groups
2081Transpose two groups (@code{gnus-group-transpose-groups}). This isn't
2082really a subscription command, but you can use it instead of a
2083kill-and-yank sequence sometimes.
2084
2085@item S w
2086@itemx C-w
ad0fd6b9
RS
2087@kindex S w @r{(Group)}
2088@kindex C-w @r{(Group)}
6bf7aab6
DL
2089@findex gnus-group-kill-region
2090Kill all groups in the region (@code{gnus-group-kill-region}).
2091
2092@item S z
ad0fd6b9 2093@kindex S z @r{(Group)}
6bf7aab6
DL
2094@findex gnus-group-kill-all-zombies
2095Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
2096
2097@item S C-k
ad0fd6b9 2098@kindex S C-k @r{(Group)}
6bf7aab6
DL
2099@findex gnus-group-kill-level
2100Kill all groups on a certain level (@code{gnus-group-kill-level}).
2101These groups can't be yanked back after killing, so this command should
2102be used with some caution. The only time where this command comes in
2103really handy is when you have a @file{.newsrc} with lots of unsubscribed
2104groups that you want to get rid off. @kbd{S C-k} on level 7 will
2105kill off all unsubscribed groups that do not have message numbers in the
2106@file{.newsrc} file.
2107
2108@end table
2109
2110Also @pxref{Group Levels}.
2111
2112
2113@node Group Data
2114@section Group Data
2115
2116@table @kbd
2117
2118@item c
ad0fd6b9 2119@kindex c @r{(Group)}
6bf7aab6
DL
2120@findex gnus-group-catchup-current
2121@vindex gnus-group-catchup-group-hook
2122@c @icon{gnus-group-catchup-current}
2123Mark all unticked articles in this group as read
2124(@code{gnus-group-catchup-current}).
2125@code{gnus-group-catchup-group-hook} is called when catching up a group from
2126the group buffer.
2127
2128@item C
ad0fd6b9 2129@kindex C @r{(Group)}
6bf7aab6
DL
2130@findex gnus-group-catchup-current-all
2131Mark all articles in this group, even the ticked ones, as read
2132(@code{gnus-group-catchup-current-all}).
2133
2134@item M-c
ad0fd6b9 2135@kindex M-c @r{(Group)}
6bf7aab6
DL
2136@findex gnus-group-clear-data
2137Clear the data from the current group---nix out marks and the list of
2138read articles (@code{gnus-group-clear-data}).
2139
2140@item M-x gnus-group-clear-data-on-native-groups
2141@kindex M-x gnus-group-clear-data-on-native-groups
2142@findex gnus-group-clear-data-on-native-groups
2143If you have switched from one @sc{nntp} server to another, all your marks
2144and read ranges have become worthless. You can use this command to
2145clear out all data that you have on your native groups. Use with
2146caution.
2147
2148@end table
2149
2150
2151@node Group Levels
2152@section Group Levels
2153@cindex group level
2154@cindex level
2155
2156All groups have a level of @dfn{subscribedness}. For instance, if a
2157group is on level 2, it is more subscribed than a group on level 5. You
2158can ask Gnus to just list groups on a given level or lower
2159(@pxref{Listing Groups}), or to just check for new articles in groups on
2160a given level or lower (@pxref{Scanning New Messages}).
2161
2162Remember: The higher the level of the group, the less important it is.
2163
2164@table @kbd
2165
2166@item S l
ad0fd6b9 2167@kindex S l @r{(Group)}
6bf7aab6
DL
2168@findex gnus-group-set-current-level
2169Set the level of the current group. If a numeric prefix is given, the
2170next @var{n} groups will have their levels set. The user will be
2171prompted for a level.
2172@end table
2173
2174@vindex gnus-level-killed
2175@vindex gnus-level-zombie
2176@vindex gnus-level-unsubscribed
2177@vindex gnus-level-subscribed
2178Gnus considers groups from levels 1 to
2179@code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed,
2180@code{gnus-level-subscribed} (exclusive) and
2181@code{gnus-level-unsubscribed} (inclusive) (default 7) to be
2182unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
2183(default 8) and @code{gnus-level-killed} to be killed (completely dead)
2184(default 9). Gnus treats subscribed and unsubscribed groups exactly the
2185same, but zombie and killed groups have no information on what articles
2186you have read, etc, stored. This distinction between dead and living
2187groups isn't done because it is nice or clever, it is done purely for
2188reasons of efficiency.
2189
2190It is recommended that you keep all your mail groups (if any) on quite
2191low levels (e.g. 1 or 2).
2192
428da1d2
DL
2193Maybe the following description of the default behavior of Gnus helps to
2194understand what these levels are all about. By default, Gnus shows you
2195subscribed nonempty groups, but by hitting @kbd{L} you can have it show
2196empty subscribed groups and unsubscribed groups, too. Type @kbd{l} to
2197go back to showing nonempty subscribed groups again. Thus, unsubscribed
2198groups are hidden, in a way.
2199
2200Zombie and killed groups are similar to unsubscribed groups in that they
2201are hidden by default. But they are different from subscribed and
2202unsubscribed groups in that Gnus doesn't ask the news server for
2203information (number of messages, number of unread messages) on zombie
2204and killed groups. Normally, you use @kbd{C-k} to kill the groups you
2205aren't interested in. If most groups are killed, Gnus is faster.
2206
2207Why does Gnus distinguish between zombie and killed groups? Well, when
2208a new group arrives on the server, Gnus by default makes it a zombie
2209group. This means that you are normally not bothered with new groups,
2210but you can type @kbd{A z} to get a list of all new groups. Subscribe
2211the ones you like and kill the ones you don't want. (@kbd{A k} shows a
2212list of killed groups.)
2213
6bf7aab6
DL
2214If you want to play with the level variables, you should show some care.
2215Set them once, and don't touch them ever again. Better yet, don't touch
2216them at all unless you know exactly what you're doing.
2217
2218@vindex gnus-level-default-unsubscribed
2219@vindex gnus-level-default-subscribed
2220Two closely related variables are @code{gnus-level-default-subscribed}
2221(default 3) and @code{gnus-level-default-unsubscribed} (default 6),
2222which are the levels that new groups will be put on if they are
2223(un)subscribed. These two variables should, of course, be inside the
2224relevant valid ranges.
2225
2226@vindex gnus-keep-same-level
2227If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
2228will only move to groups of the same level (or lower). In
2229particular, going from the last article in one group to the next group
2230will go to the next group of the same level (or lower). This might be
2231handy if you want to read the most important groups before you read the
2232rest.
2233
2625a8f7
GM
2234If this variable is @code{best}, Gnus will make the next newsgroup the
2235one with the best level.
2236
6bf7aab6
DL
2237@vindex gnus-group-default-list-level
2238All groups with a level less than or equal to
2239@code{gnus-group-default-list-level} will be listed in the group buffer
2240by default.
2241
2242@vindex gnus-group-list-inactive-groups
2243If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
2244groups will be listed along with the unread groups. This variable is
2245@code{t} by default. If it is @code{nil}, inactive groups won't be
2246listed.
2247
2248@vindex gnus-group-use-permanent-levels
2249If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
2250give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
2251use this level as the ``work'' level.
2252
2253@vindex gnus-activate-level
2254Gnus will normally just activate (i. e., query the server about) groups
2255on level @code{gnus-activate-level} or less. If you don't want to
2256activate unsubscribed groups, for instance, you might set this variable
2257to 5. The default is 6.
2258
2259
2260@node Group Score
2261@section Group Score
2262@cindex group score
2263@cindex group rank
2264@cindex rank
2265
2266You would normally keep important groups on high levels, but that scheme
2267is somewhat restrictive. Don't you wish you could have Gnus sort the
2268group buffer according to how often you read groups, perhaps? Within
2269reason?
2270
2625a8f7
GM
2271This is what @dfn{group score} is for. You can have Gnus assign a score
2272to each group through the mechanism described below. You can then sort
2273the group buffer based on this score. Alternatively, you can sort on
2274score and then level. (Taken together, the level and the score is
2275called the @dfn{rank} of the group. A group that is on level 4 and has
2276a score of 1 has a higher rank than a group on level 5 that has a score
2277of 300. (The level is the most significant part and the score is the
2278least significant part.))
6bf7aab6
DL
2279
2280@findex gnus-summary-bubble-group
2281If you want groups you read often to get higher scores than groups you
2282read seldom you can add the @code{gnus-summary-bubble-group} function to
2283the @code{gnus-summary-exit-hook} hook. This will result (after
2284sorting) in a bubbling sort of action. If you want to see that in
2285action after each summary exit, you can add
2286@code{gnus-group-sort-groups-by-rank} or
2287@code{gnus-group-sort-groups-by-score} to the same hook, but that will
2288slow things down somewhat.
2289
2290
2291@node Marking Groups
2292@section Marking Groups
2293@cindex marking groups
2294
2295If you want to perform some command on several groups, and they appear
2296subsequently in the group buffer, you would normally just give a
2297numerical prefix to the command. Most group commands will then do your
2298bidding on those groups.
2299
2300However, if the groups are not in sequential order, you can still
2301perform a command on several groups. You simply mark the groups first
2302with the process mark and then execute the command.
2303
2304@table @kbd
2305
2306@item #
ad0fd6b9 2307@kindex # @r{(Group)}
6bf7aab6 2308@itemx M m
ad0fd6b9 2309@kindex M m @r{(Group)}
6bf7aab6
DL
2310@findex gnus-group-mark-group
2311Set the mark on the current group (@code{gnus-group-mark-group}).
2312
2313@item M-#
ad0fd6b9 2314@kindex M-# @r{(Group)}
6bf7aab6 2315@itemx M u
ad0fd6b9 2316@kindex M u @r{(Group)}
6bf7aab6
DL
2317@findex gnus-group-unmark-group
2318Remove the mark from the current group
2319(@code{gnus-group-unmark-group}).
2320
2321@item M U
ad0fd6b9 2322@kindex M U @r{(Group)}
6bf7aab6
DL
2323@findex gnus-group-unmark-all-groups
2324Remove the mark from all groups (@code{gnus-group-unmark-all-groups}).
2325
2326@item M w
ad0fd6b9 2327@kindex M w @r{(Group)}
6bf7aab6
DL
2328@findex gnus-group-mark-region
2329Mark all groups between point and mark (@code{gnus-group-mark-region}).
2330
2331@item M b
ad0fd6b9 2332@kindex M b @r{(Group)}
6bf7aab6
DL
2333@findex gnus-group-mark-buffer
2334Mark all groups in the buffer (@code{gnus-group-mark-buffer}).
2335
2336@item M r
ad0fd6b9 2337@kindex M r @r{(Group)}
6bf7aab6
DL
2338@findex gnus-group-mark-regexp
2339Mark all groups that match some regular expression
2340(@code{gnus-group-mark-regexp}).
2341@end table
2342
2343Also @pxref{Process/Prefix}.
2344
2345@findex gnus-group-universal-argument
2346If you want to execute some command on all groups that have been marked
2347with the process mark, you can use the @kbd{M-&}
2348(@code{gnus-group-universal-argument}) command. It will prompt you for
2349the command to be executed.
2350
2351
2352@node Foreign Groups
2353@section Foreign Groups
2354@cindex foreign groups
2355
2356Below are some group mode commands for making and editing general foreign
2357groups, as well as commands to ease the creation of a few
2358special-purpose groups. All these commands insert the newly created
2359groups under point---@code{gnus-subscribe-newsgroup-method} is not
2360consulted.
2361
2362@table @kbd
2363
2364@item G m
ad0fd6b9 2365@kindex G m @r{(Group)}
6bf7aab6
DL
2366@findex gnus-group-make-group
2367@cindex making groups
2368Make a new group (@code{gnus-group-make-group}). Gnus will prompt you
2369for a name, a method and possibly an @dfn{address}. For an easier way
2370to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
2371
2372@item G r
ad0fd6b9 2373@kindex G r @r{(Group)}
6bf7aab6
DL
2374@findex gnus-group-rename-group
2375@cindex renaming groups
2376Rename the current group to something else
2377(@code{gnus-group-rename-group}). This is valid only on some
2378groups---mail groups mostly. This command might very well be quite slow
a8edc211 2379on some back ends.
6bf7aab6
DL
2380
2381@item G c
ad0fd6b9 2382@kindex G c @r{(Group)}
6bf7aab6
DL
2383@cindex customizing
2384@findex gnus-group-customize
2385Customize the group parameters (@code{gnus-group-customize}).
2386
2387@item G e
ad0fd6b9 2388@kindex G e @r{(Group)}
6bf7aab6
DL
2389@findex gnus-group-edit-group-method
2390@cindex renaming groups
2391Enter a buffer where you can edit the select method of the current
2392group (@code{gnus-group-edit-group-method}).
2393
2394@item G p
ad0fd6b9 2395@kindex G p @r{(Group)}
6bf7aab6
DL
2396@findex gnus-group-edit-group-parameters
2397Enter a buffer where you can edit the group parameters
2398(@code{gnus-group-edit-group-parameters}).
2399
2400@item G E
ad0fd6b9 2401@kindex G E @r{(Group)}
6bf7aab6
DL
2402@findex gnus-group-edit-group
2403Enter a buffer where you can edit the group info
2404(@code{gnus-group-edit-group}).
2405
2406@item G d
ad0fd6b9 2407@kindex G d @r{(Group)}
6bf7aab6
DL
2408@findex gnus-group-make-directory-group
2409@cindex nndir
2410Make a directory group (@pxref{Directory Groups}). You will be prompted
2411for a directory name (@code{gnus-group-make-directory-group}).
2412
2413@item G h
ad0fd6b9 2414@kindex G h @r{(Group)}
6bf7aab6
DL
2415@cindex help group
2416@findex gnus-group-make-help-group
2417Make the Gnus help group (@code{gnus-group-make-help-group}).
2418
2419@item G a
ad0fd6b9 2420@kindex G a @r{(Group)}
6bf7aab6
DL
2421@cindex (ding) archive
2422@cindex archive group
2423@findex gnus-group-make-archive-group
2424@vindex gnus-group-archive-directory
2425@vindex gnus-group-recent-archive-directory
2426Make a Gnus archive group (@code{gnus-group-make-archive-group}). By
2427default a group pointing to the most recent articles will be created
2428(@code{gnus-group-recent-archive-directory}), but given a prefix, a full
2429group will be created from @code{gnus-group-archive-directory}.
2430
2431@item G k
ad0fd6b9 2432@kindex G k @r{(Group)}
6bf7aab6
DL
2433@findex gnus-group-make-kiboze-group
2434@cindex nnkiboze
2435Make a kiboze group. You will be prompted for a name, for a regexp to
2436match groups to be ``included'' in the kiboze group, and a series of
2437strings to match on headers (@code{gnus-group-make-kiboze-group}).
2438@xref{Kibozed Groups}.
2439
2440@item G D
ad0fd6b9 2441@kindex G D @r{(Group)}
6bf7aab6
DL
2442@findex gnus-group-enter-directory
2443@cindex nneething
2444Read an arbitrary directory as if it were a newsgroup with the
a8edc211 2445@code{nneething} back end (@code{gnus-group-enter-directory}).
6bf7aab6
DL
2446@xref{Anything Groups}.
2447
2448@item G f
ad0fd6b9 2449@kindex G f @r{(Group)}
6bf7aab6
DL
2450@findex gnus-group-make-doc-group
2451@cindex ClariNet Briefs
2452@cindex nndoc
2453Make a group based on some file or other
2454(@code{gnus-group-make-doc-group}). If you give a prefix to this
2455command, you will be prompted for a file name and a file type.
2456Currently supported types are @code{babyl}, @code{mbox}, @code{digest},
2457@code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs},
2625a8f7
GM
2458@code{rfc934}, @code{rfc822-forward}, @code{nsmail} and @code{forward}.
2459If you run this command without a prefix, Gnus will guess at the file
2460type. @xref{Document Groups}.
6bf7aab6
DL
2461
2462@item G u
ad0fd6b9 2463@kindex G u @r{(Group)}
6bf7aab6
DL
2464@vindex gnus-useful-groups
2465@findex gnus-group-make-useful-group
2466Create one of the groups mentioned in @code{gnus-useful-groups}
2467(@code{gnus-group-make-useful-group}).
2468
2469@item G w
ad0fd6b9 2470@kindex G w @r{(Group)}
6bf7aab6
DL
2471@findex gnus-group-make-web-group
2472@cindex DejaNews
2473@cindex Alta Vista
2474@cindex InReference
2475@cindex nnweb
2476Make an ephemeral group based on a web search
2477(@code{gnus-group-make-web-group}). If you give a prefix to this
2478command, make a solid group instead. You will be prompted for the
2479search engine type and the search string. Valid search engine types
2480include @code{dejanews}, @code{altavista} and @code{reference}.
2481@xref{Web Searches}.
2482
2483If you use the @code{dejanews} search engine, you can limit the search
2484to a particular group by using a match string like
2485@samp{~g alt.sysadmin.recovery shaving}.
2486
ad0fd6b9
RS
2487@item G @key{DEL}
2488@kindex G @key{DEL} @r{(Group)}
6bf7aab6
DL
2489@findex gnus-group-delete-group
2490This function will delete the current group
2491(@code{gnus-group-delete-group}). If given a prefix, this function will
2492actually delete all the articles in the group, and forcibly remove the
2493group itself from the face of the Earth. Use a prefix only if you are
2494absolutely sure of what you are doing. This command can't be used on
2495read-only groups (like @code{nntp} group), though.
2496
2497@item G V
ad0fd6b9 2498@kindex G V @r{(Group)}
6bf7aab6
DL
2499@findex gnus-group-make-empty-virtual
2500Make a new, fresh, empty @code{nnvirtual} group
2501(@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}.
2502
2503@item G v
ad0fd6b9 2504@kindex G v @r{(Group)}
6bf7aab6
DL
2505@findex gnus-group-add-to-virtual
2506Add the current group to an @code{nnvirtual} group
2507(@code{gnus-group-add-to-virtual}). Uses the process/prefix convention.
2508@end table
2509
2510@xref{Select Methods}, for more information on the various select
2511methods.
2512
2513@vindex gnus-activate-foreign-newsgroups
2514If @code{gnus-activate-foreign-newsgroups} is a positive number,
2515Gnus will check all foreign groups with this level or lower at startup.
2516This might take quite a while, especially if you subscribe to lots of
2517groups from different @sc{nntp} servers. Also @pxref{Group Levels};
2518@code{gnus-activate-level} also affects activation of foreign
2625a8f7 2519newsgroups.
6bf7aab6
DL
2520
2521
2522@node Group Parameters
2523@section Group Parameters
2524@cindex group parameters
2525
2526The group parameters store information local to a particular group.
2527Here's an example group parameter list:
2528
2529@example
2530((to-address . "ding@@gnus.org")
2531 (auto-expire . t))
2532@end example
2533
2534We see that each element consists of a "dotted pair"---the thing before
2535the dot is the key, while the thing after the dot is the value. All the
2536parameters have this form @emph{except} local variable specs, which are
2537not dotted pairs, but proper lists.
2538
2539The following group parameters can be used:
2540
2541@table @code
2542@item to-address
2543@cindex to-address
2544Address used by when doing followups and new posts.
2545
2546@example
2547(to-address . "some@@where.com")
2548@end example
2549
2550This is primarily useful in mail groups that represent closed mailing
2551lists---mailing lists where it's expected that everybody that writes to
2552the mailing list is subscribed to it. Since using this parameter
2553ensures that the mail only goes to the mailing list itself, it means
2554that members won't receive two copies of your followups.
2555
2556Using @code{to-address} will actually work whether the group is foreign
2557or not. Let's say there's a group on the server that is called
2558@samp{fa.4ad-l}. This is a real newsgroup, but the server has gotten
2559the articles from a mail-to-news gateway. Posting directly to this
2560group is therefore impossible---you have to send mail to the mailing
2561list address instead.
2562
33a48912
DL
2563Some parameters have corresponding customizable variables, each of which
2564is an alist of regexps and values.
2565
6bf7aab6
DL
2566@item to-list
2567@cindex to-list
2625a8f7 2568Address used when doing @kbd{a} in that group.
6bf7aab6
DL
2569
2570@example
2571(to-list . "some@@where.com")
2572@end example
2573
2574It is totally ignored
2575when doing a followup---except that if it is present in a news group,
2576you'll get mail group semantics when doing @kbd{f}.
2577
2578If you do an @kbd{a} command in a mail group and you have neither a
2579@code{to-list} group parameter nor a @code{to-address} group parameter,
2580then a @code{to-list} group parameter will be added automatically upon
2581sending the message if @code{gnus-add-to-list} is set to @code{t}.
2582@vindex gnus-add-to-list
2583
2584If you do an @kbd{a} command in a mail group and you don't have a
2585@code{to-list} group parameter, one will be added automatically upon
2586sending the message.
2587
33a48912
DL
2588See also @code{gnus-parameter-to-list-alist}.
2589
6bf7aab6
DL
2590@item visible
2591@cindex visible
2592If the group parameter list has the element @code{(visible . t)},
2593that group will always be visible in the Group buffer, regardless
2594of whether it has any unread articles.
2595
2596@item broken-reply-to
2597@cindex broken-reply-to
2598Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
2599headers in this group are to be ignored. This can be useful if you're
2600reading a mailing list group where the listserv has inserted
2601@code{Reply-To} headers that point back to the listserv itself. This is
2602broken behavior. So there!
2603
2604@item to-group
2605@cindex to-group
2606Elements like @code{(to-group . "some.group.name")} means that all
2607posts in that group will be sent to @code{some.group.name}.
2608
2609@item newsgroup
2610@cindex newsgroup
2611If you have @code{(newsgroup . t)} in the group parameter list, Gnus
2612will treat all responses as if they were responses to news articles.
2613This can be useful if you have a mail group that's really a mirror of a
2614news group.
2615
2616@item gcc-self
2617@cindex gcc-self
2618If @code{(gcc-self . t)} is present in the group parameter list, newly
2625a8f7 2619composed messages will be @code{Gcc}'d to the current group. If
6bf7aab6
DL
2620@code{(gcc-self . none)} is present, no @code{Gcc:} header will be
2621generated, if @code{(gcc-self . "string")} is present, this string will
2622be inserted literally as a @code{gcc} header. This parameter takes
2623precedence over any default @code{Gcc} rules as described later
2624(@pxref{Archived Messages}).
2625
2626@item auto-expire
2627@cindex auto-expire
2628If the group parameter has an element that looks like @code{(auto-expire
2629. t)}, all articles read will be marked as expirable. For an
2630alternative approach, @pxref{Expiring Mail}.
2631
2632@item total-expire
2633@cindex total-expire
2634If the group parameter has an element that looks like
2635@code{(total-expire . t)}, all read articles will be put through the
2636expiry process, even if they are not marked as expirable. Use with
2637caution. Unread, ticked and dormant articles are not eligible for
2638expiry.
2639
33a48912
DL
2640See also @code{gnus-total-expirable-newsgroups}.
2641
6bf7aab6
DL
2642@item expiry-wait
2643@cindex expiry-wait
2644@vindex nnmail-expiry-wait-function
2645If the group parameter has an element that looks like @code{(expiry-wait
2646. 10)}, this value will override any @code{nnmail-expiry-wait} and
2647@code{nnmail-expiry-wait-function} when expiring expirable messages.
2648The value can either be a number of days (not necessarily an integer) or
2649the symbols @code{never} or @code{immediate}.
2650
2651@item score-file
2652@cindex score file group parameter
2653Elements that look like @code{(score-file . "file")} will make
2654@file{file} into the current score file for the group in question. All
2655interactive score entries will be put into this file.
2656
2657@item adapt-file
2658@cindex adapt file group parameter
2659Elements that look like @code{(adapt-file . "file")} will make
2660@file{file} into the current adaptive file for the group in question.
2661All adaptive score entries will be put into this file.
2662
2663@item admin-address
2664When unsubscribing from a mailing list you should never send the
2665unsubscription notice to the mailing list itself. Instead, you'd send
2666messages to the administrative address. This parameter allows you to
2667put the admin address somewhere convenient.
2668
2669@item display
2670Elements that look like @code{(display . MODE)} say which articles to
2671display on entering the group. Valid values are:
2672
2673@table @code
2674@item all
2675Display all articles, both read and unread.
2676
2677@item default
2678Display the default visible articles, which normally includes unread and
2679ticked articles.
2680@end table
2681
2682@item comment
2683Elements that look like @code{(comment . "This is a comment")}
2684are arbitrary comments on the group. They are currently ignored by
2685Gnus, but provide a place for you to store information on particular
2686groups.
2687
2625a8f7
GM
2688@item charset
2689Elements that look like @code{(charset . iso-8859-1)} will make
2690@code{iso-8859-1} the default charset; that is, the charset that will be
2691used for all articles that do not specify a charset.
2692
33a48912 2693See also @code{gnus-group-charset-alist}.
6bf7aab6 2694
33a48912
DL
2695@item ignored-charsets
2696Elements that look like @code{(ignored-charsets x-known iso-8859-1)}
2697will make @code{iso-8859-1} and @code{x-unknown} ignored; that is, the
2698default charset will be used for decoding articles.
6bf7aab6 2699
33a48912 2700See also @code{gnus-group-ignored-charsets-alist}.
177c0ea7 2701
2625a8f7
GM
2702@item posting-style
2703You can store additional posting style information for this group only
2704here (@pxref{Posting Styles}). The format is that of an entry in the
2705@code{gnus-posting-styles} alist, except that there's no regexp matching
2706the group name (of course). Style elements in this group parameter will
2707take precedence over the ones found in @code{gnus-posting-styles}.
2708
2709For instance, if you want a funky name and signature in this group only,
2710instead of hacking @code{gnus-posting-styles}, you could put something
2711like this in the group parameters:
2712
2713@example
2714(posting-style
2715 (name "Funky Name")
2716 (signature "Funky Signature"))
2717@end example
2718
dda5808a
DL
2719@item banner
2720An item like @code{(banner . "regex")} causes any part of an article
2721that matches the regular expression "regex" to be stripped. Instead of
2722"regex", you can also use the symbol @code{signature} which strips the
2723last signature or any of the elements of the alist
2724@code{gnus-article-banner-alist}.
2725
33a48912
DL
2726@item (@var{variable} @var{form})
2727You can use the group parameters to set variables local to the group you
2728are entering. If you want to turn threading off in @samp{news.answers},
2729you could put @code{(gnus-show-threads nil)} in the group parameters of
2730that group. @code{gnus-show-threads} will be made into a local variable
2731in the summary buffer you enter, and the form @code{nil} will be
2732@code{eval}ed there.
2733
2734This can also be used as a group-specific hook function, if you like.
2735If you want to hear a beep when you enter a group, you could put
2736something like @code{(dummy-variable (ding))} in the parameters of that
2737group. @code{dummy-variable} will be set to the result of the
2738@code{(ding)} form, but who cares?
2739
6bf7aab6
DL
2740@end table
2741
9e374264
DL
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}).
6bf7aab6
DL
2747
2748
2749@node Listing Groups
2750@section Listing Groups
2751@cindex group listing
2752
2753These commands all list various slices of the groups available.
2754
2755@table @kbd
2756
2757@item l
2758@itemx A s
ad0fd6b9
RS
2759@kindex A s @r{(Group)}
2760@kindex l @r{(Group)}
6bf7aab6
DL
2761@findex gnus-group-list-groups
2762List all groups that have unread articles
2763(@code{gnus-group-list-groups}). If the numeric prefix is used, this
2764command will list only groups of level ARG and lower. By default, it
2765only lists groups of level five (i. e.,
2766@code{gnus-group-default-list-level}) or lower (i.e., just subscribed
2767groups).
2768
2769@item L
2770@itemx A u
ad0fd6b9
RS
2771@kindex A u @r{(Group)}
2772@kindex L @r{(Group)}
6bf7aab6
DL
2773@findex gnus-group-list-all-groups
2774List all groups, whether they have unread articles or not
2775(@code{gnus-group-list-all-groups}). If the numeric prefix is used,
2776this command will list only groups of level ARG and lower. By default,
2777it lists groups of level seven or lower (i.e., just subscribed and
2778unsubscribed groups).
2779
2780@item A l
ad0fd6b9 2781@kindex A l @r{(Group)}
6bf7aab6
DL
2782@findex gnus-group-list-level
2783List all unread groups on a specific level
2784(@code{gnus-group-list-level}). If given a prefix, also list the groups
2785with no unread articles.
2786
2787@item A k
ad0fd6b9 2788@kindex A k @r{(Group)}
6bf7aab6
DL
2789@findex gnus-group-list-killed
2790List all killed groups (@code{gnus-group-list-killed}). If given a
2791prefix argument, really list all groups that are available, but aren't
2792currently (un)subscribed. This could entail reading the active file
2793from the server.
2794
2795@item A z
ad0fd6b9 2796@kindex A z @r{(Group)}
6bf7aab6
DL
2797@findex gnus-group-list-zombies
2798List all zombie groups (@code{gnus-group-list-zombies}).
2799
2800@item A m
ad0fd6b9 2801@kindex A m @r{(Group)}
6bf7aab6
DL
2802@findex gnus-group-list-matching
2803List all unread, subscribed groups with names that match a regexp
2804(@code{gnus-group-list-matching}).
2805
2806@item A M
ad0fd6b9 2807@kindex A M @r{(Group)}
6bf7aab6
DL
2808@findex gnus-group-list-all-matching
2809List groups that match a regexp (@code{gnus-group-list-all-matching}).
2810
2811@item A A
ad0fd6b9 2812@kindex A A @r{(Group)}
6bf7aab6
DL
2813@findex gnus-group-list-active
2814List absolutely all groups in the active file(s) of the
2815server(s) you are connected to (@code{gnus-group-list-active}). This
2816might very well take quite a while. It might actually be a better idea
2817to do a @kbd{A M} to list all matching, and just give @samp{.} as the
2818thing to match on. Also note that this command may list groups that
2819don't exist (yet)---these will be listed as if they were killed groups.
2820Take the output with some grains of salt.
2821
2822@item A a
ad0fd6b9 2823@kindex A a @r{(Group)}
6bf7aab6
DL
2824@findex gnus-group-apropos
2825List all groups that have names that match a regexp
2826(@code{gnus-group-apropos}).
2827
2828@item A d
ad0fd6b9 2829@kindex A d @r{(Group)}
6bf7aab6
DL
2830@findex gnus-group-description-apropos
2831List all groups that have names or descriptions that match a regexp
2832(@code{gnus-group-description-apropos}).
2833
2625a8f7 2834@item A c
ad0fd6b9 2835@kindex A c @r{(Group)}
2625a8f7
GM
2836@findex gnus-group-list-cached
2837List all groups with cached articles (@code{gnus-group-list-cached}).
2838
2839@item A ?
ad0fd6b9 2840@kindex A ? @r{(Group)}
2625a8f7
GM
2841@findex gnus-group-list-dormant
2842List all groups with dormant articles (@code{gnus-group-list-dormant}).
2843
6bf7aab6
DL
2844@end table
2845
2846@vindex gnus-permanently-visible-groups
2847@cindex visible group parameter
2848Groups that match the @code{gnus-permanently-visible-groups} regexp will
2849always be shown, whether they have unread articles or not. You can also
2850add the @code{visible} element to the group parameters in question to
2851get the same effect.
2852
2853@vindex gnus-list-groups-with-ticked-articles
2854Groups that have just ticked articles in it are normally listed in the
2855group buffer. If @code{gnus-list-groups-with-ticked-articles} is
2856@code{nil}, these groups will be treated just like totally empty
2857groups. It is @code{t} by default.
2858
2859
2860@node Sorting Groups
2861@section Sorting Groups
2862@cindex sorting groups
2863
ad0fd6b9 2864@kindex C-c C-s @r{(Group)}
6bf7aab6
DL
2865@findex gnus-group-sort-groups
2866@vindex gnus-group-sort-function
2867The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
2868group buffer according to the function(s) given by the
2869@code{gnus-group-sort-function} variable. Available sorting functions
2870include:
2871
2872@table @code
2873
2874@item gnus-group-sort-by-alphabet
2875@findex gnus-group-sort-by-alphabet
2876Sort the group names alphabetically. This is the default.
2877
2878@item gnus-group-sort-by-real-name
2879@findex gnus-group-sort-by-real-name
2880Sort the group alphabetically on the real (unprefixed) group names.
2881
2882@item gnus-group-sort-by-level
2883@findex gnus-group-sort-by-level
2884Sort by group level.
2885
2886@item gnus-group-sort-by-score
2887@findex gnus-group-sort-by-score
2888Sort by group score. @xref{Group Score}.
2889
2890@item gnus-group-sort-by-rank
2891@findex gnus-group-sort-by-rank
2892Sort by group score and then the group level. The level and the score
2893are, when taken together, the group's @dfn{rank}. @xref{Group Score}.
2894
2895@item gnus-group-sort-by-unread
2896@findex gnus-group-sort-by-unread
2897Sort by number of unread articles.
2898
2899@item gnus-group-sort-by-method
2900@findex gnus-group-sort-by-method
2901Sort alphabetically on the select method.
2902
2903
2904@end table
2905
2906@code{gnus-group-sort-function} can also be a list of sorting
2907functions. In that case, the most significant sort key function must be
2908the last one.
2909
2910
2911There are also a number of commands for sorting directly according to
2912some sorting criteria:
2913
2914@table @kbd
2915@item G S a
ad0fd6b9 2916@kindex G S a @r{(Group)}
6bf7aab6
DL
2917@findex gnus-group-sort-groups-by-alphabet
2918Sort the group buffer alphabetically by group name
2919(@code{gnus-group-sort-groups-by-alphabet}).
2920
2921@item G S u
ad0fd6b9 2922@kindex G S u @r{(Group)}
6bf7aab6
DL
2923@findex gnus-group-sort-groups-by-unread
2924Sort the group buffer by the number of unread articles
2925(@code{gnus-group-sort-groups-by-unread}).
2926
2927@item G S l
ad0fd6b9 2928@kindex G S l @r{(Group)}
6bf7aab6
DL
2929@findex gnus-group-sort-groups-by-level
2930Sort the group buffer by group level
2931(@code{gnus-group-sort-groups-by-level}).
2932
2933@item G S v
ad0fd6b9 2934@kindex G S v @r{(Group)}
6bf7aab6
DL
2935@findex gnus-group-sort-groups-by-score
2936Sort the group buffer by group score
2937(@code{gnus-group-sort-groups-by-score}). @xref{Group Score}.
2938
2939@item G S r
ad0fd6b9 2940@kindex G S r @r{(Group)}
6bf7aab6
DL
2941@findex gnus-group-sort-groups-by-rank
2942Sort the group buffer by group rank
2943(@code{gnus-group-sort-groups-by-rank}). @xref{Group Score}.
2944
2945@item G S m
ad0fd6b9 2946@kindex G S m @r{(Group)}
6bf7aab6 2947@findex gnus-group-sort-groups-by-method
a8edc211 2948Sort the group buffer alphabetically by back end name
6bf7aab6
DL
2949(@code{gnus-group-sort-groups-by-method}).
2950
2951@end table
2952
2625a8f7
GM
2953All the commands below obey the process/prefix convention
2954(@pxref{Process/Prefix}).
2955
2956When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
2957commands will sort in reverse order.
6bf7aab6
DL
2958
2959You can also sort a subset of the groups:
2960
2961@table @kbd
2962@item G P a
ad0fd6b9 2963@kindex G P a @r{(Group)}
6bf7aab6 2964@findex gnus-group-sort-selected-groups-by-alphabet
2625a8f7
GM
2965Sort the groups alphabetically by group name
2966(@code{gnus-group-sort-selected-groups-by-alphabet}).
6bf7aab6
DL
2967
2968@item G P u
ad0fd6b9 2969@kindex G P u @r{(Group)}
6bf7aab6 2970@findex gnus-group-sort-selected-groups-by-unread
2625a8f7
GM
2971Sort the groups by the number of unread articles
2972(@code{gnus-group-sort-selected-groups-by-unread}).
6bf7aab6
DL
2973
2974@item G P l
ad0fd6b9 2975@kindex G P l @r{(Group)}
6bf7aab6 2976@findex gnus-group-sort-selected-groups-by-level
2625a8f7 2977Sort the groups by group level
6bf7aab6
DL
2978(@code{gnus-group-sort-selected-groups-by-level}).
2979
2980@item G P v
ad0fd6b9 2981@kindex G P v @r{(Group)}
6bf7aab6 2982@findex gnus-group-sort-selected-groups-by-score
2625a8f7 2983Sort the groups by group score
6bf7aab6
DL
2984(@code{gnus-group-sort-selected-groups-by-score}). @xref{Group Score}.
2985
2986@item G P r
ad0fd6b9 2987@kindex G P r @r{(Group)}
6bf7aab6 2988@findex gnus-group-sort-selected-groups-by-rank
2625a8f7 2989Sort the groups by group rank
6bf7aab6
DL
2990(@code{gnus-group-sort-selected-groups-by-rank}). @xref{Group Score}.
2991
2992@item G P m
ad0fd6b9 2993@kindex G P m @r{(Group)}
6bf7aab6 2994@findex gnus-group-sort-selected-groups-by-method
a8edc211 2995Sort the groups alphabetically by back end name
2625a8f7 2996(@code{gnus-group-sort-selected-groups-by-method}).
6bf7aab6
DL
2997
2998@end table
2999
3000
3001
3002@node Group Maintenance
3003@section Group Maintenance
3004@cindex bogus groups
3005
3006@table @kbd
3007@item b
ad0fd6b9 3008@kindex b @r{(Group)}
6bf7aab6
DL
3009@findex gnus-group-check-bogus-groups
3010Find bogus groups and delete them
3011(@code{gnus-group-check-bogus-groups}).
3012
3013@item F
ad0fd6b9 3014@kindex F @r{(Group)}
6bf7aab6
DL
3015@findex gnus-group-find-new-groups
3016Find new groups and process them (@code{gnus-group-find-new-groups}).
3017With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
3018for new groups. With 2 @kbd{C-u}'s, use most complete method possible
3019to query the server for new groups, and subscribe the new groups as
3020zombies.
3021
3022@item C-c C-x
ad0fd6b9 3023@kindex C-c C-x @r{(Group)}
6bf7aab6
DL
3024@findex gnus-group-expire-articles
3025Run all expirable articles in the current group through the expiry
3026process (if any) (@code{gnus-group-expire-articles}).
3027
718fb8a1
EZ
3028@item C-c C-M-x
3029@kindex C-c C-M-x @r{(Group)}
6bf7aab6
DL
3030@findex gnus-group-expire-all-groups
3031Run all articles in all groups through the expiry process
3032(@code{gnus-group-expire-all-groups}).
3033
3034@end table
3035
3036
3037@node Browse Foreign Server
3038@section Browse Foreign Server
3039@cindex foreign servers
3040@cindex browsing servers
3041
3042@table @kbd
3043@item B
ad0fd6b9 3044@kindex B @r{(Group)}
6bf7aab6
DL
3045@findex gnus-group-browse-foreign-server
3046You will be queried for a select method and a server name. Gnus will
3047then attempt to contact this server and let you browse the groups there
3048(@code{gnus-group-browse-foreign-server}).
3049@end table
3050
3051@findex gnus-browse-mode
3052A new buffer with a list of available groups will appear. This buffer
3053will use the @code{gnus-browse-mode}. This buffer looks a bit (well,
3054a lot) like a normal group buffer.
3055
3056Here's a list of keystrokes available in the browse mode:
3057
3058@table @kbd
3059@item n
3060@kindex n (Browse)
3061@findex gnus-group-next-group
3062Go to the next group (@code{gnus-group-next-group}).
3063
3064@item p
3065@kindex p (Browse)
3066@findex gnus-group-prev-group
3067Go to the previous group (@code{gnus-group-prev-group}).
3068
ad0fd6b9
RS
3069@item @key{SPC}
3070@kindex @key{SPC} (Browse)
6bf7aab6
DL
3071@findex gnus-browse-read-group
3072Enter the current group and display the first article
3073(@code{gnus-browse-read-group}).
3074
ad0fd6b9
RS
3075@item @key{RET}
3076@kindex @key{RET} (Browse)
6bf7aab6
DL
3077@findex gnus-browse-select-group
3078Enter the current group (@code{gnus-browse-select-group}).
3079
3080@item u
3081@kindex u (Browse)
3082@findex gnus-browse-unsubscribe-current-group
3083Unsubscribe to the current group, or, as will be the case here,
3084subscribe to it (@code{gnus-browse-unsubscribe-current-group}).
3085
3086@item l
3087@itemx q
3088@kindex q (Browse)
3089@kindex l (Browse)
3090@findex gnus-browse-exit
3091Exit browse mode (@code{gnus-browse-exit}).
3092
3093@item ?
3094@kindex ? (Browse)
3095@findex gnus-browse-describe-briefly
3096Describe browse mode briefly (well, there's not much to describe, is
3097there) (@code{gnus-browse-describe-briefly}).
3098@end table
3099
3100
3101@node Exiting Gnus
3102@section Exiting Gnus
3103@cindex exiting Gnus
3104
3105Yes, Gnus is ex(c)iting.
3106
3107@table @kbd
3108@item z
ad0fd6b9 3109@kindex z @r{(Group)}
6bf7aab6
DL
3110@findex gnus-group-suspend
3111Suspend Gnus (@code{gnus-group-suspend}). This doesn't really exit Gnus,
3112but it kills all buffers except the Group buffer. I'm not sure why this
3113is a gain, but then who am I to judge?
3114
3115@item q
ad0fd6b9 3116@kindex q @r{(Group)}
6bf7aab6
DL
3117@findex gnus-group-exit
3118@c @icon{gnus-group-exit}
3119Quit Gnus (@code{gnus-group-exit}).
3120
3121@item Q
ad0fd6b9 3122@kindex Q @r{(Group)}
6bf7aab6
DL
3123@findex gnus-group-quit
3124Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
3125The dribble file will be saved, though (@pxref{Auto Save}).
3126@end table
3127
3128@vindex gnus-exit-gnus-hook
3129@vindex gnus-suspend-gnus-hook
3130@code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
3131@code{gnus-exit-gnus-hook} is called when you quit Gnus, while
3132@code{gnus-after-exiting-gnus-hook} is called as the final item when
3133exiting Gnus.
3134
3135@findex gnus-unload
3136@cindex unloading
3137If you wish to completely unload Gnus and all its adherents, you can use
3138the @code{gnus-unload} command. This command is also very handy when
3139trying to customize meta-variables.
3140
3141Note:
3142
3143@quotation
3144Miss Lisa Cannifax, while sitting in English class, felt her feet go
3145numbly heavy and herself fall into a hazy trance as the boy sitting
3146behind her drew repeated lines with his pencil across the back of her
3147plastic chair.
3148@end quotation
3149
3150
3151@node Group Topics
3152@section Group Topics
3153@cindex topics
3154
3155If you read lots and lots of groups, it might be convenient to group
3156them hierarchically according to topics. You put your Emacs groups over
3157here, your sex groups over there, and the rest (what, two groups or so?)
3158you put in some misc section that you never bother with anyway. You can
3159even group the Emacs sex groups as a sub-topic to either the Emacs
3160groups or the sex groups---or both! Go wild!
3161
2625a8f7
GM
3162@iftex
3163@iflatex
3164\gnusfigure{Group Topics}{400}{
3165\put(75,50){\epsfig{figure=tmp/group-topic.ps,height=9cm}}
3166}
3167@end iflatex
3168@end iftex
3169
6bf7aab6
DL
3170Here's an example:
3171
3172@example
3173Gnus
3174 Emacs -- I wuw it!
3175 3: comp.emacs
3176 2: alt.religion.emacs
3177 Naughty Emacs
3178 452: alt.sex.emacs
3179 0: comp.talk.emacs.recovery
3180 Misc
3181 8: comp.binaries.fractals
3182 13: comp.sources.unix
3183@end example
3184
3185@findex gnus-topic-mode
ad0fd6b9 3186@kindex t @r{(Group)}
6bf7aab6
DL
3187To get this @emph{fab} functionality you simply turn on (ooh!) the
3188@code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This
3189is a toggling command.)
3190
3191Go ahead, just try it. I'll still be here when you get back. La de
3192dum... Nice tune, that... la la la... What, you're back? Yes, and now
3193press @kbd{l}. There. All your groups are now listed under
3194@samp{misc}. Doesn't that make you feel all warm and fuzzy? Hot and
3195bothered?
3196
3197If you want this permanently enabled, you should add that minor mode to
3198the hook for the group mode:
3199
3200@lisp
3201(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
3202@end lisp
3203
3204@menu
3205* Topic Variables:: How to customize the topics the Lisp Way.
3206* Topic Commands:: Interactive E-Z commands.
3207* Topic Sorting:: Sorting each topic individually.
3208* Topic Topology:: A map of the world.
3209* Topic Parameters:: Parameters that apply to all groups in a topic.
3210@end menu
3211
3212
3213@node Topic Variables
3214@subsection Topic Variables
3215@cindex topic variables
3216
3217Now, if you select a topic, it will fold/unfold that topic, which is
3218really neat, I think.
3219
3220@vindex gnus-topic-line-format
3221The topic lines themselves are created according to the
3222@code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
3223Valid elements are:
3224
3225@table @samp
3226@item i
3227Indentation.
3228@item n
3229Topic name.
3230@item v
3231Visibility.
3232@item l
3233Level.
3234@item g
3235Number of groups in the topic.
3236@item a
3237Number of unread articles in the topic.
3238@item A
3239Number of unread articles in the topic and all its subtopics.
3240@end table
3241
3242@vindex gnus-topic-indent-level
3243Each sub-topic (and the groups in the sub-topics) will be indented with
3244@code{gnus-topic-indent-level} times the topic level number of spaces.
3245The default is 2.
3246
3247@vindex gnus-topic-mode-hook
3248@code{gnus-topic-mode-hook} is called in topic minor mode buffers.
3249
3250@vindex gnus-topic-display-empty-topics
3251The @code{gnus-topic-display-empty-topics} says whether to display even
3252topics that have no unread articles in them. The default is @code{t}.
3253
3254
3255@node Topic Commands
3256@subsection Topic Commands
3257@cindex topic commands
3258
3259When the topic minor mode is turned on, a new @kbd{T} submap will be
3260available. In addition, a few of the standard keys change their
3261definitions slightly.
3262
3263@table @kbd
3264
3265@item T n
3266@kindex T n (Topic)
3267@findex gnus-topic-create-topic
3268Prompt for a new topic name and create it
3269(@code{gnus-topic-create-topic}).
3270
3271@item T m
3272@kindex T m (Topic)
3273@findex gnus-topic-move-group
3274Move the current group to some other topic
3275(@code{gnus-topic-move-group}). This command uses the process/prefix
3276convention (@pxref{Process/Prefix}).
3277
2625a8f7
GM
3278@item T j
3279@kindex T j (Topic)
3280@findex gnus-topic-jump-to-topic
177c0ea7 3281Go to a topic (@code{gnus-topic-jump-to-topic}).
2625a8f7 3282
6bf7aab6
DL
3283@item T c
3284@kindex T c (Topic)
3285@findex gnus-topic-copy-group
3286Copy the current group to some other topic
3287(@code{gnus-topic-copy-group}). This command uses the process/prefix
3288convention (@pxref{Process/Prefix}).
3289
2625a8f7
GM
3290@item T h
3291@kindex T h (Topic)
3292@findex gnus-topic-hide-topic
3293Hide the current topic (@code{gnus-topic-hide-topic}). If given
3294a prefix, hide the topic permanently.
3295
3296@item T s
3297@kindex T s (Topic)
3298@findex gnus-topic-show-topic
3299Show the current topic (@code{gnus-topic-show-topic}). If given
3300a prefix, show the topic permanently.
3301
6bf7aab6
DL
3302@item T D
3303@kindex T D (Topic)
3304@findex gnus-topic-remove-group
3305Remove a group from the current topic (@code{gnus-topic-remove-group}).
3306This command is mainly useful if you have the same group in several
3307topics and wish to remove it from one of the topics. You may also
3308remove a group from all topics, but in that case, Gnus will add it to
3309the root topic the next time you start Gnus. In fact, all new groups
3310(which, naturally, don't belong to any topic) will show up in the root
2625a8f7 3311topic.
6bf7aab6
DL
3312
3313This command uses the process/prefix convention
3314(@pxref{Process/Prefix}).
3315
3316@item T M
3317@kindex T M (Topic)
3318@findex gnus-topic-move-matching
3319Move all groups that match some regular expression to a topic
3320(@code{gnus-topic-move-matching}).
3321
3322@item T C
3323@kindex T C (Topic)
3324@findex gnus-topic-copy-matching
3325Copy all groups that match some regular expression to a topic
3326(@code{gnus-topic-copy-matching}).
3327
3328@item T H
3329@kindex T H (Topic)
3330@findex gnus-topic-toggle-display-empty-topics
3331Toggle hiding empty topics
3332(@code{gnus-topic-toggle-display-empty-topics}).
3333
3334@item T #
3335@kindex T # (Topic)
3336@findex gnus-topic-mark-topic
3337Mark all groups in the current topic with the process mark
3338(@code{gnus-topic-mark-topic}).
3339
3340@item T M-#
3341@kindex T M-# (Topic)
3342@findex gnus-topic-unmark-topic
3343Remove the process mark from all groups in the current topic
3344(@code{gnus-topic-unmark-topic}).
3345
6bf7aab6
DL
3346@item T TAB
3347@itemx TAB
3348@kindex T TAB (Topic)
3349@kindex TAB (Topic)
3350@findex gnus-topic-indent
3351``Indent'' the current topic so that it becomes a sub-topic of the
3352previous topic (@code{gnus-topic-indent}). If given a prefix,
3353``un-indent'' the topic instead.
3354
3355@item M-TAB
3356@kindex M-TAB (Topic)
3357@findex gnus-topic-unindent
3358``Un-indent'' the current topic so that it becomes a sub-topic of the
2625a8f7
GM
3359parent of its current parent (@code{gnus-topic-unindent}).
3360
ad0fd6b9
RS
3361@item @key{RET}
3362@kindex @key{RET} (Topic)
2625a8f7 3363@findex gnus-topic-select-group
ad0fd6b9 3364@itemx @key{SPC}
2625a8f7
GM
3365Either select a group or fold a topic (@code{gnus-topic-select-group}).
3366When you perform this command on a group, you'll enter the group, as
3367usual. When done on a topic line, the topic will be folded (if it was
3368visible) or unfolded (if it was folded already). So it's basically a
3369toggling command on topics. In addition, if you give a numerical
3370prefix, group on that level (and lower) will be displayed.
3371
3372@item C-c C-x
3373@kindex C-c C-x (Topic)
3374@findex gnus-topic-expire-articles
3375Run all expirable articles in the current group or topic through the expiry
3376process (if any) (@code{gnus-topic-expire-articles}).
6bf7aab6
DL
3377
3378@item C-k
3379@kindex C-k (Topic)
3380@findex gnus-topic-kill-group
3381Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the
3382topic will be removed along with the topic.
3383
3384@item C-y
3385@kindex C-y (Topic)
3386@findex gnus-topic-yank-group
3387Yank the previously killed group or topic
3388(@code{gnus-topic-yank-group}). Note that all topics will be yanked
3389before all groups.
3390
3391@item T r
3392@kindex T r (Topic)
3393@findex gnus-topic-rename
3394Rename a topic (@code{gnus-topic-rename}).
3395
ad0fd6b9
RS
3396@item T @key{DEL}
3397@kindex T @key{DEL} (Topic)
6bf7aab6
DL
3398@findex gnus-topic-delete
3399Delete an empty topic (@code{gnus-topic-delete}).
3400
3401@item A T
3402@kindex A T (Topic)
3403@findex gnus-topic-list-active
3404List all groups that Gnus knows about in a topics-ified way
3405(@code{gnus-topic-list-active}).
3406
3407@item G p
3408@kindex G p (Topic)
3409@findex gnus-topic-edit-parameters
3410@cindex group parameters
3411@cindex topic parameters
3412@cindex parameters
3413Edit the topic parameters (@code{gnus-topic-edit-parameters}).
3414@xref{Topic Parameters}.
3415
3416@end table
3417
3418
3419@node Topic Sorting
3420@subsection Topic Sorting
3421@cindex topic sorting
3422
3423You can sort the groups in each topic individually with the following
3424commands:
3425
3426
3427@table @kbd
3428@item T S a
3429@kindex T S a (Topic)
3430@findex gnus-topic-sort-groups-by-alphabet
3431Sort the current topic alphabetically by group name
3432(@code{gnus-topic-sort-groups-by-alphabet}).
3433
3434@item T S u
3435@kindex T S u (Topic)
3436@findex gnus-topic-sort-groups-by-unread
3437Sort the current topic by the number of unread articles
3438(@code{gnus-topic-sort-groups-by-unread}).
3439
3440@item T S l
3441@kindex T S l (Topic)
3442@findex gnus-topic-sort-groups-by-level
3443Sort the current topic by group level
3444(@code{gnus-topic-sort-groups-by-level}).
3445
3446@item T S v
3447@kindex T S v (Topic)
3448@findex gnus-topic-sort-groups-by-score
3449Sort the current topic by group score
3450(@code{gnus-topic-sort-groups-by-score}). @xref{Group Score}.
3451
3452@item T S r
3453@kindex T S r (Topic)
3454@findex gnus-topic-sort-groups-by-rank
3455Sort the current topic by group rank
3456(@code{gnus-topic-sort-groups-by-rank}). @xref{Group Score}.
3457
3458@item T S m
3459@kindex T S m (Topic)
3460@findex gnus-topic-sort-groups-by-method
a8edc211 3461Sort the current topic alphabetically by back end name
6bf7aab6
DL
3462(@code{gnus-topic-sort-groups-by-method}).
3463
3464@end table
3465
3466@xref{Sorting Groups}, for more information about group sorting.
3467
3468
3469@node Topic Topology
3470@subsection Topic Topology
3471@cindex topic topology
3472@cindex topology
3473
3474So, let's have a look at an example group buffer:
3475
3476@example
3477Gnus
3478 Emacs -- I wuw it!
3479 3: comp.emacs
3480 2: alt.religion.emacs
3481 Naughty Emacs
3482 452: alt.sex.emacs
3483 0: comp.talk.emacs.recovery
3484 Misc
3485 8: comp.binaries.fractals
3486 13: comp.sources.unix
3487@end example
3488
3489So, here we have one top-level topic (@samp{Gnus}), two topics under
3490that, and one sub-topic under one of the sub-topics. (There is always
3491just one (1) top-level topic). This topology can be expressed as
3492follows:
3493
3494@lisp
3495(("Gnus" visible)
3496 (("Emacs -- I wuw it!" visible)
3497 (("Naughty Emacs" visible)))
3498 (("Misc" visible)))
3499@end lisp
3500
3501@vindex gnus-topic-topology
3502This is in fact how the variable @code{gnus-topic-topology} would look
3503for the display above. That variable is saved in the @file{.newsrc.eld}
3504file, and shouldn't be messed with manually---unless you really want
3505to. Since this variable is read from the @file{.newsrc.eld} file,
3506setting it in any other startup files will have no effect.
3507
3508This topology shows what topics are sub-topics of what topics (right),
3509and which topics are visible. Two settings are currently
3510allowed---@code{visible} and @code{invisible}.
3511
3512
3513@node Topic Parameters
3514@subsection Topic Parameters
3515@cindex topic parameters
3516
3517All groups in a topic will inherit group parameters from the parent (and
3518ancestor) topic parameters. All valid group parameters are valid topic
3519parameters (@pxref{Group Parameters}).
3520
2625a8f7
GM
3521In addition, the following parameters are only valid as topic
3522parameters:
3523
3524@table @code
3525@item subscribe
177c0ea7
JB
3526When subscribing new groups by topic (@pxref{Subscription Methods}), the
3527@code{subscribe} topic parameter says what groups go in what topic. Its
2625a8f7 3528value should be a regexp to match the groups that should go in that
177c0ea7 3529topic.
2625a8f7
GM
3530
3531@end table
3532
6bf7aab6
DL
3533Group parameters (of course) override topic parameters, and topic
3534parameters in sub-topics override topic parameters in super-topics. You
3535know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a
3536verb, although you may feel free to disagree with me here.)
3537
3538@example
3539Gnus
3540 Emacs
3541 3: comp.emacs
3542 2: alt.religion.emacs
3543 452: alt.sex.emacs
3544 Relief
3545 452: alt.sex.emacs
3546 0: comp.talk.emacs.recovery
3547 Misc
3548 8: comp.binaries.fractals
3549 13: comp.sources.unix
3550 452: alt.sex.emacs
3551@end example
3552
3553The @samp{Emacs} topic has the topic parameter @code{(score-file
3554. "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
3555@code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
3556topic parameter @code{(score-file . "emacs.SCORE")}. In addition,
3557@* @samp{alt.religion.emacs} has the group parameter @code{(score-file
3558. "religion.SCORE")}.
3559
3560Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
3561will get the @file{relief.SCORE} home score file. If you enter the same
3562group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
3563score file. If you enter the group @samp{alt.religion.emacs}, you'll
3564get the @file{religion.SCORE} home score file.
3565
3566This seems rather simple and self-evident, doesn't it? Well, yes. But
3567there are some problems, especially with the @code{total-expiry}
3568parameter. Say you have a mail group in two topics; one with
3569@code{total-expiry} and one without. What happens when you do @kbd{M-x
3570gnus-expire-all-expirable-groups}? Gnus has no way of telling which one
3571of these topics you mean to expire articles from, so anything may
3572happen. In fact, I hereby declare that it is @dfn{undefined} what
3573happens. You just have to be careful if you do stuff like that.
3574
3575
3576@node Misc Group Stuff
3577@section Misc Group Stuff
3578
3579@menu
3580* Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
3581* Group Information:: Information and help on groups and Gnus.
3582* Group Timestamp:: Making Gnus keep track of when you last read a group.
3583* File Commands:: Reading and writing the Gnus files.
3584@end menu
3585
3586@table @kbd
3587
3588@item ^
ad0fd6b9 3589@kindex ^ @r{(Group)}
6bf7aab6
DL
3590@findex gnus-group-enter-server-mode
3591Enter the server buffer (@code{gnus-group-enter-server-mode}).
3592@xref{The Server Buffer}.
3593
3594@item a
ad0fd6b9 3595@kindex a @r{(Group)}
6bf7aab6
DL
3596@findex gnus-group-post-news
3597Post an article to a group (@code{gnus-group-post-news}). If given a
3598prefix, the current group name will be used as the default.
3599
3600@item m
ad0fd6b9 3601@kindex m @r{(Group)}
6bf7aab6
DL
3602@findex gnus-group-mail
3603Mail a message somewhere (@code{gnus-group-mail}).
3604
3605@end table
3606
3607Variables for the group buffer:
3608
3609@table @code
3610
3611@item gnus-group-mode-hook
3612@vindex gnus-group-mode-hook
3613is called after the group buffer has been
3614created.
3615
3616@item gnus-group-prepare-hook
3617@vindex gnus-group-prepare-hook
3618is called after the group buffer is
3619generated. It may be used to modify the buffer in some strange,
3620unnatural way.
3621
3622@item gnus-group-prepared-hook
3623@vindex gnus-group-prepare-hook
3624is called as the very last thing after the group buffer has been
3625generated. It may be used to move point around, for instance.
3626
3627@item gnus-permanently-visible-groups
3628@vindex gnus-permanently-visible-groups
3629Groups matching this regexp will always be listed in the group buffer,
3630whether they are empty or not.
3631
2625a8f7
GM
3632@item gnus-group-name-charset-method-alist
3633@vindex gnus-group-name-charset-method-alist
3634An alist of method and the charset for group names. It is used to show
3635non-ASCII group names.
6bf7aab6 3636
2625a8f7
GM
3637For example:
3638@lisp
3639(setq gnus-group-name-charset-method-alist
3640 '(((nntp "news.com.cn") . cn-gb-2312)))
3641@end lisp
3642
3643@item gnus-group-name-charset-group-alist
3644@vindex gnus-group-name-charset-group-alist
177c0ea7 3645An alist of regexp of group name and the charset for group names.
2625a8f7
GM
3646It is used to show non-ASCII group names.
3647
3648For example:
3649@lisp
3650(setq gnus-group-name-charset-group-alist
3651 '(("\\.com\\.cn:" . cn-gb-2312)))
3652@end lisp
3653
3654@end table
6bf7aab6
DL
3655
3656@node Scanning New Messages
3657@subsection Scanning New Messages
3658@cindex new messages
3659@cindex scanning new news
3660
3661@table @kbd
3662
3663@item g
ad0fd6b9 3664@kindex g @r{(Group)}
6bf7aab6
DL
3665@findex gnus-group-get-new-news
3666@c @icon{gnus-group-get-new-news}
3667Check the server(s) for new articles. If the numerical prefix is used,
3668this command will check only groups of level @var{arg} and lower
3669(@code{gnus-group-get-new-news}). If given a non-numerical prefix, this
3670command will force a total re-reading of the active file(s) from the
a8edc211 3671back end(s).
6bf7aab6
DL
3672
3673@item M-g
ad0fd6b9 3674@kindex M-g @r{(Group)}
6bf7aab6
DL
3675@findex gnus-group-get-new-news-this-group
3676@vindex gnus-goto-next-group-when-activating
3677@c @icon{gnus-group-get-new-news-this-group}
3678Check whether new articles have arrived in the current group
3679(@code{gnus-group-get-new-news-this-group}).
3680@code{gnus-goto-next-group-when-activating} says whether this command is
3681to move point to the next group or not. It is @code{t} by default.
3682
3683@findex gnus-activate-all-groups
3684@cindex activating groups
3685@item C-c M-g
ad0fd6b9 3686@kindex C-c M-g @r{(Group)}
6bf7aab6
DL
3687Activate absolutely all groups (@code{gnus-activate-all-groups}).
3688
3689@item R
ad0fd6b9 3690@kindex R @r{(Group)}
6bf7aab6
DL
3691@cindex restarting
3692@findex gnus-group-restart
3693Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
3694file(s), closes the connection to all servers, clears up all run-time
3695Gnus variables, and then starts Gnus all over again.
3696
3697@end table
3698
3699@vindex gnus-get-new-news-hook
3700@code{gnus-get-new-news-hook} is run just before checking for new news.
3701
3702@vindex gnus-after-getting-new-news-hook
3703@code{gnus-after-getting-new-news-hook} is run after checking for new
3704news.
3705
3706
3707@node Group Information
3708@subsection Group Information
3709@cindex group information
3710@cindex information on groups
3711
3712@table @kbd
3713
3714
3715@item H f
ad0fd6b9 3716@kindex H f @r{(Group)}
6bf7aab6
DL
3717@findex gnus-group-fetch-faq
3718@vindex gnus-group-faq-directory
3719@cindex FAQ
3720@cindex ange-ftp
3721Try to fetch the FAQ for the current group
3722(@code{gnus-group-fetch-faq}). Gnus will try to get the FAQ from
3723@code{gnus-group-faq-directory}, which is usually a directory on a
3724remote machine. This variable can also be a list of directories. In
3725that case, giving a prefix to this command will allow you to choose
3726between the various sites. @code{ange-ftp} (or @code{efs}) will be used
3727for fetching the file.
3728
3729If fetching from the first site is unsuccessful, Gnus will attempt to go
3730through @code{gnus-group-faq-directory} and try to open them one by one.
3731
3732@item H d
3733@itemx C-c C-d
3734@c @icon{gnus-group-describe-group}
ad0fd6b9
RS
3735@kindex H d @r{(Group)}
3736@kindex C-c C-d @r{(Group)}
6bf7aab6
DL
3737@cindex describing groups
3738@cindex group description
3739@findex gnus-group-describe-group
3740Describe the current group (@code{gnus-group-describe-group}). If given
3741a prefix, force Gnus to re-read the description from the server.
3742
3743@item M-d
ad0fd6b9 3744@kindex M-d @r{(Group)}
6bf7aab6
DL
3745@findex gnus-group-describe-all-groups
3746Describe all groups (@code{gnus-group-describe-all-groups}). If given a
3747prefix, force Gnus to re-read the description file from the server.
3748
3749@item H v
3750@itemx V
ad0fd6b9
RS
3751@kindex V @r{(Group)}
3752@kindex H v @r{(Group)}
6bf7aab6
DL
3753@cindex version
3754@findex gnus-version
3755Display current Gnus version numbers (@code{gnus-version}).
3756
3757@item ?
ad0fd6b9 3758@kindex ? @r{(Group)}
6bf7aab6
DL
3759@findex gnus-group-describe-briefly
3760Give a very short help message (@code{gnus-group-describe-briefly}).
3761
3762@item C-c C-i
ad0fd6b9 3763@kindex C-c C-i @r{(Group)}
6bf7aab6
DL
3764@cindex info
3765@cindex manual
3766@findex gnus-info-find-node
3767Go to the Gnus info node (@code{gnus-info-find-node}).
3768@end table
3769
3770
3771@node Group Timestamp
3772@subsection Group Timestamp
3773@cindex timestamps
3774@cindex group timestamps
3775
3776It can be convenient to let Gnus keep track of when you last read a
3777group. To set the ball rolling, you should add
3778@code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
3779
3780@lisp
3781(add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
3782@end lisp
3783
3784After doing this, each time you enter a group, it'll be recorded.
3785
3786This information can be displayed in various ways---the easiest is to
3787use the @samp{%d} spec in the group line format:
3788
3789@lisp
3790(setq gnus-group-line-format
3791 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
3792@end lisp
3793
3794This will result in lines looking like:
3795
3796@example
3797* 0: mail.ding 19961002T012943
3798 0: custom 19961002T012713
3799@end example
3800
3801As you can see, the date is displayed in compact ISO 8601 format. This
3802may be a bit too much, so to just display the date, you could say
3803something like:
3804
3805@lisp
3806(setq gnus-group-line-format
3807 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
3808@end lisp
3809
3810
3811@node File Commands
3812@subsection File Commands
3813@cindex file commands
3814
3815@table @kbd
3816
3817@item r
ad0fd6b9 3818@kindex r @r{(Group)}
6bf7aab6
DL
3819@findex gnus-group-read-init-file
3820@vindex gnus-init-file
3821@cindex reading init file
3822Re-read the init file (@code{gnus-init-file}, which defaults to
3823@file{~/.gnus}) (@code{gnus-group-read-init-file}).
3824
3825@item s
ad0fd6b9 3826@kindex s @r{(Group)}
6bf7aab6
DL
3827@findex gnus-group-save-newsrc
3828@cindex saving .newsrc
3829Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
3830(@code{gnus-group-save-newsrc}). If given a prefix, force saving the
3831file(s) whether Gnus thinks it is necessary or not.
3832
3833@c @item Z
ad0fd6b9 3834@c @kindex Z @r{(Group)}
6bf7aab6
DL
3835@c @findex gnus-group-clear-dribble
3836@c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
3837
3838@end table
3839
3840
3841@node The Summary Buffer
3842@chapter The Summary Buffer
3843@cindex summary buffer
3844
3845A line for each article is displayed in the summary buffer. You can
3846move around, read articles, post articles and reply to articles.
3847
3848The most common way to a summary buffer is to select a group from the
3849group buffer (@pxref{Selecting a Group}).
3850
3851You can have as many summary buffers open as you wish.
3852
3853@menu
3854* Summary Buffer Format:: Deciding how the summary buffer is to look.
3855* Summary Maneuvering:: Moving around the summary buffer.
3856* Choosing Articles:: Reading articles.
3857* Paging the Article:: Scrolling the current article.
3858* Reply Followup and Post:: Posting articles.
6bf7aab6
DL
3859* Marking Articles:: Marking articles as read, expirable, etc.
3860* Limiting:: You can limit the summary buffer.
3861* Threading:: How threads are made.
3862* Sorting:: How articles and threads are sorted.
3863* Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
3864* Article Caching:: You may store articles in a cache.
3865* Persistent Articles:: Making articles expiry-resistant.
3866* Article Backlog:: Having already read articles hang around.
3867* Saving Articles:: Ways of customizing article saving.
3868* Decoding Articles:: Gnus can treat series of (uu)encoded articles.
3869* Article Treatment:: The article buffer can be mangled at will.
2625a8f7
GM
3870* MIME Commands:: Doing MIMEy things with the articles.
3871* Charsets:: Character set issues.
6bf7aab6
DL
3872* Article Commands:: Doing various things with the article buffer.
3873* Summary Sorting:: Sorting the summary buffer in various ways.
3874* Finding the Parent:: No child support? Get the parent.
3875* Alternative Approaches:: Reading using non-default summaries.
3876* Tree Display:: A more visual display of threads.
3877* Mail Group Commands:: Some commands can only be used in mail groups.
3878* Various Summary Stuff:: What didn't fit anywhere else.
dda5808a
DL
3879* Exiting the Summary Buffer:: Returning to the Group buffer,
3880 or reselecting the current group.
6bf7aab6
DL
3881* Crosspost Handling:: How crossposted articles are dealt with.
3882* Duplicate Suppression:: An alternative when crosspost handling fails.
3883@end menu
3884
3885
3886@node Summary Buffer Format
3887@section Summary Buffer Format
3888@cindex summary buffer format
3889
2625a8f7
GM
3890@iftex
3891@iflatex
3892\gnusfigure{The Summary Buffer}{180}{
3893\put(0,0){\epsfig{figure=tmp/summary.ps,width=7.5cm}}
3894\put(445,0){\makebox(0,0)[br]{\epsfig{figure=tmp/summary-article.ps,width=7.5cm}}}
3895}
3896@end iflatex
3897@end iftex
3898
6bf7aab6
DL
3899@menu
3900* Summary Buffer Lines:: You can specify how summary lines should look.
2625a8f7 3901* To From Newsgroups:: How to not display your own name.
6bf7aab6
DL
3902* Summary Buffer Mode Line:: You can say how the mode line should look.
3903* Summary Highlighting:: Making the summary buffer all pretty and nice.
3904@end menu
3905
3906@findex mail-extract-address-components
3907@findex gnus-extract-address-components
3908@vindex gnus-extract-address-components
3909Gnus will use the value of the @code{gnus-extract-address-components}
3910variable as a function for getting the name and address parts of a
3911@code{From} header. Two pre-defined functions exist:
3912@code{gnus-extract-address-components}, which is the default, quite
3913fast, and too simplistic solution; and
3914@code{mail-extract-address-components}, which works very nicely, but is
3915slower. The default function will return the wrong answer in 5% of the
2625a8f7
GM
3916cases. If this is unacceptable to you, use the other function instead:
3917
3918@lisp
3919(setq gnus-extract-address-components
3920 'mail-extract-address-components)
3921@end lisp
6bf7aab6
DL
3922
3923@vindex gnus-summary-same-subject
3924@code{gnus-summary-same-subject} is a string indicating that the current
3925article has the same subject as the previous. This string will be used
3926with those specs that require it. The default is @code{""}.
3927
3928
3929@node Summary Buffer Lines
3930@subsection Summary Buffer Lines
3931
3932@vindex gnus-summary-line-format
3933You can change the format of the lines in the summary buffer by changing
3934the @code{gnus-summary-line-format} variable. It works along the same
3935lines as a normal @code{format} string, with some extensions
3936(@pxref{Formatting Variables}).
3937
3938The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
3939
3940The following format specification characters are understood:
3941
3942@table @samp
3943@item N
3944Article number.
3945@item S
2625a8f7
GM
3946Subject string. List identifiers stripped,
3947@code{gnus-list-identifies}. @xref{Article Hiding}.
6bf7aab6
DL
3948@item s
3949Subject if the article is the root of the thread or the previous article
3950had a different subject, @code{gnus-summary-same-subject} otherwise.
3951(@code{gnus-summary-same-subject} defaults to @code{""}.)
3952@item F
3953Full @code{From} header.
3954@item n
3955The name (from the @code{From} header).
2625a8f7
GM
3956@item f
3957The name, code @code{To} header or the @code{Newsgroups} header
3958(@pxref{To From Newsgroups}).
6bf7aab6
DL
3959@item a
3960The name (from the @code{From} header). This differs from the @code{n}
3961spec in that it uses the function designated by the
3962@code{gnus-extract-address-components} variable, which is slower, but
3963may be more thorough.
3964@item A
3965The address (from the @code{From} header). This works the same way as
3966the @code{a} spec.
3967@item L
3968Number of lines in the article.
3969@item c
2625a8f7
GM
3970Number of characters in the article. This specifier is not supported in some
3971methods (like nnfolder).
6bf7aab6
DL
3972@item I
3973Indentation based on thread level (@pxref{Customizing Threading}).
3974@item T
3975Nothing if the article is a root and lots of spaces if it isn't (it
3976pushes everything after it off the screen).
3977@item [
3978Opening bracket, which is normally @samp{[}, but can also be @samp{<}
3979for adopted articles (@pxref{Customizing Threading}).
3980@item ]
3981Closing bracket, which is normally @samp{]}, but can also be @samp{>}
3982for adopted articles.
3983@item >
3984One space for each thread level.
3985@item <
3986Twenty minus thread level spaces.
3987@item U
3988Unread.
3989
3990@item R
3991This misleadingly named specifier is the @dfn{secondary mark}. This
3992mark will say whether the article has been replied to, has been cached,
2625a8f7 3993or has been saved.
6bf7aab6
DL
3994
3995@item i
3996Score as a number (@pxref{Scoring}).
3997@item z
3998@vindex gnus-summary-zcore-fuzz
3999Zcore, @samp{+} if above the default level and @samp{-} if below the
4000default level. If the difference between
4001@code{gnus-summary-default-score} and the score is less than
4002@code{gnus-summary-zcore-fuzz}, this spec will not be used.
4003@item V
4004Total thread score.
4005@item x
4006@code{Xref}.
4007@item D
4008@code{Date}.
4009@item d
4010The @code{Date} in @code{DD-MMM} format.
4011@item o
4012The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format.
4013@item M
4014@code{Message-ID}.
4015@item r
4016@code{References}.
4017@item t
4018Number of articles in the current sub-thread. Using this spec will slow
4019down summary buffer generation somewhat.
4020@item e
4021An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
4022article has any children.
4023@item P
4024The line number.
4025@item O
4026Download mark.
4027@item u
4028User defined specifier. The next character in the format string should
4029be a letter. Gnus will call the function
4030@code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
4031following @samp{%u}. The function will be passed the current header as
4032argument. The function should return a string, which will be inserted
4033into the summary just like information from any other summary specifier.
4034@end table
4035
4036The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
4037have to be handled with care. For reasons of efficiency, Gnus will
4038compute what column these characters will end up in, and ``hard-code''
4039that. This means that it is invalid to have these specs after a
4040variable-length spec. Well, you might not be arrested, but your summary
4041buffer will look strange, which is bad enough.
4042
4043The smart choice is to have these specs as far to the left as possible.
4044(Isn't that the case with everything, though? But I digress.)
4045
4046This restriction may disappear in later versions of Gnus.
4047
4048
2625a8f7
GM
4049@node To From Newsgroups
4050@subsection To From Newsgroups
4051@cindex To
4052@cindex Newsgroups
4053
4054In some groups (particularly in archive groups), the @code{From} header
4055isn't very interesting, since all the articles there are written by
4056you. To display the information in the @code{To} or @code{Newsgroups}
4057headers instead, you need to decide three things: What information to
4058gather; where to display it; and when to display it.
4059
4060@enumerate
4061@item
4062@vindex gnus-extra-headers
4063The reading of extra header information is controlled by the
4064@code{gnus-extra-headers}. This is a list of header symbols. For
4065instance:
4066
4067@lisp
4068(setq gnus-extra-headers
4069 '(To Newsgroups X-Newsreader))
4070@end lisp
4071
4072This will result in Gnus trying to obtain these three headers, and
4073storing it in header structures for later easy retrieval.
4074
4075@item
4076@findex gnus-extra-header
4077The value of these extra headers can be accessed via the
4078@code{gnus-extra-header} function. Here's a format line spec that will
4079access the @code{X-Newsreader} header:
4080
4081@example
4082"%~(form (gnus-extra-header 'X-Newsreader))@@"
4083@end example
4084
4085@item
4086@vindex gnus-ignored-from-addresses
4087The @code{gnus-ignored-from-addresses} variable says when the @samp{%f}
4088summary line spec returns the @code{To}, @code{Newsreader} or
4089@code{From} header. If this regexp matches the contents of the
4090@code{From} header, the value of the @code{To} or @code{Newsreader}
4091headers are used instead.
4092
4093@end enumerate
4094
4095@vindex nnmail-extra-headers
4096A related variable is @code{nnmail-extra-headers}, which controls when
4097to include extra headers when generating overview (@sc{nov}) files. If
4098you have old overview files, you should regenerate them after changing
4099this variable.
4100
4101@vindex gnus-summary-line-format
4102You also have to instruct Gnus to display the data by changing the
4103@code{%n} spec to the @code{%f} spec in the
4104@code{gnus-summary-line-format} variable.
4105
4106In summary, you'd typically do something like the following:
4107
4108@lisp
4109(setq gnus-extra-headers
4110 '(To Newsgroups))
4111(setq nnmail-extra-headers gnus-extra-headers)
4112(setq gnus-summary-line-format
4113 "%U%R%z%I%(%[%4L: %-20,20f%]%) %s\n")
4114(setq gnus-ignored-from-addresses
4115 "Your Name Here")
4116@end lisp
4117
4118Now, this is mostly useful for mail groups, where you have control over
4119the @sc{nov} files that are created. However, if you can persuade your
4120nntp admin to add:
4121
4122@example
4123Newsgroups:full
4124@end example
4125
4126to the end of her @file{overview.fmt} file, then you can use that just
4127as you would the extra headers from the mail groups.
4128
4129
6bf7aab6
DL
4130@node Summary Buffer Mode Line
4131@subsection Summary Buffer Mode Line
4132
4133@vindex gnus-summary-mode-line-format
4134You can also change the format of the summary mode bar (@pxref{Mode Line
4135Formatting}). Set @code{gnus-summary-mode-line-format} to whatever you
4136like. The default is @samp{Gnus: %%b [%A] %Z}.
4137
4138Here are the elements you can play with:
4139
4140@table @samp
4141@item G
4142Group name.
4143@item p
4144Unprefixed group name.
4145@item A
4146Current article number.
4147@item z
4148Current article score.
4149@item V
4150Gnus version.
4151@item U
4152Number of unread articles in this group.
4153@item e
4154Number of unread articles in this group that aren't displayed in the
4155summary buffer.
4156@item Z
4157A string with the number of unread and unselected articles represented
4158either as @samp{<%U(+%e) more>} if there are both unread and unselected
4159articles, and just as @samp{<%U more>} if there are just unread articles
4160and no unselected ones.
4161@item g
4162Shortish group name. For instance, @samp{rec.arts.anime} will be
4163shortened to @samp{r.a.anime}.
4164@item S
4165Subject of the current article.
4166@item u
4167User-defined spec (@pxref{User-Defined Specs}).
4168@item s
4169Name of the current score file (@pxref{Scoring}).
4170@item d
4171Number of dormant articles (@pxref{Unread Articles}).
4172@item t
4173Number of ticked articles (@pxref{Unread Articles}).
4174@item r
4175Number of articles that have been marked as read in this session.
4176@item E
4177Number of articles expunged by the score files.
4178@end table
4179
4180
4181@node Summary Highlighting
4182@subsection Summary Highlighting
4183
4184@table @code
4185
4186@item gnus-visual-mark-article-hook
4187@vindex gnus-visual-mark-article-hook
4188This hook is run after selecting an article. It is meant to be used for
4189highlighting the article in some way. It is not run if
4190@code{gnus-visual} is @code{nil}.
4191
4192@item gnus-summary-update-hook
4193@vindex gnus-summary-update-hook
4194This hook is called when a summary line is changed. It is not run if
4195@code{gnus-visual} is @code{nil}.
4196
4197@item gnus-summary-selected-face
4198@vindex gnus-summary-selected-face
4199This is the face (or @dfn{font} as some people call it) used to
4200highlight the current article in the summary buffer.
4201
4202@item gnus-summary-highlight
4203@vindex gnus-summary-highlight
4204Summary lines are highlighted according to this variable, which is a
2625a8f7
GM
4205list where the elements are of the format @code{(@var{form}
4206. @var{face})}. If you would, for instance, like ticked articles to be
4207italic and high-scored articles to be bold, you could set this variable
4208to something like
6bf7aab6
DL
4209@lisp
4210(((eq mark gnus-ticked-mark) . italic)
4211 ((> score default) . bold))
4212@end lisp
2625a8f7
GM
4213As you may have guessed, if @var{form} returns a non-@code{nil} value,
4214@var{face} will be applied to the line.
6bf7aab6
DL
4215@end table
4216
4217
4218@node Summary Maneuvering
4219@section Summary Maneuvering
4220@cindex summary movement
4221
4222All the straight movement commands understand the numeric prefix and
4223behave pretty much as you'd expect.
4224
4225None of these commands select articles.
4226
4227@table @kbd
4228@item G M-n
4229@itemx M-n
ad0fd6b9
RS
4230@kindex M-n @r{(Summary)}
4231@kindex G M-n @r{(Summary)}
6bf7aab6
DL
4232@findex gnus-summary-next-unread-subject
4233Go to the next summary line of an unread article
4234(@code{gnus-summary-next-unread-subject}).
4235
4236@item G M-p
4237@itemx M-p
ad0fd6b9
RS
4238@kindex M-p @r{(Summary)}
4239@kindex G M-p @r{(Summary)}
6bf7aab6
DL
4240@findex gnus-summary-prev-unread-subject
4241Go to the previous summary line of an unread article
4242(@code{gnus-summary-prev-unread-subject}).
4243
6bf7aab6 4244@item G g
ad0fd6b9 4245@kindex G g @r{(Summary)}
6bf7aab6
DL
4246@findex gnus-summary-goto-subject
4247Ask for an article number and then go to the summary line of that article
4248without displaying the article (@code{gnus-summary-goto-subject}).
4249@end table
4250
4251If Gnus asks you to press a key to confirm going to the next group, you
4252can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
4253buffer, searching for the next group to read without actually returning
4254to the group buffer.
4255
4256Variables related to summary movement:
4257
4258@table @code
4259
4260@vindex gnus-auto-select-next
4261@item gnus-auto-select-next
4262If you issue one of the movement commands (like @kbd{n}) and there are
4263no more unread articles after the current one, Gnus will offer to go to
4264the next group. If this variable is @code{t} and the next group is
4265empty, Gnus will exit summary mode and return to the group buffer. If
4266this variable is neither @code{t} nor @code{nil}, Gnus will select the
4267next group, no matter whether it has any unread articles or not. As a
4268special case, if this variable is @code{quietly}, Gnus will select the
4269next group without asking for confirmation. If this variable is
4270@code{almost-quietly}, the same will happen only if you are located on
4271the last article in the group. Finally, if this variable is
4272@code{slightly-quietly}, the @kbd{Z n} command will go to the next group
4273without confirmation. Also @pxref{Group Levels}.
4274
4275@item gnus-auto-select-same
4276@vindex gnus-auto-select-same
4277If non-@code{nil}, all the movement commands will try to go to the next
4278article with the same subject as the current. (@dfn{Same} here might
4279mean @dfn{roughly equal}. See @code{gnus-summary-gather-subject-limit}
4280for details (@pxref{Customizing Threading}).) If there are no more
4281articles with the same subject, go to the first unread article.
4282
4283This variable is not particularly useful if you use a threaded display.
4284
4285@item gnus-summary-check-current
4286@vindex gnus-summary-check-current
4287If non-@code{nil}, all the ``unread'' movement commands will not proceed
4288to the next (or previous) article if the current article is unread.
4289Instead, they will choose the current article.
4290
4291@item gnus-auto-center-summary
4292@vindex gnus-auto-center-summary
4293If non-@code{nil}, Gnus will keep the point in the summary buffer
4294centered at all times. This makes things quite tidy, but if you have a
4295slow network connection, or simply do not like this un-Emacsism, you can
4296set this variable to @code{nil} to get the normal Emacs scrolling
4297action. This will also inhibit horizontal re-centering of the summary
4298buffer, which might make it more inconvenient to read extremely long
4299threads.
4300
2625a8f7
GM
4301This variable can also be a number. In that case, center the window at
4302the given number of lines from the top.
4303
6bf7aab6
DL
4304@end table
4305
4306
4307@node Choosing Articles
4308@section Choosing Articles
4309@cindex selecting articles
4310
4311@menu
4312* Choosing Commands:: Commands for choosing articles.
4313* Choosing Variables:: Variables that influence these commands.
4314@end menu
4315
4316
4317@node Choosing Commands
4318@subsection Choosing Commands
4319
4320None of the following movement commands understand the numeric prefix,
4321and they all select and display an article.
4322
dda5808a
DL
4323If you want to fetch new articles or redisplay the group, see
4324@ref{Exiting the Summary Buffer}.
4325
6bf7aab6 4326@table @kbd
ad0fd6b9
RS
4327@item @key{SPC}
4328@kindex @key{SPC} @r{(Summary)}
6bf7aab6
DL
4329@findex gnus-summary-next-page
4330Select the current article, or, if that one's read already, the next
4331unread article (@code{gnus-summary-next-page}).
4332
4333@item G n
4334@itemx n
ad0fd6b9
RS
4335@kindex n @r{(Summary)}
4336@kindex G n @r{(Summary)}
6bf7aab6
DL
4337@findex gnus-summary-next-unread-article
4338@c @icon{gnus-summary-next-unread}
4339Go to next unread article (@code{gnus-summary-next-unread-article}).
4340
4341@item G p
4342@itemx p
ad0fd6b9 4343@kindex p @r{(Summary)}
6bf7aab6
DL
4344@findex gnus-summary-prev-unread-article
4345@c @icon{gnus-summary-prev-unread}
4346Go to previous unread article (@code{gnus-summary-prev-unread-article}).
4347
4348@item G N
4349@itemx N
ad0fd6b9
RS
4350@kindex N @r{(Summary)}
4351@kindex G N @r{(Summary)}
6bf7aab6
DL
4352@findex gnus-summary-next-article
4353Go to the next article (@code{gnus-summary-next-article}).
4354
4355@item G P
4356@itemx P
ad0fd6b9
RS
4357@kindex P @r{(Summary)}
4358@kindex G P @r{(Summary)}
6bf7aab6
DL
4359@findex gnus-summary-prev-article
4360Go to the previous article (@code{gnus-summary-prev-article}).
4361
4362@item G C-n
ad0fd6b9 4363@kindex G C-n @r{(Summary)}
6bf7aab6
DL
4364@findex gnus-summary-next-same-subject
4365Go to the next article with the same subject
4366(@code{gnus-summary-next-same-subject}).
4367
4368@item G C-p
ad0fd6b9 4369@kindex G C-p @r{(Summary)}
6bf7aab6
DL
4370@findex gnus-summary-prev-same-subject
4371Go to the previous article with the same subject
4372(@code{gnus-summary-prev-same-subject}).
4373
4374@item G f
4375@itemx .
ad0fd6b9
RS
4376@kindex G f @r{(Summary)}
4377@kindex . @r{(Summary)}
6bf7aab6
DL
4378@findex gnus-summary-first-unread-article
4379Go to the first unread article
4380(@code{gnus-summary-first-unread-article}).
4381
4382@item G b
4383@itemx ,
ad0fd6b9
RS
4384@kindex G b @r{(Summary)}
4385@kindex , @r{(Summary)}
6bf7aab6
DL
4386@findex gnus-summary-best-unread-article
4387Go to the article with the highest score
4388(@code{gnus-summary-best-unread-article}).
4389
4390@item G l
4391@itemx l
ad0fd6b9
RS
4392@kindex l @r{(Summary)}
4393@kindex G l @r{(Summary)}
6bf7aab6
DL
4394@findex gnus-summary-goto-last-article
4395Go to the previous article read (@code{gnus-summary-goto-last-article}).
4396
4397@item G o
ad0fd6b9 4398@kindex G o @r{(Summary)}
6bf7aab6
DL
4399@findex gnus-summary-pop-article
4400@cindex history
4401@cindex article history
4402Pop an article off the summary history and go to this article
4403(@code{gnus-summary-pop-article}). This command differs from the
4404command above in that you can pop as many previous articles off the
4405history as you like, while @kbd{l} toggles the two last read articles.
4406For a somewhat related issue (if you use these commands a lot),
4407@pxref{Article Backlog}.
33a48912
DL
4408
4409@item G j
4410@itemx j
4411@kindex j @r{(Summary)}
4412@kindex G j @r{(Summary)}
4413@findex gnus-summary-goto-article
4414Ask for an article number or @code{Message-ID}, and then go to that
4415article (@code{gnus-summary-goto-article}).
6bf7aab6
DL
4416@end table
4417
4418
4419@node Choosing Variables
4420@subsection Choosing Variables
4421
4422Some variables relevant for moving and selecting articles:
4423
4424@table @code
4425@item gnus-auto-extend-newsgroup
4426@vindex gnus-auto-extend-newsgroup
4427All the movement commands will try to go to the previous (or next)
4428article, even if that article isn't displayed in the Summary buffer if
4429this variable is non-@code{nil}. Gnus will then fetch the article from
4430the server and display it in the article buffer.
4431
4432@item gnus-select-article-hook
4433@vindex gnus-select-article-hook
4434This hook is called whenever an article is selected. By default it
4435exposes any threads hidden under the selected article.
4436
4437@item gnus-mark-article-hook
4438@vindex gnus-mark-article-hook
4439@findex gnus-summary-mark-unread-as-read
4440@findex gnus-summary-mark-read-and-unread-as-read
4441@findex gnus-unread-mark
4442This hook is called whenever an article is selected. It is intended to
4443be used for marking articles as read. The default value is
4444@code{gnus-summary-mark-read-and-unread-as-read}, and will change the
4445mark of almost any article you read to @code{gnus-unread-mark}. The
4446only articles not affected by this function are ticked, dormant, and
4447expirable articles. If you'd instead like to just have unread articles
4448marked as read, you can use @code{gnus-summary-mark-unread-as-read}
4449instead. It will leave marks like @code{gnus-low-score-mark},
4450@code{gnus-del-mark} (and so on) alone.
4451
4452@end table
4453
4454
4455@node Paging the Article
4456@section Scrolling the Article
4457@cindex article scrolling
4458
4459@table @kbd
4460
ad0fd6b9
RS
4461@item @key{SPC}
4462@kindex @key{SPC} @r{(Summary)}
6bf7aab6 4463@findex gnus-summary-next-page
ad0fd6b9 4464Pressing @key{SPC} will scroll the current article forward one page,
6bf7aab6
DL
4465or, if you have come to the end of the current article, will choose the
4466next article (@code{gnus-summary-next-page}).
4467
ad0fd6b9
RS
4468@item @key{DEL}
4469@kindex @key{DEL} @r{(Summary)}
6bf7aab6
DL
4470@findex gnus-summary-prev-page
4471Scroll the current article back one page (@code{gnus-summary-prev-page}).
4472
ad0fd6b9
RS
4473@item @key{RET}
4474@kindex @key{RET} @r{(Summary)}
6bf7aab6
DL
4475@findex gnus-summary-scroll-up
4476Scroll the current article one line forward
4477(@code{gnus-summary-scroll-up}).
4478
ad0fd6b9
RS
4479@item M-@key{RET}
4480@kindex M-@key{RET} @r{(Summary)}
6bf7aab6
DL
4481@findex gnus-summary-scroll-down
4482Scroll the current article one line backward
4483(@code{gnus-summary-scroll-down}).
4484
4485@item A g
4486@itemx g
ad0fd6b9
RS
4487@kindex A g @r{(Summary)}
4488@kindex g @r{(Summary)}
6bf7aab6 4489@findex gnus-summary-show-article
2625a8f7 4490@vindex gnus-summary-show-article-charset-alist
6bf7aab6
DL
4491(Re)fetch the current article (@code{gnus-summary-show-article}). If
4492given a prefix, fetch the current article, but don't run any of the
4493article treatment functions. This will give you a ``raw'' article, just
4494the way it came from the server.
4495
2625a8f7 4496If given a numerical prefix, you can do semi-manual charset stuff.
ad0fd6b9 4497@kbd{C-u 0 g cn-gb-2312 @key{RET}} will decode the message as if it were
2625a8f7
GM
4498encoded in the @code{cn-gb-2312} charset. If you have
4499
4500@lisp
177c0ea7
JB
4501(setq gnus-summary-show-article-charset-alist
4502 '((1 . cn-gb-2312)
2625a8f7
GM
4503 (2 . big5)))
4504@end lisp
4505
4506then you can say @kbd{C-u 1 g} to get the same effect.
4507
6bf7aab6
DL
4508@item A <
4509@itemx <
ad0fd6b9
RS
4510@kindex < @r{(Summary)}
4511@kindex A < @r{(Summary)}
6bf7aab6
DL
4512@findex gnus-summary-beginning-of-article
4513Scroll to the beginning of the article
4514(@code{gnus-summary-beginning-of-article}).
4515
4516@item A >
4517@itemx >
ad0fd6b9
RS
4518@kindex > @r{(Summary)}
4519@kindex A > @r{(Summary)}
6bf7aab6
DL
4520@findex gnus-summary-end-of-article
4521Scroll to the end of the article (@code{gnus-summary-end-of-article}).
4522
4523@item A s
4524@itemx s
ad0fd6b9
RS
4525@kindex A s @r{(Summary)}
4526@kindex s @r{(Summary)}
6bf7aab6
DL
4527@findex gnus-summary-isearch-article
4528Perform an isearch in the article buffer
4529(@code{gnus-summary-isearch-article}).
4530
4531@item h
ad0fd6b9 4532@kindex h @r{(Summary)}
6bf7aab6
DL
4533@findex gnus-summary-select-article-buffer
4534Select the article buffer (@code{gnus-summary-select-article-buffer}).
4535
4536@end table
4537
4538
4539@node Reply Followup and Post
4540@section Reply, Followup and Post
4541
4542@menu
2625a8f7
GM
4543* Summary Mail Commands:: Sending mail.
4544* Summary Post Commands:: Sending news.
4545* Summary Message Commands:: Other Message-related commands.
4546* Canceling and Superseding:: ``Whoops, I shouldn't have called him that.''
6bf7aab6
DL
4547@end menu
4548
4549
4550@node Summary Mail Commands
4551@subsection Summary Mail Commands
4552@cindex mail
4553@cindex composing mail
4554
4555Commands for composing a mail message:
4556
4557@table @kbd
4558
4559@item S r
4560@itemx r
ad0fd6b9
RS
4561@kindex S r @r{(Summary)}
4562@kindex r @r{(Summary)}
6bf7aab6
DL
4563@findex gnus-summary-reply
4564@c @icon{gnus-summary-mail-reply}
4565@c @icon{gnus-summary-reply}
4566Mail a reply to the author of the current article
4567(@code{gnus-summary-reply}).
4568
4569@item S R
4570@itemx R
ad0fd6b9
RS
4571@kindex R @r{(Summary)}
4572@kindex S R @r{(Summary)}
6bf7aab6
DL
4573@findex gnus-summary-reply-with-original
4574@c @icon{gnus-summary-reply-with-original}
4575Mail a reply to the author of the current article and include the
4576original message (@code{gnus-summary-reply-with-original}). This
4577command uses the process/prefix convention.
4578
4579@item S w
ad0fd6b9 4580@kindex S w @r{(Summary)}
6bf7aab6
DL
4581@findex gnus-summary-wide-reply
4582Mail a wide reply to the author of the current article
4583(@code{gnus-summary-wide-reply}). A @dfn{wide reply} is a reply that
4584goes out to all people listed in the @code{To}, @code{From} (or
4585@code{Reply-to}) and @code{Cc} headers.
4586
4587@item S W
ad0fd6b9 4588@kindex S W @r{(Summary)}
6bf7aab6
DL
4589@findex gnus-summary-wide-reply-with-original
4590Mail a wide reply to the current article and include the original
2625a8f7 4591message (@code{gnus-summary-wide-reply-with-original}). This command uses
6bf7aab6
DL
4592the process/prefix convention.
4593
4594@item S o m
2625a8f7 4595@itemx C-c C-f
ad0fd6b9
RS
4596@kindex S o m @r{(Summary)}
4597@kindex C-c C-f @r{(Summary)}
6bf7aab6
DL
4598@findex gnus-summary-mail-forward
4599@c @icon{gnus-summary-mail-forward}
4600Forward the current article to some other person
2625a8f7
GM
4601(@code{gnus-summary-mail-forward}). If no prefix is given, the message
4602is forwarded according to the value of (@code{message-forward-as-mime})
4603and (@code{message-forward-show-mml}); if the prefix is 1, decode the
f5d4cd5e 4604message and forward directly inline; if the prefix is 2, forward message
2625a8f7 4605as an rfc822 MIME section; if the prefix is 3, decode message and
f5d4cd5e 4606forward as an rfc822 MIME section; if the prefix is 4, forward message
2625a8f7
GM
4607directly inline; otherwise, the message is forwarded as no prefix given
4608but use the flipped value of (@code{message-forward-as-mime}). By
4609default, the message is decoded and forwarded as an rfc822 MIME section.
6bf7aab6
DL
4610
4611@item S m
4612@itemx m
ad0fd6b9
RS
4613@kindex m @r{(Summary)}
4614@kindex S m @r{(Summary)}
6bf7aab6
DL
4615@findex gnus-summary-mail-other-window
4616@c @icon{gnus-summary-mail-originate}
4617Send a mail to some other person
4618(@code{gnus-summary-mail-other-window}).
4619
4620@item S D b
ad0fd6b9 4621@kindex S D b @r{(Summary)}
6bf7aab6
DL
4622@findex gnus-summary-resend-bounced-mail
4623@cindex bouncing mail
4624If you have sent a mail, but the mail was bounced back to you for some
4625reason (wrong address, transient failure), you can use this command to
4626resend that bounced mail (@code{gnus-summary-resend-bounced-mail}). You
4627will be popped into a mail buffer where you can edit the headers before
4628sending the mail off again. If you give a prefix to this command, and
4629the bounced mail is a reply to some other mail, Gnus will try to fetch
4630that mail and display it for easy perusal of its headers. This might
4631very well fail, though.
4632
4633@item S D r
ad0fd6b9 4634@kindex S D r @r{(Summary)}
6bf7aab6
DL
4635@findex gnus-summary-resend-message
4636Not to be confused with the previous command,
4637@code{gnus-summary-resend-message} will prompt you for an address to
4638send the current message off to, and then send it to that place. The
4639headers of the message won't be altered---but lots of headers that say
4640@code{Resent-To}, @code{Resent-From} and so on will be added. This
4641means that you actually send a mail to someone that has a @code{To}
4642header that (probably) points to yourself. This will confuse people.
4643So, natcherly you'll only do that if you're really eVIl.
4644
4645This command is mainly used if you have several accounts and want to
4646ship a mail to a different account of yours. (If you're both
4647@code{root} and @code{postmaster} and get a mail for @code{postmaster}
4648to the @code{root} account, you may want to resend it to
4649