8c8c193be361c325bbe8e79e1656788250a6780c
[gnus] / texi / gnus.texi
1 \input texinfo                  @c -*-texinfo-*-
2 @comment %**start of header (This is for running Texinfo on a region.)
3 @setfilename gnus
4 @settitle (ding) Gnus 1.0 Manual
5 @synindex fn cp
6 @synindex vr cp
7 @synindex pg cp
8 @iftex
9 @finalout
10 @end iftex
11 @setchapternewpage odd
12 @c      @smallbook
13 @comment %**end of header (This is for running Texinfo on a region.)
14 @tex
15 \overfullrule=0pt
16 %\global\baselineskip 30pt      % For printing in double spaces
17 @end tex
18
19 @ifinfo
20
21 This file documents GNUS, the GNU Emacs newsreader.
22
23 Copyright (C) 1989, 1990, 1993 Free Software Foundation, Inc.
24
25 Permission is granted to make and distribute verbatim copies of
26 this manual provided the copyright notice and this permission notice
27 are preserved on all copies.
28
29 @ignore
30 Permission is granted to process this file through Tex and print the
31 results, provided the printed document carries copying permission
32 notice identical to this one except for the removal of this paragraph
33 (this paragraph not being relevant to the printed manual).
34
35 @end ignore
36 Permission is granted to copy and distribute modified versions of this
37 manual under the conditions for verbatim copying, provided also that the
38 entire resulting derived work is distributed under the terms of a
39 permission notice identical to this one.
40
41 Permission is granted to copy and distribute translations of this manual
42 into another language, under the above conditions for modified versions.
43 @end ifinfo
44
45 @titlepage
46 @title Gnus Manual
47
48 @author by Lars Ingebrigtsen
49 @page
50 @vskip 0pt plus 1filll
51 Copyright @copyright{} 1989, 1990, 1993 Free Software Foundation, Inc. 
52
53 Permission is granted to make and distribute verbatim copies of
54 this manual provided the copyright notice and this permission notice
55 are preserved on all copies.
56
57 Permission is granted to copy and distribute modified versions of this
58 manual under the conditions for verbatim copying, provided that the
59 entire resulting derived work is distributed under the terms of a
60 permission notice identical to this one.
61
62 Permission is granted to copy and distribute translations of this manual
63 into another language, under the above conditions for modified versions.
64
65 Cover art by Etienne Suvasa.
66 @end titlepage
67 @page
68
69 @node Top
70 @top The Gnus News Reader
71
72 You can read news (and mail) from within Emacs by using (ding) Gnus.  The
73 news can be gotten by any nefarious means you can think of - NNTP, local
74 spool, mail spool.  All at the same time, if you want to push your luck.
75
76 This manual documents (ding) Gnus 0.11. Gnus is now up to 0.29, so this
77 documentation is totally out of date. The only authoratative
78 documentation available is the source code.
79
80 @menu
81 * History::                 How Gnus got where it is today.
82 * Starting Up::             Finding news can be a pain.
83 * The Group Buffer::        Treating groups.
84 * The Summary Buffer::      Reading articles.
85 * The Article Buffer::      Doing stuff to articles.
86 * Various::                 General options.
87 * Customization::           Tailoring Gnus to your needs.
88 * Troubleshooting::         What you might try if things do not work.
89 * Reporting Bugs::          Bugs? What bugs?!
90 * Index::                   Index.
91 * Key Index::               Key Index.
92 @end menu
93
94 Note: This is a work of fiction. Any similarity between this manual and
95 real programs is purely coincidental.
96
97 @node History
98 @chapter History
99
100 GNUS was written by Masanobu UMEDA.  When autumn crept up in '94, Lars
101 Magne Ingebrigtsen grew bored and decided to write (ding) Gnus.
102
103 (ding) Gnus is based on GNUS 4.1 and includes bits and pieces by Per
104 Abrahamsen, Sudish Joseph, Felix Lee and jwz. 
105
106 The recommended pronounciation of the name this program is "ding
107 guh-noose", with "ding" being half-sung in a loud, high-pitched voice,
108 and "guh-noose" being grumbled and a disaffected fashion.  Any irritation
109 and/or damage this name may cause you is not the responsibility of the
110 author, even though you might like to strangle him for the stupid idea.
111
112 "(ding)", is, of course, short for "Ding Is Not Gnus", which is a total
113 and utter lie, but who cares? (Besides, the "Gnus" in this abbreviation
114 should probably be pronounced "news" as UMEDA intended, which makes it a
115 more appropriate name, don't you think?)
116
117 @menu
118 * Compatibility::          Just how compatible is (ding) Gnus with GNUS?
119 * New Features::           A short description of all the new stuff in Gnus.
120 @end menu
121
122 @node Compatibility
123 @section Compatibility
124
125 (ding) Gnus was designed to be fully compatible with GNUS.  Almost all
126 key binding have been kept.  More key binding have been added, of course,
127 but only in one or two obscure cases have key bindings been changed.
128
129 All commands have kept their names.  Some internal functions have changed
130 their names.
131
132 Even though old methods of doing things are still supported, only the
133 new methods are documented in this manual.  If you detect a new method of
134 doing something while reading this manual, that does not mean you have
135 to stop doing it the old way.
136
137 (ding) Gnus understands all GNUS startup files.
138
139 @kindex M-x gnus-bug
140 Overall, a casual user who hasn't written much code that depends on GNUS
141 internals should suffer no problems.  If problems occur, please let me
142 know (@kbd{M-x gnus-bug}).
143
144 However, code that depends on the buffers looking a particular way will
145 almost invaribaly fail.  For instance, the summary buffer no longer 
146 displays article numbers by default.
147
148 @node New Features
149 @section New Features
150
151 The look of all buffers can be changed by setting format-like variables.
152  
153 Local spool and several NNTP servers can be used at once.  Virtual
154 groups and private mail groups are featured.
155
156 Gnus can use various strategies for gathering threads that have lost
157 their roots (thereby gathering loose sub-threads in one thread) or it
158 can go back and retrieve enough headers to build a complete thread.
159
160 Killed groups can be displayed in the group buffer, and you can read
161 them as well.
162
163 Gnus can do partial updates of new articles - you do not have to
164 retrieve the entire active file just to check for new articles in a few
165 groups.
166
167 Gnus implements a sliding scale of subscribedness to groups.
168
169 The approach to killing has been changed. Instead of simply killing or
170 not, you can score articles for easier reading.
171
172 @node Starting Up
173 @chapter Starting Gnus
174
175 @kindex M-x gnus
176 If your systems administrator has set thing up properly, starting Gnus
177 and reading news is extremely easy - you just type @kbd{M-x gnus}.
178
179 If things do not go smoothly at startup, you have to twiddle some
180 variables. 
181
182 @menu
183 * Finding the News::    Choosing a method for getting news.
184 * First Time::          What does Gnus do the first time you start it?
185 * The Server is Down::  How can I read my mail then?
186 * New Groups::          What is Gnus supposed to do with new groups?
187 * Startup Files::       Those pesky startup files - @file{.newsrc}.
188 * Auto Save::           Recovering from a crash.
189 * The Active File::     Reading the active file over a slow line Takes Time.
190 * Startup Variables::   Other variables you might change.
191 @end menu
192
193 @node Finding the News
194 @section Finding the News
195
196 @vindex gnus-select-method
197 The @code{gnus-select-method} variable controls how Gnus finds news.
198 This variable should be a list where the first element says "how" and
199 the second element says "where". This server is is your @dfn{local
200 server}. All other servers are @dfn{foreign servers}.
201
202 For instance, if you want to get your daily dosage of news from the NNTP
203 server "news.friendly.server", you'd say:
204
205 @example
206 (setq gnus-select-method '(nntp "news.friendly.server"))
207 @end example
208
209 If you want to use a local spool, say:
210
211 @example
212 (setq gnus-select-method '(nnspool ""))
213 @end example
214
215 If this variable is not set, Gnus will take a look at the
216 @code{NNTPSERVER} environment variable.  If that isn't set either, it
217 will try to use the machine that is running Emacs as an NNTP server.
218
219 @vindex gnus-secondary-servers
220 You can also make Gnus prompt you interactively for the name of an NNTP
221 server.  If you give a non-numerical prefix to `gnus' (ie. `C-u M-x
222 gnus'), Gnus will let you choose between the servers in the
223 @code{gnus-secondary-servers} variable (if any).  You can also just type
224 in the name of any server you feel like visiting.
225
226 However, if you use one NNTP server regularly, and is just interested in
227 a couple of groups from a different server, you would be better
228 served by using the @code{gnus-group-browse-foreign-server} command from
229 the group buffer.  It will let you have a look at what groups are
230 available, and you can subscribe to any of the groups you want to.  This
231 also makes @file{.newsrc} maintenance much tidier.
232
233 @vindex gnus-secondary-select-methods
234 A slightly different approach is to set the
235 @code{gnus-secondary-select-methods}. The select methods listed in this
236 variable are in many ways just as local as the @code{gnus-select-method}
237 server. They will also be asked for active files during startup (if
238 that's wanted), and new newsgroups that appear from these servers will
239 be subscribed (or not) just as local groups are.
240
241 For instance, if you use the @code{nnmbox} backend to read you mail, you
242 would typically set this variable to
243
244 @example
245 (setq gnus-secondary-select-methods 
246   '((nnmbox "")))
247 @end example
248
249 @node First Time
250 @section The First Time
251
252 One time has to be the first, but it doesn't have to be painful.
253
254 If no startup files exist, Gnus will try to determine what groups
255 that should be subscribed by default.
256
257 @vindex gnus-default-subscribed-newsgroups
258 If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
259 will subscribe you to just those groups in that list, leaving the
260 rest killed.  Your systems administrator should have set this variable to
261 something useful.
262
263 Since she hasn't, Gnus will just subscribe you to a few randomly picked
264 groups (ie. @samp{*.newusers}). (@dfn{Random} is here defined as
265 "whatever Lars think you should read".)
266
267 If @code{gnus-default-subscribed-newsgroups} is t, Gnus will just use
268 the normal functions for treating new groups, and not do anything
269 special.
270
271 @node The Server is Down
272 @section The Server is Down
273
274 If the default server is down, Gnus will understandably have some
275 problems starting. However, if you have some mail groups in addition to
276 the news groups, you may want to start Gnus anyway.
277
278 You can bo that by @kbd{M-x gnus-no-server}. This will start Gnus
279 without attempting to contact the default server. Gnus will be started
280 on level two, so you shouldn't have any groups from the local server on
281 level one or two, but only have mail groups and other foreign groups on
282 these two levels.
283
284 @node New Groups
285 @section New Groups
286
287 @vindex gnus-subscribe-newsgroup-method
288 What Gnus does when it encounters a new group is determined by the
289 @code{gnus-subscribe-newsgroup-method} variable.
290
291 This variable should contain a function.  Some handy ready-made values
292 are:
293
294 @table @code
295 @item gnus-subscribe-randomly
296 @vindex gnus-subscribe-randomly
297 Subscribe all new groups randomly.
298
299 @item gnus-subscribe-alphabetically
300 @vindex gnus-subscribe-alphabetically
301 Subscribe all new groups alphabetically.
302
303 @item gnus-subscribe-hierarchically
304 @vindex gnus-subscribe-hierarchically
305 Subscribe all new groups hierarchially.
306
307 @item gnus-subscribe-interactively
308 @vindex gnus-subscribe-interactively
309 Subscribe new groups interactively.  This means that Gnus will ask
310 you about *all* new groups.
311
312 @item gnus-subscribe-zombies
313 @vindex gnus-subscribe-zombies
314 Make all new groups zombies.  You can browse the zombies later and
315 either kill them off properly or subscribe to them.  This is the
316 default. 
317
318 @end table
319
320 @vindex gnus-subscribe-hierarchical-interactive
321 A closely related variable is
322 @code{gnus-subscribe-hierarchical-interactive}. (That's quite a
323 mouthful.)  If this variable is non-nil, Gnus will ask you in a
324 hierarchial fashion whether to subscribe to new groups or not.  Gnus
325 will ask you for each sub-hierarchy whether you want to descend the
326 hierarchy or not.
327
328 One common way to control which new newsgroups should be subscribed or
329 ignored is to put an @dfn{options} line at the start of the
330 @file{.newsrc} file. Here's an example:
331
332 @example
333 options -n !alt.all !rec.all sci.all
334 @end example
335
336 @vindex gnus-subscribe-options-newsgroup-method
337 This line obviously belongs to a serious-minded intellectual scientific
338 person (or she may just be plain old boring), because it says that all
339 groups that have names beginning with @samp{alt} and @samp{rec} should
340 be ignored, and all groups with names beginning with @samp{sci} should
341 be subscribed. Gnus doesn't use the normal subscription method for
342 subscribing these groups. @code{gnus-subscribe-options-newsgroup-method}
343 is used instead. This variable defaults to
344 @code{gnus-subscribe-alphabetically}. 
345
346 @vindex gnus-check-new-newsgroups
347 If you are satisfied that you never really want to see any new
348 groups, you could set @code{gnus-check-new-newsgroups} to
349 nil.  This will also save you some time at startup.  Even if this
350 variable is nil, you can always subscribe to the new groups
351 by just pressing @kbd{U} in the @dfn{group buffer}.
352
353 If @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask
354 the server for new groups since last time it asked instead of
355 determining what groups are new by comparing active groups with known
356 groups. This is both faster & cheaper. This also means that you can get
357 rid of the list of killed groups altogether, so you may set
358 @code{gnus-save-killed-list} to nil, which will save time both at
359 startup, at exit, and all over. Saves disk space, too. The only problem
360 with this method is that not all servers support this functionality.
361
362 @node Startup Files
363 @section Startup Files
364
365 Now, you all know about the @file{.newsrc} files.  All information about
366 what groups you read is traditionally stored in this file, which has
367 a rather rigid structure.
368
369 Things got a bit more complicated with GNUS.  In addition to keeping the
370 @file{.newsrc} file updated, it also used a file called @file{.newsrc.el} for
371 storing all the information that didn't fit into the @file{.newsrc}
372 file.  (Actually, it duplicated everything in the @file{.newsrc} file.)
373 GNUS would read whichever one of these files that were the most recently
374 saved, which enabled people to swap between GNUS and other newsreaders.
375
376 That was kinda silly, so (ding) Gnus went one better: In addition to the
377 @file{.newsrc} and @file{.newsrc.el} files, (ding) Gnus also has a file
378 called @file{.newsrc.eld}.  It will read whichever of these files that
379 are most recent, but it will never write a @file{.newsrc.el} file. 
380
381 @vindex gnus-save-newsrc-file
382 You can also turn off writing @file{.newsrc} by setting
383 @code{gnus-save-newsrc-file} to nil, which means you can delete
384 the file and save some space, as well as some time when quitting
385 Gnus.  However, that will make it impossible to use other newsreaders
386 than (ding) Gnus.  But hey, who would want to, right? 
387
388 @vindex gnus-save-killed-list
389 If @code{gnus-save-killed-list} is nil, Gnus will not save the list of
390 killed groups to the startup file.  This will save both time (when
391 starting and quitting) and space (on disk).  It will also means that
392 Gnus has no record of what groups are new or old, so the automatic new
393 groups subscription methods become meaningless.  You should always set
394 @code{gnus-check-new-newsgroups} to nil if you set this variable to nil.
395
396 @vindex gnus-startup-file
397 The @code{gnus-startup-file} variable says where the startup files are.
398 The default value is @file{"~/.newsrc"}, with the Gnus (El Dingo)
399 startup file being whatever that one is with a @samp{".eld"} appended.
400
401 @vindex gnus-save-newsrc-hook
402 @code{gnus-save-newsrc-hook} is called before saving the @file{.newsrc}
403 file. 
404
405 @node Auto Save
406 @section Auto Save
407
408 Whenever you do something that changes the Gnus data (reading articles,
409 cathing up, killing/subscribing to groups,) the change is added to a
410 special @dfn{dribble} buffer.  This buffer is auto-saved the normal
411 Emacs way.
412
413 If Gnus detects this file at startup, it will ask the user whether to
414 read it.
415
416 The auto save file is deleted whenever the real startup file is saved. 
417
418 @node The Active File
419 @section The Active File
420
421 When Gnus starts, or indeed whenever it tries to determine if new
422 articles has arrived, it reads the active file.  This is a file stored
423 on the NNTP server or in the local spool.
424
425 @vindex gnus-ignored-newsgroups
426 Before examining the active file to see what groups are available, Gnus
427 deletes all lines in this file that match
428 @code{gnus-ignored-newsgroups}.  You may even use this variable to make
429 Gnus ignore hierarchies you aren't interested in.
430
431 @vindex gnus-read-active-file
432 The active file can be rather Huge, so if you have a slow network, you
433 can set @code{gnus-read-active-file} to nil to prevent Gnus from reading
434 the entire active file.
435
436 Gnus will try to make do by just getting information on the groups
437 that you actually subscribe to.
438
439 Note that if you subscribe to lots and lots of groups, setting this
440 variable to nil will probabaly make Gnus slower, not faster.
441
442 @node Startup Variables
443 @section Startup Variables
444
445 @table @code
446 @item gnus-check-bogus-newsgroups
447 @vindex gnus-check-bogus-newsgroups
448 If non-nil, Gnus will check for and delete all bogus groups at
449 startup.  A @dfn{bogus group} is a group that you have in you
450 @file{.newsrc} file, but doesn't exist on the news server.  Checking for
451 bogus groups isn't very quick, so to save time and resources, it's
452 best to leave this option off, and instead do the checking for bogus
453 groups once in a while from the group buffer.
454 @item gnus-inhibit-startup-message
455 @vindex gnus-inhibit-startup-message
456 If non-nil, the startup message won't be displayed.  That way, nobody will
457 notice thay you are reading news instead of doing your job.
458 @end table
459
460 @node The Group Buffer
461 @chapter The Group Buffer
462
463 The @dfn{group buffer} lists all (or parts) of the available
464 groups and displays various information regarding these groups. 
465 It is the first buffer displayed when Gnus starts.
466
467 @menu
468 * Group Buffer Format::    Information listed and how you can change it.
469 * Group Manouvering::      Commands for moving in the group buffer.
470 * Selecting a Group::      Actually reading news.
471 * Group Subscribing::      Unsubscribing, killing, subscribing.
472 * Group Levels::           Levels? What are those, then?
473 * Foreign Groups::         How to create foreign groups.
474 * Listing Groups::         Gnus can list various classes of groups.
475 * Group Maintenance::      Maintaining a tidy @file{.newsrc} file.
476 * Browse Foreign Server::  You can browse a server.  See what if has to offer.
477 * Exiting Gnus::           Stop reading news and get some work done.
478 * Misc Group Stuff::       Other stuff that you can to do.
479 @end menu
480
481 @node Group Buffer Format
482 @section Group Buffer Format
483
484 The default format of the group buffer is nice and dull, but you can
485 make it as exciting and ugly as you feel like.
486
487 Here's a couple of example group lines:
488
489 @example
490      25: news.announce.newusers
491  *    0: alt.fan.andrea-dworkin
492 @end example
493
494 Quite simple, huh?
495
496 Those lines mean that there are 25 unread articles in
497 @samp{news.announce.newusers} and no unread articles, but some ticked
498 articles in @samp{alt.fan.andrea-dworkin} (see that little asterisk at
499 the beginning of the line?)
500
501 @vindex gnus-group-line-format
502 You can fuck that up to your heart's delight by fiddling with the
503 @code{gnus-group-line-format} variable.  This variable works along the
504 lines of a @code{format} specification, which is pretty much the same as
505 a @code{printf} specifications, for those of you who use (feh!) C.
506
507 One extension is that specifications like @samp{%7,12s} is allowed,
508 which means that the field will be at least 7 characters long, and no
509 more that 12 characters long.
510
511 The default value that produced those lines above is 
512 @samp{"%M%S%5y: %g\n"}.
513
514 There should always be a colon on the line; the cursor is always moved
515 to the colon.  Nothing else is required - not even the group name. 
516
517 Here's a list of all available format characters:
518
519 @table @samp
520 @item M    
521 Only marked articles
522 @item S
523 Whether the group is subscribed 
524 @item L    
525 Level of subscribedness 
526 @item N
527 Number of unread articles
528 @item I
529 Number of dormant articles
530 @item T
531 Number of ticked articles
532 @item R
533 Number of read articles
534 @item t
535 Total number of articles
536 @item y
537 Number of unread, unticked, non-dormant articles
538 @item i
539 Number of ticked and dormant articles
540 @item g
541 Full group name
542 @item G
543 Group name 
544 @item D
545 Newsgroup description
546 @item o
547 Moderated
548 @item O
549 Moderated
550 @item s
551 Select method 
552 @item n
553 Select from where
554 @item z
555 A string that look like @samp{<%s:%n>} if a foreign select method is
556 used. 
557 @end table
558
559 @vindex gnus-group-mode-line-format
560 The mode line can also be changed (@code{gnus-group-mode-line-format}).
561 It does not understand that many format specifiers:
562
563 @table @samp
564 @item S
565 Default news server
566 @item M
567 Default select method
568 @end table
569
570 @node Group Manouvering
571 @section Group Manouvering
572
573 All movement commands understand the numeric prefix and will behave as
574 expected, hopefully. 
575
576 @table @kbd
577 @item n
578 @kindex n (Group)
579 @findex gnus-group-next-unread-group
580 Go to the next group with unread articles
581 (@code{gnus-group-next-unread-group}). 
582 @item p, DEL
583 @kindex DEL (Group)
584 @kindex p (Group)
585 @findex gnus-group-prev-unread-group
586 Go to the previous group group with unread articles
587 (@code{gnus-group-prev-unread-group}). 
588 @item N
589 @kindex N (Group)
590 @findex gnus-group-next-group
591 Go to the next group (@code{gnus-group-next-group}).
592 @item P
593 @kindex P (Group)
594 @findex gnus-group-prev-group
595 Go to the previous group (@code{gnus-group-prev-group}).
596 @item M-p
597 @kindex M-p (Group)
598 @findex gnus-group-next-unread-group-same-level
599 Go to the next unread group on the same level (or lower)
600 (@code{gnus-group-next-unread-group-same-level}). 
601 @item M-n
602 @kindex M-n (Group)
603 @findex gnus-group-prev-unread-group-same-level
604 Go to the previous unread group on the same level (or lower)
605 (@code{gnus-group-prev-unread-group-same-level}). 
606 @item j
607 @kindex j (Group)
608 @findex gnus-group-jump-to-group
609 Jump to a group (and make it visible if it isn't already)
610 (@code{gnus-group-jump-to-group}). 
611 @end table
612
613 @node Selecting a Group
614 @section Selecting a Group
615
616 @table @kbd
617 @item SPACE
618 @kindex SPACE (Group)
619 @findex gnus-group-read-group
620 Select the current group, switch to the summary buffer and display
621 the first unread article in the group
622 (@code{gnus-group-read-group}).  If there are no unread articles in the
623 group, or if you give a prefix to this command, Gnus will offer to
624 fetch all the old articles in this group from the server.
625 server. 
626 @item RET
627 @kindex RET (Group)
628 @findex gnus-group-select-group
629 Select the current group and switch to the summary buffer
630 (@code{gnus-group-select-group}). 
631 @item c
632 @kindex c (Group)
633 @findex gnus-group-catchup-current
634 Mark all unticked articles in this group as read
635 (@code{gnus-group-catchup-current}). 
636 @item C
637 @kindex C (Group)
638 @findex gnus-group-catchup-current-all
639 Mark all articles in this group, even the ticked ones, as read
640 (@code{gnus-group-catchup-current-all}). 
641 @end table
642
643 @vindex gnus-large-newsgroup
644 The @code{gnus-large-newsgroup} variable says what Gnus considers to be
645 a "big" group.  If the group is big, Gnus will query the user before
646 entering the group.  The user can then specify how many articles should
647 be fetched from the server.  If the user specifies a negative number
648 (@samp{-n}), the @samp{n} oldest articles will be fetched.  If it is
649 positive, the @samp{n} articles that have arrived most recently will be
650 fetched.
651
652 @vindex gnus-auto-select-newsgroup
653 If @code{gnus-auto-select-newsgroup} is non-nil, the first unread
654 article in the group will be displayed when you enter the group.  If you
655 want to prevent automatic selection in some group (say, in a binary
656 group with Huge articles) you can set this variable to nil in
657 `gnus-select-group-hook', which is called when a group is selected.
658 This hook is also popularly used for sorting headers before generating
659 the summary buffer.
660
661 @node Group Subscribing
662 @section Group Subscribing
663
664 @table @kbd
665 @item u
666 @kindex u (Group)
667 @findex gnus-group-unsubscribe-current-group
668 Unsubscribe the current group, or, if it was unsubscribed already,
669 subscribe it (@code{gnus-group-unsubscribe-current-group}). 
670 @item U
671 @kindex U (Group)
672 @findex gnus-group-unsubscribe-group
673 Ask the user for a group to unsubscribe, and then unsubscribe it.  If
674 it was unsubscribed already, subscribe it instead
675 (@code{gnus-group-unsubscribe-group}). 
676 @item C-k
677 @kindex C-k (Group)
678 @findex gnus-group-kill-group
679 Kill the current group (@code{gnus-group-kill-group}).
680 @item C-y
681 @kindex C-y (Group)
682 @findex gnus-group-yank-group
683 Yank the last killed group (@code{gnus-group-yank-group}).
684 @item C-w
685 @kindex C-w (Group)
686 @findex gnus-group-kill-region
687 Kill all groups in the region (@code{gnus-group-kill-region}). 
688 @item M-z
689 @kindex M-z (Group)
690 @findex gnus-group-kill-all-zombies
691 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
692 @end table
693
694 @node Group Levels
695 @section Group Levels
696
697 All groups have a level of "subscribedness".  For instance, if a
698 group is on level 2, it is "more" subscribed than a group on
699 level 5.  You can ask Gnus to just list groups on a given level and
700 lower, or to just check new articles in groups on a given level and
701 lower, etc. 
702
703 @table @kbd
704 @item S
705 @kindex S (Group)
706 @findex gnus-group-set-current-level
707 Set the level of the current group depending on the numeric
708 prefix.  For instance, @kbd{3 s} will set the level of the current
709 group to three (@code{gnus-group-set-current-level}).
710 @end table
711
712 Gnus considers groups on levels 1-5 to be subscribed, 6-7 to be
713 unsubscribed, 8 to be zombies (walking dead) and 9 to be killed,
714 completely dead.  Gnus treats subscribed and unsubscribed groups exactly
715 the same, but zombie and killed groups have no information on what
716 articles you have read, etc, stored.
717
718 It is recommended that you keep all your "ordinary" groups on level 3 or
719 higher, and keep your mail groups (if any) on level 1 or 2.
720
721 @vindex gnus-keep-same-level
722 If @code{gnus-keep-same-level} is non-nil, some movement commands will
723 only move to groups that are of the same level (or lower).  In
724 particular, going from the last article in one group to the next group
725 will go to the next group of the same level (or lower).  This might be
726 handy if you want to read the most important groups before you read the
727 rest.
728
729 @node Foreign Groups
730 @section Foreign Groups
731
732 A @dfn{foreign group} is a group that is not read by the usual (or
733 default) means.  It could be, for instance, a group from a different
734 NNTP server, it could be a virtual group or it could be your own
735 personal mail group.
736
737 @table @kbd
738 @item M-a
739 @kindex M-a (Group)
740 @findex gnus-group-add-group
741 Add a new group.  Gnus will prompt you for a name, a method and an
742 "address" (@code{gnus-group-add-group}).
743 @item M-e
744 @kindex M-e (Group)
745 @findex gnus-group-edit-group
746 Edit a group entry.  Gnus will pop up a new buffer where you can edit
747 the entry (@code{gnus-group-edit-group}).
748 @end table
749
750 The different methods all have their peculiarities, of course.
751
752 @menu
753 * nntp::           Reading news from a different NNTP server.
754 * nnspool::        Reading news from the local spool.
755 * nnvirtual::      Combining articles from many groups.
756 * nndir::          You can read a directory as if it were a newsgroup.
757 * Mail::           Reading your personal mail with Gnus.
758 @end menu
759
760 @vindex gnus-activate-foreign-newsgroups
761 If the @code{gnus-activate-foreign-newsgroups} is a positive number,
762 Gnus will check all foreign groups with this level or lower at startup.
763 This might take quite a while, especially if you subscribe to lots of
764 groups from different NNTP servers.  It is nil by default, which means
765 that you won't be told whether there are new articles in these groups.
766 How many unread articles there are will be determined when, or if, you
767 decide to enter them.
768
769 @node nntp
770 @subsection nntp
771
772 Subscribing to a foreign group from an NNTP server is rather easy.  You
773 just specify @code{nntp} as method and the address of the NNTP server as
774 the, uhm, address.
775
776 The name of the foreign group can be the same as a native group.  In
777 fact, you can subscribe to the same group from as many different servers
778 you feel like. There will be no name collisions.
779
780 @node nnspool
781 @subsection nnspool
782
783 Subscribing to a foreign group from the local spool is extremely easy,
784 and might be useful, for instance, to speed up reading binaries groups. 
785
786 Anyways, you just specify @code{nnspool} as the method and @samp{""} as
787 the address.
788
789 @node nnvirtual
790 @subsection nnvirtual
791
792 A @dfn{virtual group} is really nothing more than a collection of
793 other groups. 
794
795 You specify @code{nnvirtual} as the method and a regular expression that
796 says which groups that you wish to have in this one as the address. 
797
798 For instance, if you are tired of reading many small group, you can
799 put them all in one big group, and then grow tired of reading one
800 big, unwieldy group.  The joys of computing!
801
802 @example
803 "^alt\\.fan\\.andrea-dworkin$\\|rec\\.dworkin.*"
804 @end example
805
806 These groups can be native or foreign; everything should work smoothly,
807 but if your computer explodes, it was probably my fault.  (Including
808 other virtual groups in this one will probably confuse Gnus, so don't do
809 that.)
810
811 One limitation, however - all groups that are included in a virtual
812 group has to be alive (ie. subscribed or unsubscribed).  In fact, if you
813 include a group in a virtual group, and it was killed, it will be
814 subscribed automagically.
815
816 @node nndir
817 @subsection nndir
818
819 If you have a directory that has lots of articles in separate files in
820 it, you might treat it as a newsgroup. The files have to have numerical
821 names, of course.
822
823 This situation is kinda special, so there's a shortcut for creating
824 these "groups": @kbd{d} (@code{gnus-group-make-directory-group}) in the
825 group buffer. You will be prompted for a directory to read.
826
827 @node Mail
828 @subsection Mail
829
830 Reading mail with a newsreader - isn't that just plain WeIrD? But of
831 course.
832
833 @menu
834 * Creating Mail Groups::         How to create mail groups (duh).
835 * Expiring Old Mail Articles::   Getting rid of unwanted mail.
836 @end menu
837
838 Gnus will read the mail spool when you activate a mail group.  The mail
839 file is first copied to your home directory.  What happens after that
840 depends on what format you want to store you mail in.
841
842 @menu
843 * nnmbox::    Using the quite standard Un*x mbox.
844 * nnrmail::   Many Emacs programs use the rmail babyl format.
845 * nnml::      Store your mail in a private spool?
846 * nnmh::      An mhspool-like backend useful for procmail people.
847 @end menu
848
849 @vindex nnmail-read-incoming-hook
850 The mail backends all call @code{nnmail-read-incoming-hook} after
851 reading new mail.  You can use this hook to notify any mail watch
852 programs, if you want to.
853
854 Gnus gives you all the opportunity you want for shooting yourself in
855 your foot.  Let's say you create a group that will contain all the mail
856 you get from your boss.  And then you accidentally unsubscribe from the
857 group.  Gnus will still put all the mail from your boss in the
858 unsubscribed group, and so, when your boss mails you "Have that report
859 ready by Monday or you're fired!", you'll never see it and, come
860 Tuesday, you'll still believe that you're gainfully unemplyed while you
861 really should be out collecting empty bottles to save up for next
862 month's rent money.
863
864 @node Creating Mail Groups
865 @subsubsection Creating Mail Groups
866
867 You can make Gnus read your personal, private, secret mail.
868
869 You should first set @code{gnus-secondary-select-methods} to, for
870 instance, @code{((nnmbox ""))}. When you start up Gnus, Gnus will ask
871 this backend for what groups it has (@samp{mail.misc} by default) and
872 subscribe it the normal way. (Which means you may have to look for it
873 among the zombie groups, I guess, all depending on your
874 @code{gnus-subscribe-newsgroup-method} variable.)
875
876 @vindex nnmail-split-methods
877 The you should set the variable @code{nnmail-split-methods} to specify
878 how the incoming mail is to be split into groups.
879
880 @example
881 (setq nnmail-split-methods
882   '(("mail.junk" "^From:.*Lars Ingebrigtsen")
883     ("mail.crazzy" "^Subject:.*die\\|^Organization:.*flabby")
884     ("mail.other" "")))
885 @end example
886
887 This variable is a list of lists, where the first element of each of
888 these lists contain the name of the mail group (they do not have to be
889 called something beginning with @samp{"mail"}, by the way), and the
890 second element is a regular expression used on the header of each mail
891 to determine if it belongs in this mail group.
892
893 The last of these groups should always be a general one, and the regular
894 expression should *always* be @samp{""} so that it matches all mails.
895
896 @node Expiring Old Mail Articles
897 @subsubsection Expiring Old Mail Articles
898
899 Traditional mail readers have a tendency to remove mail articles when
900 you mark them as read, in some way.  Gnus takes a fundamentally
901 different approach to mail reading.
902
903 Gnus basically considers mail just to be news that has been received in
904 a rather peculiar manner.  It does not think that it has the power to
905 actually change the mail, or delete any mail messages.  If you enter a
906 mail group, and mark articles as "read", or kill them in some other
907 fashion, the mail articles will still exist on the system.  I repeat:
908 Gnus will not delete your old, read mail.  Unless you ask it to, of
909 course.
910
911 To make Gnus get rid of your unwanted mail, you have to mark the
912 articles as @dfn{expirable}.  This does not mean that the articles will
913 disappear right away, however.  In general, a mail article will be
914 deleted from your system if, 1) it is marked as expirable, AND 2) it is
915 more than one week old.  If you do not mark an article as expirable, it
916 will remain on your system until hell freezes over. This bears repeating
917 one more time, with some spurious capitalization: IF you do NOT mark
918 articles as EXPIRABLE, Gnus will NEVER delete those ARTICLES.
919
920 @vindex gnus-auto-expirable-newsgroups
921 You do not have to mark articles as expirable by hand.  Groups that
922 match the regular expression @code{gnus-auto-expirable-newsgroups} will
923 have all articles that you read marked as expirable automatically.  All
924 articles that are marked as expirable have an @samp{X} in the third
925 column in the summary buffer.
926
927 Let's say you subscribe to a couple of mailing lists, and you want the
928 articles you have read to disappear after a while:
929
930 @example
931 (setq gnus-auto-expirable-newsgroups 
932       "^mail.nonsense-list\\|^mail.nice-list")
933 @end example
934
935 @vindex nnmail-expiry-wait
936 The @code{nnmail-expiry-wait} variable supplies the default time an
937 expirable article has to live.  The default is seven days.
938
939 Gnus also supplies a function that lets you fine-tune how long articles
940 are to live, based on what group they are in.  Let's say you want to
941 have one month expiry period in the @samp{mail.private} group, a one day
942 expiry period in the @samp{mail.junk} group, and a six day expiry period
943 everywhere else:
944
945 @example
946 (setq nnmail-expiry-wait-function
947       '(lambda (group)
948         (cond ((string= group "mail.private")
949                 31)
950               ((string= group "mail.junk")
951                 1)
952               (t
953                 6))))
954 @end example
955
956 @node nnmbox
957 @subsubsection nnmbox
958
959 @vindex nnmbox-active-file
960 @vindex nnmbox-mbox-file
961 The @dfn{nnmbox} backend will use the standard Un*x mbox file to store
962 mail.  The path of the mbox file is given by the @code{nnmbox-mbox-file}
963 variable.  In addition, Gnus needs to store information about active
964 articles.  The file specified by @code{nnmbox-active-file} will be used
965 for that.
966
967 @node nnrmail
968 @subsubsection nnrmail
969
970 @vindex nnrmail-active-file
971 @vindex nnrmail-mbox-file
972 The @dfn{nnrmail} backend will use a babyl mail box to store mail.  The
973 path of the rmail mail box file is given by the @code{nnrmail-mbox-file}
974 variable.  In addition, Gnus needs to store information about active
975 articles.  The file specified by @code{nnrmail-active-file} will be used
976 for that.
977
978 @node nnml
979 @subsubsection nnml
980
981 The spool mail format (@code{nnml}) isn't compatible with any other
982 known format.  It should be used with some caution.
983
984 @vindex nnml-directory
985 If you use this backend, Gnus will split all incoming mail into files;
986 one file for each mail, and put the articles into the correct
987 directories under the directory specified by the @code{nnml-directory}
988 variable.  The default value is @samp{"~/Mail/"}.
989
990 You do not have to create any directories beforehand; Gnus will take
991 care of all that.
992
993 If you have a strict limit as to how many files you are allowed to store
994 in your account, you should not use this backend.  As each mail gets its
995 own file, you might very well occupy thousands of inodes within a few
996 weeks.  If this is no problem for you, and it isn't a problem for you
997 having your friendly systems administrator walking around, madly,
998 shouting "Who is eating all my inodes?! Who? Who!?!", then you should
999 know that this is probably the fastest format to use.  You do not have
1000 to trudge through a big mbox file just to read your new mail.
1001
1002 @code{nnml} is probably the slowest backend when it comes to article
1003 splitting. It has to create lots of files, and it also generates NOV
1004 databases for the incoming mails. This makes is the fastest backend when
1005 it comes to reading mail.
1006
1007 @node nnmh
1008 @subsubsection nnmh
1009
1010 @code{nnmh} is just like @code{nnml}, except that is doesn't generate
1011 NOV databases and it doesn't keep an active file. This makes @code{nnmh}
1012 a *much* slower backend than @code{nnml}, but it also makes it easier to
1013 write procmail scripts for.
1014
1015 @node Listing Groups
1016 @section Listing Groups
1017
1018 @table @kbd
1019 @item l
1020 @kindex l (Group)
1021 @findex gnus-group-list-groups
1022 List all subscribed groups that have unread articles
1023 (@code{gnus-group-list-groups}).  If the numeric prefix is used, this
1024 command will list only groups of level ARG and lower.  By default, it
1025 only lists groups of level five or lower (ie. just subscribed groups).
1026 @item L
1027 @kindex L (Group)
1028 @findex gnus-group-list-all-groups
1029 List all subscribed and unsubscribed groups, whether they have unread
1030 articles or not (@code{gnus-group-list-all-groups}).  If the numeric
1031 prefix is used, this command will list only groups of level ARG and
1032 lower.  By default, it lists groups of level seven or lower (ie. just
1033 subscribed and unsubscribed groups).
1034 @item C-c C-k
1035 @kindex C-c C-k (Group)
1036 @findex gnus-group-list-killed
1037 List all killed groups (@code{gnus-group-list-killed}).
1038 @item C-c C-z
1039 @kindex C-c C-z (Group)
1040 @findex gnus-group-list-zombies
1041 List all zombie groups (@code{gnus-group-list-zombies}).
1042 @end table
1043
1044 @node Group Maintenance
1045 @section Group Maintenance
1046
1047 @table @kbd
1048 @item b
1049 @kindex b (Group)
1050 @findex gnus-group-check-bogus-groups
1051 Check bogus groups and delete them
1052 (@code{gnus-group-check-bogus-groups}).
1053 @item F
1054 @kindex F (Group)
1055 @findex gnus-find-new-newsgroups
1056 Find new groups (@code{gnus-find-new-newsgroups}).
1057 @item C-c C-x
1058 @kindex C-c C-x (Group)
1059 @findex gnus-group-expire-articles
1060 Run all expirable articles in the current group through the expiry
1061 process (if any) (@code{gnus-group-expire-articles}).
1062 @item C-c M-C-x
1063 @kindex C-c M-C-x (Group)
1064 @findex gnus-group-expire-all-groups
1065 Run all articles in all groups through the expiry process
1066 (@code{gnus-group-expire-all-groups}).
1067 @end table
1068
1069 @node Browse Foreign Server
1070 @section Browse Foreign Server
1071
1072 @table @kbd
1073 @item B
1074 @kindex B (Group)
1075 @findex gnus-group-browse-foreign-server
1076 You will be queried for a select method and a server name.  Gnus will
1077 then attempt to contact this server and let you browse the groups there
1078 (@code{gnus-group-browse-foreign-server}).
1079 @end table
1080
1081 A new buffer with a list of available groups will appear.  This buffer
1082 will be use the @code{gnus-browse-server-mode}.  This buffer looks a bit
1083 (well, a lot) like a normal group buffer, but with one major difference
1084 - you can't enter any of the groups.  If you want to read any of the
1085 news available on that server, you have to subscribe to the groups you
1086 think may be interesting, and then you have to exit this buffer.  The
1087 new groups will be added to the group buffer, and then you can read them
1088 as you would any other group.
1089
1090 Here's a list of keystrokes available in the browse mode:
1091
1092 @table @kbd
1093 @item n
1094 @kindex n (Browse)
1095 @findex gnus-group-next-group
1096 Go to the next group (@code{gnus-group-next-group}).
1097 @item p
1098 @kindex C-p (Browse)
1099 @kindex p (Browse)
1100 @findex gnus-group-prev-group
1101 Go to the previous group (@code{gnus-group-prev-group}).
1102 @item u
1103 @kindex u (Browse)
1104 @findex gnus-browse-unsubscribe-current-group
1105 Unsubscribe to the current group, or, as will be the case here,
1106 subscribe to it (@code{gnus-browse-unsubscribe-current-group}). 
1107 @item q
1108 @kindex q (Browse)
1109 @findex gnus-browse-exit
1110 Exit browse mode (@code{gnus-browse-exit}).
1111 @item ?
1112 @kindex ? (Browse)
1113 @findex gnus-browse-describe-briefly
1114 Describe browse mode briefly (well, there's not much to describe, is
1115 there) (@code{gnus-browse-describe-briefly}).
1116 @end table
1117
1118 @node Exiting Gnus
1119 @section Exiting Gnus
1120
1121 Yes, Gnus is exiting.
1122
1123 @table @kbd
1124 @item z
1125 @kindex z (Group)
1126 @findex gnus-group-suspend
1127 Suspend Gnus (@code{gnus-group-suspend}).
1128 @item q
1129 @kindex q (Group)
1130 @findex gnus-group-exit
1131 Quit Gnus (@code{gnus-group-exit}).
1132 @item Q
1133 @kindex Q (Group)
1134 @findex gnus-group-quit
1135 Quit Gnus without saving any startup files (@code{gnus-group-quit}).
1136 @end table
1137
1138 @vindex gnus-exit-gnus-hook
1139 @vindex gnus-suspend-gnus-hook
1140 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
1141 @code{gnus-exit-gnus-hook} is called when you quit Gnus.
1142
1143 @node Misc Group Stuff
1144 @section Misc Group Stuff
1145
1146 @table @kbd
1147 @item g
1148 @kindex g (Group)
1149 @findex gnus-group-get-new-news
1150 Check server for new articles. 
1151 If the numeric prefix is used, this command will check only groups of
1152 level ARG and lower (@code{gnus-group-get-new-news}).
1153 @item M-g
1154 @kindex M-g (Group)
1155 @findex gnus-group-get-new-news-this-group
1156 Check whether new articles have arrived in the current group
1157 (@code{gnus-group-get-new-news-this-group}).
1158 @item R
1159 @kindex R (Group)
1160 @findex gnus-group-restart
1161 Restart Gnus (@code{gnus-group-restart}).
1162 @item r
1163 @kindex r (Group)
1164 @findex gnus-group-read-init-file
1165 Read the init file (@code{gnus-init-file}, which defaults to
1166 @file{~/.gnus}) (@code{gnus-group-read-init-file}).
1167 @item s
1168 @kindex s (Group)
1169 @findex gnus-group-save-newsrc
1170 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
1171 (@code{gnus-group-save-newsrc}).
1172 @item Z
1173 @kindex Z (Group)
1174 @findex gnus-group-clear-dribble
1175 Clear the dribble buffer (@code{gnus-group-clear-dribble}).
1176 @item D
1177 @kindex D (Group)
1178 @findex gnus-group-describe-group
1179 Give a description of the current group
1180 (@code{gnus-group-describe-group}).
1181 @item C-c C-a
1182 @kindex C-c C-a (Group)
1183 @findex gnus-group-apropos
1184 Give a listing of all groups that have names that match a regexp
1185 (@code{gnus-group-apropos}).
1186 @item C-c M-C-a 
1187 @kindex C-c M-C-a (Group)
1188 @findex gnus-group-description-apropos
1189 Give a listing of all groups that have names or descriptions that match
1190 a regexp (@code{gnus-group-description-apropos}).
1191 @item a
1192 @kindex a (Group)
1193 @findex gnus-group-post-news
1194 Post an article to a group (@code{gnus-group-post-news}).
1195 @item m
1196 @kindex m (Group)
1197 @findex gnus-group-mail
1198 Mail a message somewhere (@code{gnus-group-mail}).
1199 @item C-x C-t
1200 @kindex C-x C-t (Group)
1201 @findex gnus-group-transpose-groups
1202 Transpose two groups (@code{gnus-group-transpose-groups}).
1203 @item V
1204 @kindex V (Group)
1205 @findex gnus-version
1206 Display current Gnus version numbers (@code{gnus-version}).
1207 @item ?
1208 @kindex ? (Group)
1209 @findex gnus-group-describe-briefly
1210 Give a very short help message (@code{gnus-group-describe-briefly}).
1211 @item C-c C-i
1212 @kindex C-c C-i (Group)
1213 @findex gnus-info-find-node
1214 Go to the Gnus info node (@code{gnus-info-find-node}).
1215 @end table
1216
1217 @vindex gnus-group-prepare-hook
1218 @code{gnus-group-prepare-hook} is called after the group list is
1219 created in the Group buffer.  It may be used to modify the group
1220 buffer in some strange, unnatural way.
1221
1222 @node The Summary Buffer
1223 @chapter The Summary Buffer
1224
1225 A line for each article is displayed in the Summay buffer.  You can move
1226 around, read articles, post articles and reply to them.
1227
1228 @menu
1229 * Summary Buffer Format::       Deciding how the summar buffer is to look.
1230 * Summary Manouvering::         Moving around the summary buffer.
1231 * Choosing Articles::           Reading articles.
1232 * Paging the Article::          Scrolling the current article.
1233 * Reply Followup and Post::     Posting articles.
1234 * Cancelling and Superceding::  "Whoops, I shouldn't have called him that."
1235 * Ticking and Marking::         Marking articles as read, expirable, etc.
1236 * Threading::                   How threads are made.
1237 * Exiting the Summary Buffer::  Returning to the Group buffer.
1238 * Saving Articles::             Ways of customizing article saving.
1239 * Decoding Articles::           Gnus can treat series of (uu)encoded articles.
1240 * Various Article Stuff::       Various stuff dealing with articles.
1241 * Summary Sorting::             You can sort the summary buffer four ways.
1242 * Finding the Parent::          No child support? Get the parent.
1243 * Score Files::                 Maintaining a score file.
1244 * Mail Group Commands::         Some commands can only be used in mail groups.
1245 * Various Summary Stuff::       What didn't fit anywhere else.
1246 @end menu
1247
1248 @node Summary Buffer Format
1249 @section Summary Buffer Format
1250
1251 @vindex gnus-summary-line-format
1252 You can change the format of the lines in the summary buffer by changing
1253 the @code{gnus-summary-line-format} variable.  It works along the same
1254 lines a a normal @code{format} string, with some extensions.
1255
1256 The default string is @samp{"%U%R%X%i %I%[%4L: %-20,20n%] %s\n"}.
1257
1258 The following format specification characters are understood:
1259
1260 @table @samp
1261 @item N 
1262 Article number
1263 @item S
1264 Subject string
1265 @item s
1266 Subject if the article is the root, @code{gnus-summary-same-subject}
1267 otherwise. 
1268 @item F
1269 Full From line
1270 @item n
1271 The name (from the @code{From} header field)
1272 @item A
1273 The address (from the @code{From} header field)
1274 @item L
1275 Number of lines in the article
1276 @item c
1277 Number of characters in the article
1278 @item I
1279 Indentation based on thread level
1280 @item T
1281 Nothing if the article is a root and lots of spaces if it isn't (it
1282 pushes everything after it off the screen)
1283 @item \[
1284 Opening bracket, which is normally @samp{\[}, but can also be @samp{<}
1285 for adopted articles.
1286 @item \]
1287 Closing bracked, which is normally @samp{\]}, but can also be @samp{<}
1288 for adopted articles.
1289 @item <
1290 One space for each thread level.
1291 @item >
1292 Twenty minus thread level spaces.
1293 @item U
1294 Unread
1295 @item X
1296 Expirable
1297 @item R
1298 Replied
1299 @item i
1300 Score
1301 @item x
1302 Xref
1303 @item D
1304 Date
1305 @item M
1306 Message-ID
1307 @item r
1308 References
1309 @item x
1310 Xref
1311 @end table
1312
1313 No elements are required, except the @samp{%U}, @samp{%R}, @samp{%X} and
1314 @samp{%i} fields which have to be at the beginning of the line for
1315 reasons of efficiency.  If you try to remove those, or change them,
1316 you'll probably end up with a mess, at least in this version of Gnus.
1317
1318 @vindex gnus-summary-mode-line-format
1319 You can also change the format of the summary mode bar.  Set
1320 @code{gnus-summary-mode-line-format} to whatever you like.  Here's what
1321 elements you have to play with:
1322
1323 @table @samp
1324 @item G
1325 Group name
1326 @item A
1327 Current article number
1328 @item V
1329 Gnus version
1330 @item U
1331 Number of unread articles in this group
1332 @item u
1333 Number of unselected articles in this group
1334 @item Z
1335 A string with the number of unread and unselected articles represented
1336 either as @samp{<%U(+%u) more>} if there are both unselected articles,
1337 and just as @samp{<%U more>} if there are just unread articles and no
1338 unselected ones.
1339 @end table
1340
1341 @node Summary Manouvering
1342 @section Summary Manouvering
1343
1344 All the straight movement commands understand the numeric prefix and
1345 behave pretty much as you'd expect. 
1346
1347 None of these commands select articles.
1348
1349 @table @kbd
1350 @item down
1351 @kindex down (Summary)
1352 @findex gnus-summary-next-subject
1353 Go to the next subject line (@code{gnus-summary-next-subject}).
1354 @item up
1355 @kindex up (Summary)
1356 @findex gnus-summary-prev-subject
1357 Go to the previous subject line (@code{gnus-summary-prev-subject}).
1358 @item M-n
1359 @kindex M-n (Summary)
1360 @findex gnus-summary-next-unread-subject
1361 Go to the next summary line of an unread article
1362 (@code{gnus-summary-next-unread-subject}). 
1363 @item M-p
1364 @kindex M-p (Summary)
1365 @findex gnus-summary-prev-unread-subject
1366 Go to the previous summary line of an unread article
1367 (@code{gnus-summary-prev-unread-subject}). 
1368 @item j
1369 @kindex j (Summary)
1370 @findex gnus-summary-goto-subject
1371 Ask for an article number and then go to this summary line
1372 (@code{gnus-summary-goto-subject}). 
1373 @item l
1374 @kindex l (Summary)
1375 @findex gnus-summary-goto-last-article
1376 Go to the summary line of the previous article
1377 (@code{gnus-summary-goto-last-article}).
1378 @end table
1379
1380 @vindex gnus-auto-select-next
1381 If you are at the end of the group and issue one of the movement
1382 commands, Gnus will offer to go to the next group.  If
1383 @code{gnus-auto-select-next} is t and the next group is empty, Gnus
1384 will exit summary mode and return to the group buffer.  If this
1385 variable is neither t nor nil, Gnus will select the next group, no
1386 matter if it has any unread articles or not.  As a special case, if this
1387 variable equals @code{quietly}, Gnus will select the next group
1388 without asking for confirmation.  Also see @code{gnus-keep-same-level}. 
1389
1390 @vindex gnus-auto-center-summary
1391 If @code{gnus-auto-center-summary} is non-nil, Gnus will keep the point
1392 in the summary buffer centered at all times.  This makes things quite
1393 tidy, but if you have a slow network connection, or do simply not like
1394 this un-Emacsism, you can set this variable to nil to get the normal
1395 Emacs scrolling action.
1396
1397 @node Choosing Articles
1398 @section Choosing Articles
1399
1400 All the movement commands understand the numeric prefix.
1401
1402 All the following commands select an article.
1403
1404 @table @kbd
1405 @item SPACE
1406 @kindex SPACE (Summary)
1407 @findex gnus-summary-next-page
1408 Select the current article, or, if that one's read already, the next
1409 unread article (@code{gnus-summary-next-page}).
1410 @item n
1411 @kindex n (Summary)
1412 @findex gnus-summary-next-unread-article
1413 Go to next unread article (@code{gnus-summary-next-unread-article}).
1414 @item p
1415 @kindex p (Summary)
1416 @findex gnus-summary-prev-unread-article
1417 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
1418 @item N
1419 @kindex N (Summary)
1420 @findex gnus-summary-next-article
1421 Go to the next article (@code{gnus-summary-next-article}).
1422 @item P
1423 @kindex P (Summary)
1424 @findex gnus-summary-prev-article
1425 Go to the previous article (@code{gnus-summary-prev-article}).
1426 @item M-C-n
1427 @kindex M-C-n (Summary)
1428 @findex gnus-summary-next-same-subject
1429 Go to the next article with the same subject
1430 (@code{gnus-summary-next-same-subject}). 
1431 @item M-C-p
1432 @kindex M-C-p (Summary)
1433 @findex gnus-summary-prev-same-subject
1434 Go to the previous article with the same subject
1435 (@code{gnus-summary-prev-same-subject}). 
1436 @item .
1437 @kindex . (Summary)
1438 @findex gnus-summary-first-unread-article
1439 Go to the first unread article (@code{gnus-summary-first-unread-article}).
1440 @end table
1441
1442 @vindex gnus-auto-extend-newsgroup
1443 All the movement commands will try to go to the previous (or next)
1444 article, even if that article isn't displayed in the Summary buffer if
1445 @code{gnus-auto-extend-newsgroup} is non-nil.  Gnus will fetch the
1446 article from the server and present it in the article buffer.
1447
1448 @vindex gnus-select-article-hook
1449 @code{gnus-select-article-hook} is called whenever an article is
1450 selected.  By default it makes any threads hidden under the current
1451 article visible.
1452
1453 @vindex gnus-mark-article-hook
1454 @code{gnus-mark-article-hook} is called when an article is selected for
1455 the first time.  It is intended to be used for marking articles as read
1456 automatically when articles are selected.
1457
1458 @node Paging the Article
1459 @section Scrolling the Article
1460
1461 @table @kbd
1462 @item SPACE
1463 @kindex SPACE (Summary)
1464 @findex gnus-summary-next-page
1465 Pressing @kbd{SPACE} will scroll the current article forward one page,
1466 or, if you have come to the end of the current article, will choose the
1467 next article (@code{gnus-summary-next-page}).
1468 @item DEL
1469 @kindex DEL (Summary)
1470 @findex gnus-summary-prev-page
1471 Scoll the current article back one page (@code{gnus-summary-prev-page}). 
1472 @item RET
1473 @kindex RET (Summary)
1474 @findex gnus-summary-scroll-up
1475 Scroll the current article one line forward
1476 (@code{gnus-summary-scroll-up}).
1477 @item <
1478 @kindex < (Summary)
1479 @findex gnus-summary-beginning-of-article
1480 Scroll to the beginning of the article
1481 (@code{gnus-summary-beginning-of-article}).
1482 @item >
1483 @kindex > (Summary)
1484 @findex gnus-summary-end-of-article
1485 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
1486 @end table
1487
1488 @node Reply Followup and Post
1489 @section Reply Followup and Post
1490
1491 @kindex C-c C-c (Post)
1492 All the commands for posting and mailing will put you in a post or mail
1493 buffer where you can edit the article all you like, before you send the
1494 article by pressing @kbd{C-c C-c}.
1495
1496 @table @kbd
1497 @item a
1498 @kindex a (Summary)
1499 @findex gnus-summary-post-news
1500 Post an article to the current group
1501 (@code{gnus-summary-post-news}).
1502 @item f
1503 @kindex f (Summary)
1504 @findex gnus-summary-followup
1505 Post a followup to the current article (@code{gnus-summary-followup}).
1506 @item F
1507 @kindex F (Summary)
1508 @findex gnus-summary-followup-with-original
1509 Post a followup to the current article and include the original message
1510 (@code{gnus-summary-followup-with-original}). 
1511 @item r
1512 @kindex r (Summary)
1513 @findex gnus-summary-reply
1514 Mail a reply to the author of the current article
1515 (@code{gnus-summary-reply}). 
1516 @item R
1517 @kindex R (Summary)
1518 @findex gnus-summary-reply-with-original
1519 Mail a reply to the author of the current article and include the
1520 original message (@code{gnus-summary-reply-with-original}).
1521 @item C-c C-f
1522 @kindex C-c C-f (Summary)
1523 @findex gnus-summary-mail-forward
1524 Forward the current article to some other person
1525 (@code{gnus-summary-mail-forward}). 
1526 @item m
1527 @kindex m (Summary)
1528 @findex gnus-summary-mail-other-window
1529 Send a mail to some other person
1530 (@code{gnus-summary-mail-other-window}). 
1531 @end table
1532
1533 @vindex gnus-required-headers
1534 Gnus determines which headers it should generate in outgoing posts by
1535 consulting the @code{gnus-required-headers} variable.  This is a list of
1536 headers that Gnus makes sure is present in all outgoing posts before it
1537 tries to post them.
1538
1539 @vindex gnus-followup-to-function
1540 @vindex gnus-reply-to-function
1541 Gnus uses the normal methods to determine where replys and follow-ups
1542 are to go, but you can change the behaviour to suit your need by
1543 fiddling with the @code{gnus-reply-to-function} and
1544 @code{gnus-followup-to-function} variables.
1545
1546 To take "reply" as an example: If you want the replies to go to the
1547 "sender" instead of the "from" in the group "mail.stupid-list", you
1548 could do something like this:
1549
1550 @example
1551 (setq gnus-reply-to-function
1552       '(lambda (group)
1553         (cond ((string= group "mail.stupid-list")
1554                 (mail-fetch-field "sender"))
1555               (t
1556                nil))))
1557 @end example
1558
1559 These functions will be called with point in the buffer of the article
1560 that is being replied to (or followed up).
1561
1562 @vindex mail-signature
1563 @vindex gnus-signature-file
1564 If @code{gnus-signature-file} is non-nil, it should be the name of a
1565 file containing a signature (@samp{~/.signature} by default).  This
1566 signature will be appended to all outgoing post.  Most people find it
1567 more convenient to use @code{mail-signature}, which does the same, but
1568 inserts the signature into the buffer before you start editing the post
1569 (or mail).  So - if you have both of these variables set, you will get
1570 two signatures.
1571
1572 @vindex gnus-post-prepare-function
1573 In any case, @code{gnus-post-prepare-function} is called with the name
1574 of the current group after the post buffer has been initialized, and can
1575 be used for inserting a signature.  Nice if you use different signatures
1576 in different groups.
1577
1578 @vindex gnus-auto-mail-to-author
1579 If @code{gnus-auto-mail-to-author} is non-nil, Gnus will send a mail
1580 with a copy of all follow-ups to the authors of the articles you follow
1581 up.  It's nice in one way - you make sure that the person you are
1582 responding to gets your response.  Other people loathe this method and
1583 will hate you dearly for it, because it means that they will first get a
1584 mail, and then have to read the same article later when they read the
1585 news.  It is nil by default.
1586
1587 @vindex gnus-mail-send-method
1588 @code{gnus-mail-send-method} says how a mail should be mailed.  It uses
1589 the function in the @code{send-mail-function} as the default.
1590
1591 @vindex gnus-prepare-article-hook
1592 @code{gnus-prepare-article-hook} is called before the header fields have
1593 been prepared.  By default it inserts the signature specified by
1594 @code{gnus-signature-file}. 
1595
1596 @vindex gnus-inews-article-hook
1597 @code{gnus-inews-article-hook} is called right before the article is
1598 posted.  By default it handles FCC processing (ie. saving the article to
1599 a file.)
1600
1601 @node Cancelling and Superceding
1602 @section Cancelling Articles
1603
1604 Have you ever written something, and then decided that you really,
1605 really, really hadn't posted that? 
1606
1607 Well, you can't cancel mail, but you can cancel posts.
1608
1609 @findex gnus-summary-cancel-article
1610 @kindex C (Summary)
1611 Find the article you wish to cancel (you can only cancel your own
1612 articles, so don't try any funny stuff).  Then press @kbd{C}
1613 (@code{gnus-summary-cancel-article}).  Your article will be cancelled.
1614
1615 Be aware, however, that not all sites honor cancels, so your article may
1616 live on in some parts of the world, while most sites will delete the
1617 cancelled article.
1618
1619 If you discover that you have made some mistakes and want to do some
1620 corrections, you can post a @dfn{superseding} article that will replace
1621 your original article.
1622
1623 @findex gnus-summary-supersede-article
1624 @kindex S (Summary)
1625 Go to the original article and press @kbd{S}
1626 (@code{gnus-summary-supersede-article}).  You will be put in a buffer
1627 where you can edit the article all you want before sending it off the
1628 usual way.
1629
1630 The same goes for superseding as for cancelling, only more so: Some
1631 sites do not honor superseding.  On those sites, it will appear that you
1632 have posted almost the same article twice.
1633
1634 If you have just posted the article, and changed your mind right away,
1635 there is a trick you can use to cancel/supersede the article without
1636 waiting for the article to appear on your site first.  You simply return
1637 to the post buffer (which is called @code{*post-buf*}).  There you will
1638 find the article you just posted, with all the headers intact.  Change
1639 the @samp{Message-ID} header to a @samp{Cancel} or @samp{Supersedes}
1640 header by substituting one of those words for @samp{Message-ID}.  Then
1641 just press @kbd{C-c C-c} to send the article as you would do normally.
1642 The previous article will be cancelled/superseded.
1643
1644 @node Ticking and Marking
1645 @section Ticking and Marking
1646
1647 There are several marks you can set on an article. 
1648
1649 First you have the marks that decide the "readed-ness" (whoo,
1650 neato-keano neologism ohoy!) of the article. It can be unread, ticked,
1651 dormant or read, in ascending readed-ness ordering.
1652
1653 @dfn{Ticked articles} are articles that will remain visible always.  If
1654 you see an article that you find interesting, or you want to put off
1655 reading it, or replying to it, until sometime later, you'd typically
1656 tick it.  However, articles can be expired, so if you want to keep an
1657 article forever, you'll have to save it.  Ticked articles have a @samp{-}
1658 in the first column.
1659
1660 A @dfn{dormant} article is marked with a @samp{+}, and will only appear
1661 in the summary buffer if there are followups to it. 
1662
1663 Articles that are marked as read - are just that.  They have a @samp{D}
1664 in the first column.  Unread articles have a space in the first column.
1665
1666 There are also some marks that do not affect readed-ness:
1667
1668 You can also mark articles as @dfn{expirable} (or have them marked as
1669 such automatically).  That doesn't make much sense in normal groups,
1670 because a user does not control the expiring of news articles, but in
1671 mail groups, for instance, articles that are marked as @dfn{expirable}
1672 can be deleted by Gnus at any time.  Expirable articles have a @samp{X}
1673 in the third column.
1674
1675 You can set a bookmark in the current article. Say you are reading a
1676 long thesis on cat's urinary tracts, and have to go home for dinner
1677 before you've finished reading the thesis. You can then set a bookmark
1678 in the article, and Gnus will jump to this bookmark the next time it
1679 encounters the article.
1680
1681 Finally we have the @dfn{process mark}.  A variety of commands react to
1682 the presence of the process mark.  For instance, @kbd{C-c C-v M-C-v}
1683 (@code{gnus-uu-decode-and-view-marked-articles}) will uudecode and view
1684 all artciles that have been marked with the process mark.  Articles
1685 marked with the process mark have a @samp{#} in the third column.
1686
1687 All the marking commands understand the numeric prefix.
1688
1689 @table @kbd
1690 @item !
1691 @kindex ! (Summary)
1692 @findex gnus-summary-mark-as-unread-forward
1693 Tick the current article (@code{gnus-summary-mark-as-unread-forward}).
1694 @item ?
1695 @kindex ? (Summary)
1696 @findex gnus-summary-mark-as-dormant
1697 Mark the current article as dormant
1698 (@code{gnus-summary-mark-as-dormant}).
1699 @item d
1700 @kindex d (Summary)
1701 @findex gnus-summary-mark-as-read-forward
1702 Mark the current article as read
1703 (@code{gnus-summary-mark-as-read-forward}).
1704 @item k
1705 @kindex k (Summary)
1706 @findex gnus-summary-kill-same-subject-and-select
1707 Mark all articles that have the same subject as the current one as read,
1708 and then select the next unread article
1709 (@code{gnus-summary-kill-same-subject-and-select}).
1710 @item C-k
1711 @kindex C-k (Summary)
1712 @findex gnus-summary-kill-same-subject
1713 Mark all articles that have the same subject as the current one as read
1714 (@code{gnus-summary-kill-same-subject}).  
1715 @item M-u
1716 @kindex M-u (Summary)
1717 @findex gnus-summary-clear-mark-forward
1718 Clear tick and read marks from the current article
1719 (@code{gnus-summary-clear-mark-forward}).
1720 @item x
1721 @kindex x (Summary)
1722 @findex gnus-summary-mark-as-expirable
1723 Mark the current article as expirable
1724 (@code{gnus-summary-mark-as-expirable}).
1725 @item X
1726 @kindex X (Summary)
1727 @findex gnus-summary-unmark-as-expirable
1728 Remove the expiry mark from the current article
1729 (@code{gnus-summary-unmark-as-expirable}). 
1730 @item b
1731 @kindex b (Summary)
1732 @findex gnus-summary-set-bookmark
1733 Set a bookmark in the current article
1734 (@code{gnus-summary-set-bookmark}).
1735 @item B
1736 @kindex B (Summary)
1737 @findex gnus-summary-remove-bookmark
1738 Remove the bookmark from the current article
1739 (@code{gnus-summary-remove-bookmark}).
1740 @item M-d
1741 @kindex M-d (Summary)
1742 @findex gnus-summary-delete-marked-as-read
1743 Expunge all deleted articles from the summary buffer
1744 (@code{gnus-summary-delete-marked-as-read}). 
1745 @item M-C-d
1746 @kindex M-C-d (Summary)
1747 @findex gnus-summary-delete-marked-with
1748 Ask for a mark and then expunge all articles that have been marked with
1749 that mark (@code{gnus-summary-delete-marked-with}).
1750 @item C-c M-C-s
1751 @kindex C-c M-C-s (Summary)
1752 @findex gnus-summary-show-all-expunged
1753 Display all expunged articles (@code{gnus-summary-show-all-expunged}).
1754 @item M-+
1755 @kindex M-+ (Summary)
1756 @findex gnus-summary-show-all-dormant
1757 Display all dormant articles (@code{gnus-summary-show-all-dormant}).
1758 @end table
1759
1760 There are a few functions for setting the process mark:
1761
1762 @table @kbd
1763 @item #
1764 @kindex # (Summary)
1765 @findex gnus-summary-mark-article-as-processable
1766 Mark the current article with the process mark
1767 (@code{gnus-summary-mark-article-as-processable}). 
1768 @findex gnus-summary-unmark-article-as-processable
1769 @item M-#
1770 @kindex M-# (Summary)
1771 Remove the process mark from the current article
1772 (@code{gnus-summary-unmark-article-as-processable}). 
1773 @item C-c M-#
1774 @kindex C-c M-# (Summary)
1775 @findex gnus-summary-unmark-all-articles-as-processable
1776 Remove the process mark from all articles
1777 (@code{gnus-summary-unmark-all-articles-as-processable}). 
1778 @item C-c C-v C-r 
1779 @kindex C-c C-v C-r  (Summary)
1780 @findex gnus-uu-mark-by-regexp
1781 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}). 
1782 @item C-c C-v r
1783 @kindex C-c C-v r (Summary)
1784 @findex gnus-uu-mark-region
1785 Mark articles in the region (@code{gnus-uu-mark-region}).
1786 @item C-c C-v t
1787 @kindex C-c C-v t (Summary)
1788 @findex gnus-uu-mark-thread
1789 Mark all articles in the current (sub)thread
1790 (@code{gnus-uu-mark-thread}).
1791 @end table
1792
1793 @findex gnus-uu-marked-universal-argument
1794 @kindex C-c C-v C-u (Summary)
1795 Finally, we have @kbd{C-c C-v C-u}
1796 (@code{gnus-uu-marked-universal-argument}) that will perform any
1797 operation on all articles that have been marked with the process mark. 
1798
1799 @node Threading
1800 @section Threading
1801
1802 Gnus @dfn{threads} articles by default.  @dfn{Threading} is to put
1803 replies to articles directly after the articles they reply to - in a
1804 hierarchial fashion.
1805
1806 @menu
1807 * Customizing Threading::     Variables you can change to affect the threading.
1808 * Threading Commands::        Thread based commands in the summary buffer.
1809 @end menu
1810
1811 @node Customizing Threading
1812 @subsection Customizing Threading
1813
1814 @table @code
1815 @item gnus-show-threads
1816 @vindex gnus-show-threads
1817 If this variable is nil, no threading will be done, and all of the rest
1818 of the variables here will have no effect.  Turning threading off will
1819 speed group selection up a bit, but it is sure to make reading
1820 slower and more awkward.
1821 @item gnus-fetch-old-headers
1822 @vindex gnus-fetch-old-headers
1823 If non-nil, Gnus will attempt to build old threads by fetching more old
1824 headers - headers to articles that are marked as read. This only works
1825 if the server you are using supports XOVER. Also remember that if the
1826 root of the thread has been expired by the server, there's not much Gnus
1827 can do about that.
1828 @item gnus-gather-loose-threads
1829 @vindex gnus-gather-loose-threads
1830 If non-nil, Gnus will gather all loose subtrees into one big tree and
1831 create a dummy root at the top.  (Wait a minute.  Root at the top? Yup.)
1832 Loose subtrees occur when the real root has expired, or you've read it
1833 in a previous session.
1834 @item gnus-summary-make-false-root
1835 @vindex gnus-summary-make-false-root
1836 When there is no real root of a thread, Gnus will have to fudge
1837 something. This variable says what method Gnus should use while
1838 fudging. There are four possible value:
1839
1840 @table @code
1841 @item adopt
1842 Gnus will make the first of the orphaned articles the parent. This
1843 parent will adopt all the other articles. The adopted articles will be
1844 marked as such by pointy brackeds instead of square brackets.
1845 @item dummy
1846 Gnus will create a dummy that will stand in as the parent. This dummy
1847 will be displayed on a line of its own, but it does not correspond to
1848 any real article.
1849 @item empty
1850 Gnus won't actually make any article the parent, but simply leave the
1851 subject field of all orphans except the first empty. (It will use
1852 @code{gnus-summary-same-subject} as the subject.)
1853 @item nil
1854 Don't make any article parent at all.
1855 @end table
1856
1857 @item gnus-thread-hide-subtree
1858 @vindex gnus-thread-hide-subtree
1859 If non-nil, all subtrees will be hidden when the summary buffer is
1860 generated. 
1861 @item gnus-thread-hide-killed
1862 @vindex gnus-thread-hide-killed
1863 if you kill a thread and this variable is non-nil, the subtree will be
1864 hidden. 
1865 @item gnus-thread-ignore-subject
1866 @vindex gnus-thread-ignore-subject
1867 Sometimes somebody changes the subject in the middle of a thread.  If
1868 this variable is non-nil, the change in subject is ignored.  If it is
1869 nil, which is the default, a change in the subject will result in a new
1870 thread. 
1871 @item gnus-thread-indent-level
1872 @vindex gnus-thread-indent-level
1873 This is a number which says how many spaces to indent a thread.  The
1874 default is @samp{4}.
1875 @end table
1876
1877 @node Threading Commands
1878 @subsection Threading Commands
1879
1880 @table @kbd
1881 @item M-C-k
1882 @kindex M-C-k (Summary)
1883 @findex gnus-summary-kill-thread
1884 Mark all articles under the current one as read
1885 (@code{gnus-summary-kill-thread}).  If the prefix argument is positive,
1886 remove all marks.  If the prefix argument is negative, tick articles.
1887 @item M-C-t
1888 @kindex M-C-t (Summary)
1889 @findex gnus-summary-toggle-threads
1890 Toggle showing threads (@code{gnus-summary-toggle-threads}).
1891 @item M-C-s
1892 @kindex M-C-s (Summary)
1893 @findex gnus-summary-show-thread
1894 Show the thread hidden under the current article, if any
1895 (@code{gnus-summary-show-thread}). 
1896 @item M-C-h
1897 @kindex M-C-h (Summary)
1898 @findex gnus-summary-hide-thread
1899 Hide the current (sub)thread (@code{gnus-summary-hide-thread}).
1900 @end table
1901
1902 The following commands are all thread movement commands.  They all
1903 understand the numeric prefix.
1904
1905 @table @kbd
1906 @item M-C-f
1907 @kindex M-C-f (Summary)
1908 @findex gnus-summary-next-thread
1909 Go to the next thread (@code{gnus-summary-next-thread}).
1910 @item M-C-b
1911 @kindex M-C-b (Summary)
1912 @findex gnus-summary-prev-thread
1913 Go to the previous thread (@code{gnus-summary-prev-thread}).
1914 @item M-C-d
1915 @kindex M-C-d (Summary)
1916 @findex gnus-summary-down-thread
1917 Descend the thread (@code{gnus-summary-down-thread}).
1918 @item M-C-u
1919 @kindex M-C-u (Summary)
1920 @findex gnus-summary-up-thread
1921 Ascend the thread (@code{gnus-summary-up-thread}).
1922 @end table
1923
1924 @node Exiting the Summary Buffer
1925 @section Exiting the Summary Buffer
1926
1927 @table @kbd
1928 @item q
1929 @kindex q (Summary)
1930 @findex gnus-summary-exit
1931 Exit the current group and update all the information
1932 (@code{gnus-summary-exit}). 
1933 @item Q
1934 @kindex Q (Summary)
1935 @findex gnus-summary-quit
1936 Exit the current group without updating any information
1937 (@code{gnus-summary-quit}). 
1938 @item c
1939 @kindex c (Summary)
1940 @findex gnus-summary-catchup-and-exit
1941 Mark all articles in the group as read and exit
1942 (@code{gnus-summary-catchup-and-exit}). 
1943 @end table
1944
1945 @vindex gnus-exit-group-hook
1946 @code{gnus-exit-group-hook} is called when you exit the current
1947 group.  
1948
1949 @vindex gnus-use-cross-reference
1950 When you exit the summary buffer, the data on the current group will
1951 be updated (which articles you have read, which articles you have
1952 replied to, etc.) If the @code{gnus-use-cross-reference} variable is
1953 non-nil, articles that are cross-referenced to this group, and are
1954 marked as read, will also be marked as read in the other groups they
1955 were cross-posted to.  This ensures that you'll never have to read the
1956 same article more than once.
1957
1958 Unless, of course, somebody has posted it to several groups
1959 separately. If so, send them a nasty-gram.
1960
1961 One other thing that may cause Gnus to not do the cross-posting thing
1962 correctly is if you use an NNTP server that supports xover (which is
1963 very nice, because it speeds things up considerably) which does not
1964 include the Xref header in its NOV lines.  This is Evil, but it's
1965 common.  Gnus tries to Do The Right Thing even with xover by registering
1966 the Xref lines of all articles you actually read, but if you kill the
1967 articles, or just mark them as read without reading them, Gnus will not
1968 get a chance to snoop the Xref lines out of these articles, and will be
1969 unable to use the cross reference mechanism.
1970
1971 @vindex gnus-nov-is-evil
1972 If you want Gnus to get the Xrefs right all the time, you have to set
1973 @code{gnus-nov-is-evil} to t, which slows things down considerably. 
1974
1975 C'est la vie.
1976
1977 @node Saving Articles
1978 @section Saving Articles
1979
1980 Gnus can save articles in a number of ways.  Below is the documentation
1981 for saving articles in a fairly straight-forward fashion (ie. little
1982 processing of the article is done before it is saved).  For a different
1983 approach (uudecoding, unsharing, digesting) see gnus-uu.
1984
1985 @vindex gnus-save-all-headers
1986 If @code{gnus-save-all-headers} is non-nil, Gnus will not delete
1987 unwanted headers before saving the article.
1988
1989 @table @kbd
1990 @item o
1991 @kindex o (Summary)
1992 @findex gnus-summary-save-article
1993 Save the current article (@code{gnus-summary-save-article}).
1994 @item C-o
1995 @kindex C-o (Summary)
1996 @findex gnus-summary-save-rmail
1997 Save the current article in rmail format
1998 (@code{gnus-summary-save-rmail}). 
1999 @end table
2000
2001 @vindex gnus-default-article-saver
2002 You can customize the @code{gnus-default-article-saver} variable to make
2003 Gnus what you want it to.  You can use any of the four ready-made
2004 functions below, or you can create your own. 
2005
2006 @table @code
2007 @item gnus-summary-save-in-rmail
2008 @vindex gnus-summary-save-in-rmail
2009 This is the format Gnus uses by default, @dfn{babyl}.  Uses the function
2010 in the @code{gnus-rmail-save-name} variable to get a file name to save
2011 the article in.  The default is @code{gnus-plain-save-name}.
2012 @item gnus-summary-save-in-mail
2013 @vindex gnus-summary-save-in-mail
2014 Save in a Unix mail (mbox) file.  Uses the function in the
2015 @code{gnus-mail-save-name} variable to get a file name to save the
2016 article in.  The default is @code{gnus-plain-save-name}.
2017 @item gnus-summary-save-in-file
2018 @vindex gnus-summary-save-in-file
2019 Append the article straight to an ordinary file.  Uses the function in
2020 the @code{gnus-file-save-name} variable to get a file name to save the
2021 article in.  The default is @code{gnus-numeric-save-name}.
2022 @item gnus-summary-save-in-folder
2023 @vindex gnus-summary-save-in-folder
2024 Save the article to an MH folder using @code{rcvstore} from the MH
2025 library.
2026 @end table
2027
2028 All of these functions, except for the last one, will save the article
2029 in the @code{gnus-article-save-directory}, which is initialized from the
2030 @samp{SAVEDIR} environment variable.
2031
2032 As you can see above, the functions use different functions to find a
2033 suitable name of a file to save the article in.  Below is a list of
2034 available functions that generates names:
2035
2036 @table @code
2037 @item gnus-Numeric-save-name
2038 @findex gnus-Numeric-save-name
2039 Generates file names that look like @samp{~/News/Alt.andrea-dworkin/45}.
2040 @item gnus-numeric-save-name
2041 @findex gnus-numeric-save-name
2042 Generates file names that look like @samp{~/News/alt.andrea-dworkin/45}.
2043 @item gnus-Plain-save-name
2044 @findex gnus-Plain-save-name
2045 Generates file names that look like @samp{~/News/Alt.andrea-dworkin}.
2046 @item gnus-plain-save-name
2047 @findex gnus-plain-save-name
2048 Generates file names that look like @samp{~/News/alt.andrea-dworkin}.
2049 @end table
2050
2051 @vindex gnus-use-long-file-name
2052 Finally, you have the @code{gnus-use-long-file-name} variable.  If it is
2053 nil, all the preceding functions will replace all periods (@samp{.}) in
2054 the group names with slashes (@samp{/}) - which means that the functions
2055 will generate hierarchies of directories instead of having all the files
2056 in the toplevel directory (@samp{~/News/alt/andrea-dworkin} instead of
2057 @samp{~/News/alt.andrea-dworkin}.)
2058
2059 @node Decoding Articles
2060 @section Decoding Articles
2061
2062 Gnus has a plethora of functions for handling series of (uu)encoded
2063 articles.  Gnus can find out by itself what articles belong to one
2064 series, decode all the articles and unpack/view/save the resulting
2065 file(s).  All these functions belong to the `gnus-uu' package and are
2066 reached from the summary buffer as three-key keystrokes: @key{C-c C-v
2067 KEY}.  That last key varies, of course, but all these functions use the
2068 @key{C-c C-v} prefix keystroke.
2069
2070 Gnus guesses what articles are in the series according to the following
2071 simplish rule: The subjects must be (nearly) identical, except for the
2072 last two numbers of the line.  (Spaces are largely ignored, however.)
2073
2074 For example: If you choose a subject called @samp{cat.gif (2/3)}, Gnus
2075 will find all the articles that match the regexp @samp{^cat.gif
2076 ([0-9]+/[0-9]+).*$}.  
2077
2078 Subjects that are nonstandard, like @samp{cat.gif (2/3) Part 6 of a
2079 series}, will not be properly recognized by any of the automatic viewing
2080 commands, and you have to mark the articles manually with @key{#}.
2081
2082 @menu
2083 * Decoding Commands::           Decoding in various ways.
2084 * Setting the Process Mark::    You can mark which articles to work on.
2085 * Other Related Commands::      Other related commands.
2086 * Viewing Files::               You can view the resulting decoded files.
2087 * Decoding Variables::          No, you do not have to decode any variables.
2088 @end menu
2089
2090 @node Decoding Commands
2091 @subsection Decoding Commands
2092
2093 All the keystrokes for decoding follow a strict pattern. 
2094
2095 @table @key
2096 @item C-c C-v C-KEY
2097 This is a function for decoding and viewing.
2098 @item C-c C-v KEY
2099 This is a function for decoding and saving.
2100 @item C-c C-v M-C-KEY
2101 This is a function for decoding and viewing marked articles.
2102 @item C-c C-v M-KEY
2103 This is a function for decoding and saving marked articles.
2104 @end table
2105  
2106 @menu
2107 * Decoding With uudecode::         The most common encoding on the net.
2108 * Decoding With unshar::           This is used some in source groups.
2109 * Decoding With Other Decoders::   Binhex and plain save.
2110 @end menu
2111
2112 @node Decoding With uudecode
2113 @subsubsection Decoding With uudecode
2114
2115 @table @key
2116 @item C-c C-v C-v
2117 @kindex C-c C-v C-v (Summary)
2118 @findex gnus-uu-decode-and-view
2119 Decode and view the series of articles that the current article is a
2120 part of (@code{gnus-uu-decode-and-view}). 
2121 @item C-c C-v v
2122 @kindex C-c C-v v (Summary)
2123 @findex gnus-uu-decode-and-save
2124 Decode and save the series of articles that the current article is a
2125 part of (@code{gnus-uu-decode-and-save}). 
2126 @item C-c C-v M-C-v
2127 @kindex C-c C-v M-C-v (Summary)
2128 @findex gnus-uu-marked-decode-and-view
2129 Decode and view the marked articles
2130 (@code{gnus-uu-marked-decode-and-view}). 
2131 @item C-c C-v M-v
2132 @kindex C-c C-v M-v (Summary)
2133 @findex gnus-uu-marked-decode-and-view
2134 Decode and save the marked articles
2135 (@code{gnus-uu-marked-decode-and-view}). 
2136 @item C-c C-v C-w
2137 @kindex C-c C-v C-w (Summary)
2138 @findex gnus-uu-decode-and-view-all-articles
2139 Decode and view all articles in the group
2140 (@code{gnus-uu-decode-and-view-all-articles}).  
2141 @item C-c C-v w
2142 @kindex C-c C-v w (Summary)
2143 @findex gnus-uu-decode-and-save-all-articles
2144 Decode and save all articles in the group
2145 (@code{gnus-uu-decode-and-save-all-articles}).  
2146 @item C-c C-v M-C-w
2147 @kindex C-c C-v M-C-w (Summary)
2148 @findex gnus-uu-decode-and-view-all-marked-files
2149 Decode and view all series of articles that are marked
2150 (@code{gnus-uu-decode-and-view-all-marked-files}).  
2151 @item C-c C-v M-w
2152 @kindex C-c C-v M-w (Summary)
2153 @findex gnus-uu-decode-and-save-all-marked-files
2154 Decode and save all series of articles that are marked
2155 (@code{gnus-uu-decode-and-save-all-marked-files}).  
2156 @item C-c C-v C-a
2157 @kindex C-c C-v C-a (Summary)
2158 @findex gnus-uu-decode-and-view-all-articles
2159 Decode and view all unread articles in the group
2160 (@code{gnus-uu-decode-and-view-all-articles}).  
2161 @item C-c C-v a
2162 @kindex C-c C-v a (Summary)
2163 @findex gnus-uu-decode-and-save-all-articles
2164 Decode and save all unread articles in the group
2165 (@code{gnus-uu-decode-and-save-all-articles}).  
2166 @item C-c C-v C-b
2167 @kindex C-c C-v C-b (Summary)
2168 @findex gnus-uu-decode-and-show-in-buffer
2169 Decode the current article and show the result in the article
2170 buffer.  This might be useful if somebody has encoded (parts of) an
2171 article, for some strange reason
2172 (@code{gnus-uu-decode-and-show-in-buffer}). 
2173 @end table
2174
2175 The @code{gnus-uu-decode-and-save-all-marked-files} need some
2176 explanation.  It allows you to mark all articles that are part of series
2177 of articles you are interested in in a group.  You only have to mark
2178 one article for each series of articles you want, and then you call this
2179 function, which will find all articles that are part of the series you
2180 want.  Is that clear? And they say it's a stupid idea getting drunk
2181 before writing documentation! Bah! 
2182
2183 @node Decoding With unshar
2184 @subsubsection Decoding With unshar
2185
2186 Using @code{unshar} introduces rather large security holes - it actually
2187 runs the code it finds in the articles.  So you should, at least, peek
2188 through the articles you want to unshar before using these functions.
2189
2190 @table @kbd
2191 @item C-c C-v C-s
2192 @kindex C-c C-v C-s (Summary)
2193 @findex gnus-uu-shar-and-view
2194 @kindex C-c C-v C-s (Summary)
2195 @findex gnus-uu-shar-and-view
2196 Unshar and view the series of articles that the current article is a
2197 part of (@code{gnus-uu-shar-and-view}). 
2198 @item C-c C-v s
2199 @kindex C-c C-v s (Summary)
2200 @findex gnus-uu-shar-and-save
2201 @kindex C-c C-v s (Summary)
2202 @findex gnus-uu-shar-and-save
2203 Unshar and save the series of articles that the current article is a
2204 part of (@code{gnus-uu-shar-and-save}). 
2205 @item C-c C-v M-C-s
2206 @kindex C-c C-v M-C-s (Summary)
2207 @findex gnus-uu-marked-shar-and-view
2208 @kindex C-c C-v M-C-s (Summary)
2209 @findex gnus-uu-marked-shar-and-view
2210 Unshar and view the marked articles
2211 (@code{gnus-uu-marked-shar-and-view}). 
2212 @item C-c C-v M-s
2213 @kindex C-c C-v M-s (Summary)
2214 @findex gnus-uu-marked-shar-and-view
2215 @kindex C-c C-v M-s (Summary)
2216 @findex gnus-uu-marked-shar-and-view
2217 Unshar and save the marked articles
2218 (@code{gnus-uu-marked-shar-and-view}). 
2219 @end table
2220
2221 @node Decoding With Other Decoders
2222 @subsubsection Decoding With Other Decoders
2223
2224 These commands are entry points to all the decoding methods Gnus knows -
2225 uudecode, unshar, unbinhex and save.  You will be prompted for what
2226 method you want to employ.
2227
2228 @table @kbd
2229 @item C-c C-v C-m
2230 @kindex C-c C-v C-m (Summary)
2231 @findex gnus-uu-multi-decode-and-view
2232 Decode (by some method) and view the series of articles that the current
2233 article is a part of (@code{gnus-uu-multi-decode-and-view}).
2234 @item C-c C-v m
2235 @kindex C-c C-v m (Summary)
2236 @findex gnus-uu-multi-decode-and-save
2237 Decode (by some method) and save the series of articles that the current
2238 article is a part of (@code{gnus-uu-multi-decode-and-save}).
2239 @item C-c C-v M-C-m
2240 @kindex C-c C-v M-C-m (Summary)
2241 @findex gnus-uu-marked-multi-decode-and-view
2242 Decode (by some method) and view the marked articles
2243 (@code{gnus-uu-marked-multi-decode-and-view}). 
2244 @item C-c C-v M-m
2245 @kindex C-c C-v M-m (Summary)
2246 @findex gnus-uu-marked-multi-decode-and-view
2247 Decode (by some method) and save the marked articles
2248 (@code{gnus-uu-marked-multi-decode-and-view}). 
2249 @item C-c C-v C-j
2250 @kindex C-c C-v C-j (Summary)
2251 @findex gnus-uu-threaded-multi-decode-and-view
2252 Decode (by some method) and view all articles in the current thread
2253 (@code{gnus-uu-threaded-multi-decode-and-view}). 
2254 @item C-c C-v C-j
2255 @kindex C-c C-v C-j (Summary)
2256 @findex gnus-uu-threaded-multi-decode-and-view
2257 Decode (by some method) and save all articles in the current thread
2258 (@code{gnus-uu-threaded-multi-decode-and-view}). 
2259 @end table
2260
2261 @node Setting the Process Mark
2262 @subsection Setting the Process Mark
2263
2264 The process mark is used by other parts of Gnus, not just the `gnus-uu'
2265 package.  However, this is where it is most useful, so it adds some
2266 further methods for setting the mark.
2267
2268 @table @kbd
2269 @item C-c C-v C-r
2270 @kindex C-c C-v C-r (Summary)
2271 @findex gnus-uu-mark-by-regexp
2272 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}). 
2273 @item C-c C-v r
2274 @kindex C-c C-v r (Summary)
2275 @findex gnus-uu-mark-region
2276 Mark all articles between point and mark (@code{gnus-uu-mark-region}). 
2277 @item C-c C-v t
2278 @kindex C-c C-v t (Summary)
2279 @findex gnus-uu-mark-thread
2280 Mark all articles downward in the current thread
2281 (@code{gnus-uu-mark-thread}). 
2282 @end table
2283
2284 @node Other Related Commands
2285 @subsection Other Related Commands
2286
2287 @table @key
2288 @item C-c C-v f
2289 @kindex C-c C-v f (Summary)
2290 @findex gnus-uu-digest-and-forward
2291 Digest and forward all articles that are part of a series
2292 (@code{gnus-uu-digest-and-forward}). 
2293 @item C-c C-v M-f
2294 @kindex C-c C-v M-f (Summary)
2295 @findex gnus-uu-marked-digest-and-forward
2296 Digest and forward all marked articles
2297 (@code{gnus-uu-marked-digest-and-forward}).
2298 @item C-c C-v C-i
2299 @kindex C-c C-v C-i (Summary)
2300 @findex gnus-uu-toggle-interactive-view
2301 Instead of having windows popping up automatically, it can be handy to
2302 view files interactivly, especially when viewing archives
2303 (@code{gnus-uu-toggle-interactive-view}).
2304 @item C-c C-v C-t
2305 @kindex C-c C-v C-t (Summary)
2306 @findex gnus-uu
2307 Toggle any of the most important @code{gnus-uu} variables
2308 (@code{gnus-uu-toggle-any-variable}).
2309 @item C-c C-v C-l
2310 @kindex C-c C-v C-l (Summary)
2311 @findex gnus-uu-edit-begin-line
2312 Edit the @samp{begin} line of an uuencoded article, if any
2313 (@code{gnus-uu-edit-begin-line}).  
2314 @item C-c C-v p
2315 @kindex C-c C-v p (Summary)
2316 @findex gnus-uu-post-news
2317 Uuencode and post an file.  If the file is large, it will be split into a
2318 series of articles that will be posted (@code{gnus-uu-post-news}).
2319 @end table
2320
2321 @node Viewing Files
2322 @subsection Viewing Files
2323
2324 When using the view commands, @code{gnus-uu-decode-and-view} for
2325 instance, Gnus will (normally, see below) try to view the file according
2326 to the rules given in @code{gnus-uu-default-view-rules} and
2327 @code{gnus-uu-user-view-rules}.  If it recognizes the file, it will
2328 display it immediately.  If the file is some sort of archive, Gnus will
2329 attempt to unpack the archive and see if any of the files in the archive
2330 can be viewed.  For instance, if you have a gzipped tar file
2331 @file{pics.tar.gz} containing the files @file{pic1.jpg} and
2332 @file{pic2.gif}, Gnus will uncompress and detar the main file, and then
2333 view the two pictures.  This unpacking process is recursive, so if the
2334 archive contains archives of archives, it'll all be unpacked.
2335
2336 If the view command doesn't recognise the file type, or can't view it
2337 because you don't have the viewer, or can't view *any* of the files in
2338 the archive, the user will be asked if she wishes to have the file saved
2339 somewhere.  Note that if the decoded file is an archive, and Gnus
2340 manages to view some of the files in the archive, it won't tell the user
2341 that there were some files that were unviewable.  Try interactive view
2342 for a different approach.
2343
2344 @node Decoding Variables
2345 @subsection Decoding Variables
2346
2347 Adjective, not verb.
2348
2349 @menu 
2350 * Rule Variables::          Variables that say how a file is to be viewed.
2351 * Other Decode Variables::  Other decode variables.
2352 @end menu
2353
2354 @node Rule Variables
2355 @subsubsection Rule Variables
2356
2357 Gnus uses @dfn{rule} variables to decide how to view a file.  All these
2358 variables are on the form
2359   
2360 @example
2361       (list '(regexp1 command2)
2362             '(regexp2 command2)
2363             ...)
2364 @end example
2365
2366 @table @code
2367 @item gnus-uu-user-view-rules
2368 @vindex gnus-uu-user-view-rules
2369 This variable is consulted first when viewing files.  If you wish to use,
2370 for instance, @code{sox} to convert an @samp{.au} sound file, you could
2371 say something like:
2372 @example
2373        (setq gnus-uu-user-view-rules
2374          (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
2375 @end example
2376 @item gnus-uu-user-view-rules-end
2377 @vindex gnus-uu-user-view-rules-end
2378 This variable is consulted if Gnus couldn't make any matches from the
2379 user and default view rules.
2380 @item gnus-uu-user-interactive-view-rules
2381 @vindex gnus-uu-user-interactive-view-rules
2382 This is the variable used instead of @code{gnus-uu-user-view-rules}
2383 when in interactive mode.
2384 @item gnus-uu-user-interactive-view-rules-end
2385 @vindex gnus-uu-user-interactive-view-rules-end
2386 This variable is used instead of @code{gnus-uu-user-view-rules-end} when
2387 in interactive mode.
2388 @item gnus-uu-user-archive-rules
2389 @vindex gnus-uu-user-archive-rules
2390 This variable can be used to say what comamnds should be used to unpack
2391 archives.
2392 @end table
2393
2394 @node Other Decode Variables
2395 @subsubsection Other Decode Variables
2396
2397 @table @code
2398 @item gnus-uu-ignore-files-by-name
2399 @vindex gnus-uu-ignore-files-by-name
2400 Files with name matching this regular expression won't be viewed.
2401
2402 @item gnus-uu-ignore-files-by-type
2403 @vindex gnus-uu-ignore-files-by-type
2404 Files with a MIME type matching this variable won't be viewed.  Note
2405 that Gnus tries to guess what type the file is based on the
2406 name.  gnus-uu is not a MIME package, so this is slightly kludgy.
2407
2408 @item gnus-uu-tmp-dir
2409 @vindex gnus-uu-tmp-dir
2410 Where gnus-uu does its work.
2411
2412 @item gnus-uu-do-not-unpack-archives
2413 @vindex gnus-uu-do-not-unpack-archives
2414 Non-nil means that gnus-uu won't peek inside archives looking for files
2415 to dispay.
2416
2417 @item gnus-uu-view-and-save
2418 @vindex gnus-uu-view-and-save
2419 Non-nil means that the user will always be asked to save a file after
2420 viewing it.
2421
2422 @item gnus-uu-asynchronous
2423 @vindex gnus-uu-asynchronous
2424 Non-nil means that files will be viewed asynchronously.  This can be
2425 useful if you're viewing long @file{.mod} files, for instance, which
2426 often takes several minutes.  Note, however, that since gnus-uu doesn't
2427 ask, and if you are viewing an archive with lots of viewable files,
2428 you'll get them all up more or less at once, which can be confusing, to
2429 say the least.  To get gnus-uu to ask you before viewing a file, set the
2430 @code{gnus-uu-ask-before-view} variable.
2431
2432 @item gnus-uu-ask-before-view
2433 @vindex gnus-uu-ask-before-view
2434 Non-nil means that gnus-uu will ask you before viewing each file.
2435
2436 @item gnus-uu-ignore-default-view-rules
2437 @vindex gnus-uu-ignore-default-view-rules
2438 Non-nil means that gnus-uu will ignore the default viewing rules.
2439
2440 @item gnus-uu-ignore-default-archive-rules
2441 @vindex gnus-uu-ignore-default-archive-rules
2442 Non-nil means that gnus-uu will ignore the default archive unpacking
2443 commands.
2444
2445 @item gnus-uu-kill-carriage-return
2446 @vindex gnus-uu-kill-carriage-return
2447 Non-nil means that gnus-uu will strip all carriage returns from
2448 articles.
2449
2450 @item gnus-uu-unmark-articles-not-decoded
2451 @vindex gnus-uu-unmark-articles-not-decoded
2452 Non-nil means that gnus-uu will mark articles that were unsuccessfully
2453 decoded as unread.
2454
2455 @item gnus-uu-output-window-height
2456 @vindex gnus-uu-output-window-height
2457 This variable says how tall the output buffer window is to be when using
2458 interactive view mode.
2459
2460 @item gnus-uu-correct-stripped-uucode
2461 @vindex gnus-uu-correct-stripped-uucode
2462 Non-nil means that gnus-uu will *try* to fix uuencoded files that have
2463 had traling spaces deleted.
2464
2465 @item gnus-uu-use-interactive-view
2466 @vindex gnus-uu-use-interactive-view
2467 Non-nil means that gnus-uu will use interactive viewing mode.
2468
2469 @item gnus-uu-view-with-metamail
2470 @vindex gnus-uu-view-with-metamail
2471 Non-nil means that gnus-uu will ignore the viewing commands defined by
2472 the rule variables and just fudge a MIME content type based on the file
2473 name.  The result will be fed to metamail for viewing.
2474
2475 @item gnus-uu-save-in-digest
2476 @vindex gnus-uu-save-in-digest
2477 Non-nil means that gnus-uu, when asked to save without decoding, will
2478 save in digests.  If this variable is nil, gnus-uu will just save
2479 everything in a file without any embellishments.  The digesting almost
2480 conforms to RFC1153 - no easy way to specify any meaningful volume and
2481 issue numbers were found, so I simply dropped them.
2482
2483 @item gnus-uu-post-include-before-composing
2484 @vindex gnus-uu-post-include-before-composing
2485 Non-nil means that gnus-uu will ask for a file to encode before you
2486 compose the article.  If this variable is t, you can either include an
2487 encoded file with @key{C-c C-i} or have one included for you when you
2488 post the article.
2489
2490 @item gnus-uu-post-length
2491 @vindex gnus-uu-post-length
2492 Maximum length of an article.  The encoded file will be split into how
2493 many articles it takes to post the entire file.
2494
2495 @item gnus-uu-post-threaded
2496 @vindex gnus-uu-post-threaded
2497 Non-nil means that gnus-uu will post the encoded file in a thread.  This
2498 may not be smart, as no other decoder I have seen are able to follow
2499 threads when collecting uuencoded articles.  (Well, I have seen one
2500 package that does that - gnus-uu, but somehow, I don't think that
2501 counts...) Default is nil.
2502
2503 @item gnus-uu-post-separate-description
2504 @vindex gnus-uu-post-separate-description
2505 Non-nil means that the description will be posted in a separate article.
2506 The first article will typically be numbered (0/x).  If this variable is
2507 nil, the description the user enters will be included at the beginning
2508 of the first article, which will be numbered (1/x).  Default is t.
2509
2510 @end table
2511
2512 @node Various Article Stuff 
2513 @section Various Article Stuff 
2514
2515 @table @kbd
2516 @item w
2517 @kindex w (Summary)
2518 @findex gnus-summary-stop-page-breaking
2519 Remove page breaking from the current article
2520 (@code{gnus-summary-stop-page-breaking}). 
2521 @item C-c C-r
2522 @kindex C-c C-r (Summary)
2523 @findex gnus-summary-caesar-message
2524 Do a Caesar rotate (rot13) on the article buffer
2525 (@code{gnus-summary-caesar-message}). 
2526 @item g
2527 @kindex g (Summary)
2528 @findex gnus-summary-show-article
2529 Select the current article (@code{gnus-summary-show-article}).
2530 @item t
2531 @kindex t (Summary)
2532 @findex gnus-summary-toggle-header
2533 Toggle whether to display all headers in the article buffer
2534 (@code{gnus-summary-toggle-header}). 
2535 @item M-t
2536 @kindex M-t (Summary)
2537 @findex gnus-summary-toggle-mime
2538 Toggle whether to run the article through MIME before displaying
2539 (@code{gnus-summary-toggle-mime}). 
2540 @item |
2541 @kindex | (Summary)
2542 @findex gnus-summary-pipe-output
2543 Pipe the current article through a filter
2544 (@code{gnus-summary-pipe-output}). 
2545 @end table
2546
2547 @node Summary Sorting
2548 @section Summary Sorting
2549
2550 You can have the summary buffer sorted in various ways, even though I
2551 can't really se why you'd want that.
2552
2553 @table @kbd
2554 @item C-c C-s C-n
2555 @kindex C-c C-s C-n (Summary)
2556 @findex gnus-summary-sort-by-number
2557 Sort by article number (@code{gnus-summary-sort-by-number}).
2558 @item C-c C-s C-a
2559 @kindex C-c C-s C-a (Summary)
2560 @findex gnus-summary-sort-by-author
2561 Sort by author (@code{gnus-summary-sort-by-author}).
2562 @item C-c C-s C-s
2563 @kindex C-c C-s C-s (Summary)
2564 @findex gnus-summary-sort-by-subject
2565 Sort by subject (@code{gnus-summary-sort-by-subject}).
2566 @item C-c C-s C-d
2567 @kindex C-c C-s C-d (Summary)
2568 @findex gnus-summary-sort-by-date
2569 Sort by date (@code{gnus-summary-sort-by-date}).
2570 @end table
2571
2572 @node Finding the Parent
2573 @section Finding the Parent
2574
2575 @findex gnus-summary-refer-parent-article
2576 @kindex ^ (Summary)
2577 If you'd like to read the parent of the current article, and it is not
2578 displayed in the article buffer, you might still be able to.  That is,
2579 if the current group is fetched by NNTP, the parent hasn't expired and
2580 the References in the current article are not mangled, you can just
2581 press @kbd{^} (@code{gnus-summary-refer-parent-article}).  If everything
2582 goes well, you'll get the parent. If the parent is already displayed in
2583 the summary buffer, point will just move to this article.
2584
2585 @findex gnus-summary-refer-article
2586 @kindex M-^ (Summary)
2587 You can also ask the NNTP server for an arbitrary article, no matter
2588 what group it belongs to.  @kbd{M-^} (@code{gnus-summary-refer-article})
2589 will ask you for a message-id, which is one of those long thingies that
2590 look something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}.  You have to
2591 get it all exactly right.
2592
2593 @node Score Files
2594 @section Score Files
2595
2596 Other people call them @dfn{kill files}, but we here at (ding) Gnus
2597 Towers likes scoring better than killing, so we've changed the
2598 name. We've also changed what they do, so sit up straight and pay
2599 attention!
2600
2601 All articles have a default score (@code{gnus-summary-default-score}).
2602 This score may be raised or lowered either interactively or by the score
2603 files. Articles that have a score lower than
2604 @code{gnus-summary-mark-below} are marked as read. 
2605
2606 If a @dfn{score file} for the current group exists, Gnus will read it
2607 after generating the summary buffer.
2608
2609 The score files are files that may contain, in general, any elisp
2610 functions.  However, it is most common just to put functions that either
2611 raises or lowers the score of articles based on their headers in those
2612 files.  Hence the name.
2613
2614 There are several commands reachable from the summary buffer that
2615 inserts commands for scoring articles based on the current article.  You
2616 can, for instance, ask Gnus to lower or raise the score of all articles
2617 with a certain subject.
2618
2619 @menu 
2620 * Summary Score Commands::   Adding simple score commands to the score file.
2621 * Score Mode::               A mode for editing the score file.
2622 * Score Variables::          Customize your scoring.  (My, what terminology).
2623 @end menu
2624
2625 @node Summary Score Commands
2626 @subsection Summary Score Commands
2627
2628 @table @kbd
2629 @item C-c C-k C-s
2630 @kindex C-c C-k C-s (Summary)
2631 @findex gnus-kill-file-kill-by-subject
2632 Kill all articles with the current subject
2633 (@code{gnus-kill-file-kill-by-subject}). 
2634 @item C-c C-k C-a
2635 @kindex C-c C-k C-a (Summary)
2636 @findex gnus-kill-file-kill-by-author
2637 Kill all articles from the current author
2638 (@code{gnus-kill-file-kill-by-author}). 
2639 @item C-c C-k C-t
2640 @kindex C-c C-k C-t (Summary)
2641 @findex gnus-kill-file-kill-by-thread
2642 Kill all articles in the current subthread
2643 (@code{gnus-kill-file-kill-by-thread}). 
2644 @item C-c C-k C-o
2645 @kindex C-c C-k C-o (Summary)
2646 @findex gnus-kill-file-kill-by-organization
2647 Kill all articles from the current organization
2648 (@code{gnus-kill-file-kill-by-organization}). 
2649 @item C-c C-k C-x
2650 @kindex C-c C-k C-x (Summary)
2651 @findex gnus-kill-file-kill-by-xref
2652 Kill all articles that have similar Xrefs to the current article
2653 (@code{gnus-kill-file-kill-by-xref}).  This is one way to get rid of
2654 cross-posts. 
2655 @end table
2656
2657 @node Score Mode
2658 @subsection Score Mode
2659
2660 To enter either the global or local score file, you can use the
2661 following keystrokes in the summary buffer:
2662
2663 @table @kbd
2664 @item M-k
2665 @kindex M-k (Summary)
2666 @findex gnus-summary-edit-local-kill
2667 Edit the kill file for the current group
2668 (@code{gnus-summary-edit-local-kill}). 
2669 @item M-K
2670 @kindex M-K (Summary)
2671 @findex gnus-summary-edit-global-kill
2672 Edit the global kill file (@code{gnus-summary-edit-global-kill}). 
2673 @end table
2674
2675 @node Score Variables
2676 @subsection Score Variables
2677
2678 @table @code
2679 @item gnus-kill-killed
2680 @vindex gnus-kill-killed
2681 If this variable is nil, Gnus will never apply score files to articles
2682 that have already been through the kill process.  While this may save
2683 you lots of time, it also means that if you apply a kill file to a
2684 group, and then change the kill file and want to run it over you group
2685 again to kill more articles, it won't work.  You have to set this
2686 variable to t to do that.
2687 @item gnus-apply-kill-hook
2688 @vindex gnus-apply-kill-hook
2689 This hook is called to do the actual article killing.  This hook may do
2690 anything, of course, but it should call the @code{gnus-apply-kill-file}
2691 function, or some equivalent function, to do the killing.
2692 @item gnus-kill-files-directory
2693 @vindex gnus-kill-files-directory
2694 All kill files will be stored in this directory, which is initialized
2695 from the @samp{SAVEDIR} environment variable by default.
2696 @item gnus-kill-file-name
2697 @vindex gnus-kill-file-name
2698 This variable is a string that will be appended to group names to
2699 make a kill file name.  The default is @samp{KILL}.
2700 @end table
2701
2702 @node Mail Group Commands
2703 @section Mail Group Commands
2704
2705 Some commands only make sense in mail groups. 
2706
2707 @table @kbd
2708 @item M-C-x
2709 @kindex M-C-x (Summary)
2710 @findex gnus-summary-expire-articles
2711 Expire all expirable articles in the group
2712 (@code{gnus-summary-expire-articles}).
2713 @item M-DEL
2714 @kindex M-DEL (Summary)
2715 @findex gnus-summary-delete-articles
2716 Delete the mail article. This is "delete" as in "delete it from your
2717 disk forever and ever, never to return again." Use with caution.
2718 (@code{gnus-summary-delete-article}).
2719 @item M-m
2720 @kindex M-m (Summary)
2721 @findex gnus-summary-move-article
2722 Move the article from one mail group to another
2723 (@code{gnus-summary-move-article}). 
2724 @item M-C-m
2725 @kindex M-C-m (Summary)
2726 @findex gnus-summary-respool-article
2727 Respool the mail article (@code{gnus-summary-move-article}).
2728 @end table
2729
2730 @node Various Summary Stuff
2731 @section Various Summary Stuff
2732
2733 @table @kbd
2734 @item &
2735 @kindex & (Summary)
2736 @findex gnus-summary-expand-window
2737 This command will prompt you for a header field, a regular expression to
2738 be matched this field, and a command to be executed if the match is
2739 made. 
2740 @item =
2741 @kindex = (Summary)
2742 @findex gnus-summary-expand-window
2743 Delete all other windows (@code{gnus-summary-expand-window}).
2744 @item C-x C-s
2745 @kindex C-x C-s (Summary)
2746 @findex gnus-summary-reselect-current-group
2747 Exit this group, and then enter it again
2748 (@code{gnus-summary-reselect-current-group}).
2749 @item C-c C-d
2750 @kindex C-c C-d (Summary)
2751 @findex gnus-summary-describe-group
2752 Give a brief description of the current group
2753 (@code{gnus-summary-describe-group}).
2754 @item M-g
2755 @kindex M-g (Summary)
2756 @findex gnus-summary-rescan-group
2757 Exit group, check for new articles in the group, and select the group
2758 (@code{gnus-summary-rescan-group}).
2759 @item V
2760 @kindex V (Summary)
2761 @findex gnus-version
2762 Display the Gnus version numbers (@code{gnus-version}).
2763 @item ?
2764 @kindex ? (Summary)
2765 @findex gnus-summary-describe-briefly
2766 Give a very brief description of the most important summary keystrokes
2767 (@code{gnus-summary-describe-briefly}). 
2768 @item C-c C-i
2769 @kindex C-c C-i (Summary)
2770 @findex gnus-info-find-node
2771 Go to the Gnus info node (@code{gnus-info-find-node}).
2772 @end table
2773
2774 @vindex gnus-summary-prepare-hook
2775 @code{gnus-summary-prepare-hook} is called after the summary buffer has
2776 been generated.  You might use it to, for instance, hilight lines, modify
2777 the look, or anything else you feel like.  I don't care.
2778
2779 @node The Article Buffer
2780 @chapter The Article Buffer
2781
2782 The articles are displayed in the article buffer, of which there is only
2783 one.  All the summary buffer share the same article buffer.
2784
2785 @menu
2786 * Hiding Headers::        Deciding what headers should be displayed.
2787 * Using Mime::            Pushing articles through MIME before reading them.
2788 * Customizing Articles::  Tailoring the look of the articles.
2789 * Article Keymap::        Keystrokes available in the article buffer
2790 * Misc Article::          Other stuff.
2791 @end menu
2792
2793 @node Hiding Headers
2794 @section Hiding Headers
2795
2796 The top section of each article is the @dfn{header}.  (The rest is the
2797 @dfn{body}, but you may have guessed that already.) 
2798
2799 @vindex gnus-show-all-headers
2800 There is a lot of information in the header - the name of the person who
2801 wrote the article, the date and the subject of the article.  That might
2802 be very useful, buf there's also lots of information most people do not
2803 want to see - what systems the article has passed through before
2804 reaching you, the message id, the references, etc. ad nauseum - and
2805 you'll probably want to get rid of some of those lines.  If you want to
2806 keep all those lines in the article buffer, you can set
2807 @code{gnus-show-all-headers} to t.
2808
2809 Gnus provides you with two variables for sifting header lines:
2810
2811 @table @code
2812 @item gnus-visible-headers
2813 @vindex gnus-visible-headers
2814 If this variable is non-nil, it should be a regular expression that says
2815 what header lines you wish to keep in the article buffer.  All header
2816 lines that does not match this variable will be hidden.
2817
2818 For instance, if you only want to see the name of the person who wrote
2819 the article and the subject, you'd say:
2820
2821 @example
2822 (setq gnus-visible-headers "^From:\\|^Subject:")
2823 @end example
2824
2825 @item gnus-ignored-headers
2826 @vindex gnus-ignored-headers
2827 This variable is the reverse of @code{gnus-visible-headers}.  If this
2828 variable is set (and @code{gnus-visible-headers} is nil), it should be a
2829 regular expression that matches all lines that you want to hide.  All
2830 lines that does not match this variable will remain visible.
2831
2832 For instance, if you just want to get rid of the references line and the
2833 xref line, you might say:
2834
2835 @example
2836 (setq gnus-ignored-headers "^References:\\^Xref:")
2837 @end example
2838
2839 Note that if @code{gnus-visible-headers} is non-nil, this variable will
2840 have no effect.
2841 @end table
2842
2843 @vindex gnus-sorted-header-list
2844 Gnus can also sort the headers for you.  (It does this by default.) You
2845 can control the sorting by setting the @code{gnus-sorted-header-list}
2846 variable.  It is a list of regular expressions that says in what order
2847 the header lines are to be displayed.
2848
2849 For instance, if you want the name of the author of the article first,
2850 and then the subject, you might say something like:
2851
2852 @example
2853 (setq gnus-sorted-header-list '("^From:" "^Subject:"))
2854 @end example
2855
2856 Any headers that are to remain visible, but are not listed in this
2857 variable, will be displayed after all the headers that are listed in
2858 this variable.
2859
2860 @node Using Mime
2861 @section Using Mime
2862
2863 Mime is a standard for waving your hands through the air, aimlessly,
2864 while people stand around yawning.
2865
2866 MIME, however, is a standard for encoding your articles, aimlessly,
2867 while all newsreaders die of fear.
2868
2869 MIME may specify what character set the article uses, the encoding of
2870 the characters, and it also makes it possible to embed pictures and
2871 other naughty stuff in innocent-looking articles.
2872
2873 @vindex gnus-show-mime
2874 @vindex gnus-show-mime-method
2875 Gnus handles MIME by shoving the articles through
2876 @code{gnus-show-mime-method}, which is @code{metamail-buffer} by
2877 default.  Set @code{gnus-show-mime} to t if you want to use MIME all the
2878 time; it might be best just use the toggling functions from the summary
2879 buffer to avoid getting nasty surprises (for instance, you enter the
2880 group @samp{alt.sing-a-long} and, before you know it, MIME has
2881 decoded the sounds file in the article and some horrible sing-a-long
2882 song comes streaming out out your speakers, and you can't find the
2883 volume button, because there isn't one, and people are starting to look
2884 at you, and you try to stop the program, but you can't, and you can't
2885 find the program to control the volume, and everybody else in the room
2886 suddenly decides to look at you disdainfully, and you'll feel rather
2887 stupid.
2888
2889 Any similarity to real events and people is purely coincidental.  Ahem.
2890
2891 @node Customizing Articles
2892 @section Customizing Articles
2893
2894 @vindex gnus-article-display-hook
2895 The @code{gnus-article-display-hook} is called after the article has
2896 been inserted into the article buffer.  It is meant to handle all
2897 treatment of the article before it is displayed.  By default it contains
2898 @code{gnus-article-hide-headers}, which hides unwanted headers.
2899
2900 @findex gnus-article-subcite
2901 @findex gnus-article-hide-signature
2902 @findex gnus-article-hide-citation
2903 Other useful functions you might add to this hook is
2904 @code{gnus-article-hide-citation} (which hides all cited text);
2905 @code{gnus-article-hide-signature} (which, umn, hides the signature);
2906 @code{gnus-article-subcite} (which tries to clean up the mess supercite
2907 makes in The Hands Of The Mad; @code{gnus-article-treat-overstrike}
2908 (which treats @samp{^H_} in a reasonable manner); and
2909 @code{gnus-article-remove-cr} (which removes trailing carriage returns).
2910
2911 You can, of course, write your own functions.  The functions are called
2912 in the article buffer, and you can do anything you like, pretty
2913 much.  There is no information that you have to keep in the buffer - you
2914 can change everything.
2915
2916 @node Article Keymap
2917 @section Article Keymap
2918
2919 Most of the keystrokes in the summary buffer can also be used in the
2920 article buffer. They should behave as if you typed them in the summary
2921 buffer, which means that you don't actually have to have a summary
2922 buffer displayed when you're reading. You can do it all from the article
2923 buffer.
2924
2925 A few additional keystrokes are available:
2926
2927 @table @kbd
2928 @item SPACE
2929 @kindex SPACE (Article)
2930 @findex gnus-article-next-page
2931 Scroll forwards one page (@code{gnus-article-next-page}).
2932 @item DEL
2933 @kindex DEL (Article)
2934 @findex gnus-article-prev-page
2935 Scroll backwards one page (@code{gnus-article-prev-page}).
2936 @item C-x r
2937 @kindex C-x r (Article)
2938 @findex gnus-article-refer-article
2939 If point is in the neighborhood of a message-id and you press @kbd{r},
2940 Gnus will try to get that article from the server.  (Only available with
2941 nntp).  (@code{gnus-article-refer-article}).
2942 @item C-x m
2943 @kindex C-x m (Article)
2944 @findex gnus-article-mail
2945 Send a reply to the address near point (@code{gnus-article-mail}). 
2946 @item C-x M
2947 @kindex C-x M (Article)
2948 @findex gnus-article-mail-with-original
2949 Send a reply to the address near point and include the original article
2950 (@code{gnus-article-mail-with-original}). 
2951 @item s
2952 @kindex s (Article)
2953 @findex gnus-article-show-summary
2954 Reconfigure the buffers so that the summary buffer becomes visible
2955 (@code{gnus-article-show-summary}).
2956 @item ?
2957 @kindex ? (Article)
2958 @findex gnus-article-describe-briefly
2959 Give a very brief description of the available keystrokes
2960 (@code{gnus-article-describe-briefly}). 
2961 @end table
2962
2963 @node Misc Article
2964 @section Misc Article
2965
2966 @vindex gnus-article-display-hook
2967 @vindex gnus-article-prepare-hook
2968 The @code{gnus-article-prepare-hook} is called right after the article
2969 has been inserted into the article buffer.  It is mainly intended for
2970 functions that do something depending on the contents; it should
2971 probably not be used for changing the contents of the article
2972 buffer.  Use the @code{gnus-article-display-hook} for that, which is
2973 called after this hook is called.
2974
2975 @vindex gnus-article-mode-line-format
2976 @code{gnus-article-mode-line-format} is a format string along the same
2977 lines as @code{gnus-summary-mode-line-format}.  It accepts exactly the
2978 same format specifications as that variable.
2979
2980 @vindex gnus-break-pages
2981 The @code{gnus-break-pages} variable controls whether @dfn{page
2982 breaking} is to take place.  If this variable is non-nil, the articles
2983 will be divided into pages whenever a @code{gnus-page-delimiter} appears
2984 in the article.  If this variable is nil, paging will not be done.
2985
2986 @vindex gnus-page-delimiter
2987 @code{gnus-page-delimiter} is @samp{^L} (form linefeed) by default.
2988
2989 @node Various
2990 @chapter Various
2991
2992 @menu
2993 * Interactive::                Making Gnus ask you many questions.
2994 * Windows Configuration::      Configuring the Gnus buffer windows.
2995 * Various Various::            Things that are really various.
2996 @end menu
2997
2998 @node Interactive
2999 @section Interactive
3000
3001 @table @code
3002 @item gnus-novice-user
3003 @vindex gnus-novice-user
3004 If this variable is non-nil, you are either a newcomer to the usenet
3005 world, or you are very cautious, which is a nice thing to be,
3006 really.  You will be given questions of the type "Are you sure you want
3007 to do this?" before doing anything dangerous.
3008 @item gnus-expert-user
3009 @vindex gnus-expert-user
3010 If this variable is non-nil, you will never ever be asked any questions
3011 by Gnus.  It will simply assume you know what your are doing, no matter
3012 how strange.
3013 @item gnus-interactive-catchup
3014 @vindex gnus-interactive-catchup
3015 Require confirmation before catching up a group if non-nil.
3016 @item gnus-interactive-post
3017 @vindex gnus-interactive-post
3018 If non-nil, the user will be prompted for a group name when posting
3019 an article.
3020 @item gnus-interactive-exit
3021 @vindex gnus-interactive-exit
3022 Require confirmation before exiting Gnus.
3023 @end table
3024
3025 @node Windows Configuration
3026 @section Windows Configuration
3027
3028 No, there's nothing here about X, so be quiet.
3029
3030 @table @code
3031 @item gnus-use-full-window
3032 @vindex gnus-use-full-window
3033 If non-nil, Gnus will delete all other windows and occupy the entire
3034 Emacs screen by itself.  It is t by default.
3035 @item gnus-window-configuration
3036 @vindex gnus-window-configuration
3037 This variable describes how much space each Gnus buffer should be given,
3038 compared to the other Gnus buffers.  Here's an example:
3039
3040 @example
3041 (setq gnus-window-configuration
3042   '((summary (0 1 0))
3043     (groups (1 0 0))
3044     (article (0 3 10))))
3045 @end example
3046
3047 This variable is a list of lists, where each of these small lists is on
3048 the form @var{(action (g s a))}.  As you can see, there are three
3049 possible @var{action}s - @code{group} (which is what happens when
3050 you first start Gnus, or returns from the summary buffer),
3051 @code{summary} (which is what happens when there are no unread articles
3052 in the group, and @code{article} (which is what happens when there
3053 is an unread article in the group). 
3054
3055 We see that in the first two actions, the respective buffers will fill
3056 the screen, and in the last, the article buffer will take ten lines for
3057 each three the summary buffer gets.
3058
3059 @findex gnus-window-configuration-split
3060 This variable can also have a function as its value.  In that case,
3061 whenever Gnus tries to configure the Gnus buffers, that function will be
3062 called with the @var{action} as its parameter.  There is one pre-made
3063 function supplied, @code{gnus-window-configuration-split}, which may be
3064 suitable if you have a very wide Emacs window, and wants to have the
3065 summary buffer and the article buffer side by side.  Here's the
3066 definition of this function, which you may use as a template for your
3067 own function(s):
3068
3069 @example
3070 (defun gnus-window-configuration-split (action)
3071   ;; The group buffer always exists, so it's nice to use 
3072   ;; it as a starting point.
3073   (switch-to-buffer gnus-group-buffer t)
3074   (delete-other-windows)
3075   (split-window-horizontally)
3076   (cond ((or (eq action 'group) (eq action 'summary))
3077          (if (and (get-buffer gnus-summary-buffer)
3078                   (buffer-name gnus-summary-buffer))
3079              (switch-to-buffer-other-window gnus-summary-buffer)))
3080         ((eq action 'article)
3081          (switch-to-buffer gnus-summary-buffer t)
3082          (other-window 1)
3083          ;; Create and initialize the article buffer if it doesn't
3084          ;; exist.
3085          (gnus-article-setup-buffer)
3086          (switch-to-buffer gnus-article-buffer t))))
3087 @end example
3088 @end table
3089
3090 @node Various Various
3091 @section Various Various
3092
3093 @vindex gnus-updated-mode-lines
3094 The @code{gnus-updated-mode-lines} variable is a list of buffers that
3095 should keep their mode lines updated.  The list may contain the symbols
3096 `group', `article' and `summary'.  If the corresponding symbol is
3097 present, Gnus will keep that mode line updated with information that may
3098 be pertinent.  If this variable is nil, screen refresh may be quicker.
3099
3100 @node Customization
3101 @chapter Customization
3102
3103 All variables are properly documented elsewhere in this manual.  This
3104 section is designed to give general pointers on how to customize Gnus
3105 for some quite common situations.
3106
3107 @menu
3108 * Slow NNTP Connection::      You run a local Emacs and get the news elsewhere.
3109 * Slow Terminal Connection::  You run a remote Emacs.
3110 * Little Disk Space::         You feel that having large setup files is icky.
3111 * Slow Machine::              You feel like buying a faster machine.
3112 @end menu
3113
3114 @node Slow NNTP Connection
3115 @section Slow NNTP Connection
3116
3117 If you run Emacs on a machine locally, and get your news from a machine
3118 over some very thin strings, you want to cut down on the amount of data
3119 Gnus has to get from the NNTP server.
3120
3121 @table @code
3122 @item gnus-read-active-file
3123 Set this to nil, which will inhibit Gnus from requesting the entire active
3124 file from the server.  This file is often v. large.  You also have to set
3125 @code{gnus-check-new-news} and @code{gnus-check-bogus-newsgroups} to nil
3126 to make sure that Gnus doesn't suddenly decide to fetch the active file
3127 anyway.  Note that this will make it difficult for you to get hold of new
3128 groups. 
3129 @item nntp-xover-is-evil
3130 This one has to be nil.  If not, grabbing article headers from the NNTP
3131 server will not be very fast.  Not all NNTP servers support XOVER; Gnus
3132 will detect this by itself.
3133 @end table
3134
3135 @node Slow Terminal Connection
3136 @section Slow Terminal Connection
3137
3138 Let's say you use your home computer for dialling up the system that
3139 runs Emacs and Gnus.  If your modem is slow, you want to reduce the
3140 amount of data that is sent over the wires as much as possible.
3141
3142 @table @code
3143 @item gnus-auto-center-summary
3144 Set this to nil to inhibit Gnus from recentering the summary buffer all
3145 the time.
3146 @item gnus-visible-headers
3147 Cut down on the headers that are included in the articles to the
3148 minimum.  You can, in fact, make do without them altogether - most of the
3149 useful data is in the summary buffer, anyway.  Set this variable to
3150 @samp{""} or @samp{"^Date:"}, or whatever you feel you need.
3151 @item gnus-article-display-hook
3152 Set this hook to all the available hiding commands:
3153 @example
3154 (setq gnus-article-display-hook 
3155       '(gnus-article-hide-headers gnus-article-hide-signature
3156         gnus-article-hide-citation))
3157 @end example
3158 @item gnus-use-full-window
3159 By setting this to nil, you can make all the windows smaller.  While this
3160 doesn't really cut down much generally, it means that you have to see
3161 smaller portions of articles before deciding that you didn't want to
3162 read them anyway.
3163 @item gnus-thread-hide-subtree
3164 If this is non-nil, all threads in the summary buffer will be hidden
3165 initially. 
3166 @item gnus-updated-mode-lines
3167 If this is nil, Gnus will not put information in the buffer mode lines,
3168 which might save some time.
3169 @end table
3170
3171 @node Little Disk Space
3172 @section Little Disk Space
3173
3174 The startup files can get rather large, so you may want to keep their
3175 sizes down a bit if you are running out of space.
3176
3177 @table @code
3178 @item gnus-save-newsrc-file
3179 If this is nil, Gnus will never save @file{.newsrc} - it will only save
3180 @file{.newsrc.eld}.  This means that you will not be able to use any
3181 other newsreaders than Gnus. 
3182 @item gnus-save-killed-list
3183 If this is nil, Gnus will not save the list of dead groups.  That
3184 means that Gnus will not know whether groups are new or old, which
3185 makes automatic handling of new groups impossible.  You should also
3186 set @code{gnus-check-new-newsgroups} and
3187 @code{gnus-check-bogus-newsgroups} to nil if you set this variable to
3188 nil. 
3189 @end table
3190
3191 @node Slow Machine
3192 @section Slow Machine
3193
3194 If you have a slow machine, or are just really impatient, there are a
3195 few things you can do to make Gnus run faster.
3196
3197 Set @code{gnus-read-active-file}, @code{gnus-check-new-newsgroups},
3198 @code{gnus-check-bogus-newsgroups} to nil to make startup faster. 
3199
3200 Set @code{gnus-show-threads}, @code{gnus-use-cross-reference} and
3201 @code{nntp-xover-is-evil} to nil to make entering and exiting the
3202 summary buffer faster.
3203
3204 Set @code{gnus-article-display-hook} to nil to make article processing a
3205 bit faster.
3206
3207 @node Troubleshooting
3208 @chapter Troubleshooting
3209
3210 @node Reporting Bugs
3211 @chapter Reporting Bugs
3212
3213 If you find a bug in (ding) Gnus, you can report it with the @kbd{M-x
3214 gnus-bug} command. @code{(setq debug-on-error t)}, and send me the
3215 backtrace. I will fix bugs, but I can only fix them if you send me a
3216 precise description as to how to reproduce the bug.
3217
3218 If you just need help, you are better off asking on
3219 @samp{gnu.emacs.gnus}. 
3220
3221 @node Index
3222 @chapter Index
3223 @printindex cp
3224
3225 @node Key Index
3226 @chapter Key Index
3227 @printindex ky
3228
3229 @summarycontents
3230 @contents
3231 @bye
3232
3233 \f
3234 @c Local Variables:
3235 @c outline-regexp: "@chap\\|@\\(sub\\)*section\\|@appendix \\|@appendix\\(sub\\)*sec\\|\^L"
3236 @c End: