Update contrib.
[gnus] / texi / gnus.texi
1 \input texinfo
2
3 @setfilename gnus
4 @settitle Gnus Manual
5 @synindex fn cp
6 @synindex vr cp
7 @synindex pg cp
8 @dircategory Emacs
9 @direntry
10 * Gnus: (gnus).         The newsreader Gnus.
11 @end direntry
12 @iftex
13 @finalout
14 @end iftex
15 @setchapternewpage odd
16
17 @iftex
18 @iflatex
19 \documentclass[twoside,a4paper,openright,11pt]{book}
20 \usepackage[latin1]{inputenc}
21 \usepackage{pagestyle}
22 \usepackage{epsfig}
23 \usepackage{pixidx}
24 \input{gnusconfig.tex}
25
26 \ifx\pdfoutput\undefined
27 \else
28 \usepackage[pdftex,bookmarks,colorlinks=true]{hyperref}
29 \usepackage{thumbpdf}
30 \pdfcompresslevel=9
31 \fi
32
33 \makeindex
34 \begin{document}
35
36 \newcommand{\gnusversionname}{Oort Gnus v0.17}
37 \newcommand{\gnuschaptername}{}
38 \newcommand{\gnussectionname}{}
39
40 \newcommand{\gnusbackslash}{/}
41
42 \newcommand{\gnusref}[1]{``#1'' on page \pageref{#1}}
43 \ifx\pdfoutput\undefined
44 \newcommand{\gnusuref}[1]{\gnustt{#1}}
45 \else
46 \newcommand{\gnusuref}[1]{\href{#1}{\gnustt{#1}}}
47 \fi
48 \newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}}
49 \newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}}
50
51 \newcommand{\gnuskindex}[1]{\index{#1}}
52 \newcommand{\gnusindex}[1]{\index{#1}}
53
54 \newcommand{\gnustt}[1]{{\gnusselectttfont{}#1}}
55 \newcommand{\gnuscode}[1]{\gnustt{#1}}
56 \newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\gnusselectttfont{}#1}''}
57 \newcommand{\gnuslisp}[1]{\gnustt{#1}}
58 \newcommand{\gnuskbd}[1]{`\gnustt{#1}'}
59 \newcommand{\gnuskey}[1]{`\gnustt{#1}'}
60 \newcommand{\gnusfile}[1]{`\gnustt{#1}'}
61 \newcommand{\gnusdfn}[1]{\textit{#1}}
62 \newcommand{\gnusi}[1]{\textit{#1}}
63 \newcommand{\gnusstrong}[1]{\textbf{#1}}
64 \newcommand{\gnusemph}[1]{\textit{#1}}
65 \newcommand{\gnusvar}[1]{{\fontsize{10pt}{10}\selectfont\textsl{\textsf{#1}}}}
66 \newcommand{\gnussc}[1]{\textsc{#1}}
67 \newcommand{\gnustitle}[1]{{\huge\textbf{#1}}}
68 \newcommand{\gnusversion}[1]{{\small\textit{#1}}}
69 \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}}
70 \newcommand{\gnusresult}[1]{\gnustt{=> #1}}
71 \newcommand{\gnusacronym}[1]{\textit{#1}}
72 \newcommand{\gnusemail}[1]{\textit{#1}}
73
74 \newcommand{\gnusbullet}{{${\bullet}$}}
75 \newcommand{\gnusdollar}{\$}
76 \newcommand{\gnusampersand}{\&}
77 \newcommand{\gnuspercent}{\%}
78 \newcommand{\gnushash}{\#}
79 \newcommand{\gnushat}{\symbol{"5E}}
80 \newcommand{\gnusunderline}{\symbol{"5F}}
81 \newcommand{\gnusnot}{$\neg$}
82 \newcommand{\gnustilde}{\symbol{"7E}}
83 \newcommand{\gnusless}{{$<$}}
84 \newcommand{\gnusgreater}{{$>$}}
85 \newcommand{\gnusbraceleft}{{$>$}}
86 \newcommand{\gnusbraceright}{{$>$}}
87
88 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=ps/gnus-head,height=1cm}}}
89 \newcommand{\gnusinteresting}{
90 \marginpar[\mbox{}\hfill\gnushead]{\gnushead}
91 }
92
93 \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi}
94
95 \newcommand{\gnuspagechapter}[1]{
96 {\mbox{}}
97 }
98
99 \newdimen{\gnusdimen}
100 \gnusdimen 0pt
101
102 \newcommand{\gnuschapter}[2]{
103 \gnuscleardoublepage
104 \ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi
105 \chapter{#2}
106 \renewcommand{\gnussectionname}{}
107 \renewcommand{\gnuschaptername}{#2}
108 \thispagestyle{empty}
109 \hspace*{-2cm}
110 \begin{picture}(500,500)(0,0)
111 \put(480,350){\makebox(0,0)[tr]{#1}}
112 \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}}
113 \end{picture}
114 \clearpage
115 }
116
117 \newcommand{\gnusfigure}[3]{
118 \begin{figure}
119 \mbox{}\ifodd\count0\hspace*{-0.8cm}\else\hspace*{-3cm}\fi\begin{picture}(440,#2)
120 #3
121 \end{picture}
122 \caption{#1}
123 \end{figure}
124 }
125
126 \newcommand{\gnusicon}[1]{
127 \marginpar[\mbox{}\hfill\raisebox{-1.5cm}{\epsfig{figure=ps/#1-up,height=1.5cm}}]{\raisebox{-1cm}{\epsfig{figure=ps/#1-up,height=1cm}}}
128 }
129
130 \newcommand{\gnuspicon}[1]{
131 \margindex{\epsfig{figure=#1,width=2cm}}
132 }
133
134 \newcommand{\gnusxface}[2]{
135 \margindex{\epsfig{figure=#1,width=1cm}\epsfig{figure=#2,width=1cm}}
136 }
137
138 \newcommand{\gnussmiley}[2]{
139 \margindex{\makebox[2cm]{\hfill\epsfig{figure=#1,width=0.5cm}\hfill\epsfig{figure=#2,width=0.5cm}\hfill}}
140 }
141
142 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
143
144 \newcommand{\gnussection}[1]{
145 \renewcommand{\gnussectionname}{#1}
146 \section{#1}
147 }
148
149 \newenvironment{codelist}%
150 {\begin{list}{}{
151 }
152 }{\end{list}}
153
154 \newenvironment{kbdlist}%
155 {\begin{list}{}{
156 \labelwidth=0cm
157 }
158 }{\end{list}}
159
160 \newenvironment{dfnlist}%
161 {\begin{list}{}{
162 }
163 }{\end{list}}
164
165 \newenvironment{stronglist}%
166 {\begin{list}{}{
167 }
168 }{\end{list}}
169
170 \newenvironment{samplist}%
171 {\begin{list}{}{
172 }
173 }{\end{list}}
174
175 \newenvironment{varlist}%
176 {\begin{list}{}{
177 }
178 }{\end{list}}
179
180 \newenvironment{emphlist}%
181 {\begin{list}{}{
182 }
183 }{\end{list}}
184
185 \newlength\gnusheadtextwidth
186 \setlength{\gnusheadtextwidth}{\headtextwidth}
187 \addtolength{\gnusheadtextwidth}{1cm}
188
189 \newpagestyle{gnuspreamble}%
190 {
191 {
192 \ifodd\count0
193 {
194 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}}
195 }
196 \else
197 {
198 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}}
199 }
200 }
201 \fi
202 }
203 }
204 {
205 \ifodd\count0
206 \mbox{} \hfill
207 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
208 \else
209 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
210 \hfill \mbox{}
211 \fi
212 }
213
214 \newpagestyle{gnusindex}%
215 {
216 {
217 \ifodd\count0
218 {
219 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}}
220 }
221 \else
222 {
223 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
224 }
225 \fi
226 }
227 }
228 {
229 \ifodd\count0
230 \mbox{} \hfill
231 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
232 \else
233 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
234 \hfill \mbox{}
235 \fi
236 }
237
238 \newpagestyle{gnus}%
239 {
240 {
241 \ifodd\count0
242 {
243 \makebox[12cm]{\hspace*{3.1cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}}
244 }
245 \else
246 {
247 \makebox[12cm]{\hspace*{-2.95cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}}
248 }
249 \fi
250 }
251 }
252 {
253 \ifodd\count0
254 \mbox{} \hfill
255 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
256 \else
257 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
258 \hfill \mbox{}
259 \fi
260 }
261
262 \pagenumbering{roman}
263 \pagestyle{gnuspreamble}
264
265 @end iflatex
266 @end iftex
267
268 @iftex
269 @iflatex
270 \begin{titlepage}
271 {
272
273 %\addtolength{\oddsidemargin}{-5cm}
274 %\addtolength{\evensidemargin}{-5cm}
275 \parindent=0cm
276 \addtolength{\textheight}{2cm}
277
278 \gnustitle{\gnustitlename}\hfill\gnusversion{\gnusversionname}\\
279 \rule{15cm}{1mm}\\
280 \vfill
281 \hspace*{0cm}\epsfig{figure=ps/gnus-big-logo,height=15cm}
282 \vfill
283 \rule{15cm}{1mm}\\
284 \gnusauthor{by Lars Magne Ingebrigtsen}
285 \newpage
286 }
287
288 \mbox{}
289 \vfill
290
291 \thispagestyle{empty}
292
293 Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001,
294 2002, 2003
295 Free Software Foundation, Inc.
296
297
298 Permission is granted to copy, distribute and/or modify this document
299 under the terms of the GNU Free Documentation License, Version 1.1 or
300 any later version published by the Free Software Foundation; with no
301 Invariant Sections, with the Front-Cover texts being ``A GNU
302 Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
303 license is included in the section entitled ``GNU Free Documentation
304 License'' in the Emacs manual.
305
306 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
307 this GNU Manual, like GNU software.  Copies published by the Free
308 Software Foundation raise funds for GNU development.''
309
310 This document is part of a collection distributed under the GNU Free
311 Documentation License.  If you want to distribute this document
312 separately from the collection, you can do so by adding a copy of the
313 license to the document, as described in section 6 of the license.
314 \newpage
315 \end{titlepage}
316 @end iflatex
317 @end iftex
318
319 @ifnottex
320
321 This file documents Gnus, the GNU Emacs newsreader.
322
323 Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
324         Free Software Foundation, Inc.
325
326 Permission is granted to copy, distribute and/or modify this document
327 under the terms of the GNU Free Documentation License, Version 1.1 or
328 any later version published by the Free Software Foundation; with the
329 Invariant Sections being none, with the Front-Cover texts being ``A GNU
330 Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
331 license is included in the section entitled ``GNU Free Documentation
332 License'' in the Emacs manual.
333
334 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
335 this GNU Manual, like GNU software.  Copies published by the Free
336 Software Foundation raise funds for GNU development.''
337
338 This document is part of a collection distributed under the GNU Free
339 Documentation License.  If you want to distribute this document
340 separately from the collection, you can do so by adding a copy of the
341 license to the document, as described in section 6 of the license.
342 @end ifnottex
343
344 @tex
345
346 @titlepage
347 @title Gnus Manual
348
349 @author by Lars Magne Ingebrigtsen
350 @page
351
352 @vskip 0pt plus 1filll
353 Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001,
354 2002, 2003
355         Free Software Foundation, Inc.
356
357 Permission is granted to copy, distribute and/or modify this document
358 under the terms of the GNU Free Documentation License, Version 1.1 or
359 any later version published by the Free Software Foundation; with no
360 Invariant Sections, with the Front-Cover texts being ``A GNU
361 Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
362 license is included in the section entitled ``GNU Free Documentation
363 License'' in the Emacs manual.
364
365 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
366 this GNU Manual, like GNU software.  Copies published by the Free
367 Software Foundation raise funds for GNU development.''
368
369 This document is part of a collection distributed under the GNU Free
370 Documentation License.  If you want to distribute this document
371 separately from the collection, you can do so by adding a copy of the
372 license to the document, as described in section 6 of the license.
373
374 @end titlepage
375 @page
376
377 @end tex
378
379
380 @node Top
381 @top The Gnus Newsreader
382
383 @ifinfo
384
385 You can read news (and mail) from within Emacs by using Gnus.  The news
386 can be gotten by any nefarious means you can think of---@sc{nntp}, local
387 spool or your mbox file.  All at the same time, if you want to push your
388 luck.
389
390 This manual corresponds to Oort Gnus v0.17.
391
392 @end ifinfo
393
394 @iftex
395
396 @iflatex
397 \tableofcontents
398 \gnuscleardoublepage
399 @end iflatex
400
401 Gnus is the advanced, self-documenting, customizable, extensible
402 unreal-time newsreader for GNU Emacs.
403
404 Oops.  That sounds oddly familiar, so let's start over again to avoid
405 being accused of plagiarism:
406
407 Gnus is a message-reading laboratory.  It will let you look at just
408 about anything as if it were a newsgroup.  You can read mail with it,
409 you can browse directories with it, you can @code{ftp} with it---you
410 can even read news with it!
411
412 Gnus tries to empower people who read news the same way Emacs empowers
413 people who edit text.  Gnus sets no limits to what the user should be
414 allowed to do.  Users are encouraged to extend Gnus to make it behave
415 like they want it to behave.  A program should not control people;
416 people should be empowered to do what they want by using (or abusing)
417 the program.
418
419 @end iftex
420
421 @menu
422 * Starting Up::                 Finding news can be a pain.
423 * Group Buffer::                Selecting, subscribing and killing groups.
424 * Summary Buffer::              Reading, saving and posting articles.
425 * Article Buffer::              Displaying and handling articles.
426 * Composing Messages::          Information on sending mail and news.
427 * Select Methods::              Gnus reads all messages from various select methods.
428 * Scoring::                     Assigning values to articles.
429 * Various::                     General purpose settings.
430 * The End::                     Farewell and goodbye.
431 * Appendices::                  Terminology, Emacs intro, FAQ, History, Internals.
432 * Index::                       Variable, function and concept index.
433 * Key Index::                   Key Index.
434
435 Other related manuals
436
437 * Message:(message).            Composing messages.
438 * Emacs-MIME:(emacs-mime).      Composing messages; MIME-specific parts.
439 * Sieve:(sieve).                Managing Sieve scripts in Emacs.
440 * PGG:(pgg).                    PGP/MIME with Gnus.
441
442 @detailmenu
443  --- The Detailed Node Listing ---
444
445 Starting Gnus
446
447 * Finding the News::            Choosing a method for getting news.
448 * The First Time::              What does Gnus do the first time you start it?
449 * The Server is Down::          How can I read my mail then?
450 * Slave Gnusae::                You can have more than one Gnus active at a time.
451 * Fetching a Group::            Starting Gnus just to read a group.
452 * New Groups::                  What is Gnus supposed to do with new groups?
453 * Changing Servers::            You may want to move from one server to another.
454 * Startup Files::               Those pesky startup files---@file{.newsrc}.
455 * Auto Save::                   Recovering from a crash.
456 * The Active File::             Reading the active file over a slow line Takes Time.
457 * Startup Variables::           Other variables you might change.
458
459 New Groups
460
461 * Checking New Groups::         Determining what groups are new.
462 * Subscription Methods::        What Gnus should do with new groups.
463 * Filtering New Groups::        Making Gnus ignore certain new groups.
464
465 Group Buffer
466
467 * Group Buffer Format::         Information listed and how you can change it.
468 * Group Maneuvering::           Commands for moving in the group buffer.
469 * Selecting a Group::           Actually reading news.
470 * Subscription Commands::       Unsubscribing, killing, subscribing.
471 * Group Data::                  Changing the info for a group.
472 * Group Levels::                Levels? What are those, then?
473 * Group Score::                 A mechanism for finding out what groups you like.
474 * Marking Groups::              You can mark groups for later processing.
475 * Foreign Groups::              Creating and editing groups.
476 * Group Parameters::            Each group may have different parameters set.
477 * Listing Groups::              Gnus can list various subsets of the groups.
478 * Sorting Groups::              Re-arrange the group order.
479 * Group Maintenance::           Maintaining a tidy @file{.newsrc} file.
480 * Browse Foreign Server::       You can browse a server.  See what it has to offer.
481 * Exiting Gnus::                Stop reading news and get some work done.
482 * Group Topics::                A folding group mode divided into topics.
483 * Misc Group Stuff::            Other stuff that you can to do.
484
485 Group Buffer Format
486
487 * Group Line Specification::    Deciding how the group buffer is to look.
488 * Group Modeline Specification::  The group buffer modeline.
489 * Group Highlighting::          Having nice colors in the group buffer.
490
491 Group Topics
492
493 * Topic Commands::              Interactive E-Z commands.
494 * Topic Variables::             How to customize the topics the Lisp Way.
495 * Topic Sorting::               Sorting each topic individually.
496 * Topic Topology::              A map of the world.
497 * Topic Parameters::            Parameters that apply to all groups in a topic.
498
499 Misc Group Stuff
500
501 * Scanning New Messages::       Asking Gnus to see whether new messages have arrived.
502 * Group Information::           Information and help on groups and Gnus.
503 * Group Timestamp::             Making Gnus keep track of when you last read a group.
504 * File Commands::               Reading and writing the Gnus files.
505 * Sieve Commands::              Managing Sieve scripts.
506
507 Summary Buffer
508
509 * Summary Buffer Format::       Deciding how the summary buffer is to look.
510 * Summary Maneuvering::         Moving around the summary buffer.
511 * Choosing Articles::           Reading articles.
512 * Paging the Article::          Scrolling the current article.
513 * Reply Followup and Post::     Posting articles.
514 * Delayed Articles::            Send articles at a later time.
515 * Marking Articles::            Marking articles as read, expirable, etc.
516 * Limiting::                    You can limit the summary buffer.
517 * Threading::                   How threads are made.
518 * Sorting the Summary Buffer::  How articles and threads are sorted.
519 * Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
520 * Article Caching::             You may store articles in a cache.
521 * Persistent Articles::         Making articles expiry-resistant.
522 * Article Backlog::             Having already read articles hang around.
523 * Saving Articles::             Ways of customizing article saving.
524 * Decoding Articles::           Gnus can treat series of (uu)encoded articles.
525 * Article Treatment::           The article buffer can be mangled at will.
526 * MIME Commands::               Doing MIMEy things with the articles.
527 * Charsets::                    Character set issues.
528 * Article Commands::            Doing various things with the article buffer.
529 * Summary Sorting::             Sorting the summary buffer in various ways.
530 * Finding the Parent::          No child support? Get the parent.
531 * Alternative Approaches::      Reading using non-default summaries.
532 * Tree Display::                A more visual display of threads.
533 * Mail Group Commands::         Some commands can only be used in mail groups.
534 * Various Summary Stuff::       What didn't fit anywhere else.
535 * Exiting the Summary Buffer::  Returning to the Group buffer,
536                                 or reselecting the current group.
537 * Crosspost Handling::          How crossposted articles are dealt with.
538 * Duplicate Suppression::       An alternative when crosspost handling fails.
539 * Security::                    Decrypt and Verify.
540 * Mailing List::                Mailing list minor mode.
541
542 Summary Buffer Format
543
544 * Summary Buffer Lines::        You can specify how summary lines should look.
545 * To From Newsgroups::          How to not display your own name.
546 * Summary Buffer Mode Line::    You can say how the mode line should look.
547 * Summary Highlighting::        Making the summary buffer all pretty and nice.
548
549 Choosing Articles
550
551 * Choosing Commands::           Commands for choosing articles.
552 * Choosing Variables::          Variables that influence these commands.
553
554 Reply, Followup and Post
555
556 * Summary Mail Commands::       Sending mail.
557 * Summary Post Commands::       Sending news.
558 * Summary Message Commands::    Other Message-related commands.
559 * Canceling and Superseding::   
560
561 Marking Articles
562
563 * Unread Articles::             Marks for unread articles.
564 * Read Articles::               Marks for read articles.
565 * Other Marks::                 Marks that do not affect readedness.
566 * Setting Marks::               
567 * Generic Marking Commands::    
568 * Setting Process Marks::       
569
570 Marking Articles
571
572 * Setting Marks::             How to set and remove marks.
573 * Generic Marking Commands::  How to customize the marking.
574 * Setting Process Marks::     How to mark articles for later processing.
575
576 Threading
577
578 * Customizing Threading::       Variables you can change to affect the threading.
579 * Thread Commands::             Thread based commands in the summary buffer.
580
581 Customizing Threading
582
583 * Loose Threads::               How Gnus gathers loose threads into bigger threads.
584 * Filling In Threads::          Making the threads displayed look fuller.
585 * More Threading::              Even more variables for fiddling with threads.
586 * Low-Level Threading::         You thought it was over@dots{} but you were wrong!
587
588 Decoding Articles
589
590 * Uuencoded Articles::          Uudecode articles.
591 * Shell Archives::              Unshar articles.
592 * PostScript Files::            Split PostScript.
593 * Other Files::                 Plain save and binhex.
594 * Decoding Variables::          Variables for a happy decoding.
595 * Viewing Files::               You want to look at the result of the decoding?
596
597 Decoding Variables
598
599 * Rule Variables::              Variables that say how a file is to be viewed.
600 * Other Decode Variables::      Other decode variables.
601 * Uuencoding and Posting::      Variables for customizing uuencoding.
602
603 Article Treatment
604
605 * Article Highlighting::        You want to make the article look like fruit salad.
606 * Article Fontisizing::         Making emphasized text look nice.
607 * Article Hiding::              You also want to make certain info go away.
608 * Article Washing::             Lots of way-neat functions to make life better.
609 * Article Header::              Doing various header transformations.
610 * Article Buttons::             Click on URLs, Message-IDs, addresses and the like.
611 * Article Button Levels::       Controlling appearance of buttons.
612 * Article Date::                Grumble, UT!
613 * Article Display::             Display various stuff---X-Face, Picons, Smileys
614 * Article Signature::           What is a signature?
615 * Article Miscellania::         Various other stuff.
616
617 Alternative Approaches
618
619 * Pick and Read::               First mark articles and then read them.
620 * Binary Groups::               Auto-decode all articles.
621
622 Various Summary Stuff
623
624 * Summary Group Information::   Information oriented commands.
625 * Searching for Articles::      Multiple article commands.
626 * Summary Generation Commands::  
627 * Really Various Summary Commands::  Those pesky non-conformant commands.
628
629 Article Buffer
630
631 * Hiding Headers::              Deciding what headers should be displayed.
632 * Using MIME::                  Pushing articles through @sc{mime} before reading them.
633 * Customizing Articles::        Tailoring the look of the articles.
634 * Article Keymap::              Keystrokes available in the article buffer.
635 * Misc Article::                Other stuff.
636
637 Composing Messages
638
639 * Mail::                        Mailing and replying.
640 * Posting Server::              What server should you post and mail via?
641 * Mail and Post::               Mailing and posting at the same time.
642 * Archived Messages::           Where Gnus stores the messages you've sent.
643 * Posting Styles::              An easier way to specify who you are.
644 * Drafts::                      Postponing messages and rejected messages.
645 * Rejected Articles::           What happens if the server doesn't like your article?
646 * Signing and encrypting::      How to compose secure messages.
647
648 Select Methods
649
650 * Server Buffer::               Making and editing virtual servers.
651 * Getting News::                Reading USENET news with Gnus.
652 * Getting Mail::                Reading your personal mail with Gnus.
653 * Browsing the Web::            Getting messages from a plethora of Web sources.
654 * IMAP::                        Using Gnus as a @sc{imap} client.
655 * Other Sources::               Reading directories, files, SOUP packets.
656 * Combined Groups::             Combining groups into one group.
657 * Gnus Unplugged::              Reading news and mail offline.
658
659 Server Buffer
660
661 * Server Buffer Format::        You can customize the look of this buffer.
662 * Server Commands::             Commands to manipulate servers.
663 * Example Methods::             Examples server specifications.
664 * Creating a Virtual Server::   An example session.
665 * Server Variables::            Which variables to set.
666 * Servers and Methods::         You can use server names as select methods.
667 * Unavailable Servers::         Some servers you try to contact may be down.
668
669 Getting News
670
671 * NNTP::                        Reading news from an @sc{nntp} server.
672 * News Spool::                  Reading news from the local spool.
673
674 @sc{nntp}
675
676 * Direct Functions::            Connecting directly to the server.
677 * Indirect Functions::          Connecting indirectly to the server.
678 * Common Variables::            Understood by several connection functions.
679
680 Getting Mail
681
682 * Mail in a Newsreader::        Important introductory notes.
683 * Getting Started Reading Mail::  A simple cookbook example.
684 * Splitting Mail::              How to create mail groups.
685 * Mail Sources::                How to tell Gnus where to get mail from.
686 * Mail Back End Variables::     Variables for customizing mail handling.
687 * Fancy Mail Splitting::        Gnus can do hairy splitting of incoming mail.
688 * Group Mail Splitting::        Use group customize to drive mail splitting.
689 * Incorporating Old Mail::      What about the old mail you have?
690 * Expiring Mail::               Getting rid of unwanted mail.
691 * Washing Mail::                Removing gruft from the mail you get.
692 * Duplicates::                  Dealing with duplicated mail.
693 * Not Reading Mail::            Using mail back ends for reading other files.
694 * Choosing a Mail Back End::    Gnus can read a variety of mail formats.
695
696 Mail Sources
697
698 * Mail Source Specifiers::      How to specify what a mail source is.
699 * Mail Source Customization::   Some variables that influence things.
700 * Fetching Mail::               Using the mail source specifiers.
701
702 Choosing a Mail Back End
703
704 * Unix Mail Box::               Using the (quite) standard Un*x mbox.
705 * Rmail Babyl::                 Emacs programs use the rmail babyl format.
706 * Mail Spool::                  Store your mail in a private spool?
707 * MH Spool::                    An mhspool-like back end.
708 * Maildir::                     Another one-file-per-message format.
709 * Mail Folders::                Having one file for each group.
710 * Comparing Mail Back Ends::    An in-depth looks at pros and cons.
711
712 Browsing the Web
713
714 * Archiving Mail::              
715 * Web Searches::                Creating groups from articles that match a string.
716 * Slashdot::                    Reading the Slashdot comments.
717 * Ultimate::                    The Ultimate Bulletin Board systems.
718 * Web Archive::                 Reading mailing list archived on web.
719 * RSS::                         Reading RDF site summary.
720 * Customizing w3::              Doing stuff to Emacs/w3 from Gnus.
721
722 @sc{imap}
723
724 * Splitting in IMAP::           Splitting mail with nnimap.
725 * Expiring in IMAP::            Expiring mail with nnimap.
726 * Editing IMAP ACLs::           Limiting/enabling other users access to a mailbox.
727 * Expunging mailboxes::         Equivalent of a ``compress mailbox'' button.
728 * A note on namespaces::        How to (not) use IMAP namespace in Gnus.
729
730 Other Sources
731
732 * Directory Groups::            You can read a directory as if it was a newsgroup.
733 * Anything Groups::             Dired?  Who needs dired?
734 * Document Groups::             Single files can be the basis of a group.
735 * SOUP::                        Reading @sc{soup} packets ``offline''.
736 * Mail-To-News Gateways::       Posting articles via mail-to-news gateways.
737
738 Document Groups
739
740 * Document Server Internals::   How to add your own document types.
741
742 SOUP
743
744 * SOUP Commands::               Commands for creating and sending @sc{soup} packets
745 * SOUP Groups::                 A back end for reading @sc{soup} packets.
746 * SOUP Replies::                How to enable @code{nnsoup} to take over mail and news.
747
748 Combined Groups
749
750 * Virtual Groups::              Combining articles from many groups.
751 * Kibozed Groups::              Looking through parts of the newsfeed for articles.
752
753 Gnus Unplugged
754
755 * Agent Basics::                How it all is supposed to work.
756 * Agent Categories::            How to tell the Gnus Agent what to download.
757 * Agent Commands::              New commands for all the buffers.
758 * Agent as Cache::              The Agent is a big cache too.
759 * Agent Expiry::                How to make old articles go away.
760 * Agent Regeneration::          How to recover from lost connections and other accidents.
761 * Agent and IMAP::              How to use the Agent with IMAP.
762 * Outgoing Messages::           What happens when you post/mail something?
763 * Agent Variables::             Customizing is fun.
764 * Example Setup::               An example @file{~/.gnus.el} file for offline people.
765 * Batching Agents::             How to fetch news from a @code{cron} job.
766 * Agent Caveats::               What you think it'll do and what it does.
767
768 Agent Categories
769
770 * Category Syntax::             What a category looks like.
771 * Category Buffer::             A buffer for maintaining categories.
772 * Category Variables::          Customize'r'Us.
773
774 Agent Commands
775
776 * Group Agent Commands::        Configure groups and fetch their contents.
777 * Summary Agent Commands::      Manually select then fetch specific articles.
778 * Server Agent Commands::       Select the servers that are supported by the agent.
779
780 Scoring
781
782 * Summary Score Commands::      Adding score entries for the current group.
783 * Group Score Commands::        General score commands.
784 * Score Variables::             Customize your scoring.  (My, what terminology).
785 * Score File Format::           What a score file may contain.
786 * Score File Editing::          You can edit score files by hand as well.
787 * Adaptive Scoring::            Big Sister Gnus knows what you read.
788 * Home Score File::             How to say where new score entries are to go.
789 * Followups To Yourself::       Having Gnus notice when people answer you.
790 * Scoring On Other Headers::    Scoring on non-standard headers.
791 * Scoring Tips::                How to score effectively.
792 * Reverse Scoring::             That problem child of old is not problem.
793 * Global Score Files::          Earth-spanning, ear-splitting score files.
794 * Kill Files::                  They are still here, but they can be ignored.
795 * Converting Kill Files::       Translating kill files to score files.
796 * GroupLens::                   Getting predictions on what you like to read.
797 * Advanced Scoring::            Using logical expressions to build score rules.
798 * Score Decays::                It can be useful to let scores wither away.
799
800 GroupLens
801
802 * Using GroupLens::             How to make Gnus use GroupLens.
803 * Rating Articles::             Letting GroupLens know how you rate articles.
804 * Displaying Predictions::      Displaying predictions given by GroupLens.
805 * GroupLens Variables::         Customizing GroupLens.
806
807 Advanced Scoring
808
809 * Advanced Scoring Syntax::     A definition.
810 * Advanced Scoring Examples::   What they look like.
811 * Advanced Scoring Tips::       Getting the most out of it.
812
813 Various
814
815 * Process/Prefix::              A convention used by many treatment commands.
816 * Interactive::                 Making Gnus ask you many questions.
817 * Symbolic Prefixes::           How to supply some Gnus functions with options.
818 * Formatting Variables::        You can specify what buffers should look like.
819 * Window Layout::               Configuring the Gnus buffer windows.
820 * Faces and Fonts::             How to change how faces look.
821 * Compilation::                 How to speed Gnus up.
822 * Mode Lines::                  Displaying information in the mode lines.
823 * Highlighting and Menus::      Making buffers look all nice and cozy.
824 * Buttons::                     Get tendinitis in ten easy steps!
825 * Daemons::                     Gnus can do things behind your back.
826 * NoCeM::                       How to avoid spam and other fatty foods.
827 * Undo::                        Some actions can be undone.
828 * Predicate Specifiers::        Specifying predicates.
829 * Moderation::                  What to do if you're a moderator.
830 * Image Enhancements::          Modern versions of Emacs/XEmacs can display images.
831 * Fuzzy Matching::              What's the big fuzz?
832 * Thwarting Email Spam::        A how-to on avoiding unsolicited commercial email.
833 * Various Various::             Things that are really various.
834
835 Formatting Variables
836
837 * Formatting Basics::           A formatting variable is basically a format string.
838 * Mode Line Formatting::        Some rules about mode line formatting variables.
839 * Advanced Formatting::         Modifying output in various ways.
840 * User-Defined Specs::          Having Gnus call your own functions.
841 * Formatting Fonts::            Making the formatting look colorful and nice.
842 * Positioning Point::           Moving point to a position after an operation.
843 * Tabulation::                  Tabulating your output.
844 * Wide Characters::             Dealing with wide characters.
845
846 Image Enhancements
847
848 * Picons::                      How to display pictures of what you're reading.
849 * Smileys::                     Show all those happy faces the way they were meant to be shown.
850 * X-Face::                      Display a funky, teensy black-and-white image.
851 * XVarious::                    Other XEmacsy Gnusey variables.
852
853 Thwarting Email Spam
854
855 * The problem of spam::         Some background, and some solutions
856 * Anti-Spam Basics::            Simple steps to reduce the amount of spam.
857 * SpamAssassin::                How to use external anti-spam tools.
858 * Hashcash::                    Reduce spam by burning CPU time.
859 * Filtering Spam Using The Spam ELisp Package::  
860 * Filtering Spam Using Statistics with spam-stat::  
861
862 Appendices
863
864 * XEmacs::                      Requirements for installing under XEmacs.
865 * History::                     How Gnus got where it is today.
866 * On Writing Manuals::          Why this is not a beginner's guide.
867 * Terminology::                 We use really difficult, like, words here.
868 * Customization::               Tailoring Gnus to your needs.
869 * Troubleshooting::             What you might try if things do not work.
870 * Gnus Reference Guide::        Rilly, rilly technical stuff.
871 * Emacs for Heathens::          A short introduction to Emacsian terms.
872 * Frequently Asked Questions::
873
874 History
875
876 * Gnus Versions::               What Gnus versions have been released.
877 * Other Gnus Versions::         Other Gnus versions that also have been released.
878 * Why?::                        What's the point of Gnus?
879 * Compatibility::               Just how compatible is Gnus with @sc{gnus}?
880 * Conformity::                  Gnus tries to conform to all standards.
881 * Emacsen::                     Gnus can be run on a few modern Emacsen.
882 * Gnus Development::            How Gnus is developed.
883 * Contributors::                Oodles of people.
884 * New Features::                Pointers to some of the new stuff in Gnus.
885
886 New Features
887
888 * ding Gnus::                   New things in Gnus 5.0/5.1, the first new Gnus.
889 * September Gnus::              The Thing Formally Known As Gnus 5.2/5.3.
890 * Red Gnus::                    Third time best---Gnus 5.4/5.5.
891 * Quassia Gnus::                Two times two is four, or Gnus 5.6/5.7.
892 * Pterodactyl Gnus::            Pentad also starts with P, AKA Gnus 5.8/5.9.
893
894 Customization
895
896 * Slow/Expensive Connection::   You run a local Emacs and get the news elsewhere.
897 * Slow Terminal Connection::    You run a remote Emacs.
898 * Little Disk Space::           You feel that having large setup files is icky.
899 * Slow Machine::                You feel like buying a faster machine.
900
901 Gnus Reference Guide
902
903 * Gnus Utility Functions::      Common functions and variable to use.
904 * Back End Interface::          How Gnus communicates with the servers.
905 * Score File Syntax::           A BNF definition of the score file standard.
906 * Headers::                     How Gnus stores headers internally.
907 * Ranges::                      A handy format for storing mucho numbers.
908 * Group Info::                  The group info format.
909 * Extended Interactive::        Symbolic prefixes and stuff.
910 * Emacs/XEmacs Code::           Gnus can be run under all modern Emacsen.
911 * Various File Formats::        Formats of files that Gnus use.
912
913 Back End Interface
914
915 * Required Back End Functions::  Functions that must be implemented.
916 * Optional Back End Functions::  Functions that need not be implemented.
917 * Error Messaging::             How to get messages and report errors.
918 * Writing New Back Ends::       Extending old back ends.
919 * Hooking New Back Ends Into Gnus::  What has to be done on the Gnus end.
920 * Mail-like Back Ends::         Some tips on mail back ends.
921
922 Various File Formats
923
924 * Active File Format::          Information on articles and groups available.
925 * Newsgroups File Format::      Group descriptions.
926
927 Emacs for Heathens
928
929 * Keystrokes::                  Entering text and executing commands.
930 * Emacs Lisp::                  The built-in Emacs programming language.
931
932 @end detailmenu
933 @end menu
934
935 @node Starting Up
936 @chapter Starting Gnus
937 @cindex starting up
938
939 @kindex M-x gnus
940 @findex gnus
941 If your system administrator has set things up properly, starting Gnus
942 and reading news is extremely easy---you just type @kbd{M-x gnus} in
943 your Emacs.
944
945 @findex gnus-other-frame
946 @kindex M-x gnus-other-frame
947 If you want to start Gnus in a different frame, you can use the command
948 @kbd{M-x gnus-other-frame} instead.
949
950 If things do not go smoothly at startup, you have to twiddle some
951 variables in your @file{~/.gnus.el} file.  This file is similar to
952 @file{~/.emacs}, but is read when gnus starts.
953
954 If you puzzle at any terms used in this manual, please refer to the
955 terminology section (@pxref{Terminology}).
956
957 @menu
958 * Finding the News::            Choosing a method for getting news.
959 * The First Time::              What does Gnus do the first time you start it?
960 * The Server is Down::          How can I read my mail then?
961 * Slave Gnusae::                You can have more than one Gnus active at a time.
962 * Fetching a Group::            Starting Gnus just to read a group.
963 * New Groups::                  What is Gnus supposed to do with new groups?
964 * Changing Servers::            You may want to move from one server to another.
965 * Startup Files::               Those pesky startup files---@file{.newsrc}.
966 * Auto Save::                   Recovering from a crash.
967 * The Active File::             Reading the active file over a slow line Takes Time.
968 * Startup Variables::           Other variables you might change.
969 @end menu
970
971
972 @node Finding the News
973 @section Finding the News
974 @cindex finding news
975
976 @vindex gnus-select-method
977 @c @head
978 The @code{gnus-select-method} variable says where Gnus should look for
979 news.  This variable should be a list where the first element says
980 @dfn{how} and the second element says @dfn{where}.  This method is your
981 native method.  All groups not fetched with this method are
982 foreign groups.
983
984 For instance, if the @samp{news.somewhere.edu} @sc{nntp} server is where
985 you want to get your daily dosage of news from, you'd say:
986
987 @lisp
988 (setq gnus-select-method '(nntp "news.somewhere.edu"))
989 @end lisp
990
991 If you want to read directly from the local spool, say:
992
993 @lisp
994 (setq gnus-select-method '(nnspool ""))
995 @end lisp
996
997 If you can use a local spool, you probably should, as it will almost
998 certainly be much faster.  But do not use the local spool if your
999 server is running Leafnode; in this case, use @code{(nntp "localhost")}.
1000
1001 @vindex gnus-nntpserver-file
1002 @cindex NNTPSERVER
1003 @cindex @sc{nntp} server
1004 If this variable is not set, Gnus will take a look at the
1005 @code{NNTPSERVER} environment variable.  If that variable isn't set,
1006 Gnus will see whether @code{gnus-nntpserver-file}
1007 (@file{/etc/nntpserver} by default) has any opinions on the matter.  If
1008 that fails as well, Gnus will try to use the machine running Emacs as an @sc{nntp} server.  That's a long shot, though.
1009
1010 @vindex gnus-nntp-server
1011 If @code{gnus-nntp-server} is set, this variable will override
1012 @code{gnus-select-method}.  You should therefore set
1013 @code{gnus-nntp-server} to @code{nil}, which is what it is by default.
1014
1015 @vindex gnus-secondary-servers
1016 @vindex gnus-nntp-server
1017 You can also make Gnus prompt you interactively for the name of an
1018 @sc{nntp} server.  If you give a non-numerical prefix to @code{gnus}
1019 (i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
1020 in the @code{gnus-secondary-servers} list (if any).  You can also just
1021 type in the name of any server you feel like visiting.  (Note that this
1022 will set @code{gnus-nntp-server}, which means that if you then @kbd{M-x
1023 gnus} later in the same Emacs session, Gnus will contact the same
1024 server.)
1025
1026 @findex gnus-group-browse-foreign-server
1027 @kindex B (Group)
1028 However, if you use one @sc{nntp} server regularly and are just
1029 interested in a couple of groups from a different server, you would be
1030 better served by using the @kbd{B} command in the group buffer.  It will
1031 let you have a look at what groups are available, and you can subscribe
1032 to any of the groups you want to.  This also makes @file{.newsrc}
1033 maintenance much tidier.  @xref{Foreign Groups}.
1034
1035 @vindex gnus-secondary-select-methods
1036 @c @head
1037 A slightly different approach to foreign groups is to set the
1038 @code{gnus-secondary-select-methods} variable.  The select methods
1039 listed in this variable are in many ways just as native as the
1040 @code{gnus-select-method} server.  They will also be queried for active
1041 files during startup (if that's required), and new newsgroups that
1042 appear on these servers will be subscribed (or not) just as native
1043 groups are.
1044
1045 For instance, if you use the @code{nnmbox} back end to read your mail,
1046 you would typically set this variable to
1047
1048 @lisp
1049 (setq gnus-secondary-select-methods '((nnmbox "")))
1050 @end lisp
1051
1052
1053 @node The First Time
1054 @section The First Time
1055 @cindex first time usage
1056
1057 If no startup files exist, Gnus will try to determine what groups should
1058 be subscribed by default.
1059
1060 @vindex gnus-default-subscribed-newsgroups
1061 If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
1062 will subscribe you to just those groups in that list, leaving the rest
1063 killed.  Your system administrator should have set this variable to
1064 something useful.
1065
1066 Since she hasn't, Gnus will just subscribe you to a few arbitrarily
1067 picked groups (i.e., @samp{*.newusers}).  (@dfn{Arbitrary} is defined
1068 here as @dfn{whatever Lars thinks you should read}.)
1069
1070 You'll also be subscribed to the Gnus documentation group, which should
1071 help you with most common problems.
1072
1073 If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
1074 use the normal functions for handling new groups, and not do anything
1075 special.
1076
1077
1078 @node The Server is Down
1079 @section The Server is Down
1080 @cindex server errors
1081
1082 If the default server is down, Gnus will understandably have some
1083 problems starting.  However, if you have some mail groups in addition to
1084 the news groups, you may want to start Gnus anyway.
1085
1086 Gnus, being the trusting sort of program, will ask whether to proceed
1087 without a native select method if that server can't be contacted.  This
1088 will happen whether the server doesn't actually exist (i.e., you have
1089 given the wrong address) or the server has just momentarily taken ill
1090 for some reason or other.  If you decide to continue and have no foreign
1091 groups, you'll find it difficult to actually do anything in the group
1092 buffer.  But, hey, that's your problem.  Blllrph!
1093
1094 @findex gnus-no-server
1095 @kindex M-x gnus-no-server
1096 @c @head
1097 If you know that the server is definitely down, or you just want to read
1098 your mail without bothering with the server at all, you can use the
1099 @code{gnus-no-server} command to start Gnus.  That might come in handy
1100 if you're in a hurry as well.  This command will not attempt to contact
1101 your primary server---instead, it will just activate all groups on level
1102 1 and 2.  (You should preferably keep no native groups on those two
1103 levels.) Also @pxref{Group Levels}.
1104
1105
1106 @node Slave Gnusae
1107 @section Slave Gnusae
1108 @cindex slave
1109
1110 You might want to run more than one Emacs with more than one Gnus at the
1111 same time.  If you are using different @file{.newsrc} files (e.g., if you
1112 are using the two different Gnusae to read from two different servers),
1113 that is no problem whatsoever.  You just do it.
1114
1115 The problem appears when you want to run two Gnusae that use the same
1116 @file{.newsrc} file.
1117
1118 To work around that problem some, we here at the Think-Tank at the Gnus
1119 Towers have come up with a new concept: @dfn{Masters} and
1120 @dfn{slaves}.  (We have applied for a patent on this concept, and have
1121 taken out a copyright on those words.  If you wish to use those words in
1122 conjunction with each other, you have to send $1 per usage instance to
1123 me.  Usage of the patent (@dfn{Master/Slave Relationships In Computer
1124 Applications}) will be much more expensive, of course.)
1125
1126 @findex gnus-slave
1127 Anyway, you start one Gnus up the normal way with @kbd{M-x gnus} (or
1128 however you do it).  Each subsequent slave Gnusae should be started with
1129 @kbd{M-x gnus-slave}.  These slaves won't save normal @file{.newsrc}
1130 files, but instead save @dfn{slave files} that contain information only
1131 on what groups have been read in the slave session.  When a master Gnus
1132 starts, it will read (and delete) these slave files, incorporating all
1133 information from them.  (The slave files will be read in the sequence
1134 they were created, so the latest changes will have precedence.)
1135
1136 Information from the slave files has, of course, precedence over the
1137 information in the normal (i.e., master) @file{.newsrc} file.
1138
1139 If the @file{.newsrc*} files have not been saved in the master when the
1140 slave starts, you may be prompted as to whether to read an auto-save
1141 file.  If you answer ``yes'', the unsaved changes to the master will be
1142 incorporated into the slave.  If you answer ``no'', the slave may see some
1143 messages as unread that have been read in the master.
1144
1145 @node Fetching a Group
1146 @section Fetching a Group
1147 @cindex fetching a group
1148
1149 @findex gnus-fetch-group
1150 It is sometimes convenient to be able to just say ``I want to read this
1151 group and I don't care whether Gnus has been started or not''.  This is
1152 perhaps more useful for people who write code than for users, but the
1153 command @code{gnus-fetch-group} provides this functionality in any case.
1154 It takes the group name as a parameter.
1155
1156
1157 @node New Groups
1158 @section New Groups
1159 @cindex new groups
1160 @cindex subscription
1161
1162 @vindex gnus-check-new-newsgroups
1163 If you are satisfied that you really never want to see any new groups,
1164 you can set @code{gnus-check-new-newsgroups} to @code{nil}.  This will
1165 also save you some time at startup.  Even if this variable is
1166 @code{nil}, you can always subscribe to the new groups just by pressing
1167 @kbd{U} in the group buffer (@pxref{Group Maintenance}).  This variable
1168 is @code{ask-server} by default.  If you set this variable to
1169 @code{always}, then Gnus will query the back ends for new groups even
1170 when you do the @kbd{g} command (@pxref{Scanning New Messages}).
1171
1172 @menu
1173 * Checking New Groups::         Determining what groups are new.
1174 * Subscription Methods::        What Gnus should do with new groups.
1175 * Filtering New Groups::        Making Gnus ignore certain new groups.
1176 @end menu
1177
1178
1179 @node Checking New Groups
1180 @subsection Checking New Groups
1181
1182 Gnus normally determines whether a group is new or not by comparing the
1183 list of groups from the active file(s) with the lists of subscribed and
1184 dead groups.  This isn't a particularly fast method.  If
1185 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
1186 server for new groups since the last time.  This is both faster and
1187 cheaper.  This also means that you can get rid of the list of killed
1188 groups altogether, so you may set @code{gnus-save-killed-list} to
1189 @code{nil}, which will save time both at startup, at exit, and all over.
1190 Saves disk space, too.  Why isn't this the default, then?
1191 Unfortunately, not all servers support this command.
1192
1193 I bet I know what you're thinking now: How do I find out whether my
1194 server supports @code{ask-server}?  No?  Good, because I don't have a
1195 fail-safe answer.  I would suggest just setting this variable to
1196 @code{ask-server} and see whether any new groups appear within the next
1197 few days.  If any do, then it works.  If none do, then it doesn't
1198 work.  I could write a function to make Gnus guess whether the server
1199 supports @code{ask-server}, but it would just be a guess.  So I won't.
1200 You could @code{telnet} to the server and say @code{HELP} and see
1201 whether it lists @samp{NEWGROUPS} among the commands it understands.  If
1202 it does, then it might work.  (But there are servers that lists
1203 @samp{NEWGROUPS} without supporting the function properly.)
1204
1205 This variable can also be a list of select methods.  If so, Gnus will
1206 issue an @code{ask-server} command to each of the select methods, and
1207 subscribe them (or not) using the normal methods.  This might be handy
1208 if you are monitoring a few servers for new groups.  A side effect is
1209 that startup will take much longer, so you can meditate while waiting.
1210 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
1211
1212
1213 @node Subscription Methods
1214 @subsection Subscription Methods
1215
1216 @vindex gnus-subscribe-newsgroup-method
1217 What Gnus does when it encounters a new group is determined by the
1218 @code{gnus-subscribe-newsgroup-method} variable.
1219
1220 This variable should contain a function.  This function will be called
1221 with the name of the new group as the only parameter.
1222
1223 Some handy pre-fab functions are:
1224
1225 @table @code
1226
1227 @item gnus-subscribe-zombies
1228 @vindex gnus-subscribe-zombies
1229 Make all new groups zombies.  This is the default.  You can browse the
1230 zombies later (with @kbd{A z}) and either kill them all off properly
1231 (with @kbd{S z}), or subscribe to them (with @kbd{u}).
1232
1233 @item gnus-subscribe-randomly
1234 @vindex gnus-subscribe-randomly
1235 Subscribe all new groups in arbitrary order.  This really means that all
1236 new groups will be added at ``the top'' of the group buffer.
1237
1238 @item gnus-subscribe-alphabetically
1239 @vindex gnus-subscribe-alphabetically
1240 Subscribe all new groups in alphabetical order.
1241
1242 @item gnus-subscribe-hierarchically
1243 @vindex gnus-subscribe-hierarchically
1244 Subscribe all new groups hierarchically.  The difference between this
1245 function and @code{gnus-subscribe-alphabetically} is slight.
1246 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
1247 alphabetical fashion, while this function will enter groups into its
1248 hierarchy.  So if you want to have the @samp{rec} hierarchy before the
1249 @samp{comp} hierarchy, this function will not mess that configuration
1250 up.  Or something like that.
1251
1252 @item gnus-subscribe-interactively
1253 @vindex gnus-subscribe-interactively
1254 Subscribe new groups interactively.  This means that Gnus will ask
1255 you about @strong{all} new groups.  The groups you choose to subscribe
1256 to will be subscribed hierarchically.
1257
1258 @item gnus-subscribe-killed
1259 @vindex gnus-subscribe-killed
1260 Kill all new groups.
1261
1262 @item gnus-subscribe-topics
1263 @vindex gnus-subscribe-topics
1264 Put the groups into the topic that has a matching @code{subscribe} topic
1265 parameter (@pxref{Topic Parameters}).  For instance, a @code{subscribe}
1266 topic parameter that looks like
1267
1268 @example
1269 "nnslashdot"
1270 @end example
1271
1272 will mean that all groups that match that regex will be subscribed under
1273 that topic.
1274
1275 If no topics match the groups, the groups will be subscribed in the
1276 top-level topic.
1277
1278 @end table
1279
1280 @vindex gnus-subscribe-hierarchical-interactive
1281 A closely related variable is
1282 @code{gnus-subscribe-hierarchical-interactive}.  (That's quite a
1283 mouthful.)  If this variable is non-@code{nil}, Gnus will ask you in a
1284 hierarchical fashion whether to subscribe to new groups or not.  Gnus
1285 will ask you for each sub-hierarchy whether you want to descend the
1286 hierarchy or not.
1287
1288 One common mistake is to set the variable a few paragraphs above
1289 (@code{gnus-subscribe-newsgroup-method}) to
1290 @code{gnus-subscribe-hierarchical-interactive}.  This is an error.  This
1291 will not work.  This is ga-ga.  So don't do it.
1292
1293
1294 @node Filtering New Groups
1295 @subsection Filtering New Groups
1296
1297 A nice and portable way to control which new newsgroups should be
1298 subscribed (or ignored) is to put an @dfn{options} line at the start of
1299 the @file{.newsrc} file.  Here's an example:
1300
1301 @example
1302 options -n !alt.all !rec.all sci.all
1303 @end example
1304
1305 @vindex gnus-subscribe-options-newsgroup-method
1306 This line obviously belongs to a serious-minded intellectual scientific
1307 person (or she may just be plain old boring), because it says that all
1308 groups that have names beginning with @samp{alt} and @samp{rec} should
1309 be ignored, and all groups with names beginning with @samp{sci} should
1310 be subscribed.  Gnus will not use the normal subscription method for
1311 subscribing these groups.
1312 @code{gnus-subscribe-options-newsgroup-method} is used instead.  This
1313 variable defaults to @code{gnus-subscribe-alphabetically}.
1314
1315 @vindex gnus-options-not-subscribe
1316 @vindex gnus-options-subscribe
1317 If you don't want to mess with your @file{.newsrc} file, you can just
1318 set the two variables @code{gnus-options-subscribe} and
1319 @code{gnus-options-not-subscribe}.  These two variables do exactly the
1320 same as the @file{.newsrc} @samp{options -n} trick.  Both are regexps,
1321 and if the new group matches the former, it will be unconditionally
1322 subscribed, and if it matches the latter, it will be ignored.
1323
1324 @vindex gnus-auto-subscribed-groups
1325 Yet another variable that meddles here is
1326 @code{gnus-auto-subscribed-groups}.  It works exactly like
1327 @code{gnus-options-subscribe}, and is therefore really superfluous, but I
1328 thought it would be nice to have two of these.  This variable is more
1329 meant for setting some ground rules, while the other variable is used
1330 more for user fiddling.  By default this variable makes all new groups
1331 that come from mail back ends (@code{nnml}, @code{nnbabyl},
1332 @code{nnfolder}, @code{nnmbox}, @code{nnmh}, and @code{nnmaildir})
1333 subscribed.  If you don't like that, just set this variable to
1334 @code{nil}.
1335
1336 New groups that match this regexp are subscribed using
1337 @code{gnus-subscribe-options-newsgroup-method}.
1338
1339
1340 @node Changing Servers
1341 @section Changing Servers
1342 @cindex changing servers
1343
1344 Sometimes it is necessary to move from one @sc{nntp} server to another.
1345 This happens very rarely, but perhaps you change jobs, or one server is
1346 very flaky and you want to use another.
1347
1348 Changing the server is pretty easy, right?  You just change
1349 @code{gnus-select-method} to point to the new server?
1350
1351 @emph{Wrong!}
1352
1353 Article numbers are not (in any way) kept synchronized between different
1354 @sc{nntp} servers, and the only way Gnus keeps track of what articles
1355 you have read is by keeping track of article numbers.  So when you
1356 change @code{gnus-select-method}, your @file{.newsrc} file becomes
1357 worthless.
1358
1359 Gnus provides a few functions to attempt to translate a @file{.newsrc}
1360 file from one server to another.  They all have one thing in
1361 common---they take a looong time to run.  You don't want to use these
1362 functions more than absolutely necessary.
1363
1364 @kindex M-x gnus-change-server
1365 @findex gnus-change-server
1366 If you have access to both servers, Gnus can request the headers for all
1367 the articles you have read and compare @code{Message-ID}s and map the
1368 article numbers of the read articles and article marks.  The @kbd{M-x
1369 gnus-change-server} command will do this for all your native groups.  It
1370 will prompt for the method you want to move to.
1371
1372 @kindex M-x gnus-group-move-group-to-server
1373 @findex gnus-group-move-group-to-server
1374 You can also move individual groups with the @kbd{M-x
1375 gnus-group-move-group-to-server} command.  This is useful if you want to
1376 move a (foreign) group from one server to another.
1377
1378 @kindex M-x gnus-group-clear-data-on-native-groups
1379 @findex gnus-group-clear-data-on-native-groups
1380 If you don't have access to both the old and new server, all your marks
1381 and read ranges have become worthless.  You can use the @kbd{M-x
1382 gnus-group-clear-data-on-native-groups} command to clear out all data
1383 that you have on your native groups.  Use with caution.
1384
1385 @kindex M-x gnus-group-clear-data
1386 @findex gnus-group-clear-data
1387 Clear the data from the current group only---nix out marks and the
1388 list of read articles (@code{gnus-group-clear-data}).
1389
1390 After changing servers, you @strong{must} move the cache hierarchy away,
1391 since the cached articles will have wrong article numbers, which will
1392 affect which articles Gnus thinks are read.
1393 @code{gnus-group-clear-data-on-native-groups} will ask you if you want
1394 to have it done automatically; for @code{gnus-group-clear-data}, you
1395 can use @kbd{M-x gnus-cache-move-cache} (but beware, it will move the
1396 cache for all groups).
1397
1398
1399 @node Startup Files
1400 @section Startup Files
1401 @cindex startup files
1402 @cindex .newsrc
1403 @cindex .newsrc.el
1404 @cindex .newsrc.eld
1405
1406 Now, you all know about the @file{.newsrc} file.  All subscription
1407 information is traditionally stored in this file.
1408
1409 Things got a bit more complicated with @sc{gnus}.  In addition to
1410 keeping the @file{.newsrc} file updated, it also used a file called
1411 @file{.newsrc.el} for storing all the information that didn't fit into
1412 the @file{.newsrc} file.  (Actually, it also duplicated everything in
1413 the @file{.newsrc} file.)  @sc{gnus} would read whichever one of these
1414 files was the most recently saved, which enabled people to swap between
1415 @sc{gnus} and other newsreaders.
1416
1417 That was kinda silly, so Gnus went one better: In addition to the
1418 @file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
1419 @file{.newsrc.eld}.  It will read whichever of these files that are most
1420 recent, but it will never write a @file{.newsrc.el} file.  You should
1421 never delete the @file{.newsrc.eld} file---it contains much information
1422 not stored in the @file{.newsrc} file.
1423
1424 @vindex gnus-save-newsrc-file
1425 @vindex gnus-read-newsrc-file
1426 You can turn off writing the @file{.newsrc} file by setting
1427 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
1428 the file and save some space, as well as exiting from Gnus faster.
1429 However, this will make it impossible to use other newsreaders than
1430 Gnus.  But hey, who would want to, right?  Similarly, setting
1431 @code{gnus-read-newsrc-file} to @code{nil} makes Gnus ignore the
1432 @file{.newsrc} file and any @file{.newsrc-SERVER} files, which is
1433 convenient if you have a tendency to use Netscape once in a while.
1434
1435 @vindex gnus-save-killed-list
1436 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
1437 will not save the list of killed groups to the startup file.  This will
1438 save both time (when starting and quitting) and space (on disk).  It
1439 will also mean that Gnus has no record of what groups are new or old,
1440 so the automatic new groups subscription methods become meaningless.
1441 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
1442 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
1443 Groups}).  This variable can also be a regular expression.  If that's
1444 the case, remove all groups that do not match this regexp before
1445 saving.  This can be useful in certain obscure situations that involve
1446 several servers where not all servers support @code{ask-server}.
1447
1448 @vindex gnus-startup-file
1449 @vindex gnus-backup-startup-file
1450 @vindex version-control
1451 The @code{gnus-startup-file} variable says where the startup files are.
1452 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
1453 file being whatever that one is, with a @samp{.eld} appended.
1454 If you want version control for this file, set
1455 @code{gnus-backup-startup-file}.  It respects the same values as the
1456 @code{version-control} variable.
1457
1458 @vindex gnus-save-newsrc-hook
1459 @vindex gnus-save-quick-newsrc-hook
1460 @vindex gnus-save-standard-newsrc-hook
1461 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc
1462 files, while @code{gnus-save-quick-newsrc-hook} is called just before
1463 saving the @file{.newsrc.eld} file, and
1464 @code{gnus-save-standard-newsrc-hook} is called just before saving the
1465 @file{.newsrc} file.  The latter two are commonly used to turn version
1466 control on or off.  Version control is on by default when saving the
1467 startup files.  If you want to turn backup creation off, say something like:
1468
1469 @lisp
1470 (defun turn-off-backup ()
1471   (set (make-local-variable 'backup-inhibited) t))
1472
1473 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
1474 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
1475 @end lisp
1476
1477 @vindex gnus-init-file
1478 @vindex gnus-site-init-file
1479 When Gnus starts, it will read the @code{gnus-site-init-file}
1480 (@file{.../site-lisp/gnus} by default) and @code{gnus-init-file}
1481 (@file{~/.gnus} by default) files.  These are normal Emacs Lisp files
1482 and can be used to avoid cluttering your @file{~/.emacs} and
1483 @file{site-init} files with Gnus stuff.  Gnus will also check for files
1484 with the same names as these, but with @file{.elc} and @file{.el}
1485 suffixes.  In other words, if you have set @code{gnus-init-file} to
1486 @file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
1487 and finally @file{~/.gnus} (in this order).
1488
1489
1490
1491 @node Auto Save
1492 @section Auto Save
1493 @cindex dribble file
1494 @cindex auto-save
1495
1496 Whenever you do something that changes the Gnus data (reading articles,
1497 catching up, killing/subscribing groups), the change is added to a
1498 special @dfn{dribble buffer}.  This buffer is auto-saved the normal
1499 Emacs way.  If your Emacs should crash before you have saved the
1500 @file{.newsrc} files, all changes you have made can be recovered from
1501 this file.
1502
1503 If Gnus detects this file at startup, it will ask the user whether to
1504 read it.  The auto save file is deleted whenever the real startup file is
1505 saved.
1506
1507 @vindex gnus-use-dribble-file
1508 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
1509 maintain a dribble buffer.  The default is @code{t}.
1510
1511 @vindex gnus-dribble-directory
1512 Gnus will put the dribble file(s) in @code{gnus-dribble-directory}.  If
1513 this variable is @code{nil}, which it is by default, Gnus will dribble
1514 into the directory where the @file{.newsrc} file is located.  (This is
1515 normally the user's home directory.)  The dribble file will get the same
1516 file permissions as the @file{.newsrc} file.
1517
1518 @vindex gnus-always-read-dribble-file
1519 If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will
1520 read the dribble file on startup without querying the user.
1521
1522
1523 @node The Active File
1524 @section The Active File
1525 @cindex active file
1526 @cindex ignored groups
1527
1528 When Gnus starts, or indeed whenever it tries to determine whether new
1529 articles have arrived, it reads the active file.  This is a very large
1530 file that lists all the active groups and articles on the server.
1531
1532 @vindex gnus-ignored-newsgroups
1533 Before examining the active file, Gnus deletes all lines that match the
1534 regexp @code{gnus-ignored-newsgroups}.  This is done primarily to reject
1535 any groups with bogus names, but you can use this variable to make Gnus
1536 ignore hierarchies you aren't ever interested in.  However, this is not
1537 recommended.  In fact, it's highly discouraged.  Instead, @pxref{New
1538 Groups} for an overview of other variables that can be used instead.
1539
1540 @c This variable is
1541 @c @code{nil} by default, and will slow down active file handling somewhat
1542 @c if you set it to anything else.
1543
1544 @vindex gnus-read-active-file
1545 @c @head
1546 The active file can be rather Huge, so if you have a slow network, you
1547 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
1548 reading the active file.  This variable is @code{some} by default.
1549
1550 Gnus will try to make do by getting information just on the groups that
1551 you actually subscribe to.
1552
1553 Note that if you subscribe to lots and lots of groups, setting this
1554 variable to @code{nil} will probably make Gnus slower, not faster.  At
1555 present, having this variable @code{nil} will slow Gnus down
1556 considerably, unless you read news over a 2400 baud modem.
1557
1558 This variable can also have the value @code{some}.  Gnus will then
1559 attempt to read active info only on the subscribed groups.  On some
1560 servers this is quite fast (on sparkling, brand new INN servers that
1561 support the @code{LIST ACTIVE group} command), on others this isn't fast
1562 at all.  In any case, @code{some} should be faster than @code{nil}, and
1563 is certainly faster than @code{t} over slow lines.
1564
1565 Some news servers (old versions of Leafnode and old versions of INN, for
1566 instance) do not support the @code{LIST ACTIVE group}.  For these
1567 servers, @code{nil} is probably the most efficient value for this
1568 variable.
1569
1570 If this variable is @code{nil}, Gnus will ask for group info in total
1571 lock-step, which isn't very fast.  If it is @code{some} and you use an
1572 @sc{nntp} server, Gnus will pump out commands as fast as it can, and
1573 read all the replies in one swoop.  This will normally result in better
1574 performance, but if the server does not support the aforementioned
1575 @code{LIST ACTIVE group} command, this isn't very nice to the server.
1576
1577 If you think that starting up Gnus takes too long, try all the three
1578 different values for this variable and see what works best for you.
1579
1580 In any case, if you use @code{some} or @code{nil}, you should definitely
1581 kill all groups that you aren't interested in to speed things up.
1582
1583 Note that this variable also affects active file retrieval from
1584 secondary select methods.
1585
1586
1587 @node Startup Variables
1588 @section Startup Variables
1589
1590 @table @code
1591
1592 @item gnus-load-hook
1593 @vindex gnus-load-hook
1594 A hook run while Gnus is being loaded.  Note that this hook will
1595 normally be run just once in each Emacs session, no matter how many
1596 times you start Gnus.
1597
1598 @item gnus-before-startup-hook
1599 @vindex gnus-before-startup-hook
1600 A hook run after starting up Gnus successfully.
1601
1602 @item gnus-startup-hook
1603 @vindex gnus-startup-hook
1604 A hook run as the very last thing after starting up Gnus
1605
1606 @item gnus-started-hook
1607 @vindex gnus-started-hook
1608 A hook that is run as the very last thing after starting up Gnus
1609 successfully.
1610
1611 @item gnus-setup-news-hook
1612 @vindex gnus-setup-news-hook
1613 A hook that is run after reading the @file{.newsrc} file(s), but before
1614 generating the group buffer.
1615
1616 @item gnus-check-bogus-newsgroups
1617 @vindex gnus-check-bogus-newsgroups
1618 If non-@code{nil}, Gnus will check for and delete all bogus groups at
1619 startup.  A @dfn{bogus group} is a group that you have in your
1620 @file{.newsrc} file, but doesn't exist on the news server.  Checking for
1621 bogus groups can take quite a while, so to save time and resources it's
1622 best to leave this option off, and do the checking for bogus groups once
1623 in a while from the group buffer instead (@pxref{Group Maintenance}).
1624
1625 @item gnus-inhibit-startup-message
1626 @vindex gnus-inhibit-startup-message
1627 If non-@code{nil}, the startup message won't be displayed.  That way,
1628 your boss might not notice as easily that you are reading news instead
1629 of doing your job.  Note that this variable is used before
1630 @file{~/.gnus.el} is loaded, so it should be set in @file{.emacs} instead.
1631
1632 @item gnus-no-groups-message
1633 @vindex gnus-no-groups-message
1634 Message displayed by Gnus when no groups are available.
1635
1636 @item gnus-play-startup-jingle
1637 @vindex gnus-play-startup-jingle
1638 If non-@code{nil}, play the Gnus jingle at startup.
1639
1640 @item gnus-startup-jingle
1641 @vindex gnus-startup-jingle
1642 Jingle to be played if the above variable is non-@code{nil}.  The
1643 default is @samp{Tuxedomoon.Jingle4.au}.
1644
1645 @end table
1646
1647
1648 @node Group Buffer
1649 @chapter Group Buffer
1650 @cindex group buffer
1651
1652 @c Alex Schroeder suggests to rearrange this as follows:
1653 @c
1654 @c <kensanata> ok, just save it for reference.  I'll go to bed in a minute.
1655 @c   1. Selecting a Group, 2. (new) Finding a Group, 3. Group Levels,
1656 @c   4. Subscription Commands, 5. Group Maneuvering, 6. Group Data,
1657 @c   7. Group Score, 8. Group Buffer Format
1658 @c <kensanata> Group Levels should have more information on levels 5 to 9.  I
1659 @c   suggest to split the 4th paragraph ("Gnus considers groups...") as follows:
1660 @c <kensanata> First, "Gnus considers groups... (default 9)."
1661 @c <kensanata> New, a table summarizing what levels 1 to 9 mean.
1662 @c <kensanata> Third, "Gnus treats subscribed ... reasons of efficiency"
1663 @c <kensanata> Then expand the next paragraph or add some more to it.
1664 @c    This short one sentence explains levels 1 and 2, therefore I understand
1665 @c    that I should keep important news at 3 and boring news at 4.
1666 @c    Say so!  Then go on to explain why I should bother with levels 6 to 9.
1667 @c    Maybe keep those that you don't want to read temporarily at 6,
1668 @c    those that you never want to read at 8, those that offend your
1669 @c    human rights at 9...
1670
1671
1672 The @dfn{group buffer} lists all (or parts) of the available groups.  It
1673 is the first buffer shown when Gnus starts, and will never be killed as
1674 long as Gnus is active.
1675
1676 @iftex
1677 @iflatex
1678 \gnusfigure{The Group Buffer}{320}{
1679 \put(75,50){\epsfig{figure=ps/group,height=9cm}}
1680 \put(120,37){\makebox(0,0)[t]{Buffer name}}
1681 \put(120,38){\vector(1,2){10}}
1682 \put(40,60){\makebox(0,0)[r]{Mode line}}
1683 \put(40,58){\vector(1,0){30}}
1684 \put(200,28){\makebox(0,0)[t]{Native select method}}
1685 \put(200,26){\vector(-1,2){15}}
1686 }
1687 @end iflatex
1688 @end iftex
1689
1690 @menu
1691 * Group Buffer Format::         Information listed and how you can change it.
1692 * Group Maneuvering::           Commands for moving in the group buffer.
1693 * Selecting a Group::           Actually reading news.
1694 * Subscription Commands::       Unsubscribing, killing, subscribing.
1695 * Group Data::                  Changing the info for a group.
1696 * Group Levels::                Levels? What are those, then?
1697 * Group Score::                 A mechanism for finding out what groups you like.
1698 * Marking Groups::              You can mark groups for later processing.
1699 * Foreign Groups::              Creating and editing groups.
1700 * Group Parameters::            Each group may have different parameters set.
1701 * Listing Groups::              Gnus can list various subsets of the groups.
1702 * Sorting Groups::              Re-arrange the group order.
1703 * Group Maintenance::           Maintaining a tidy @file{.newsrc} file.
1704 * Browse Foreign Server::       You can browse a server.  See what it has to offer.
1705 * Exiting Gnus::                Stop reading news and get some work done.
1706 * Group Topics::                A folding group mode divided into topics.
1707 * Misc Group Stuff::            Other stuff that you can to do.
1708 @end menu
1709
1710
1711 @node Group Buffer Format
1712 @section Group Buffer Format
1713
1714 @menu
1715 * Group Line Specification::    Deciding how the group buffer is to look.
1716 * Group Modeline Specification::  The group buffer modeline.
1717 * Group Highlighting::          Having nice colors in the group buffer.
1718 @end menu
1719
1720
1721 @node Group Line Specification
1722 @subsection Group Line Specification
1723 @cindex group buffer format
1724
1725 The default format of the group buffer is nice and dull, but you can
1726 make it as exciting and ugly as you feel like.
1727
1728 Here's a couple of example group lines:
1729
1730 @example
1731      25: news.announce.newusers
1732  *    0: alt.fan.andrea-dworkin
1733 @end example
1734
1735 Quite simple, huh?
1736
1737 You can see that there are 25 unread articles in
1738 @samp{news.announce.newusers}.  There are no unread articles, but some
1739 ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
1740 asterisk at the beginning of the line?).
1741
1742 @vindex gnus-group-line-format
1743 You can change that format to whatever you want by fiddling with the
1744 @code{gnus-group-line-format} variable.  This variable works along the
1745 lines of a @code{format} specification, which is pretty much the same as
1746 a @code{printf} specifications, for those of you who use (feh!) C.
1747 @xref{Formatting Variables}.
1748
1749 @samp{%M%S%5y:%B%(%g%)\n} is the value that produced those lines above.
1750
1751 There should always be a colon on the line; the cursor always moves to
1752 the colon after performing an operation.  @xref{Positioning
1753 Point}. Nothing else is required---not even the group name.  All
1754 displayed text is just window dressing, and is never examined by Gnus.
1755 Gnus stores all real information it needs using text properties.
1756
1757 (Note that if you make a really strange, wonderful, spreadsheet-like
1758 layout, everybody will believe you are hard at work with the accounting
1759 instead of wasting time reading news.)
1760
1761 Here's a list of all available format characters:
1762
1763 @table @samp
1764
1765 @item M
1766 An asterisk if the group only has marked articles.
1767
1768 @item S
1769 Whether the group is subscribed.
1770
1771 @item L
1772 Level of subscribedness.
1773
1774 @item N
1775 Number of unread articles.
1776
1777 @item I
1778 Number of dormant articles.
1779
1780 @item T
1781 Number of ticked articles.
1782
1783 @item R
1784 Number of read articles.
1785
1786 @item U
1787 Number of unseen articles.
1788
1789 @item t
1790 Estimated total number of articles.  (This is really @var{max-number}
1791 minus @var{min-number} plus 1.)
1792
1793 Gnus uses this estimation because the @sc{nntp} protocol provides
1794 efficient access to @var{max-number} and @var{min-number} but getting
1795 the true unread message count is not possible efficiently.  For
1796 hysterical raisins, even the mail back ends, where the true number of
1797 unread messages might be available efficiently, use the same limited
1798 interface.  To remove this restriction from Gnus means that the back
1799 end interface has to be changed, which is not an easy job.  If you
1800 want to work on this, please contact the Gnus mailing list.
1801
1802 @item y
1803 Number of unread, unticked, non-dormant articles.
1804
1805 @item i
1806 Number of ticked and dormant articles.
1807
1808 @item g
1809 Full group name.
1810
1811 @item G
1812 Group name.
1813
1814 @item C
1815 Group comment (@pxref{Group Parameters}) or group name if there is no
1816 comment element in the group parameters.
1817
1818 @item D
1819 Newsgroup description.
1820
1821 @item o
1822 @samp{m} if moderated.
1823
1824 @item O
1825 @samp{(m)} if moderated.
1826
1827 @item s
1828 Select method.
1829
1830 @item B
1831 If the summary buffer for the group is open or not.
1832
1833 @item n
1834 Select from where.
1835
1836 @item z
1837 A string that looks like @samp{<%s:%n>} if a foreign select method is
1838 used.
1839
1840 @item P
1841 Indentation based on the level of the topic (@pxref{Group Topics}).
1842
1843 @item c
1844 @vindex gnus-group-uncollapsed-levels
1845 Short (collapsed) group name.  The @code{gnus-group-uncollapsed-levels}
1846 variable says how many levels to leave at the end of the group name.
1847 The default is 1---this will mean that group names like
1848 @samp{gnu.emacs.gnus} will be shortened to @samp{g.e.gnus}.
1849
1850 @item m
1851 @vindex gnus-new-mail-mark
1852 @cindex %
1853 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1854 the group lately.
1855
1856 @item p
1857 @samp{#} (@code{gnus-process-mark}) if the group is process marked.
1858
1859 @item d
1860 A string that says when you last read the group (@pxref{Group
1861 Timestamp}).
1862
1863 @item u
1864 User defined specifier.  The next character in the format string should
1865 be a letter.  Gnus will call the function
1866 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
1867 following @samp{%u}.  The function will be passed a single dummy
1868 parameter as argument.  The function should return a string, which will
1869 be inserted into the buffer just like information from any other
1870 specifier.
1871 @end table
1872
1873 @cindex *
1874 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
1875 if no info is available---for instance, if it is a non-activated foreign
1876 group, or a bogus native group.
1877
1878
1879 @node Group Modeline Specification
1880 @subsection Group Modeline Specification
1881 @cindex group modeline
1882
1883 @vindex gnus-group-mode-line-format
1884 The mode line can be changed by setting
1885 @code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}).  It
1886 doesn't understand that many format specifiers:
1887
1888 @table @samp
1889 @item S
1890 The native news server.
1891 @item M
1892 The native select method.
1893 @end table
1894
1895
1896 @node Group Highlighting
1897 @subsection Group Highlighting
1898 @cindex highlighting
1899 @cindex group highlighting
1900
1901 @vindex gnus-group-highlight
1902 Highlighting in the group buffer is controlled by the
1903 @code{gnus-group-highlight} variable.  This is an alist with elements
1904 that look like @code{(@var{form} . @var{face})}.  If @var{form} evaluates to
1905 something non-@code{nil}, the @var{face} will be used on the line.
1906
1907 Here's an example value for this variable that might look nice if the
1908 background is dark:
1909
1910 @lisp
1911 (cond (window-system
1912        (setq custom-background-mode 'light)
1913        (defface my-group-face-1
1914          '((t (:foreground "Red" :bold t))) "First group face")
1915        (defface my-group-face-2
1916          '((t (:foreground "DarkSeaGreen4" :bold t))) "Second group face")
1917        (defface my-group-face-3
1918          '((t (:foreground "Green4" :bold t))) "Third group face")
1919        (defface my-group-face-4
1920          '((t (:foreground "SteelBlue" :bold t))) "Fourth group face")
1921        (defface my-group-face-5
1922          '((t (:foreground "Blue" :bold t))) "Fifth group face")))
1923
1924 (setq gnus-group-highlight
1925       '(((> unread 200) . my-group-face-1)
1926         ((and (< level 3) (zerop unread)) . my-group-face-2)
1927         ((< level 3) . my-group-face-3)
1928         ((zerop unread) . my-group-face-4)
1929         (t . my-group-face-5)))
1930 @end lisp
1931
1932 Also @pxref{Faces and Fonts}.
1933
1934 Variables that are dynamically bound when the forms are evaluated
1935 include:
1936
1937 @table @code
1938 @item group
1939 The group name.
1940 @item unread
1941 The number of unread articles in the group.
1942 @item method
1943 The select method.
1944 @item mailp
1945 Whether the group is a mail group.
1946 @item level
1947 The level of the group.
1948 @item score
1949 The score of the group.
1950 @item ticked
1951 The number of ticked articles in the group.
1952 @item total
1953 The total number of articles in the group.  Or rather,
1954 @var{max-number} minus @var{min-number} plus one.
1955 @item topic
1956 When using the topic minor mode, this variable is bound to the current
1957 topic being inserted.
1958 @end table
1959
1960 When the forms are @code{eval}ed, point is at the beginning of the line
1961 of the group in question, so you can use many of the normal Gnus
1962 functions for snarfing info on the group.
1963
1964 @vindex gnus-group-update-hook
1965 @findex gnus-group-highlight-line
1966 @code{gnus-group-update-hook} is called when a group line is changed.
1967 It will not be called when @code{gnus-visual} is @code{nil}.  This hook
1968 calls @code{gnus-group-highlight-line} by default.
1969
1970
1971 @node Group Maneuvering
1972 @section Group Maneuvering
1973 @cindex group movement
1974
1975 All movement commands understand the numeric prefix and will behave as
1976 expected, hopefully.
1977
1978 @table @kbd
1979
1980 @item n
1981 @kindex n (Group)
1982 @findex gnus-group-next-unread-group
1983 Go to the next group that has unread articles
1984 (@code{gnus-group-next-unread-group}).
1985
1986 @item p
1987 @itemx DEL
1988 @kindex DEL (Group)
1989 @kindex p (Group)
1990 @findex gnus-group-prev-unread-group
1991 Go to the previous group that has unread articles
1992 (@code{gnus-group-prev-unread-group}).
1993
1994 @item N
1995 @kindex N (Group)
1996 @findex gnus-group-next-group
1997 Go to the next group (@code{gnus-group-next-group}).
1998
1999 @item P
2000 @kindex P (Group)
2001 @findex gnus-group-prev-group
2002 Go to the previous group (@code{gnus-group-prev-group}).
2003
2004 @item M-n
2005 @kindex M-n (Group)
2006 @findex gnus-group-next-unread-group-same-level
2007 Go to the next unread group on the same (or lower) level
2008 (@code{gnus-group-next-unread-group-same-level}).
2009
2010 @item M-p
2011 @kindex M-p (Group)
2012 @findex gnus-group-prev-unread-group-same-level
2013 Go to the previous unread group on the same (or lower) level
2014 (@code{gnus-group-prev-unread-group-same-level}).
2015 @end table
2016
2017 Three commands for jumping to groups:
2018
2019 @table @kbd
2020
2021 @item j
2022 @kindex j (Group)
2023 @findex gnus-group-jump-to-group
2024 Jump to a group (and make it visible if it isn't already)
2025 (@code{gnus-group-jump-to-group}).  Killed groups can be jumped to, just
2026 like living groups.
2027
2028 @item ,
2029 @kindex , (Group)
2030 @findex gnus-group-best-unread-group
2031 Jump to the unread group with the lowest level
2032 (@code{gnus-group-best-unread-group}).
2033
2034 @item .
2035 @kindex . (Group)
2036 @findex gnus-group-first-unread-group
2037 Jump to the first group with unread articles
2038 (@code{gnus-group-first-unread-group}).
2039 @end table
2040
2041 @vindex gnus-group-goto-unread
2042 If @code{gnus-group-goto-unread} is @code{nil}, all the movement
2043 commands will move to the next group, not the next unread group.  Even
2044 the commands that say they move to the next unread group.  The default
2045 is @code{t}.
2046
2047
2048 @node Selecting a Group
2049 @section Selecting a Group
2050 @cindex group selection
2051
2052 @table @kbd
2053
2054 @item SPACE
2055 @kindex SPACE (Group)
2056 @findex gnus-group-read-group
2057 Select the current group, switch to the summary buffer and display the
2058 first unread article (@code{gnus-group-read-group}).  If there are no
2059 unread articles in the group, or if you give a non-numerical prefix to
2060 this command, Gnus will offer to fetch all the old articles in this
2061 group from the server.  If you give a numerical prefix @var{n}, @var{n}
2062 determines the number of articles Gnus will fetch.  If @var{n} is
2063 positive, Gnus fetches the @var{n} newest articles, if @var{n} is
2064 negative, Gnus fetches the @code{abs(@var{n})} oldest articles.
2065
2066 Thus, @kbd{SPC} enters the group normally, @kbd{C-u SPC} offers old
2067 articles, @kbd{C-u 4 2 SPC} fetches the 42 newest articles, and @kbd{C-u
2068 - 4 2 SPC} fetches the 42 oldest ones.
2069
2070 When you are in the group (in the Summary buffer), you can type
2071 @kbd{M-g} to fetch new articles, or @kbd{C-u M-g} to also show the old
2072 ones.
2073
2074 @item RET
2075 @kindex RET (Group)
2076 @findex gnus-group-select-group
2077 Select the current group and switch to the summary buffer
2078 (@code{gnus-group-select-group}).  Takes the same arguments as
2079 @code{gnus-group-read-group}---the only difference is that this command
2080 does not display the first unread article automatically upon group
2081 entry.
2082
2083 @item M-RET
2084 @kindex M-RET (Group)
2085 @findex gnus-group-quick-select-group
2086 This does the same as the command above, but tries to do it with the
2087 minimum amount of fuzz (@code{gnus-group-quick-select-group}).  No
2088 scoring/killing will be performed, there will be no highlights and no
2089 expunging.  This might be useful if you're in a real hurry and have to
2090 enter some humongous group.  If you give a 0 prefix to this command
2091 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer,
2092 which is useful if you want to toggle threading before generating the
2093 summary buffer (@pxref{Summary Generation Commands}).
2094
2095 @item M-SPACE
2096 @kindex M-SPACE (Group)
2097 @findex gnus-group-visible-select-group
2098 This is yet one more command that does the same as the @kbd{RET}
2099 command, but this one does it without expunging and hiding dormants
2100 (@code{gnus-group-visible-select-group}).
2101
2102 @item C-M-RET
2103 @kindex C-M-RET (Group)
2104 @findex gnus-group-select-group-ephemerally
2105 Finally, this command selects the current group ephemerally without
2106 doing any processing of its contents
2107 (@code{gnus-group-select-group-ephemerally}).  Even threading has been
2108 turned off.  Everything you do in the group after selecting it in this
2109 manner will have no permanent effects.
2110
2111 @end table
2112
2113 @vindex gnus-large-newsgroup
2114 The @code{gnus-large-newsgroup} variable says what Gnus should consider
2115 to be a big group.  This is 200 by default.  If the group has more
2116 (unread and/or ticked) articles than this, Gnus will query the user
2117 before entering the group.  The user can then specify how many articles
2118 should be fetched from the server.  If the user specifies a negative
2119 number (@code{-n}), the @code{n} oldest articles will be fetched.  If it
2120 is positive, the @code{n} articles that have arrived most recently will
2121 be fetched.
2122
2123 @vindex gnus-select-group-hook
2124 @vindex gnus-auto-select-first
2125 @vindex gnus-auto-select-subject
2126 If @code{gnus-auto-select-first} is non-@code{nil}, select an article
2127 automatically when entering a group with the @kbd{SPACE} command.
2128 Which article this is is controlled by the
2129 @code{gnus-auto-select-subject} variable.  Valid values for this
2130 variable is:
2131
2132 @table @code
2133
2134 @item unread
2135 Place point on the subject line of the first unread article.
2136
2137 @item first
2138 Place point on the subject line of the first article.
2139
2140 @item unseen
2141 Place point on the subject line of the first unseen article.
2142
2143 @item unseen-or-unread
2144 Place point on the subject line of the first unseen article, and if
2145 there is no such article, place point on the subject line of the first
2146 unread article.
2147
2148 @item best
2149 Place point on the subject line of the highest-scored unread article.
2150
2151 @end table
2152
2153 This variable can also be a function.  In that case, that function
2154 will be called to place point on a subject line.
2155
2156 If you want to prevent automatic selection in some group (say, in a
2157 binary group with Huge articles) you can set the
2158 @code{gnus-auto-select-first} variable to @code{nil} in
2159 @code{gnus-select-group-hook}, which is called when a group is
2160 selected.
2161
2162
2163 @node Subscription Commands
2164 @section Subscription Commands
2165 @cindex subscription
2166
2167 @table @kbd
2168
2169 @item S t
2170 @itemx u
2171 @kindex S t (Group)
2172 @kindex u (Group)
2173 @findex gnus-group-unsubscribe-current-group
2174 @c @icon{gnus-group-unsubscribe}
2175 Toggle subscription to the current group
2176 (@code{gnus-group-unsubscribe-current-group}).
2177
2178 @item S s
2179 @itemx U
2180 @kindex S s (Group)
2181 @kindex U (Group)
2182 @findex gnus-group-unsubscribe-group
2183 Prompt for a group to subscribe, and then subscribe it.  If it was
2184 subscribed already, unsubscribe it instead
2185 (@code{gnus-group-unsubscribe-group}).
2186
2187 @item S k
2188 @itemx C-k
2189 @kindex S k (Group)
2190 @kindex C-k (Group)
2191 @findex gnus-group-kill-group
2192 @c @icon{gnus-group-kill-group}
2193 Kill the current group (@code{gnus-group-kill-group}).
2194
2195 @item S y
2196 @itemx C-y
2197 @kindex S y (Group)
2198 @kindex C-y (Group)
2199 @findex gnus-group-yank-group
2200 Yank the last killed group (@code{gnus-group-yank-group}).
2201
2202 @item C-x C-t
2203 @kindex C-x C-t (Group)
2204 @findex gnus-group-transpose-groups
2205 Transpose two groups (@code{gnus-group-transpose-groups}).  This isn't
2206 really a subscription command, but you can use it instead of a
2207 kill-and-yank sequence sometimes.
2208
2209 @item S w
2210 @itemx C-w
2211 @kindex S w (Group)
2212 @kindex C-w (Group)
2213 @findex gnus-group-kill-region
2214 Kill all groups in the region (@code{gnus-group-kill-region}).
2215
2216 @item S z
2217 @kindex S z (Group)
2218 @findex gnus-group-kill-all-zombies
2219 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
2220
2221 @item S C-k
2222 @kindex S C-k (Group)
2223 @findex gnus-group-kill-level
2224 Kill all groups on a certain level (@code{gnus-group-kill-level}).
2225 These groups can't be yanked back after killing, so this command should
2226 be used with some caution.  The only time where this command comes in
2227 really handy is when you have a @file{.newsrc} with lots of unsubscribed
2228 groups that you want to get rid off.  @kbd{S C-k} on level 7 will
2229 kill off all unsubscribed groups that do not have message numbers in the
2230 @file{.newsrc} file.
2231
2232 @end table
2233
2234 Also @pxref{Group Levels}.
2235
2236
2237 @node Group Data
2238 @section Group Data
2239
2240 @table @kbd
2241
2242 @item c
2243 @kindex c (Group)
2244 @findex gnus-group-catchup-current
2245 @vindex gnus-group-catchup-group-hook
2246 @c @icon{gnus-group-catchup-current}
2247 Mark all unticked articles in this group as read
2248 (@code{gnus-group-catchup-current}).
2249 @code{gnus-group-catchup-group-hook} is called when catching up a group from
2250 the group buffer.
2251
2252 @item C
2253 @kindex C (Group)
2254 @findex gnus-group-catchup-current-all
2255 Mark all articles in this group, even the ticked ones, as read
2256 (@code{gnus-group-catchup-current-all}).
2257
2258 @item M-c
2259 @kindex M-c (Group)
2260 @findex gnus-group-clear-data
2261 Clear the data from the current group---nix out marks and the list of
2262 read articles (@code{gnus-group-clear-data}).
2263
2264 @item M-x gnus-group-clear-data-on-native-groups
2265 @kindex M-x gnus-group-clear-data-on-native-groups
2266 @findex gnus-group-clear-data-on-native-groups
2267 If you have switched from one @sc{nntp} server to another, all your marks
2268 and read ranges have become worthless.  You can use this command to
2269 clear out all data that you have on your native groups.  Use with
2270 caution.
2271
2272 @end table
2273
2274
2275 @node Group Levels
2276 @section Group Levels
2277 @cindex group level
2278 @cindex level
2279
2280 All groups have a level of @dfn{subscribedness}.  For instance, if a
2281 group is on level 2, it is more subscribed than a group on level 5.  You
2282 can ask Gnus to just list groups on a given level or lower
2283 (@pxref{Listing Groups}), or to just check for new articles in groups on
2284 a given level or lower (@pxref{Scanning New Messages}).
2285
2286 Remember:  The higher the level of the group, the less important it is.
2287
2288 @table @kbd
2289
2290 @item S l
2291 @kindex S l (Group)
2292 @findex gnus-group-set-current-level
2293 Set the level of the current group.  If a numeric prefix is given, the
2294 next @var{n} groups will have their levels set.  The user will be
2295 prompted for a level.
2296 @end table
2297
2298 @vindex gnus-level-killed
2299 @vindex gnus-level-zombie
2300 @vindex gnus-level-unsubscribed
2301 @vindex gnus-level-subscribed
2302 Gnus considers groups from levels 1 to
2303 @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed,
2304 @code{gnus-level-subscribed} (exclusive) and
2305 @code{gnus-level-unsubscribed} (inclusive) (default 7) to be
2306 unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
2307 (default 8) and @code{gnus-level-killed} to be killed (completely dead)
2308 (default 9).  Gnus treats subscribed and unsubscribed groups exactly the
2309 same, but zombie and killed groups have no information on what articles
2310 you have read, etc, stored.  This distinction between dead and living
2311 groups isn't done because it is nice or clever, it is done purely for
2312 reasons of efficiency.
2313
2314 It is recommended that you keep all your mail groups (if any) on quite
2315 low levels (e.g. 1 or 2).
2316
2317 Maybe the following description of the default behavior of Gnus helps to
2318 understand what these levels are all about.  By default, Gnus shows you
2319 subscribed nonempty groups, but by hitting @kbd{L} you can have it show
2320 empty subscribed groups and unsubscribed groups, too.  Type @kbd{l} to
2321 go back to showing nonempty subscribed groups again.  Thus, unsubscribed
2322 groups are hidden, in a way.
2323
2324 Zombie and killed groups are similar to unsubscribed groups in that they
2325 are hidden by default.  But they are different from subscribed and
2326 unsubscribed groups in that Gnus doesn't ask the news server for
2327 information (number of messages, number of unread messages) on zombie
2328 and killed groups.  Normally, you use @kbd{C-k} to kill the groups you
2329 aren't interested in.  If most groups are killed, Gnus is faster.
2330
2331 Why does Gnus distinguish between zombie and killed groups?  Well, when
2332 a new group arrives on the server, Gnus by default makes it a zombie
2333 group.  This means that you are normally not bothered with new groups,
2334 but you can type @kbd{A z} to get a list of all new groups.  Subscribe
2335 the ones you like and kill the ones you don't want.  (@kbd{A k} shows a
2336 list of killed groups.)
2337
2338 If you want to play with the level variables, you should show some care.
2339 Set them once, and don't touch them ever again.  Better yet, don't touch
2340 them at all unless you know exactly what you're doing.
2341
2342 @vindex gnus-level-default-unsubscribed
2343 @vindex gnus-level-default-subscribed
2344 Two closely related variables are @code{gnus-level-default-subscribed}
2345 (default 3) and @code{gnus-level-default-unsubscribed} (default 6),
2346 which are the levels that new groups will be put on if they are
2347 (un)subscribed.  These two variables should, of course, be inside the
2348 relevant valid ranges.
2349
2350 @vindex gnus-keep-same-level
2351 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
2352 will only move to groups of the same level (or lower).  In
2353 particular, going from the last article in one group to the next group
2354 will go to the next group of the same level (or lower).  This might be
2355 handy if you want to read the most important groups before you read the
2356 rest.
2357
2358 If this variable is @code{best}, Gnus will make the next newsgroup the
2359 one with the best level.
2360
2361 @vindex gnus-group-default-list-level
2362 All groups with a level less than or equal to
2363 @code{gnus-group-default-list-level} will be listed in the group buffer
2364 by default.
2365
2366 @vindex gnus-group-list-inactive-groups
2367 If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
2368 groups will be listed along with the unread groups.  This variable is
2369 @code{t} by default.  If it is @code{nil}, inactive groups won't be
2370 listed.
2371
2372 @vindex gnus-group-use-permanent-levels
2373 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
2374 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
2375 use this level as the ``work'' level.
2376
2377 @vindex gnus-activate-level
2378 Gnus will normally just activate (i. e., query the server about) groups
2379 on level @code{gnus-activate-level} or less.  If you don't want to
2380 activate unsubscribed groups, for instance, you might set this variable
2381 to 5.  The default is 6.
2382
2383
2384 @node Group Score
2385 @section Group Score
2386 @cindex group score
2387 @cindex group rank
2388 @cindex rank
2389
2390 You would normally keep important groups on high levels, but that scheme
2391 is somewhat restrictive.  Don't you wish you could have Gnus sort the
2392 group buffer according to how often you read groups, perhaps?  Within
2393 reason?
2394
2395 This is what @dfn{group score} is for.  You can have Gnus assign a score
2396 to each group through the mechanism described below.  You can then sort
2397 the group buffer based on this score.  Alternatively, you can sort on
2398 score and then level.  (Taken together, the level and the score is
2399 called the @dfn{rank} of the group.  A group that is on level 4 and has
2400 a score of 1 has a higher rank than a group on level 5 that has a score
2401 of 300.  (The level is the most significant part and the score is the
2402 least significant part.))
2403
2404 @findex gnus-summary-bubble-group
2405 If you want groups you read often to get higher scores than groups you
2406 read seldom you can add the @code{gnus-summary-bubble-group} function to
2407 the @code{gnus-summary-exit-hook} hook.  This will result (after
2408 sorting) in a bubbling sort of action.  If you want to see that in
2409 action after each summary exit, you can add
2410 @code{gnus-group-sort-groups-by-rank} or
2411 @code{gnus-group-sort-groups-by-score} to the same hook, but that will
2412 slow things down somewhat.
2413
2414
2415 @node Marking Groups
2416 @section Marking Groups
2417 @cindex marking groups
2418
2419 If you want to perform some command on several groups, and they appear
2420 subsequently in the group buffer, you would normally just give a
2421 numerical prefix to the command.  Most group commands will then do your
2422 bidding on those groups.
2423
2424 However, if the groups are not in sequential order, you can still
2425 perform a command on several groups.  You simply mark the groups first
2426 with the process mark and then execute the command.
2427
2428 @table @kbd
2429
2430 @item #
2431 @kindex # (Group)
2432 @itemx M m
2433 @kindex M m (Group)
2434 @findex gnus-group-mark-group
2435 Set the mark on the current group (@code{gnus-group-mark-group}).
2436
2437 @item M-#
2438 @kindex M-# (Group)
2439 @itemx M u
2440 @kindex M u (Group)
2441 @findex gnus-group-unmark-group
2442 Remove the mark from the current group
2443 (@code{gnus-group-unmark-group}).
2444
2445 @item M U
2446 @kindex M U (Group)
2447 @findex gnus-group-unmark-all-groups
2448 Remove the mark from all groups (@code{gnus-group-unmark-all-groups}).
2449
2450 @item M w
2451 @kindex M w (Group)
2452 @findex gnus-group-mark-region
2453 Mark all groups between point and mark (@code{gnus-group-mark-region}).
2454
2455 @item M b
2456 @kindex M b (Group)
2457 @findex gnus-group-mark-buffer
2458 Mark all groups in the buffer (@code{gnus-group-mark-buffer}).
2459
2460 @item M r
2461 @kindex M r (Group)
2462 @findex gnus-group-mark-regexp
2463 Mark all groups that match some regular expression
2464 (@code{gnus-group-mark-regexp}).
2465 @end table
2466
2467 Also @pxref{Process/Prefix}.
2468
2469 @findex gnus-group-universal-argument
2470 If you want to execute some command on all groups that have been marked
2471 with the process mark, you can use the @kbd{M-&}
2472 (@code{gnus-group-universal-argument}) command.  It will prompt you for
2473 the command to be executed.
2474
2475
2476 @node Foreign Groups
2477 @section Foreign Groups
2478 @cindex foreign groups
2479
2480 Below are some group mode commands for making and editing general foreign
2481 groups, as well as commands to ease the creation of a few
2482 special-purpose groups.  All these commands insert the newly created
2483 groups under point---@code{gnus-subscribe-newsgroup-method} is not
2484 consulted.
2485
2486 @table @kbd
2487
2488 @item G m
2489 @kindex G m (Group)
2490 @findex gnus-group-make-group
2491 @cindex making groups
2492 Make a new group (@code{gnus-group-make-group}).  Gnus will prompt you
2493 for a name, a method and possibly an @dfn{address}.  For an easier way
2494 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
2495
2496 @item G r
2497 @kindex G r (Group)
2498 @findex gnus-group-rename-group
2499 @cindex renaming groups
2500 Rename the current group to something else
2501 (@code{gnus-group-rename-group}).  This is valid only on some
2502 groups---mail groups mostly.  This command might very well be quite slow
2503 on some back ends.
2504
2505 @item G c
2506 @kindex G c (Group)
2507 @cindex customizing
2508 @findex gnus-group-customize
2509 Customize the group parameters (@code{gnus-group-customize}).
2510
2511 @item G e
2512 @kindex G e (Group)
2513 @findex gnus-group-edit-group-method
2514 @cindex renaming groups
2515 Enter a buffer where you can edit the select method of the current
2516 group (@code{gnus-group-edit-group-method}).
2517
2518 @item G p
2519 @kindex G p (Group)
2520 @findex gnus-group-edit-group-parameters
2521 Enter a buffer where you can edit the group parameters
2522 (@code{gnus-group-edit-group-parameters}).
2523
2524 @item G E
2525 @kindex G E (Group)
2526 @findex gnus-group-edit-group
2527 Enter a buffer where you can edit the group info
2528 (@code{gnus-group-edit-group}).
2529
2530 @item G d
2531 @kindex G d (Group)
2532 @findex gnus-group-make-directory-group
2533 @cindex nndir
2534 Make a directory group (@pxref{Directory Groups}).  You will be prompted
2535 for a directory name (@code{gnus-group-make-directory-group}).
2536
2537 @item G h
2538 @kindex G h (Group)
2539 @cindex help group
2540 @findex gnus-group-make-help-group
2541 Make the Gnus help group (@code{gnus-group-make-help-group}).
2542
2543 @item G a
2544 @kindex G a (Group)
2545 @cindex (ding) archive
2546 @cindex archive group
2547 @findex gnus-group-make-archive-group
2548 @vindex gnus-group-archive-directory
2549 @vindex gnus-group-recent-archive-directory
2550 Make a Gnus archive group (@code{gnus-group-make-archive-group}).  By
2551 default a group pointing to the most recent articles will be created
2552 (@code{gnus-group-recent-archive-directory}), but given a prefix, a full
2553 group will be created from @code{gnus-group-archive-directory}.
2554
2555 @item G k
2556 @kindex G k (Group)
2557 @findex gnus-group-make-kiboze-group
2558 @cindex nnkiboze
2559 Make a kiboze group.  You will be prompted for a name, for a regexp to
2560 match groups to be ``included'' in the kiboze group, and a series of
2561 strings to match on headers (@code{gnus-gro