*** empty log message ***
[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 Gnus 0.51 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) 1995 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 Magne Ingebrigtsen
49 @page
50 @vskip 0pt plus 1filll
51 Copyright @copyright{} 1995 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 Newsreader
71
72 You can read news (and mail) from within Emacs by using Gnus.  The news
73 can be gotten by any nefarious means you can think of - @sc{nntp}, local
74 spool or your mbox file.  All at the same time, if you want to push your
75 luck.
76
77 @menu
78 * History::                 How Gnus got where it is today.
79 * Terminology::             We use really difficult, like, words here.
80 * Starting Up::             Finding news can be a pain.
81 * The Group Buffer::        Selecting, subscribing and killing groups.
82 * The Summary Buffer::      Reading, saving and posting articles.
83 * The Article Buffer::      Displaying and handling articles.
84 * The Server Buffer::       Making and editing virtual servers.
85 * Various::                 General purpose settings.
86 * Customization::           Tailoring Gnus to your needs.
87 * Troubleshooting::         What you might try if things do not work.
88 * The End::                 Farewell, and goodbye.
89 * Index::                   Variable, function and concept index.
90 * Key Index::               Key Index.
91 @end menu
92
93 This manual hasn't been prperly proff-read yet, so typos abound, and
94 misleading information is sure to exist.  
95
96 @node History
97 @chapter History
98
99 @cindex history
100 @sc{gnus} was written by Masanobu UMEDA.  When autumn crept up in '94,
101 Lars Magne Ingebrigtsen grew bored and decided to rewrite Gnus.
102
103 The recommended pronounciation of the name this program is "ding
104 guh-noose", with "ding" being half-sung in a loud, high-pitched voice,
105 and "guh-noose" being grumbled and a disaffected fashion.  Any
106 irritation and/or damage this name may cause you is not the
107 responsibility of the author, even though you might like to strangle him
108 for the stupid idea.
109
110 If you want to investigate the person responsible for this outrage, you
111 can point your (feh!) web browser to
112 @file{http://www.ifi.uio.no/~larsi/}.  This is also the primary
113 distribution point for the new and spiffy versions of Gnus, also know as
114 The Site That Destroys Newsrcs And Drives People Mad.
115
116 @dfn{(ding)}, is, of course, short for @dfn{ding is not Gnus}, which is
117 a total and utter lie, but who cares? (Besides, the "Gnus" in this
118 abbreviation should probably be pronounced "news" as UMEDA intended,
119 which makes it a more appropriate name, don't you think?)
120
121 @menu
122 * Compatibility::       Just how compatible is (ding) Gnus with @sc{gnus}?
123 * Contributors::        Oodles of people.  
124 * Gnus & hilit::        Old hilit19 code will not work with (ding) Gnus.
125 * New Features::        A short description of all the new stuff in Gnus.
126 * Newest Features::     Features so new that they haven't been written yet.
127 @end menu
128
129 @node Compatibility
130 @section Compatibility
131
132 @cindex compatability
133 (ding) Gnus was designed to be fully compatible with @sc{gnus}.  Almost
134 all key bindings have been kept.  More key bindings have been added, of
135 course, but only in one or two obscure cases have old bindings been
136 changed.
137
138 Our motto is:
139 @quotation
140 @cartouche
141 @center In a cloud bones of steel.
142 @end cartouche
143 @end quotation
144
145 All commands have kept their names.  Some internal functions have changed
146 their names.
147
148 The @code{gnus-uu} package has changed drastically. @xref{Decoding
149 Articles}. 
150
151 One major compatability question if the presence of several summary
152 buffers.  All variables that are relevant while reading a group are
153 buffer-local to the summary buffer they belong in.  Although most
154 important variables have their values copied into their global
155 counterparts whenever a command is executed in the summary buffer, this
156 change might lead to incorrect values being used unless you are careful.
157
158 All code that relies on knowledge of @sc{gnus} internals will probably
159 fail.  To take two examples: Sorting @code{gnus-newsrc-assoc} (or
160 changing it in any way, as a matter of fact) is strictly verboten.  Gnus
161 maintains a hash table that points to the entries in this assoc (which
162 speeds up many functions), and changing the assoc directly will lead to
163 peculiar results.
164
165 @cindex hilit19
166 @cindex highlighting
167 Old hilit19 code does not work at all.  In fact, you should probably
168 remove all hihit code from all Gnus hooks
169 (@code{gnus-group-prepare-hook}, @code{gnus-summary-prepare-hook} and
170 @code{gnus-summary-article-hook}).  (Well, at the very least the first
171 two.)  Gnus provides various integrated functions for highlighting.
172 These are faster and more accurate.
173
174 Packages like @code{expire-kill} will no longer work.  As a matter of
175 fact, you should probably remove all old @sc{gnus} packages (and other
176 code) when you start using (ding) Gnus.  More likely than not, (ding)
177 Gnus already does what you have written code to make @sc{gnus} do.
178 (Snicker.)
179
180 Even though old methods of doing things are still supported, only the
181 new methods are documented in this manual.  If you detect a new method of
182 doing something while reading this manual, that does not mean you have
183 to stop doing it the old way.
184
185 (ding) Gnus understands all @sc{gnus} startup files.
186
187 @kindex M-x gnus-bug
188 Overall, a casual user who hasn't written much code that depends on
189 @sc{gnus} internals should suffer no problems.  If problems occur,
190 please let me know (@kbd{M-x gnus-bug}).
191
192 Problems specific to GNU XEmacs can be reported to popineau@@ese-metz.fr
193 (Fabrice Popineau).  I will just forward any such questions to him,
194 anyway, so you might have to wait longer if you mail XEmacs questions to
195 me.
196
197 @node Contributors
198 @section Contributors
199 @cindex contributors
200
201 The new Gnus version couldn't have been done without the help of all the
202 people on the (ding) mailing list.  Every day for months I have gotten
203 tens of nice bug reports from them, filling me with joy, every single
204 one of them.  Smooches.  The people on the list have been tried beyond
205 endurance, what with my "oh, that's a neat idea <type type>, yup, I'll
206 release it right away <ship off> no wait, that doesn't work at all <type
207 type>, yup, I'll ship that one off right away <ship off> no, wait, that
208 aboslutely does not work" policy for releases.  Microsoft - bah.  I'm
209 @emph{much} worse.
210
211 I would like to take this opportunity to thank the Academy for...  oops,
212 wrong show.
213
214 @itemize @bullet
215 @item
216 Of course, GNUS was written by Masanobu UMEDA.
217 @item 
218 Many excellent functions, especially dealing with scoring and
219 highlighting (as well as the soon-to-come @sc{soup} support) was written
220 by Per Abrahamsen.
221 @item
222 Innumarable bug fixes were written by Sudish Joseph.
223 @item
224 I stole some pieces from the XGnus distribution by Felix Lee and JWZ.
225 @item 
226 nnfolder has been much enhanced by Scott Byer.
227 @item
228 The orphan scoring was written by Peter Mutsaers.
229 @item 
230 GNU XEmacs support has been added by Fabrice Popineau. 
231 @item 
232 Various bits and pieces, especially dealing with .newsrc files, was
233 suggested and added by Hallvard B Furuseth.
234 @item 
235 Brian Edmonds has written @code{gnus-bbdb}, as well as other bits and
236 pieces. 
237 @item 
238 Stainless Steel Rat, Jack Vinson, Daniel Quinlan, Ilja Weis and Andrew
239 Eskilsson have all contributed code and suggestions.
240 @end itemize
241
242
243 @node Gnus & hilit
244 @section Gnus & hilit
245 @cindex hilit
246
247 @c Written by Sudish Joseph
248
249 @code{gnus-visual} can be used to highlight the summary buffer.  It
250 offers far more flexibility than hilit (since it has access to more
251 data; eg. the article score) in deciding how to highlight a given
252 article.  Also, hilit gets confused by the way Gnus manipulates the
253 summary buffer, leading to errors.  Such errors may be detected by
254 looking for any hilit-specific functions in the @code{*Backtrace*}
255 buffer.  If such a reference exists, you should be using the code below.
256
257 On the other hand, @code{gnus-visual} makes no attempt to highlight the
258 article buffer, while hilit does a very good job of this.  There is a
259 compatibility problem here though, since hilit uses
260 @code{gnus-article-prepare-hook} to do its magic.  This hook is executed
261 @emph{before} headers are hidden, via
262 @code{gnus-article-hide-headers-if-wanted} which is run from
263 @code{gnus-article-display-hook}.  The act of hiding the headers undoes
264 all of the hilighting already done.  A similar effect occured in vanilla
265 @sc{gnus 4.1} if @code{gnus-show-mime} was set to @code{t}, since
266 @sc{mime} processing, too, is done after this hook is executed.
267
268 The solution here is to use @code{gnus-article-display-hook} for
269 highlighting (and for all purposes where you used
270 @code{gnus-article-prepare-hook} earlier).  This hook is run after
271 @sc{mime} processing, and is the last thing done before actually
272 displaying the article.  Add the code below to your @file{.gnus} file to
273 get the right functions onto the right hooks.
274
275 @lisp
276 (add-hook 'gnus-startup-hook
277           '(lambda ()
278              ;; gnus-visual is far better for summary highlighting
279              ;; also, hilit cannot handle a (ding) summary and will
280              ;; crash on you
281              (remove-hook 'gnus-summary-prepare-hook
282                           'hilit-rehighlight-buffer-quietly)
283              (remove-hook 'gnus-summary-prepare-hook 'hilit-install-line-hooks)
284              ;; this is too early for the purpose of highlighting
285              (remove-hook 'gnus-article-prepare-hook
286                           'hilit-rehighlight-buffer-quietly)
287              ;; use this instead.  note that the final t is *essential*,
288              ;; this must be the last thing done
289              (add-hook 'gnus-article-display-hook
290                        'hilit-rehighlight-buffer-quietly t)))
291 @end lisp
292
293
294 @node New Features
295 @section New Features
296 @cindex new features
297
298 The look of all buffers can be changed by setting format-like variables.
299  
300 Local spool and several @sc{nntp} servers can be used at once.  Virtual
301 groups and private mail groups are featured.
302
303 Gnus can use various strategies for gathering threads that have lost
304 their roots (thereby gathering loose sub-threads in one thread) or it
305 can go back and retrieve enough headers to build a complete thread.
306
307 Killed groups can be displayed in the group buffer, and you can read
308 them as well.
309
310 Gnus can do partial group updates - you do not have to retrieve the
311 entire active file just to check for new articles in a few groups.
312
313 Gnus implements a sliding scale of subscribedness to groups.
314
315 The approach to killing has been changed.  Instead of simply killing or
316 not, you can score articles for easier reading.
317
318 @node Newest Features
319 @section Newest Features
320 @cindex todo
321
322 Also known as the @dfn{todo list}.  Sure to be implemented before the
323 next millennium.
324
325 @itemize @bullet
326 @item 
327 Asynchronous article and header fetching would be very nice.  Pleasant.
328 Even useful.  I might even have come up with an idea as to how to
329 implement it (two connections, a bit @code{run-at-time}, and lots of
330 glue), but this will probably not be implemented within the next few
331 months.  In fact, I would put money on it not being implemented before
332 (ding) is released, so this is more for Gnus 6.0.  Asynchronous posting,
333 however, could possibly be included much sooner, as it is a separate
334 issue. 
335 @item
336 Native @sc{mime} support is something that should be done.  I was hoping
337 I could steal code from @code{Mew}, the @sc{mime} mail reader for Emacs,
338 but I'm not quite sure what the status of that project is.  (ding) might
339 support @sc{mime} quite soon, and it might not.
340 @item 
341 Some form of caching would come in handy.  Not only for those with
342 extremely slow @sc{nntp} connections, but as a more general way of
343 saving articles in a simple fashion.  (You'd basically just mark an
344 article as @dfn{cached}.  Gnus would put it in some local directory, and
345 each time you request that article from that group, Gnus would fetch the
346 local copy instead.)  Lots of quite interesting stuff to be considered
347 (caching @sc{nov} headers or not?) before jumping into it.  It would
348 require much twiddling of Gnus internals to make it work transparently.
349 @item
350 Gnus could detect which articles in you read and which articles you
351 kill, and then employ some adaptive scoring scheme.  That could
352 potentially be quite interesting, and it's easy enough to implement.
353 @item
354 When the user references the parent of an article, some sort of
355 re-threading should be done to build a proper tree.  The same goes for
356 article expunging.  However, as it stands, it's not a trivial issue to
357 re-generate parts of the summary buffer.  Generating the entire buffer
358 is very easy, but slow.
359 @end itemize
360
361 @node Terminology
362 @chapter Terminology
363
364 @cindex terminology
365 @table @dfn
366 @item news
367 @cindex news
368 This is what you are supposed to use this thing for - reading news.
369 News is generally fetched from a nearby @sc{nntp} server, and is
370 generally publicly available to everybody.  If you post news, the entire
371 world is likely to read just what you have written, and they'll all
372 snigger mischievously.  Behind your back.
373 @item mail
374 @cindex mail
375 Everything that's delivered to you personally is mail.  Some news/mail
376 readers (like Gnus) blur the distinction between mail and news, but
377 there is a difference.  Mail is private.  News is public.  Mailing is
378 not posting, and replying is not following up.
379 @item reply
380 Send a mail to the person who has written what you are reading.
381 @item follow up
382 Post an article to the current newsgroup responding to the article you
383 are reading.
384 @item backend
385 Gnus gets fed articles from a number of backends, both news and mail
386 backends.  Gnus does not handle the underlying media, so to speak - this
387 is all done by the backends.
388 @item native
389 Gnus will always use one method (and backend) as the @dfn{native}, or
390 default, way of getting news.
391 @item foreign
392 You can also have any number of foreign groups at the same time.  These
393 are groups that use different backends for getting news.
394 @item head
395 @cindex head
396 The top part of an article, where administration information (etc.) is
397 put. 
398 @item body
399 @cindex
400 The rest of an article. Everything that is not in the head is in the
401 body. 
402 @item header
403 @cindex header
404 A line from the head of an article. 
405 @item headers
406 @cindex headers
407 A collection of such lines, or a collection of heads.  Or even a
408 collection of @sc{nov} lines.
409 @item @sc{nov}
410 @cindex nov
411 When Gnus enters a group, it asks the backend for the headers for all
412 the unread articles in the group.  Most servers support the News OverView
413 format, which is much smaller and much faster to read than the normal
414 HEAD format. 
415 @item level
416 @cindex levels
417 Each group is subscribed at some @dfn{level} or other (1-9).  The ones
418 that have a lower level are "more" subscribed than the groups with a
419 higher level.  In fact, groups on levels 1-5 are considered
420 @dfn{subscribed}; 6-7 are @dfn{unsubscribed}; 8 are @dfn{zombies}; and 9
421 are @dfn{killed}.  Commands for listing groups and scanning for new
422 articles will all use the numeric prefix as @dfn{working level}.
423 @item killed groups
424 @cindex killed groups
425 No information on killed groups is stored or updated, which makes killed
426 groups much easier to handle than subscribed groups.
427 @item zombie groups
428 @cindex zombie groups
429 Just like killed groups, only slightly less dead.
430 @item active file
431 @cindex active file
432 The news server has to keep track of what articles it carries, and what
433 groups exist.  All this information in stored in the active file, which
434 is rather large, as you might surmise.
435 @end table
436
437 @node Starting Up
438 @chapter Starting Gnus
439 @cindex starting up
440
441 @kindex M-x gnus
442 If your system administrator has set things up properly, starting Gnus
443 and reading news is extremely easy - you just type @kbd{M-x gnus}.
444
445 If things do not go smoothly at startup, you have to twiddle some
446 variables. 
447
448 @menu
449 * Finding the News::    Choosing a method for getting news.
450 * The First Time::      What does Gnus do the first time you start it?
451 * The Server is Down::  How can I read my mail then?
452 * New Groups::          What is Gnus supposed to do with new groups?
453 * Startup Files::       Those pesky startup files - @file{.newsrc}.
454 * Auto Save::           Recovering from a crash.
455 * The Active File::     Reading the active file over a slow line Takes Time.
456 * Startup Variables::   Other variables you might change.
457 @end menu
458
459 @node Finding the News
460 @section Finding the News
461
462 @vindex gnus-select-method
463 The @code{gnus-select-method} variable controls how Gnus finds news.
464 This variable should be a list where the first element says @dfn{how}
465 and the second element says @dfn{where}.  This method is is your native
466 method.  All groups that are not fetched with this method are foreign
467 groups.
468
469 For instance, if you want to get your daily dosage of news from the
470 @samp{news.somewhere.edu} @sc{nntp} server, you'd say:
471
472 @lisp
473 (setq gnus-select-method '(nntp "news.somewhere.edu"))
474 @end lisp
475
476 If you want to read directly from the local spool, say:
477
478 @lisp
479 (setq gnus-select-method '(nnspool ""))
480 @end lisp
481
482 If you can use a local spool, you probably should, as it will almost
483 certainly be much faster.
484
485 If this variable is not set, Gnus will take a look at the
486 @code{NNTPSERVER} environment variable.  If that isn't set either, it
487 will try to use the machine that is running Emacs as an @sc{nntp}
488 server.
489
490 @vindex gnus-nntp-server
491 If @code{gnus-nntp-server} is set, this variable will override
492 @code{gnus-select-method}.  You should therefore set
493 @code{gnus-nntp-server} to @code{nil}, which is what it is by default.
494
495 @vindex gnus-secondary-servers
496 You can also make Gnus prompt you interactively for the name of an
497 @sc{nntp} server.  If you give a non-numerical prefix to @code{gnus}
498 (ie. @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
499 in the @code{gnus-secondary-servers} list (if any).  You can also just
500 type in the name of any server you feel like visiting.
501
502 However, if you use one @sc{nntp} server regularly, and are just
503 interested in a couple of groups from a different server, you would be
504 better served by using the @code{gnus-group-browse-foreign-server}
505 command from the group buffer.  It will let you have a look at what
506 groups are available, and you can subscribe to any of the groups you
507 want to.  This also makes @file{.newsrc} maintenance much tidier.
508 @xref{Foreign Groups}.
509
510 @vindex gnus-secondary-select-methods
511 A slightly different approach to foreign groups is to set the
512 @code{gnus-secondary-select-methods} variable.  The select methods
513 listed in this variable are in many ways just as native as the
514 @code{gnus-select-method} server.  They will also be queried for active
515 files during startup (if that's required), and new newsgroups that
516 appear on these servers will be subscribed (or not) just as native
517 groups are.
518
519 For instance, if you use the @code{nnmbox} backend to read you mail, you
520 would typically set this variable to
521
522 @lisp
523 (setq gnus-secondary-select-methods '((nnmbox "")))
524 @end lisp
525
526 @node The First Time
527 @section The First Time
528 @cindex first time usage
529
530 If no startup files exist, Gnus will try to determine what groups should
531 be subscribed by default.
532
533 @vindex gnus-default-subscribed-newsgroups
534 If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
535 will subscribe you to just those groups in that list, leaving the rest
536 killed.  Your system administrator should have set this variable to
537 something useful.
538
539 Since she hasn't, Gnus will just subscribe you to a few randomly picked
540 groups (ie. @samp{*.newusers}).  (@dfn{Random} is here defined as
541 "whatever Lars thinks you should read".)
542
543 You'll also be subscribed to the Gnus documentation group, which should
544 help you with most common problems.  
545
546 If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
547 use the normal functions for handling new groups, and not do anything
548 special.
549
550 @node The Server is Down
551 @section The Server is Down
552 @cindex server errors
553
554 If the default server is down, Gnus will understandably have some
555 problems starting.  However, if you have some mail groups in addition to
556 the news groups, you may want to start Gnus anyway.
557
558 Gnus, being the trusting sort of program, will ask whether to proceed
559 without a native select method if that server can't be contacted.  This
560 will happen whether the server doesn't actually exist (ie. you have
561 given the wrong address) or the server has just momentarily taken ill
562 for some reason or other.  
563
564 If Gnus says "nntp server on <your server> can't be opened. Continue?",
565 you do not want to continue unless you have some foreign groups that you
566 want to read.  Even if you don't, Gnus will let you continue, but you'll
567 find it difficult to actually do anything in the group buffer.  But,
568 hey, that's your problem.  Blllrph!
569
570 @node New Groups
571 @section New Groups
572 @cindex new groups
573
574 @vindex gnus-subscribe-newsgroup-method
575 What Gnus does when it encounters a new group is determined by the
576 @code{gnus-subscribe-newsgroup-method} variable.
577
578 This variable should contain a function.  Some handy pre-fab values
579 are:
580
581 @table @code
582 @item gnus-subscribe-randomly
583 @vindex gnus-subscribe-randomly
584 Subscribe all new groups randomly.
585 @item gnus-subscribe-alphabetically
586 @vindex gnus-subscribe-alphabetically
587 Subscribe all new groups alphabetically.
588 @item gnus-subscribe-hierarchically
589 @vindex gnus-subscribe-hierarchically
590 Subscribe all new groups hierarchially.
591 @item gnus-subscribe-interactively
592 @vindex gnus-subscribe-interactively
593 Subscribe new groups interactively.  This means that Gnus will ask
594 you about @strong{all} new groups.
595 @item gnus-subscribe-zombies
596 @vindex gnus-subscribe-zombies
597 Make all new groups zombies.  You can browse the zombies later and
598 either kill them all off properly, or subscribe to them.  This is the
599 default.
600 @end table
601
602 @vindex gnus-subscribe-hierarchical-interactive
603 A closely related variable is
604 @code{gnus-subscribe-hierarchical-interactive}.  (That's quite a
605 mouthful.)  If this variable is non-@code{nil}, Gnus will ask you in a
606 hierarchial fashion whether to subscribe to new groups or not.  Gnus
607 will ask you for each sub-hierarchy whether you want to descend the
608 hierarchy or not.
609
610 One common way to control which new newsgroups should be subscribed or
611 ignored is to put an @dfn{options} line at the start of the
612 @file{.newsrc} file.  Here's an example:
613
614 @example
615 options -n !alt.all !rec.all sci.all
616 @end example
617
618 @vindex gnus-subscribe-options-newsgroup-method
619 This line obviously belongs to a serious-minded intellectual scientific
620 person (or she may just be plain old boring), because it says that all
621 groups that have names beginning with @samp{alt} and @samp{rec} should
622 be ignored, and all groups with names beginning with @samp{sci} should
623 be subscribed.  Gnus will not use the normal subscription method for
624 subscribing these groups.
625 @code{gnus-subscribe-options-newsgroup-method} is used instead.  This
626 variable defaults to @code{gnus-subscribe-alphabetically}.
627
628 @vindex gnus-options-not-subscribe
629 @vindex gnus-options-subscribe
630 If you don't want to mess with your @file{.newsrc} file, you can just
631 set the two variables @code{gnus-options-subscribe} and
632 @code{gnus-options-not-subscribe}.  These two variables do exactly the
633 same as the @file{.newsrc} options -n trick.  Both are regexps, and if
634 the the new group matches the first, it will be unconditionally
635 subscribed, and if it matches the latter, it will be ignored.
636
637 @vindex gnus-check-new-newsgroups
638 If you are satisfied that you really never want to see any new groups,
639 you could set @code{gnus-check-new-newsgroups} to @code{nil}.  This will
640 also save you some time at startup.  Even if this variable is
641 @code{nil}, you can always subscribe to the new groups just by pressing
642 @kbd{U} in the group buffer (@pxref{Group Maintenance}).
643
644 Gnus normally determines whether a group is new or not by comparing the
645 list of groups from the active file(s) with the lists of subscribed and
646 dead groups.  This isn't a particularly fast method.  If
647 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
648 server for new groups since the last time.  This is both faster &
649 cheaper.  This also means that you can get rid of the list of killed
650 groups altogether, so you may set @code{gnus-save-killed-list} to
651 @code{nil}, which will save time both at startup, at exit, and all over.
652 Saves disk space, too.  Why isn't this the default, then?
653 Unfortunately, not all servers support this function.
654
655 This variable can also be a list of select methods.  If so, Gnus will
656 issue an @code{ask-server} command to each of the select methods, and
657 subscribe them (or not) using the normal methods.  This might be handy
658 if you are monitoring a few servers for new groups.  A side effect is
659 that startup will take much longer, so you can meditate while waiting.
660 Use the mantra "dingnusdingnusdingnus" to achieve permanent happiness.
661
662 @node Startup Files
663 @section Startup Files
664 @cindex startup files
665 @cindex .newsrc
666
667 Now, you all know about the @file{.newsrc} file.  All subscription
668 information is traditionally stored in this file.
669
670 Things got a bit more complicated with @sc{gnus}.  In addition to
671 keeping the @file{.newsrc} file updated, it also used a file called
672 @file{.newsrc.el} for storing all the information that didn't fit into
673 the @file{.newsrc} file.  (Actually, it duplicated everything in the
674 @file{.newsrc} file.)  @sc{gnus} would read whichever one of these files
675 that were the most recently saved, which enabled people to swap between
676 @sc{gnus} and other newsreaders.
677
678 That was kinda silly, so (ding) Gnus went one better: In addition to the
679 @file{.newsrc} and @file{.newsrc.el} files, (ding) Gnus also has a file
680 called @file{.newsrc.eld}.  It will read whichever of these files that
681 are most recent, but it will never write a @file{.newsrc.el} file.
682
683 @vindex gnus-save-newsrc-file
684 You can also turn off writing the @file{.newsrc} file by setting
685 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
686 the file and save some space, as well as making exit from Gnus faster.
687 However, this will make it impossible to use other newsreaders than
688 Gnus.  But hey, who would want to, right?
689
690 @vindex gnus-save-killed-list
691 If @code{gnus-save-killed-list} is @code{nil}, Gnus will not save the
692 list of killed groups to the startup file.  This will save both time
693 (when starting and quitting) and space (on disk).  It will also means
694 that Gnus has no record of what groups are new or old, so the automatic
695 new groups subscription methods become meaningless.  You should always
696 set @code{gnus-check-new-newsgroups} to @code{nil} or @code{ask-server}
697 if you set this variable to @code{nil} (@pxref{New Groups}).
698
699 @vindex gnus-startup-file
700 The @code{gnus-startup-file} variable says where the startup files are.
701 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
702 file being whatever that one is with a @samp{.eld} appended.
703
704 @vindex gnus-save-newsrc-hook
705 @code{gnus-save-newsrc-hook} is called before saving the @file{.newsrc}
706 file.
707
708 @node Auto Save
709 @section Auto Save
710 @cindex dribble file
711 @cindex auto-save
712
713 Whenever you do something that changes the Gnus data (reading articles,
714 cathing up, killing/subscribing groups), the change is added to a
715 special @dfn{dribble buffer}.  This buffer is auto-saved the normal
716 Emacs way.  If your Emacs should crash before you have saved the
717 @file{.newsrc} files, all changes you have made can be recovered from
718 this file.
719
720 If Gnus detects this file at startup, it will ask the user whether to
721 read it. The auto save file is deleted whenever the real startup file is
722 saved.
723
724 @vindex gnus-use-dribble-file
725 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
726 maintain a dribble buffer.
727
728 @node The Active File
729 @section The Active File
730 @cindex active file
731 @cindex ignored groups
732
733 When Gnus starts, or indeed whenever it tries to determine whether new
734 articles have arrived, it reads the active file.  This is a very large
735 file that lists all the active groups and articles on the @sc{nntp}
736 server.
737
738 @vindex gnus-ignored-newsgroups
739 Before examining the active file, Gnus deletes all lines that match the
740 regexp @code{gnus-ignored-newsgroups}.  This is done primarily to reject
741 any groups with bogus names (eg. groups containing characters like
742 @samp{'[]"} and so on), but you can use this variable to make Gnus
743 ignore hierarchies you aren't ever interested in.
744
745 @vindex gnus-read-active-file
746 The active file can be rather Huge, so if you have a slow network, you
747 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
748 reading the active file.
749
750 Gnus will try to make do by just getting information on the groups
751 that you actually subscribe to.
752
753 Note that if you subscribe to lots and lots of groups, setting this
754 variable to @code{nil} will probabaly make Gnus slower, not faster.  At
755 present, having this variable @code{nil} will slow Gnus down
756 considerably, unless you read news over a 2400 baud modem.  Gnus does
757 the group info fetching in total lock-step, so if you have this variable
758 @code{nil}, you should kill all groups that you aren't interested in to
759 speed things up.
760
761 There are plans for doing lots of Gnus stuff asynchronously, which
762 should make this option more useful, but that's probably some ways off
763 in the future.
764
765 @node Startup Variables
766 @section Startup Variables
767
768 @table @code
769 @item gnus-check-bogus-newsgroups
770 @vindex gnus-check-bogus-newsgroups
771 If non-@code{nil}, Gnus will check for and delete all bogus groups at
772 startup.  A @dfn{bogus group} is a group that you have in your
773 @file{.newsrc} file, but doesn't exist on the news server.  Checking for
774 bogus groups isn't very quick, so to save time and resources, it's best
775 to leave this option off, and instead do the checking for bogus groups
776 once in a while from the group buffer (@pxref{Group Maintenance}).
777 @item gnus-inhibit-startup-message
778 @vindex gnus-inhibit-startup-message
779 If non-@code{nil}, the startup message won't be displayed.  That way,
780 your boss might not notice thay you are reading news instead of doing
781 your job.
782 @item gnus-no-groups-message
783 @vindex gnus-no-groups-message
784 Message displayed by Gnus when no groups are available.
785 @end table
786
787 @node The Group Buffer
788 @chapter The Group Buffer
789 @cindex group buffer
790
791 The @dfn{group buffer} lists all (or parts) of the available groups.  It
792 is the first buffer shown when Gnus starts, and will never be killed as
793 long as Gnus is active.
794
795 @menu
796 * Group Buffer Format::    Information listed and how you can change it.
797 * Group Manouvering::      Commands for moving in the group buffer.
798 * Selecting a Group::      Actually reading news.
799 * Group Subscribing::      Unsubscribing, killing, subscribing.
800 * Group Levels::           Levels? What are those, then?
801 * Foreign Groups::         How to create foreign groups.
802 * Listing Groups::         Gnus can list various subsets of the groups.
803 * Group Maintenance::      Maintaining a tidy @file{.newsrc} file.
804 * Browse Foreign Server::  You can browse a server.  See what if has to offer.
805 * Exiting Gnus::           Stop reading news and get some work done.
806 * Misc Group Stuff::       Other stuff that you can to do.
807 @end menu
808
809 @node Group Buffer Format
810 @section Group Buffer Format
811 @cindex group buffer format
812
813 The default format of the group buffer is nice and dull, but you can
814 make it as exciting and ugly as you feel like.
815
816 Here's a couple of example group lines:
817
818 @example
819      25: news.announce.newusers
820  *    0: alt.fan.andrea-dworkin
821 @end example
822
823 Quite simple, huh?
824
825 You can see that there are 25 unread articles in
826 @samp{news.announce.newusers}.  There are no unread articles, but some
827 ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
828 asterisk at the beginning of the line?)
829
830 @vindex gnus-group-line-format
831 You can fuck that up to your heart's delight by fiddling with the
832 @code{gnus-group-line-format} variable.  This variable works along the
833 lines of a @code{format} specification, which is pretty much the same as
834 a @code{printf} specifications, for those of you who use (feh!) C.
835
836 In addition to the normal "padding" specs that @code{format} supports
837 (eg. @samp{%7d}), specifications like @samp{%7,12s} are allowed.  A spec
838 of this type means that the field will be at least 7 characters long,
839 and never more that 12 characters long.
840
841 The default value that produced those lines above is 
842 @samp{"%M%S%5y: %(%g%)\n"}.
843
844 There should always be a colon on the line; the cursor always moves to
845 the colon after performing an operation.  Nothing else is required - not
846 even the group name.  All displayed text is just window dressing, and is
847 never examined by Gnus.  Gnus stores all real information it needs using
848 text properties.
849
850 (Note that if you make a really strange, wonderful, spreadsheat-like
851 layout, everybody will believe you are hard at work with the accounting
852 instead of wasting time reading news.)
853
854 Here's a list of all available format characters:
855
856 @table @samp
857 @item M    
858 Only marked articles.
859 @item S
860 Whether the group is subscribed.
861 @item L    
862 Level of subscribedness.
863 @item N
864 Number of unread articles.
865 @item I
866 Number of dormant articles.
867 @item T
868 Number of ticked articles.
869 @item R
870 Number of read articles.
871 @item t
872 Total number of articles.
873 @item y
874 Number of unread, unticked, non-dormant articles.
875 @item i
876 Number of ticked and dormant articles.
877 @item g
878 Full group name.
879 @item G
880 Group name.
881 @item D
882 Newsgroup description.
883 @item o
884 Moderated.
885 @item O
886 Moderated.
887 @item s
888 Select method.
889 @item n
890 Select from where.
891 @item z
892 A string that looks like @samp{<%s:%n>} if a foreign select method is
893 used.
894 @item u
895 User defined specifier.  The next character in the format string should
896 be a letter.  @sc{gnus} will call the function
897 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
898 following @samp{%u}.  The function will be passed the current headers as
899 argument.  The function should return a string, which will be inserted
900 into the buffer just like information from any other specifier.
901 @end table
902
903 @vindex gnus-group-mode-line-format
904 The mode line can be changed by setting
905 (@code{gnus-group-mode-line-format}).  It doesn't understand that many
906 format specifiers:
907
908 @table @samp
909 @item S
910 Default news server.
911 @item M
912 Default select method.
913 @end table
914
915 @node Group Manouvering
916 @section Group Manouvering
917 @cindex group movement
918
919 All movement commands understand the numeric prefix and will behave as
920 expected, hopefully. 
921
922 @table @kbd
923 @item n
924 @kindex n (Group)
925 @findex gnus-group-next-unread-group
926 Go to the next group that has unread articles
927 (@code{gnus-group-next-unread-group}).
928 @item p
929 @itemx DEL
930 @kindex DEL (Group)
931 @kindex p (Group)
932 @findex gnus-group-prev-unread-group
933 Go to the previous group group that has unread articles
934 (@code{gnus-group-prev-unread-group}).
935 @item N
936 @kindex N (Group)
937 @findex gnus-group-next-group
938 Go to the next group (@code{gnus-group-next-group}).
939 @item P
940 @kindex P (Group)
941 @findex gnus-group-prev-group
942 Go to the previous group (@code{gnus-group-prev-group}).
943 @item M-p
944 @kindex M-p (Group)
945 @findex gnus-group-next-unread-group-same-level
946 Go to the next unread group on the same level (or lower)
947 (@code{gnus-group-next-unread-group-same-level}). 
948 @item M-n
949 @kindex M-n (Group)
950 @findex gnus-group-prev-unread-group-same-level
951 Go to the previous unread group on the same level (or lower)
952 (@code{gnus-group-prev-unread-group-same-level}). 
953 @end table
954
955 Three commands for jumping to groups:
956
957 @table @kbd
958 @item j
959 @kindex j (Group)
960 @findex gnus-group-jump-to-group
961 Jump to a group (and make it visible if it isn't already)
962 (@code{gnus-group-jump-to-group}).  Killed groups can be jumped to, just
963 like living groups.
964 @item ,
965 @kindex , (Group)
966 @findex gnus-group-best-unread-group
967 Jump to the unread group with the lowest level
968 (@code{gnus-group-best-unread-group}). 
969 @item .
970 @kindex . (Group)
971 @findex gnus-group-first-unread-group
972 Jump to the first group with unread articles
973 (@code{gnus-group-first-unread-group}).  
974 @end table
975
976 @node Selecting a Group
977 @section Selecting a Group
978 @cindex group selection
979
980 @table @kbd
981 @item SPACE
982 @kindex SPACE (Group)
983 @findex gnus-group-read-group
984 Select the current group, switch to the summary buffer and display the
985 first unread article (@code{gnus-group-read-group}).  If there are no
986 unread articles in the group, or if you give a prefix to this command,
987 Gnus will offer to fetch all the old articles in this group from the
988 server.  
989 @item RET
990 @kindex RET (Group)
991 @findex gnus-group-select-group
992 Select the current group and switch to the summary buffer
993 (@code{gnus-group-select-group}).  If you give a prefix to this command,
994 Gnus will fetch all available articles in this group.
995 @item c
996 @kindex c (Group)
997 @findex gnus-group-catchup-current
998 Mark all unticked articles in this group as read
999 (@code{gnus-group-catchup-current}). 
1000 @item C
1001 @kindex C (Group)
1002 @findex gnus-group-catchup-current-all
1003 Mark all articles in this group, even the ticked ones, as read
1004 (@code{gnus-group-catchup-current-all}). 
1005 @end table
1006
1007 @vindex gnus-large-newsgroup
1008 The @code{gnus-large-newsgroup} variable says what Gnus should consider
1009 to be a big group.  If the group has more unread articles than this,
1010 Gnus will query the user before entering the group.  The user can then
1011 specify how many articles should be fetched from the server.  If the
1012 user specifies a negative number (@samp{-n}), the @samp{n} oldest
1013 articles will be fetched.  If it is positive, the @samp{n} articles that
1014 have arrived most recently will be fetched.
1015
1016 @vindex gnus-select-group-hook
1017 @vindex gnus-auto-select-newsgroup
1018 If @code{gnus-auto-select-newsgroup} is non-@code{nil}, the first unread
1019 article in the group will be displayed when you enter the group.  If you
1020 want to prevent automatic selection in some group (say, in a binary
1021 group with Huge articles) you can set this variable to @code{nil} in
1022 @code{gnus-select-group-hook}, which is called when a group is selected.
1023
1024 @findex gnus-thread-sort-by-total-score
1025 @findex gnus-thread-sort-by-date
1026 @findex gnus-thread-sort-by-score
1027 @findex gnus-thread-sort-by-subject
1028 @findex gnus-thread-sort-by-author
1029 @findex gnus-thread-sort-by-number
1030 @vindex gnus-thread-sort-functions
1031 If you are using a threaded summary display, you can sort the threads by
1032 setting @code{gnus-thread-sort-functions}, which is a list of functions.
1033 By default, sorting is done on article numbers.  Ready-made sorting
1034 functions include @code{gnus-thread-sort-by-number},
1035 @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-subject},
1036 @code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-score},
1037 @code{gnus-thread-sort-by-total-score}.
1038
1039 Each function takes two threads and return non-@code{nil} if the first
1040 thread should be sorted before the other.  If you use more than one
1041 function, the primary sort key should be the last function in the list.
1042
1043 If you would like to sort by score, then by subject, and finally by
1044 date, you could do something like:
1045
1046 @lisp
1047 (setq gnus-thread-sort-functions 
1048       '(gnus-thread-sort-by-date
1049         gnus-thread-sort-by-subject
1050         gnus-thread-sort-by-score))
1051 @end lisp
1052
1053 @vindex gnus-thread-score-function
1054 The function in the @code{gnus-thread-score-function} variable (default
1055 @code{+}) is used for calculating the total score of a thread.  Useful
1056 functions might be @code{max}, @code{min}, or squared means, or whatever
1057 tickles you fancy.
1058
1059 @node Group Subscribing
1060 @section Group Subscribing
1061 @cindex subscribing
1062
1063 @table @kbd
1064 @item S t
1065 @itemx u
1066 @kindex S t (Group)
1067 @kindex u (Group)
1068 @findex gnus-group-unsubscribe-current-group
1069 Toggle subscription to the current group
1070 (@code{gnus-group-unsubscribe-current-group}).  
1071 @item S s
1072 @itemx U
1073 @kindex S s (Group)
1074 @kindex U (Group)
1075 @findex gnus-group-unsubscribe-group
1076 Prompt for a group to subscribe, and then subscribe it.  If it was
1077 subscribed already, unsubscribe it instead
1078 (@code{gnus-group-unsubscribe-group}).
1079 @item S k
1080 @itemx C-k
1081 @kindex S k (Group)
1082 @kindex C-k (Group)
1083 @findex gnus-group-kill-group
1084 Kill the current group (@code{gnus-group-kill-group}).
1085 @item S y
1086 @itemx C-y
1087 @kindex S y (Group)
1088 @kindex C-y (Group)
1089 @findex gnus-group-yank-group
1090 Yank the last killed group (@code{gnus-group-yank-group}).
1091 @item S w
1092 @itemx C-w
1093 @kindex S w (Group)
1094 @kindex C-w (Group)
1095 @findex gnus-group-kill-region
1096 Kill all groups in the region (@code{gnus-group-kill-region}). 
1097 @item S z
1098 @kindex S z (Group)
1099 @findex gnus-group-kill-all-zombies
1100 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
1101 @end table
1102
1103 @node Group Levels
1104 @section Group Levels
1105 @cindex group level
1106
1107 All groups have a level of @dfn{subscribedness}.  For instance, if a
1108 group is on level 2, it is more subscribed than a group on level 5.  You
1109 can ask Gnus to just list groups on a given level or lower
1110 (@pxref{Listing Groups}), or to just check for new articles in groups on
1111 a given level or lower (@pxref{Misc Group Stuff}).
1112
1113 @table @kbd
1114 @item S l
1115 @kindex S l (Group)
1116 @findex gnus-group-set-current-level
1117 Set the level of the current group depending on the numeric
1118 prefix.  For instance, @kbd{3 S l} will set the level of the current
1119 group to three (@code{gnus-group-set-current-level}).  If no numeric
1120 prefix is given, this command will prompt the user for a level.
1121 @end table
1122
1123 Gnus considers groups on levels 1-5 to be subscribed, 6-7 to be
1124 unsubscribed, 8 to be zombies (walking dead) and 9 to be killed,
1125 completely dead.  Gnus treats subscribed and unsubscribed groups exactly
1126 the same, but zombie and killed groups have no information on what
1127 articles you have read, etc, stored.  This distinction between dead and
1128 living groups isn't done because it is nice or clever, it is done purely
1129 for reasons of efficiency.  On the other hand, if you would like a finer
1130 granularity to the levels - you're out of luck.  The nine levels are
1131 hardcoded into the source.  Sorry.
1132
1133 It is recommended that you keep all regular groups on level 3 or higher,
1134 and keep your mail groups (if any) on level 1 or 2.
1135
1136 @vindex gnus-keep-same-level
1137 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
1138 will only move to groups that are of the same level (or lower).  In
1139 particular, going from the last article in one group to the next group
1140 will go to the next group of the same level (or lower).  This might be
1141 handy if you want to read the most important groups before you read the
1142 rest.
1143
1144 @vindex gnus-group-default-list-level
1145 All groups with a level less than or equal to
1146 @code{gnus-group-default-list-level} will be listed in the group buffer
1147 by default.
1148
1149 @node Foreign Groups
1150 @section Foreign Groups
1151 @cindex foreign groups
1152
1153 A @dfn{foreign group} is a group that is not read by the usual (or
1154 default) means.  It could be, for instance, a group from a different
1155 @sc{nntp} server, it could be a virtual group, or it could be your own
1156 personal mail group.
1157
1158 A foreign group (or any group, really) is specified by a @dfn{name} and
1159 a @dfn{select method}.  To take the latter first, a select method is a
1160 list where the first element says what backend to use (eg. nntp,
1161 nnspool, nnml) and the second element is the @dfn{address}, in some
1162 meaning of the word.  There may be additional elements in the select
1163 method, where the value may have special meaning for the backend in
1164 question.
1165
1166 The @dfn{name} of the group is the name the backend will recognize the
1167 group as.
1168
1169 For instance, the group @samp{soc.motss} on the @sc{nntp} server
1170 @samp{some.where.edu} will have the name @samp{soc.motss} and select
1171 method @code{(nntp "some.where.edu")}.  Gnus will call this group, in
1172 all circumstances, @samp{nntp+some.where.edu:soc.motss}, even though the
1173 nntp backend just knows this group as @samp{soc.motss}.
1174
1175 Here are some commands for making and editing general foreign groups,
1176 and some commands to ease the creation of some special-purpose groups:
1177
1178 @table @kbd
1179 @item M m
1180 @kindex M m (Group)
1181 @findex gnus-group-make-group
1182 Make a new group (@code{gnus-group-make-group}).  Gnus will prompt you
1183 for a name, a method and possibly an @dfn{address}.  For an easier way
1184 to subscribe to @sc{nntp} groups, @xref{Browse Foreign Server}.
1185 @item M e
1186 @kindex M e (Group)
1187 @findex gnus-group-edit-group
1188 Edit a group entry.  Gnus will pop up a new buffer where you can edit
1189 the entry (@code{gnus-group-edit-group}).
1190 @item M d
1191 @kindex M d (Group)
1192 @findex gnus-group-make-directory-group
1193 Make a directory group.  You will be prompted for a directory name
1194 (@code{gnus-group-make-directory-group}).  
1195 @item M h 
1196 @kindex M h (Group)
1197 @findex gnus-group-make-help-group
1198 Make the (ding) Gnus help group (@code{gnus-group-make-help-group}).
1199 @item M a
1200 @kindex M a (Group)
1201 @findex gnus-group-make-archive-group
1202 @vindex gnus-group-archive-directory
1203 Make the (ding) Gnus archive group
1204 (@code{gnus-group-make-archive-group}).  The archive group will be
1205 fetched from @code{gnus-group-archive-directory}.
1206 @item M k
1207 @kindex M k (Group)
1208 @findex gnus-group-make-kiboze-group
1209 Make a kiboze group.  You will be prompted for a name, for a regexp to
1210 match groups to be "included" in the kiboze group, and a series of
1211 strings to match on headers (@code{gnus-group-make-kiboze-group}).
1212 @end table
1213
1214 The different methods all have their peculiarities, of course.
1215
1216 @menu
1217 * nntp::             Reading news from a different @sc{nntp} server.
1218 * nnspool::          Reading news from the local spool.
1219 * nnvirtual::        Combining articles from many groups.
1220 * nnkiboze::         Looking through parts of the newsfeed for articles.
1221 * nndir::            You can read a directory as if it was a newsgroup.
1222 * nndoc::            Single files can be the basis of a group.
1223 * nndigest::         Digests can be undigested and treated as a group.
1224 * Reading Mail::     Reading your personal mail with Gnus.
1225 @end menu
1226
1227 @vindex gnus-activate-foreign-newsgroups
1228 If the @code{gnus-activate-foreign-newsgroups} is a positive number,
1229 Gnus will check all foreign groups with this level or lower at startup.
1230 This might take quite a while, especially if you subscribe to lots of
1231 groups from different @sc{nntp} servers.  It is @code{nil} by default,
1232 which means that you won't be told whether there are new articles in
1233 these groups.  How many unread articles there are will be determined
1234 when, or if, you decide to enter them.  You can also activate any group
1235 with @kbd{M-g} to see how many unread articles there are.
1236
1237 @cindex to-address
1238 If the select method contains an element that looks like
1239 @samp{(to-address .  "some@@where.com")}, that address will be used by
1240 the backend when doing followups and posts.  This is primarily useful in
1241 mail groups that represent mailing lists.  You just set this address to
1242 whatever the list address is.
1243
1244 This trick will actually work whether the group is foreign or not.
1245 Let's say there's a group on the server that is called @samp{fa.4ad-l}.
1246 This is a real newsgroup, but the server has gotten the articles from a
1247 mail-to-news gateway.  Posting directly to this group is therefore
1248 impossible - you have to send mail to the mailing list address instead.
1249
1250 To achieve this, go to the group in question in the group buffer and
1251 type @kbd{M e} to edit the group entry.  You'll then be put in a buffer
1252 where you can edit the group entry.
1253
1254 @lisp
1255 (gnus-group-set-info
1256  '("ifi.fritt-forum" 3
1257    ((1 . 3321)
1258     (3325 . 3325))
1259    ((score
1260      (3322 . 1000)
1261      (3324 . 1000)))))
1262 @end lisp
1263
1264 A fifth entry has to be added. (In case there isn't a fourth one, you
1265 have to add a fourth one yourself - @code{nil}.)  The fifth entry should
1266 look like this:
1267
1268 @lisp
1269 (nntp "your.host" (to-address . "4ad-l@@jhuvm.hcf.jhu.edu"))
1270 @end lisp
1271
1272 The two first entries in this method should, of course, be the same as
1273 @code{gnus-select-method}. 
1274
1275 Quite simple, eh? <duck> @strong{Ouch}.
1276
1277 @node nntp
1278 @subsection nntp
1279 @cindex @sc{nntp}
1280
1281 Subscribing to a foreign group from an @sc{nntp} server is rather easy.
1282 You just specify @code{nntp} as method and the address of the @sc{nntp}
1283 server as the, uhm, address.
1284
1285 If the @sc{nntp} server is located at a non-standard port, setting the
1286 third element of the select method to this port number should allow you
1287 to connect to the right port.  You'll have to edit the group info for
1288 that (@pxref{Foreign Groups}).
1289
1290 The name of the foreign group can be the same as a native group.  In
1291 fact, you can subscribe to the same group from as many different servers
1292 you feel like.  There will be no name collisions.
1293
1294 @cindex @sc{mode reader}
1295 @cindex authinfo
1296 @findex nntp-send-authinfo
1297 @findex nntp-send-mode-reader
1298 @vindex nntp-server-opened-hook
1299 @code{nntp-server-opened-hook} is run after a connection has been made.
1300 It can be used to send commands to the @sc{nntp} server after it has
1301 been contacted.  By default is sends the command @samp{MODE READER} to
1302 the server with the @code{nntp-send-mode-reader} function.  Another
1303 popular function is @code{nntp-send-authinfo}, which will prompt you for
1304 an @sc{nntp} password and stuff.
1305
1306 @vindex nntp-maximum-request
1307 If the @sc{nntp} server doesn't support @sc{nov} headers, this backend
1308 will collect headers by sending a series of @code{head} commands.  To
1309 speed things up, the backend sends lots of these commands without
1310 waiting for reply, and then reads all the replies.  This is controlled
1311 by the @code{nntp-maximum-request} variable, and is 400 by default.  If
1312 your network is buggy, you should set this to 1.
1313
1314 @vindex nntp-connection-timeout
1315 If you have lots of foreign nntp groups that you connect to regularly,
1316 you're sure to have problems with nntp servers not responding properly,
1317 or being too loaded to reply within reasonable time.  This is can lead
1318 to awkward problems, which can be helped somewhat by setting
1319 @code{nntp-connection-timeout}.  This is an integer that says how many
1320 seconds the nntp backend should wait for a connection before giving up.
1321 If it is @code{nil}, which is the default, no timeouts are done.
1322
1323 @node nnspool
1324 @subsection nnspool
1325 @cindex nnspool
1326 @cindex news spool
1327
1328 Subscribing to a foreign group from the local spool is extremely easy,
1329 and might be useful, for instance, to speed up reading groups like
1330 @samp{alt.binaries.pictures.furniture}.
1331
1332 Anyways, you just specify @code{nnspool} as the method and @samp{""} (or
1333 anything else) as the address.
1334
1335 If you have access to a local spool, you should probably use that as the
1336 native select method (@pxref{Finding the News}).
1337
1338 @table @code
1339 @item nnspool-inews-program
1340 Program used to post an article.
1341 @item nnspool-spool-directory
1342 Where nnspool looks for the articles.  This is normally
1343 @file{/usr/spool/news/}.
1344 @item nnspool-nov-directory 
1345 Where nnspool will look for @sc{nov} files.  This is normally
1346 @file{/usr/spool/news/over.view/}.
1347 @item nnspool-lib-dir
1348 Where the news lib dir is (@file{/usr/lib/news/} by default).
1349 @end table
1350
1351 @node nnvirtual
1352 @subsection nnvirtual
1353 @cindex nnvirtual
1354 @cindex virtual groups
1355
1356 An @dfn{nnvirtual group} is really nothing more than a collection of
1357 other groups.
1358
1359 For instance, if you are tired of reading many small group, you can
1360 put them all in one big group, and then grow tired of reading one
1361 big, unwieldy group.  The joys of computing!
1362
1363 You specify @code{nnvirtual} as the method.  The address should be a
1364 regexp to match component groups.
1365
1366 All marks in the virtual group will stick to the articles in the
1367 component groups.  So if you tick an article in a virtual group, the
1368 article will also be ticked in the component group from whence it came.
1369 (And vice versa - marks from the component groups will also be shown in
1370 the virtual group.)
1371
1372 Here's an example nnvirtual method that collects all Andrea Dworkin
1373 newsgroups into one, big, happy newsgroup:
1374
1375 @lisp
1376 (nnvirtual "^alt\\.fan\\.andrea-dworkin$\\|^rec\\.dworkin.*")
1377 @end lisp
1378
1379 The component groups can be native or foreign; everything should work
1380 smoothly, but if your computer explodes, it was probably my fault.
1381
1382 Collecting the same group from several servers might actually be a good
1383 idea if users have set the Distribution header to limit distribution.
1384 If you would like to read @samp{soc.motss} both from a server in Japan
1385 and a server in Norway, you could use the following as the group regexp:
1386
1387 @example
1388 "^nntp+some.server.jp:soc.motss$\\|^nntp+some.server.no:soc.motss$"
1389 @end example
1390
1391 This should work kinda smoothly - all articles from both groups should
1392 end up in this one, and there should be no duplicates.  Threading (and
1393 the rest) will still work as usual, but there might be problems with the
1394 sequence of articles.  Sorting on date might be an option here
1395 (@pxref{Selecting a Group}.
1396
1397 One limitation, however - all groups that are included in a virtual
1398 group has to be alive (ie. subscribed or unsubscribed).  Killed or
1399 zombie groups can't be component groups for nnvirtual groups.
1400
1401 @node nnkiboze
1402 @subsection nnkiboze
1403 @cindex nnkiboze
1404 @cindex kibozing
1405
1406 @dfn{Kibozing} is defined by OED as "grepping through (parts of) the
1407 news feed".  nnkiboze is a backend that will do this for you.  Oh joy!
1408 Now you can grind any @sc{nntp} server down to a halt with useless
1409 requests!  Oh happiness!
1410
1411 The address field of the nnkiboze method is, as with nnvirtual, a regexp
1412 to match groups to be "included" in the nnkiboze group.  There most
1413 similarities between nnkiboze and nnvirtual ends.
1414
1415 In addition to this regexp detailing component groups, an nnkiboze group
1416 must have a score file to say what articles that are to be included in
1417 the group (@pxref{Score Files}).
1418
1419 @kindex M-x nnkiboze-generate-groups
1420 @findex nnkiboze-generate-groups
1421 You must run @kbd{M-x nnkiboze-generate-groups} after creating the
1422 nnkiboze groups you want to have.  This command will take time.  Lots of
1423 time.  Oodles and oodles of time.  Gnus has to fetch the headers from
1424 all the articles in all the components groups and run them through the
1425 scoring process to determine if there are any articles in the groups
1426 that are to be part of the nnkiboze groups.
1427
1428 Please limit the number of component groups by using restrictive
1429 regexps.  Otherwise your sysadm may become annoyed with you, and the
1430 @sc{nntp} site may throw you off and never let you back in again.
1431 Stranger things have happened.
1432
1433 nnkiboze component groups do not have to be alive - they can be dead,
1434 and they can be foreign.  No restrictions.
1435
1436 @vindex nnkiboze-directory
1437 The generation of an nnkiboze group means writing two files in
1438 @code{nnkiboze-directory}, which is @file{~/News/} by default.  One
1439 contains the @sc{nov} header lines for all the articles in the group,
1440 and the other is an additional @file{.newsrc} file to store information
1441 on what groups that have been searched through to find component
1442 articles.
1443
1444 Articles that are marked as read in the nnkiboze group will have their
1445 @sc{nov} lines removed from the @sc{nov} file.
1446
1447 @node nndir
1448 @subsection nndir
1449 @cindex nndir
1450 @cindex directory groups
1451
1452 If you have a directory that has lots of articles in separate files in
1453 it, you might treat it as a newsgroup.  The files have to have numerical
1454 names, of course.
1455
1456 This might be an opportune moment to mention ange-ftp, that most
1457 wonderful of all wonderful Emacs packages.  When I wrote nndir, I didn't
1458 think much about it - a backend to read directories.  Big deal.
1459
1460 ange-ftp changes that picture dramatically.  For instance, if you enter
1461 @file{"/ftp@@sina.tcamc.uh.edu:/pub/emacs/ding-list/"} as the the
1462 directory name, ange-ftp will actually allow you to read this directory
1463 over at @samp{sina} as a newsgroup.  Distributed news ahoy!
1464
1465 nndir will use @sc{nov} files if they are present.
1466
1467 @node nndoc
1468 @subsection nndoc
1469 @cindex nndoc
1470 @cindex documentation group
1471 @cindex help group
1472
1473 nndoc is a cute little thing that will let you read a single file as a
1474 newsgroup.  The file has to be divided into articles by the use of Unix
1475 mbox @samp{From } lines.  nndoc will not try to change the file or
1476 insert any extra headers into it - it will simply, like, let you use the
1477 file as the basis for a group.  And that's it.
1478
1479 @node nndigest
1480 @subsection nndigest
1481 @cindex nndigest
1482 @cindex digest groups
1483
1484 nndigest is a bit odd.  It will use a buffer containing a valid digest
1485 as the basis for a group.
1486
1487 These nndigest groups are rather ephemeral.  They will never store
1488 information on what articles you have read, and you can't really use
1489 them as foreign groups at all.  The only way to reach an nndigest group
1490 is to type @kbd{V D} on a digest in the summary buffer.
1491
1492 When you have finished reading the digest and press @kbd{q}, you will be
1493 returned to the group from whence you came instead of going to the group
1494 buffer.
1495
1496 Odd all over, as you can see, but somewhat useful.
1497
1498 @node Reading Mail
1499 @subsection Reading Mail
1500 @cindex reading mail
1501 @cindex mail
1502
1503 Reading mail with a newsreader - isn't that just plain WeIrD? But of
1504 course.
1505
1506 @menu
1507 * Creating Mail Groups::         How to create mail groups.
1508 * Mail & Procmail::              Reading mail groups that procmail create.
1509 * Expiring Old Mail Articles::   Getting rid of unwanted mail.
1510 * Not Reading Mail::             Using mail backends for reading other files.
1511 @end menu
1512
1513 Gnus will read the mail spool when you activate a mail group.  The mail
1514 file is first copied to your home directory.  What happens after that
1515 depends on what format you want to store your mail in.
1516
1517 @menu
1518 * nnmbox::    Using the (quite) standard Un*x mbox.
1519 * nnbabyl::   Many Emacs programs use the rmail babyl format.
1520 * nnml::      Store your mail in a private spool?
1521 * nnmh::      An mhspool-like backend useful for procmail people.
1522 * nnfolder::  Having one file for each group.
1523 @end menu
1524
1525 @vindex nnmail-read-incoming-hook
1526 The mail backends all call @code{nnmail-read-incoming-hook} after
1527 reading new mail.  You can use this hook to notify any mail watch
1528 programs, if you want to.
1529
1530 @vindex nnmail-spool-file
1531 @code{nnmail-spool-file} says where to look for new mail.  If this
1532 variable is @code{nil}, the mail backends will never attempt to fetch
1533 mail by themselves.  It is quite likely that Gnus supports POP-mail.
1534 Set this variable to begin with the string @samp{po:}, and everything
1535 should go smoothly, even though I have never tested this.
1536
1537 @vindex nnmail-prepare-incoming-hook
1538 @code{nnmail-prepare-incoming-hook} is run in a buffer that holds all
1539 the new incoming mail, and can be used for, well, anything, really.
1540
1541 @vindex nnmail-tmp-directory
1542 @code{nnmail-tmp-directory} says where to move the incoming mail to
1543 while processing it.  This is usually done in the same directory that
1544 the mail backend habitates (ie. @file{~/Mail/}), but if this variable is
1545 non-@code{nil}, it will be used instead.
1546
1547 Gnus gives you all the opportunity you could possibly want for shooting
1548 yourself in the foot.  Let's say you create a group that will contain
1549 all the mail you get from your boss.  And then you accidentally
1550 unsubscribe from the group.  Gnus will still put all the mail from your
1551 boss in the unsubscribed group, and so, when your boss mails you "Have
1552 that report ready by Monday or you're fired!", you'll never see it and,
1553 come Tuesday, you'll still believe that you're gainfully employed while
1554 you really should be out collecting empty bottles to save up for next
1555 month's rent money.
1556
1557 @node Creating Mail Groups
1558 @subsubsection Creating Mail Groups
1559 @cindex creating mail groups
1560
1561 You can make Gnus read your personal, private, secret mail.
1562
1563 You should first set @code{gnus-secondary-select-methods} to, for
1564 instance, @code{((nnmbox ""))}.  When you start up Gnus, Gnus will ask
1565 this backend for what groups it carries (@samp{mail.misc} by default)
1566 and subscribe it the normal way.  (Which means you may have to look for
1567 it among the zombie groups, I guess, all depending on your
1568 @code{gnus-subscribe-newsgroup-method} variable.)
1569
1570 @vindex nnmail-split-methods
1571 Then you should set the variable @code{nnmail-split-methods} to specify
1572 how the incoming mail is to be split into groups.
1573
1574 @lisp
1575 (setq nnmail-split-methods
1576   '(("mail.junk" "^From:.*Lars Ingebrigtsen")
1577     ("mail.crazzy" "^Subject:.*die\\|^Organization:.*flabby")
1578     ("mail.other" "")))
1579 @end lisp
1580
1581 This variable is a list of lists, where the first element of each of
1582 these lists is the name of the mail group (they do not have to be called
1583 something beginning with @samp{mail}, by the way), and the second
1584 element is a regular expression used on the header of each mail to
1585 determine if it belongs in this mail group.
1586
1587 The second element can also be a function.  In that case, it will be
1588 called narrowed to the headers with the first element of the rule as the
1589 argument.  It should return a non-@code{nil} value if it thinks that the
1590 mail belongs in that group.
1591
1592 The last of these groups should always be a general one, and the regular
1593 expression should @emph{always} be @samp{""} so that it matches any
1594 mails that haven't been matched by any of the other regexps.
1595
1596 If you like to tinker with this yourself, you can set this variable to a
1597 function of your choice. This function will be called without any
1598 arguments in a buffer narrowed to the headers of an incoming mail
1599 message. The function should return a list of groups names that it
1600 thinks should carry this mail message.
1601
1602 @vindex nnmail-crosspost
1603 The mail backends all support cross-posting.  If several regexps match,
1604 the mail will be "cross-posted" to all those groups.
1605 @code{nnmail-crosspost} says whether to use this mechanism or not.
1606
1607 @node Mail & Procmail
1608 @subsubsection Mail & Procmail
1609 @cindex procmail
1610
1611 Many people use @code{procmail} to split incoming mail into groups.  If
1612 you do that, you should set @code{nnmail-spool-file} to @code{nil} to
1613 make sure that the mail backends never ever try to fetch mail by
1614 themselves.
1615
1616 This also means that you probably don't want to set
1617 @code{nnmail-split-methods} either, which has some, perhaps, unexpected
1618 side effects.
1619
1620 When a mail backend is queried for what groups it carries, it replies
1621 with the contents of that variable, along with any groups it has figured
1622 out that it carries by other means.  None of the backends (except
1623 @code{nnmh}) actually go out to the disk and check what groups actually
1624 exist.  (It's not trivial to distinguish between what the user thinks is
1625 a basis for a newsgroup and what is just a plain old file or directory.)
1626
1627 This means that you have to tell Gnus (and the backends) what groups
1628 exist by hand.
1629
1630 Let's take the @code{nnfolder} backend as an example.  (This backend
1631 uses one file as the basis of each group.)
1632
1633 The folders are located in @code{nnfolder-directory}, say,
1634 @file{~/Mail/}.  There are three folders, @file{foo}, @file{bar} and
1635 @file{mail.baz}.
1636
1637 Go to the group buffer and type @kbd{M m}.  When prompted, answer
1638 @samp{foo} for the name and @samp{nnfolder} for the method.  Repeat
1639 twice for the two other groups, @samp{bar} and @samp{mail.baz}.  Be sure
1640 to include all your mail groups.
1641
1642 That's it.  You are now set to read your mail.  An active file for this
1643 method will be created automatically.
1644
1645 @node Expiring Old Mail Articles
1646 @subsubsection Expiring Old Mail Articles
1647 @cindex article expiry
1648
1649 Traditional mail readers have a tendency to remove mail articles when
1650 you mark them as read, in some way.  Gnus takes a fundamentally
1651 different approach to mail reading.
1652
1653 Gnus basically considers mail just to be news that has been received in
1654 a rather peculiar manner.  It does not think that it has the power to
1655 actually change the mail, or delete any mail messages.  If you enter a
1656 mail group, and mark articles as "read", or kill them in some other
1657 fashion, the mail articles will still exist on the system.  I repeat:
1658 Gnus will not delete your old, read mail.  Unless you ask it to, of
1659 course.
1660
1661 To make Gnus get rid of your unwanted mail, you have to mark the
1662 articles as @dfn{expirable}.  This does not mean that the articles will
1663 disappear right away, however.  In general, a mail article will be
1664 deleted from your system if, 1) it is marked as expirable, AND 2) it is
1665 more than one week old.  If you do not mark an article as expirable, it
1666 will remain on your system until hell freezes over.  This bears
1667 repeating one more time, with some spurious capitalizations: IF you do
1668 NOT mark articles as EXPIRABLE, Gnus will NEVER delete those ARTICLES.
1669
1670 @vindex gnus-auto-expirable-newsgroups
1671 You do not have to mark articles as expirable by hand.  Groups that
1672 match the regular expression @code{gnus-auto-expirable-newsgroups} will
1673 have all articles that you read marked as expirable automatically.  All
1674 articles that are marked as expirable have an @samp{E} in the first
1675 column in the summary buffer.
1676
1677 Let's say you subscribe to a couple of mailing lists, and you want the
1678 articles you have read to disappear after a while:
1679
1680 @lisp
1681 (setq gnus-auto-expirable-newsgroups 
1682       "mail.nonsense-list\\|mail.nice-list")
1683 @end lisp
1684
1685 Another way to have auto-expiry happen is to have the element
1686 @code{auto-expire} in the select method of the group. 
1687
1688 @vindex nnmail-expiry-wait
1689 The @code{nnmail-expiry-wait} variable supplies the default time an
1690 expirable article has to live.  The default is seven days.
1691
1692 Gnus also supplies a function that lets you fine-tune how long articles
1693 are to live, based on what group they are in.  Let's say you want to
1694 have one month expiry period in the @samp{mail.private} group, a one day
1695 expiry period in the @samp{mail.junk} group, and a six day expiry period
1696 everywhere else:
1697
1698 @lisp
1699 (setq nnmail-expiry-wait-function
1700       (lambda (group)
1701        (cond ((string= group "mail.private")
1702                31)
1703              ((string= group "mail.junk")
1704                1)
1705              (t
1706                6))))
1707 @end lisp
1708
1709 @vindex nnmail-keep-last-article
1710 If @code{nnmail-keep-last-article} is non-@code{nil}, Gnus will never
1711 expire the final article in a mail newsgroup.  This is to make life
1712 easier for procmail users.
1713
1714 @node Not Reading Mail
1715 @subsubsection Not Reading Mail
1716
1717 If you start using any of the mail backends, they have the annoying
1718 habit of assuming that you want to read mail with them.  This might not
1719 be unreasonable, but it might not be what you want.
1720
1721 If you set @code{nnmail-spool-file} to @code{nil}, none of the backends
1722 will ever attempt to read incoming mail, which should help.
1723
1724 @vindex nnbabyl-get-new-mail
1725 @vindex nnmbox-get-new-mail
1726 @vindex nnml-get-new-mail
1727 @vindex nnmh-get-new-mail
1728 @vindex nnfolder-get-new-mail
1729 This might be too much, if, for instance, you are reading mail quite
1730 happily with @code{nnml} and just want to peek at some old @sc{rmail}
1731 file you have stashed away with @code{nnbabyl}.  All backends have
1732 variables called backend-@code{get-new-mail}.  If you want to disable
1733 the @code{nnbabyl} mail reading, you just set
1734 @code{nnbabyl-get-new-mail} to @code{nil}. 
1735
1736 @node nnmbox
1737 @subsubsection nnmbox
1738 @cindex nnmbox
1739 @cindex unix mail box
1740
1741 @vindex nnmbox-active-file
1742 @vindex nnmbox-mbox-file
1743 The @dfn{nnmbox} backend will use the standard Un*x mbox file to store
1744 mail.  The path of the mbox file is given by the @code{nnmbox-mbox-file}
1745 variable.  In addition, Gnus needs to store information about active
1746 articles.  The file specified by @code{nnmbox-active-file} will be used
1747 for that.
1748
1749 nnmbox will add extra headers to each mail article to say which
1750 group it belongs in.
1751
1752 @node nnbabyl
1753 @subsubsection nnbabyl
1754 @cindex nnbabyl
1755 @cindex rmail mbox
1756
1757 @vindex nnbabyl-active-file
1758 @vindex nnbabyl-mbox-file
1759 The @dfn{nnbabyl} backend will use a babyl mail box to store mail.  The
1760 path of the rmail mail box file is given by the @code{nnbabyl-mbox-file}
1761 variable.  In addition, Gnus needs to store information about active
1762 articles.  The file specified by @code{nnbabyl-active-file} will be used
1763 for that.
1764
1765 nnbabyl will add extra headers to each mail article to say which
1766 group it belongs in.
1767
1768 @node nnml
1769 @subsubsection nnml
1770 @cindex nnml
1771 @cindex mail @sc{nov} spool
1772
1773 The @dfn{nnml} spool mail format isn't compatible with any other known
1774 format.  It should be used with some caution.
1775
1776 @vindex nnml-directory
1777 If you use this backend, Gnus will split all incoming mail into files;
1778 one file for each mail, and put the articles into the correct
1779 directories under the directory specified by the @code{nnml-directory}
1780 variable.  The default value is @file{~/Mail/}.
1781
1782 You do not have to create any directories beforehand; Gnus will take
1783 care of all that.
1784
1785 If you have a strict limit as to how many files you are allowed to store
1786 in your account, you should not use this backend.  As each mail gets its
1787 own file, you might very well occupy thousands of inodes within a few
1788 weeks.  If this is no problem for you, and it isn't a problem for you
1789 having your friendly systems administrator walking around, madly,
1790 shouting "Who is eating all my inodes?! Who? Who!?!", then you should
1791 know that this is probably the fastest format to use.  You do not have
1792 to trudge through a big mbox file just to read your new mail.
1793
1794 @code{nnml} is probably the slowest backend when it comes to article
1795 splitting.  It has to create lots of files, and it also generates
1796 @sc{nov} databases for the incoming mails.  This makes is the fastest
1797 backend when it comes to reading mail.
1798
1799 @findex nnml-generate-nov-databases
1800 If your @code{nnml} groups and @sc{nov} files get totally out of whack,
1801 you can do a complete update by typing @kbd{M-x
1802 nnml-generate-nov-databases}.  This command will trawl through the
1803 entire @code{nnml} hierarchy, looking at each and every article, so it
1804 might take a while to complete.
1805
1806 @node nnmh
1807 @subsubsection nnmh
1808 @cindex nnmh
1809 @cindex mh-e mail spool
1810
1811 @code{nnmh} is just like @code{nnml}, except that is doesn't generate
1812 @sc{nov} databases and it doesn't keep an active file.  This makes
1813 @code{nnmh} a @emph{much} slower backend than @code{nnml}, but it also
1814 makes it easier to write procmail scripts for.
1815
1816 @node nnfolder
1817 @subsubsection nnfolder
1818 @cindex nnfolder
1819 @cindex mbox folders
1820
1821 @code{nnfolder} is a backend for storing each mail group in a separate
1822 file.  Each file is in the standard Un*x mbox format.  @code{nnfolder}
1823 will add extra headers to keep track of article numbers and arrival
1824 dates.
1825
1826 @vindex nnfolder-active-file
1827 @vindex nnfolder-directory
1828 @code{nnfolder-directory} says where to store these files, and
1829 @code{nnfolder-active-file} says where to store the @dfn{active}
1830 information.
1831
1832 @node Listing Groups
1833 @section Listing Groups
1834 @cindex group listing
1835
1836 These commands all list various slices of the groups that are available.
1837
1838 @table @kbd
1839 @item l
1840 @itemx G s
1841 @kindex G s (Group)
1842 @kindex l (Group)
1843 @findex gnus-group-list-groups
1844 List all groups that have unread articles
1845 (@code{gnus-group-list-groups}).  If the numeric prefix is used, this
1846 command will list only groups of level ARG and lower.  By default, it
1847 only lists groups of level five or lower (ie. just subscribed groups).
1848 @item L
1849 @itemx G u
1850 @kindex G u (Group)
1851 @kindex L (Group)
1852 @findex gnus-group-list-all-groups
1853 List all groups, whether they have unread articles or not
1854 (@code{gnus-group-list-all-groups}).  If the numeric prefix is used,
1855 this command will list only groups of level ARG and lower.  By default,
1856 it lists groups of level seven or lower (ie. just subscribed and
1857 unsubscribed groups).
1858 @item G k
1859 @kindex G k (Group)
1860 @findex gnus-group-list-killed
1861 List all killed groups (@code{gnus-group-list-killed}).
1862 @item G z
1863 @kindex G z (Group)
1864 @findex gnus-group-list-zombies
1865 List all zombie groups (@code{gnus-group-list-zombies}).
1866 @item G m
1867 @kindex G m (Group)
1868 @findex gnus-group-list-matching
1869 List all subscribed groups with unread articles that match a regexp
1870 (@code{gnus-group-list-matching}). 
1871 @item G M
1872 @kindex G M (Group)
1873 @findex gnus-group-list-all-matching
1874 List groups that match a regexp (@code{gnus-group-list-all-matching}).
1875 @end table
1876
1877 @node Group Maintenance
1878 @section Group Maintenance
1879 @cindex bogus groups
1880
1881 @table @kbd
1882 @item b
1883 @kindex b (Group)
1884 @findex gnus-group-check-bogus-groups
1885 Find bogus groups and delete them
1886 (@code{gnus-group-check-bogus-groups}).
1887 @item F
1888 @kindex F (Group)
1889 @findex gnus-find-new-newsgroups
1890 Find new groups and process them (@code{gnus-find-new-newsgroups}).
1891 @item C-c C-x
1892 @kindex C-c C-x (Group)
1893 @findex gnus-group-expire-articles
1894 Run all expirable articles in the current group through the expiry
1895 process (if any) (@code{gnus-group-expire-articles}).
1896 @item C-c M-C-x
1897 @kindex C-c M-C-x (Group)
1898 @findex gnus-group-expire-all-groups
1899 Run all articles in all groups through the expiry process
1900 (@code{gnus-group-expire-all-groups}).
1901 @item C-c C-s
1902 @kindex C-c C-s (Group)
1903 @findex gnus-group-sort-groups
1904 @findex gnus-group-sort-by-level
1905 @findex gnus-group-sort-by-unread
1906 @findex gnus-group-sort-by-alphabet
1907 @vindex gnus-group-sort-function
1908 Sort the groups according to the function given by the
1909 @code{gnus-group-sort-function} variable
1910 (@code{gnus-group-sort-groups}).  Available sorting functions include
1911 @code{gnus-group-sort-by-alphabet} (the default),
1912 @code{gnus-group-sort-by-unread} and @code{gnus-group-sort-by-level}. 
1913 @end table
1914
1915 @node Browse Foreign Server
1916 @section Browse Foreign Server
1917 @cindex foreign servers
1918 @cindex browsing servers
1919
1920 @table @kbd
1921 @item B
1922 @kindex B (Group)
1923 @findex gnus-group-browse-foreign-server
1924 You will be queried for a select method and a server name.  Gnus will
1925 then attempt to contact this server and let you browse the groups there
1926 (@code{gnus-group-browse-foreign-server}).
1927 @end table
1928
1929 @findex gnus-browse-server-mode
1930 A new buffer with a list of available groups will appear.  This buffer
1931 will be use the @code{gnus-browse-server-mode}.  This buffer looks a bit
1932 (well, a lot) like a normal group buffer, but with one major difference
1933 - you can't enter any of the groups.  If you want to read any of the
1934 news available on that server, you have to subscribe to the groups you
1935 think may be interesting, and then you have to exit this buffer.  The
1936 new groups will be added to the group buffer, and then you can read them
1937 as you would any other group.
1938
1939 Future versions of Gnus may possibly permit reading groups straight from
1940 the browse buffer.
1941
1942 Here's a list of keystrokes available in the browse mode:
1943
1944 @table @kbd
1945 @item n
1946 @kindex n (Browse)
1947 @findex gnus-group-next-group
1948 Go to the next group (@code{gnus-group-next-group}).
1949 @item p
1950 @kindex p (Browse)
1951 @findex gnus-group-prev-group
1952 Go to the previous group (@code{gnus-group-prev-group}).
1953 @item u
1954 @kindex u (Browse)
1955 @findex gnus-browse-unsubscribe-current-group
1956 Unsubscribe to the current group, or, as will be the case here,
1957 subscribe to it (@code{gnus-browse-unsubscribe-current-group}). 
1958 @item l
1959 @itemx q
1960 @kindex q (Browse)
1961 @kindex l (Browse)
1962 @findex gnus-browse-exit
1963 Exit browse mode (@code{gnus-browse-exit}).
1964 @item ?
1965 @kindex ? (Browse)
1966 @findex gnus-browse-describe-briefly
1967 Describe browse mode briefly (well, there's not much to describe, is
1968 there) (@code{gnus-browse-describe-briefly}).
1969 @end table
1970
1971 @node Exiting Gnus
1972 @section Exiting Gnus
1973 @cindex exiting Gnus
1974
1975 Yes, Gnus is ex(c)iting.
1976
1977 @table @kbd
1978 @item z
1979 @kindex z (Group)
1980 @findex gnus-group-suspend
1981 Suspend Gnus (@code{gnus-group-suspend}).  This doesn't really exit Gnus,
1982 but it kills all buffers exept the Group buffer.  I'm not sure why this
1983 is a gain, but then who am I to judge?
1984 @item q
1985 @kindex q (Group)
1986 @findex gnus-group-exit
1987 Quit Gnus (@code{gnus-group-exit}).
1988 @item Q
1989 @kindex Q (Group)
1990 @findex gnus-group-quit
1991 Quit Gnus without saving any startup files (@code{gnus-group-quit}).
1992 @end table
1993
1994 @vindex gnus-exit-gnus-hook
1995 @vindex gnus-suspend-gnus-hook
1996 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
1997 @code{gnus-exit-gnus-hook} is called when you quit Gnus.
1998
1999 Note:
2000
2001 @quotation
2002 Miss Lisa Cannifax, while sitting in English class, feels her feet go
2003 numbly heavy and herself fall into a hazy trance as the boy sitting
2004 behind her drew repeated lines with his pencil across the back of her
2005 plastic chair.
2006 @end quotation
2007
2008 @node Misc Group Stuff
2009 @section Misc Group Stuff
2010
2011 @table @kbd
2012 @item g
2013 @kindex g (Group)
2014 @findex gnus-group-get-new-news
2015 Check server for new articles. 
2016 If the numeric prefix is used, this command will check only groups of
2017 level ARG and lower (@code{gnus-group-get-new-news}).
2018 @item M-g
2019 @kindex M-g (Group)
2020 @findex gnus-group-get-new-news-this-group
2021 Check whether new articles have arrived in the current group
2022 (@code{gnus-group-get-new-news-this-group}).
2023 @item M-f
2024 @kindex M-f (Group)
2025 @findex gnus-group-fetch-faq
2026 Try to fetch the FAQ for the current group
2027 (@code{gnus-group-fetch-faq}).  Gnus will try to get the FAQ from
2028 @code{gnus-group-faq-directory}, which is usually a directory on a
2029 remote machine. ange-ftp will be used for fetching the file.
2030 @item R
2031 @kindex R (Group)
2032 @findex gnus-group-restart
2033 Restart Gnus (@code{gnus-group-restart}).
2034 @item r
2035 @kindex r (Group)
2036 @findex gnus-group-read-init-file
2037 Read the init file (@code{gnus-init-file}, which defaults to
2038 @file{~/.gnus}) (@code{gnus-group-read-init-file}).
2039 @item s
2040 @kindex s (Group)
2041 @findex gnus-group-save-newsrc
2042 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
2043 (@code{gnus-group-save-newsrc}).
2044 @item Z
2045 @kindex Z (Group)
2046 @findex gnus-group-clear-dribble
2047 Clear the dribble buffer (@code{gnus-group-clear-dribble}).
2048 @item D
2049 @kindex D (Group)
2050 @findex gnus-group-describe-group
2051 Describe the current group (@code{gnus-group-describe-group}).  If given
2052 a prefix, force Gnus to re-read the description from the server.
2053 @item G a
2054 @kindex G a (Group)
2055 @findex gnus-group-apropos
2056 List all groups that have names that match a regexp
2057 (@code{gnus-group-apropos}).
2058 @item G d
2059 @kindex G d (Group)
2060 @findex gnus-group-description-apropos
2061 List all groups that have names or descriptions that match a regexp
2062 (@code{gnus-group-description-apropos}).
2063 @item a
2064 @kindex a (Group)
2065 @findex gnus-group-post-news
2066 Post an article to a group (@code{gnus-group-post-news}).
2067 @item m
2068 @kindex m (Group)
2069 @findex gnus-group-mail
2070 Mail a message somewhere (@code{gnus-group-mail}).
2071 @item C-x C-t
2072 @kindex C-x C-t (Group)
2073 @findex gnus-group-transpose-groups
2074 Transpose two groups (@code{gnus-group-transpose-groups}).
2075 @item V
2076 @kindex V (Group)
2077 @findex gnus-version
2078 Display current Gnus version numbers (@code{gnus-version}).
2079 @item M-d
2080 @kindex M-d (Group)
2081 @findex gnus-group-describe-all-groups
2082 Describe all groups (@code{gnus-group-describe-all-groups}).  If given a
2083 prefix, force Gnus to re-read the descriptoion file from the server.
2084 @item ?
2085 @kindex ? (Group)
2086 @findex gnus-group-describe-briefly
2087 Give a very short help message (@code{gnus-group-describe-briefly}).
2088 @item C-c C-i
2089 @kindex C-c C-i (Group)
2090 @findex gnus-info-find-node
2091 Go to the Gnus info node (@code{gnus-info-find-node}).
2092 @end table
2093
2094 @vindex gnus-group-prepare-hook
2095 @code{gnus-group-prepare-hook} is called after the group buffer is
2096 generated.  It may be used to modify the buffer in some strange,
2097 unnatural way.
2098
2099 @node The Summary Buffer
2100 @chapter The Summary Buffer
2101 @cindex summary buffer
2102
2103 A line for each article is displayed in the summary buffer.  You can
2104 move around, read articles, post articles and reply to articles.
2105
2106 @menu
2107 * Summary Buffer Format::       Deciding how the summar buffer is to look.
2108 * Summary Manouvering::         Moving around the summary buffer.
2109 * Choosing Articles::           Reading articles.
2110 * Paging the Article::          Scrolling the current article.
2111 * Reply Followup and Post::     Posting articles.
2112 * Cancelling and Superseding::  "Whoops, I shouldn't have called him that."
2113 * Ticking and Marking::         Marking articles as read, expirable, etc.
2114 * Threading::                   How threads are made.
2115 * Exiting the Summary Buffer::  Returning to the Group buffer.
2116 * Process/Prefix::              A convention used by many treatment commands.
2117 * Saving Articles::             Ways of customizing article saving.
2118 * Decoding Articles::           Gnus can treat series of (uu)encoded articles.
2119 * Various Article Stuff::       Various stuff dealing with articles.
2120 * Summary Sorting::             You can sort the summary buffer four ways.
2121 * Finding the Parent::          No child support? Get the parent.
2122 * Score Files::                 Maintaining a score file.
2123 * Mail Group Commands::         Some commands can only be used in mail groups.
2124 * Various Summary Stuff::       What didn't fit anywhere else.
2125 @end menu
2126
2127 @node Summary Buffer Format
2128 @section Summary Buffer Format
2129 @cindex summary buffer format
2130
2131 @menu
2132 * Summary Buffer Lines::     You can specify how summary lines should look.
2133 * Summary Buffer Mode Line:: You can say how the mode line should look.
2134 @end menu
2135
2136 @findex mail-extract-address-components
2137 @findex gnus-extract-address-components
2138 @vindex gnus-extract-address-components
2139 Gnus will use the value of the @code{gnus-extract-address-components}
2140 variable as a function for getting the name and address parts of a
2141 @code{From} header.  Two pre-defined function exist:
2142 @code{gnus-extract-address-components}, which is the default, quite
2143 fast, and too simplistic solution, and
2144 @code{mail-extract-address-components}, which works very nicely, but is
2145 slower.
2146
2147 @vindex gnus-summary-same-subject
2148 @code{gnus-summary-same-subject} is a string indicating that the current
2149 article has the same subject as the previous.  This string will be used
2150 with those specs that require it.
2151
2152 @node Summary Buffer Lines
2153 @subsection Summary Buffer Lines
2154
2155 @vindex gnus-summary-line-format
2156 You can change the format of the lines in the summary buffer by changing
2157 the @code{gnus-summary-line-format} variable.  It works along the same
2158 lines a a normal @code{format} string, with some extensions.
2159
2160 The default string is @samp{"%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n"}.
2161
2162 The following format specification characters are understood:
2163
2164 @table @samp
2165 @item N 
2166 Article number.
2167 @item S
2168 Subject string.
2169 @item s
2170 Subject if the article is the root, @code{gnus-summary-same-subject}
2171 otherwise. 
2172 @item F
2173 Full @code{From} line.
2174 @item n
2175 The name (from the @code{From} header).
2176 @item A
2177 The address (from the @code{From} header).
2178 @item L
2179 Number of lines in the article.
2180 @item c
2181 Number of characters in the article.
2182 @item I
2183 Indentation based on thread level (@pxref{Customizing Threading}).
2184 @item T
2185 Nothing if the article is a root and lots of spaces if it isn't (it
2186 pushes everything after it off the screen).
2187 @item \[
2188 Opening bracket, which is normally @samp{\[}, but can also be @samp{<}
2189 for adopted articles.
2190 @item \]
2191 Closing bracked, which is normally @samp{\]}, but can also be @samp{>}
2192 for adopted articles.
2193 @item <
2194 One space for each thread level.
2195 @item >
2196 Twenty minus thread level spaces.
2197 @item U
2198 Unread.
2199 @item R
2200 Replied.
2201 @item i
2202 Score as a number.
2203 @item z
2204 Zcore, @samp{+} if above the default level and @samp{-} if below the
2205 default level. 
2206 @item x
2207 @code{Xref}.
2208 @item D
2209 @code{Date}.
2210 @item M
2211 @code{Message-Id}.
2212 @item r
2213 @code{References}.
2214 @item t
2215 Number of articles in the current subthread.  Using this spec will slow
2216 down summary buffer generation somewhat.
2217 @item u
2218 User defined specifier.  The next character in the format string should
2219 be a letter.  @sc{gnus} will call the function
2220 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
2221 following @samp{%u}.  The function will be passed the current header as
2222 argument.  The function should return a string, which will be inserted
2223 into the summary just like information from any other summary specifier.
2224 @end table
2225
2226 Text between @samp{%(} and @samp{%)} will be highlighted with
2227 @code{gnus-mouse-face} when the mouse point is placed inside the area.
2228 There can only be one such area.
2229
2230 The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
2231 have to be handled with care.  For reasons of efficiency, Gnus will
2232 compute what column these characters will end up in, and "hard-code"
2233 that.  This means that it is illegal to have these specs after a
2234 variable-length spec.  Well, you might not be arrested, but your summary
2235 buffer will look strange, which is bad enough.
2236
2237 The smart choice is to have these specs as far to the left as possible.
2238 (Isn't that the case with everything, though?  But I digress.)
2239
2240 This restriction may disappear in later versions of Gnus.
2241
2242 @node Summary Buffer Mode Line
2243 @subsection Summary Buffer Mode Line
2244
2245 @vindex gnus-summary-mode-line-format
2246 You can also change the format of the summary mode bar.  Set
2247 @code{gnus-summary-mode-line-format} to whatever you like.  Here are the
2248 elements you can play with:
2249
2250 @table @samp
2251 @item G
2252 Group name.
2253 @item A
2254 Current article number.
2255 @item V
2256 Gnus version.
2257 @item U
2258 Number of unread articles in this group.
2259 @item e
2260 Number of unselected articles in this group.
2261 @item Z
2262 A string with the number of unread and unselected articles represented
2263 either as @samp{<%U(+%u) more>} if there are both anread and unselected
2264 articles, and just as @samp{<%U more>} if there are just unread articles
2265 and no unselected ones.
2266 @item g
2267 Shortish group name. For instance, @samp{rec.arts.anime} will be
2268 shortened to @samp{r.a.anime}. 
2269 @item S
2270 Subject of the current article.
2271 @item u
2272 Used-defined spec.
2273 @item s
2274 Name of the current score file.
2275 @end table
2276
2277
2278 @node Summary Manouvering
2279 @section Summary Manouvering
2280 @cindex summary movement
2281
2282 All the straight movement commands understand the numeric prefix and
2283 behave pretty much as you'd expect. 
2284
2285 None of these commands select articles.
2286
2287 @table @kbd
2288 @item G M-n
2289 @itemx M-n
2290 @kindex M-n (Summary)
2291 @kindex G M-n (Summary)
2292 @findex gnus-summary-next-unread-subject
2293 Go to the next summary line of an unread article
2294 (@code{gnus-summary-next-unread-subject}). 
2295 @item G M-p
2296 @itemx M-p
2297 @kindex M-p (Summary)
2298 @kindex G M-p (Summary)
2299 @findex gnus-summary-prev-unread-subject
2300 Go to the previous summary line of an unread article
2301 (@code{gnus-summary-prev-unread-subject}). 
2302 @item G g
2303 @itemx j
2304 @kindex j (Summary)
2305 @kindex G g (Summary)
2306 @findex gnus-summary-goto-subject
2307 Ask for an article number and then go to this summary line
2308 (@code{gnus-summary-goto-subject}). 
2309 @end table
2310
2311 @vindex gnus-auto-select-next
2312 If you are at the end of the group and issue one of the movement
2313 commands, Gnus will offer to go to the next group.  If
2314 @code{gnus-auto-select-next} is @code{t} and the next group is empty,
2315 Gnus will exit summary mode and return to the group buffer.  If this
2316 variable is neither @code{t} nor @code{nil}, Gnus will select the next
2317 group, no matter whether it has any unread articles or not.  As a
2318 special case, if this variable is @code{quietly}, Gnus will select the
2319 next group without asking for confirmation.  Also @xref{Group Levels}.
2320
2321 If Gnus asks you to press a key to confirm going to the next group, you
2322 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
2323 buffer, searching for the next group to read without actually returning
2324 to the group buffer.
2325
2326 @vindex gnus-auto-center-summary
2327 If @code{gnus-auto-center-summary} is non-@code{nil}, Gnus will keep the
2328 point in the summary buffer centered at all times.  This makes things
2329 quite tidy, but if you have a slow network connection, or simply do not
2330 like this un-Emacsism, you can set this variable to @code{nil} to get
2331 the normal Emacs scrolling action.
2332
2333 @node Choosing Articles
2334 @section Choosing Articles
2335 @cindex selecting articles
2336
2337 None of the following movement commands understand the numeric prefix,
2338 and they all select and display an article.
2339
2340 @table @kbd
2341 @item SPACE
2342 @kindex SPACE (Summary)
2343 @findex gnus-summary-next-page
2344 Select the current article, or, if that one's read already, the next
2345 unread article (@code{gnus-summary-next-page}).
2346 @item G n
2347 @itemx n
2348 @kindex n (Summary)
2349 @kindex G n (Summary)
2350 @findex gnus-summary-next-unread-article
2351 Go to next unread article (@code{gnus-summary-next-unread-article}).
2352 @item G p
2353 @itemx p
2354 @kindex p (Summary)
2355 @findex gnus-summary-prev-unread-article
2356 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
2357 @item G N
2358 @itemx N
2359 @kindex N (Summary)
2360 @kindex G N (Summary)
2361 @findex gnus-summary-next-article
2362 Go to the next article (@code{gnus-summary-next-article}).
2363 @item G P
2364 @itemx P
2365 @kindex P (Summary)
2366 @kindex G P (Summary)
2367 @findex gnus-summary-prev-article
2368 Go to the previous article (@code{gnus-summary-prev-article}).
2369 @item G C-n
2370 @kindex G C-n (Summary)
2371 @findex gnus-summary-next-same-subject
2372 Go to the next article with the same subject
2373 (@code{gnus-summary-next-same-subject}). 
2374 @item G C-p
2375 @kindex G C-p (Summary)
2376 @findex gnus-summary-prev-same-subject
2377 Go to the previous article with the same subject
2378 (@code{gnus-summary-prev-same-subject}). 
2379 @item G f
2380 @itemx .
2381 @kindex G f  (Summary)
2382 @kindex .  (Summary)
2383 @findex gnus-summary-first-unread-article
2384 Go to the first unread article
2385 (@code{gnus-summary-first-unread-article}).
2386 @item G b
2387 @itemx ,
2388 @kindex G b (Summary)
2389 @kindex , (Summary)
2390 Go to the article with the highest score
2391 (@code{gnus-summary-best-unread-article}). 
2392 @item G l
2393 @itemx l
2394 @kindex l (Summary)
2395 @kindex G l (Summary)
2396 @findex gnus-summary-goto-last-article
2397 Go to the previous article read (@code{gnus-summary-goto-last-article}).
2398 @item G p
2399 @kindex G p (Summary)
2400 @findex gnus-summary-pop-article
2401 Pop an article off the summary history and go to this article
2402 (@code{gnus-summary-pop-article}).  This command differs from the
2403 command above in that you can pop as many previous articles off the
2404 history as you like.
2405 @end table
2406
2407 Some variables that are relevant for moving and selecting articles:
2408
2409 @table @code
2410 @item gnus-auto-extend-newsgroup
2411 @vindex gnus-auto-extend-newsgroup
2412 All the movement commands will try to go to the previous (or next)
2413 article, even if that article isn't displayed in the Summary buffer if
2414 this variable is non-@code{nil}.  Gnus will then fetch the article from
2415 the server and display it in the article buffer.
2416 @item gnus-select-article-hook
2417 @vindex gnus-select-article-hook
2418 This hook is called whenever an article is selected.  By default it
2419 exposes any threads hidden under the selected article.
2420 @item gnus-mark-article-hook
2421 @vindex gnus-mark-article-hook
2422 This hook is called whenever an article is selected.  It is intended to
2423 be used for marking articles as read.
2424 @item gnus-visual-mark-article-hook
2425 @vindex gnus-visual-mark-article-hook
2426 This hook is run after selecting an article.  It is meant to be used for
2427 highlighting the article in some way.  It is not run if
2428 @code{gnus-visual} is @code{nil}.
2429 @item gnus-visual-summary-update-hook
2430 @vindex gnus-visual-summary-update-hook
2431 This hook is called when a summary line is changed.  It is not run if
2432 @code{gnus-visual} is @code{nil}.
2433 @item gnus-summary-selected-face
2434 @vindex gnus-summary-selected-face
2435 This is the face (or @dfn{font} as some people call it) that is used to
2436 highlight the current article in the summary buffer.
2437 @item gnus-visual-summary-highlight
2438 @vindex gnus-visual-summary-highlight
2439 Summary lines are highlighted according to this variable, which is a
2440 list where the elements are on the format @code{(FORM . FACE)}.  If you
2441 would, for instance, like ticked articles to be italic and high-scored
2442 articles to be bold, you could set this variable to something like
2443 @lisp
2444 (((eq mark gnus-ticked-mark) . italic)
2445  ((> score default) . bold))
2446 @end lisp
2447 As you may have guessed, if @var{FORM} returns a non-@code{nil} value,
2448 @var{FACE} will be applied to the line.
2449 @end table
2450
2451 @node Paging the Article
2452 @section Scrolling the Article
2453 @cindex article scrolling
2454
2455 @table @kbd
2456 @item SPACE
2457 @kindex SPACE (Summary)
2458 @findex gnus-summary-next-page
2459 Pressing @kbd{SPACE} will scroll the current article forward one page,
2460 or, if you have come to the end of the current article, will choose the
2461 next article (@code{gnus-summary-next-page}).
2462 @item DEL
2463 @kindex DEL (Summary)
2464 @findex gnus-summary-prev-page
2465 Scoll the current article back one page (@code{gnus-summary-prev-page}). 
2466 @item RET
2467 @kindex RET (Summary)
2468 @findex gnus-summary-scroll-up
2469 Scroll the current article one line forward
2470 (@code{gnus-summary-scroll-up}).
2471 @item A <
2472 @itemx <
2473 @kindex < (Summary)
2474 @kindex A < (Summary)
2475 @findex gnus-summary-beginning-of-article
2476 Scroll to the beginning of the article
2477 (@code{gnus-summary-beginning-of-article}).
2478 @item A >
2479 @itemx >
2480 @kindex > (Summary)
2481 @kindex A > (Summary)
2482 @findex gnus-summary-end-of-article
2483 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
2484 @end table
2485
2486 @node Reply Followup and Post
2487 @section Reply, Followup and Post
2488 @cindex reply
2489 @cindex followup
2490 @cindex post
2491
2492 @kindex C-c C-c (Post)
2493 All the commands for posting and mailing will put you in a post or mail
2494 buffer where you can edit the article all you like, before you send the
2495 article by pressing @kbd{C-c C-c}.  If you are in a foreign news group,
2496 and you wish to post the article using the foreign server, you can give
2497 a prefix to @kbd{C-c C-c} to make Gnus try to post using the foreign
2498 server. 
2499
2500 @menu 
2501 * Mail::                 Mailing & replying.
2502 * Post::                 Posting and following up.
2503 * Mail & Post::          Mailing and posting at the same time.
2504 @end menu
2505
2506 @node Mail
2507 @subsection Mail
2508
2509 Commands for composing a mail message:
2510
2511 @table @kbd
2512 @item S r
2513 @itemx r
2514 @kindex S r (Summary)
2515 @kindex r (Summary)
2516 @findex gnus-summary-reply
2517 Mail a reply to the author of the current article
2518 (@code{gnus-summary-reply}). 
2519 @item S R
2520 @itemx R
2521 @kindex R (Summary)
2522 @kindex S R (Summary)
2523 @findex gnus-summary-reply-with-original
2524 Mail a reply to the author of the current article and include the
2525 original message (@code{gnus-summary-reply-with-original}).
2526 @item S C-f
2527 @kindex S C-f (Summary)
2528 @findex gnus-summary-mail-forward
2529 Forward the current article to some other person
2530 (@code{gnus-summary-mail-forward}). 
2531 @item S m
2532 @itemx m
2533 @kindex m (Summary)
2534 @kindex S m (Summary)
2535 @findex gnus-summary-mail-other-window
2536 Send a mail to some other person
2537 (@code{gnus-summary-mail-other-window}).
2538 @item S M-f
2539 @kindex S M-f (Summary)
2540 @findex gnus-uu-digest-and-forward
2541 Digest the current series and forward the result using mail
2542 (@code{gnus-uu-digest-and-forward}).  This command uses the
2543 process/prefix convention (@pxref{Process/Prefix}). 
2544 @end table
2545
2546 Variables for customizing outgoing mail:
2547
2548 @table @code
2549 @item gnus-reply-to-function
2550 @vindex gnus-reply-to-function
2551 Gnus uses the normal methods to determine where replies are to go, but
2552 you can change the behaviour to suit your needs by fiddling with this
2553 variable.
2554
2555 If you want the replies to go to the @samp{Sender} instead of the
2556 @samp{From} in the group @samp{mail.stupid-list}, you could do something
2557 like this:
2558
2559 @lisp
2560 (setq gnus-reply-to-function
2561       (lambda (group)
2562        (cond ((string= group "mail.stupid-list")
2563                (mail-fetch-field "sender"))
2564              (t
2565               nil))))
2566 @end lisp
2567
2568 This function will be called narrowed to the head of the article that is
2569 being replied to.
2570
2571 As you can see, this function should return a string if it has an
2572 opinion as to what the To header should be.  If it does not, it should
2573 just return @code{nil}, and the normal methods for determining the To
2574 header will be used.
2575
2576 This function can also return a list.  In that case, each list element
2577 should be a cons, where the car should be the name of an header
2578 (eg. @samp{Cc}) and the cdr should be the header value
2579 (eg. @samp{larsi@@ifi.uio.no}).  All these headers will be inserted into
2580 the head of the outgoing mail. 
2581
2582 @item gnus-mail-send-method
2583 @vindex gnus-mail-send-method
2584 This variable says how a mail should be mailed.  It uses the function in
2585 the @code{send-mail-function} variable as the default.
2586 @end table
2587
2588
2589 @node Post
2590 @subsection Post
2591
2592 Commands for posting an article:
2593
2594 @table @kbd
2595 @item S p
2596 @itemx a
2597 @kindex a (Summary)
2598 @kindex S p (Summary)
2599 @findex gnus-summary-post-news
2600 Post an article to the current group
2601 (@code{gnus-summary-post-news}).
2602 @item S f
2603 @itemx f
2604 @kindex f (Summary)
2605 @kindex S f (Summary)
2606 @findex gnus-summary-followup
2607 Post a followup to the current article (@code{gnus-summary-followup}).
2608 @item S F
2609 @itemx F
2610 @kindex S F (Summary)
2611 @kindex F (Summary)
2612 @findex gnus-summary-followup-with-original
2613 Post a followup to the current article and include the original message
2614 (@code{gnus-summary-followup-with-original}). 
2615 @item S u
2616 @kindex S u (Summary)
2617 @findex gnus-uu-post-news
2618 Uuencode a file, split it into parts, and post it as a series
2619 (@code{gnus-uu-post-news}) (@pxref{Uuencoding & Posting}). 
2620 @end table
2621
2622 @vindex gnus-required-headers
2623 @code{gnus-required-headers} a list of header symbols.  These headers
2624 will either be automatically generated, or, if that's impossible, they
2625 will be prompted for.  The following symbols are legal:
2626
2627 @table @code
2628 @item From
2629 This required header will be filled out with the result of the
2630 @code{gnus-inews-user-name} function, which depends on the
2631 @code{gnus-user-from-line}, @code{gnus-user-login-name},
2632 @code{gnus-local-domain} and @code{user-mail-address} variables.
2633 @item Subject
2634 This required header will be prompted for if not present already. 
2635 @item Newsgroups
2636 This required header says which newsgroups the article is to be posted
2637 to.  If it isn't present already, it will be prompted for.
2638 @item Organization
2639 This optional header will be filled out depending on the
2640 @code{gnus-local-organization} variable.
2641 @item Lines
2642 This optional header will be computed by Gnus.
2643 @item Message-ID
2644 This required header will be generated by Gnus.  A unique ID will be
2645 created based on date, time, user name and system name.
2646 @item X-Newsreader
2647 This optional header will be filled out with the Gnus version numbers. 
2648 @end table
2649
2650 In addition, you can enter conses into this list.  The car of this cons
2651 should be a symbol who's name is the name of the header, and the cdr can
2652 either a string to be entered verbatim as the value of this header, or
2653 it can be a function to be called.  This function should return a string
2654 to be inserted.  For instance, if you want to insert @samp{Mime-Version:
2655 1.0}, you should enter @code{(Mime-Version . "1.0")} into the list.  If
2656 you want to insert a funny quote, you could enter something like
2657 @code{(X-Yow . yow)} into the list.  The function @code{yow} will then
2658 be called without any arguments. 
2659
2660 Other variables for customizing outgoing articles:
2661
2662 @table @code
2663 @item gnus-post-method
2664 @vindex gnus-post-method
2665 If non-@code{nil}, Gnus will use this method instead of the default
2666 select method when posting.
2667
2668 @item nntp-news-default-headers
2669 @vindex nntp-news-default-headers
2670 If non-@code{nil}, this variable will override
2671 @code{mail-default-headers} when posting.  This variable should then be
2672 a string.  This string will be inserted, as is, in the head of all
2673 outgoing articles.
2674
2675 @item gnus-use-followup-to
2676 @vindex gnus-use-followup-to
2677 If @code{nil}, always ignore the Followup-To header.  If it is @code{t},
2678 use its value, but ignore the special value @samp{poster}, which will
2679 send the followup as a reply mail to the person you are responding to.
2680 If it is neither @code{nil} nor @code{t}, always use the Followup-To
2681 value.
2682
2683 @item gnus-followup-to-function
2684 @vindex gnus-followup-to-function
2685 This variable is most useful in mail groups, where "following up" really
2686 means sending a mail to a list address.  Gnus uses the normal methods to
2687 determine where follow-ups are to go, but you can change the behaviour
2688 to suit your needs by fiddling with this variable.
2689
2690 If you want the followups to go to the @samp{Sender} instead of the
2691 @samp{From} in the group @samp{mail.stupid-list}, you could do something
2692 like this:
2693
2694 @lisp
2695 (setq gnus-followup-to-function
2696       (lambda (group)
2697        (cond ((string= group "mail.stupid-list")
2698                (mail-fetch-field "sender"))
2699              (t
2700               nil))))
2701 @end lisp
2702
2703 This function will be called narrowed to header of the article that is
2704 being followed up.
2705
2706 @item gnus-signature-function
2707 @vindex gnus-signature-function
2708 If non-@code{nil}, this variable should be a function that returns a
2709 signature file name.  The function will be called with the name of the
2710 group being posted to.  If the function returns a string that doesn't
2711 correspond to a file, the string itself is inserted.  If the function
2712 returns @code{nil}, the @code{gnus-signature-file} variable will be used
2713 instead.
2714
2715 @item gnus-post-prepare-function
2716 @vindex gnus-post-prepare-function
2717 This function is called with the name of the current group after the
2718 post buffer has been initialized, and can be used for inserting a
2719 signature.  Nice if you use different signatures in different groups.
2720
2721 @item news-reply-header-hook
2722 @vindex news-reply-header-hook
2723 A related variable when following up and replying is this variable,
2724 which inserts the @dfn{quote line}.  The default value is:
2725
2726 @lisp
2727 (defvar news-reply-header-hook
2728   (lambda ()
2729     (insert "In article " news-reply-yank-message-id
2730             " " news-reply-yank-from " writes:\n\n")))
2731 @end lisp
2732
2733 This will create lines like:
2734
2735 @example
2736 In article <zngay8jrql@@eyesore.no> Lars Mars <lars@@eyesore.no> writes:
2737 @end example
2738
2739 Having the @code{Message-Id} in this line is probably overkill, so I
2740 would suggest this hook instead:
2741
2742 @lisp
2743 (setq news-reply-header-hook
2744   (lambda () (insert news-reply-yank-from " writes:\n\n")))
2745 @end lisp
2746
2747 @item gnus-prepare-article-hook
2748 @vindex gnus-prepare-article-hook
2749 This hook is called before the headers have been prepared.  By default
2750 it inserts the signature specified by @code{gnus-signature-file}.
2751
2752 @item gnus-inews-article-hook
2753 @vindex gnus-inews-article-hook
2754 This hook is called right before the article is posted.  By default it
2755 handles FCC processing (ie. saving the article to a file.)
2756
2757 @item gnus-inews-article-header-hook
2758 @vindex gnus-inews-article-header-hook
2759 This hook is called after inserting the required headers in an article
2760 to be posted.  The hook is called from the @code{*post-news*} buffer,
2761 narrowed to the head, and is intended for people who would like to
2762 insert additional headers, or just change headers in some way or other.
2763 @end table
2764
2765
2766 @node Mail & Post
2767 @subsection Mail & Post
2768
2769 Commands for sending mail and post at the same time:
2770
2771 @table @kbd
2772 @item S b
2773 @kindex S b (Summary)
2774 @findex gnus-summary-followup-and-reply
2775 Post a followup and send a reply to the current article
2776 (@code{gnus-summary-followup-and-reply}).
2777 @item S B
2778 @kindex S B (Summary)
2779 @findex gnus-summary-followup-and-reply-with-original
2780 Post a followup and send a reply to the current article and include the
2781 original message (@code{gnus-summary-followup-and-reply-with-original}).
2782 @end table
2783
2784 Here's a list of variables that are relevant to both mailing and
2785 posting:
2786
2787 @table @code
2788 @item gnus-signature-file
2789 @itemx mail-signature
2790 @vindex mail-signature
2791 @vindex gnus-signature-file
2792 @cindex double signature
2793 @cindex signature
2794 If @code{gnus-signature-file} is non-@code{nil}, it should be the name
2795 of a file containing a signature (@samp{~/.signature} by default).  This
2796 signature will be appended to all outgoing post.  Most people find it
2797 more convenient to use @code{mail-signature}, which does the same, but
2798 inserts the signature into the buffer before you start editing the post
2799 (or mail).  So - if you have both of these variables set, you will get
2800 two signatures.
2801
2802 Note that RFC1036 says that a signature should be preceded by the three
2803 characters @samp{-- } on a line by themselves.  This is to make it
2804 easier for the recipient to automatically recognize and process the
2805 signature.  So don't remove those characters, even though you might feel
2806 that they ruin you beautiful design, like, totally.
2807
2808 Also note that no signature should be more than four lines long.
2809 Including ASCII graphics is an efficient way to get everybody to believe
2810 that you are silly and have nothing important to say.
2811
2812 @item mail-yank-prefix
2813 @vindex mail-yank-prefix
2814 @cindex yanking
2815 @cindex quoting
2816 When you are replying to or following up an article, you normally want
2817 to quote the person you are answering.  Inserting quoted text is done by
2818 @dfn{yanking}, and each quoted line you yank will have
2819 @code{mail-yank-prefix} prepended to it.  This is @samp{ } by default,
2820 which isn't very pretty.  Most everybody prefers that lines are
2821 prepended with @samp{> }, so @code{(setq mail-yank-prefix "> ")} in your
2822 @file{.emacs} file.
2823
2824 @item mail-yank-ignored-headers
2825 @vindex mail-yank-ignored-headers
2826 When you yank a message, you do not want to quote any headers, so
2827 @code{(setq mail-yank-ignored-headers ":")}.
2828
2829 @item user-mail-address
2830 @vindex user-mail-address
2831 If all of @code{gnus-user-login-name}, @code{gnus-use-generic-from} and
2832 @code{gnus-local-domain} are @code{nil}, Gnus will use
2833 @code{user-mail-address} as the address part of the @code{From} header.
2834
2835 @item gnus-user-from-line
2836 @vindex gnus-user-from-line
2837 Your full, complete e-mail address.  This variable overrides the other
2838 Gnus variables if it is non-@code{nil}.
2839
2840 Here are two example values of this variable: @samp{"larsi@@ifi.uio.no
2841 (Lars Magne Ingebrigtsen)"} and @samp{"Lars Magne Ingebrigtsen
2842 <larsi@@ifi.uio.no>"}. The latter version is recommended, but the name
2843 has to be quoted if it contains non-alphanumerical characters -
2844 @samp{"\"Lars M. Ingebrigtsen\" <larsi@@ifi.uio.no>"}.
2845
2846 @item mail-default-headers
2847 @vindex mail-default-headers
2848 This is a string that will be inserted into the header of all outgoing
2849 mail messages and news articles.  Convenient to use to insert standard
2850 headers.  If @code{nntp-news-default-headers} is non-@code{nil}, that
2851 variable will override this one when posting articles.
2852
2853 @item gnus-auto-mail-to-author
2854 @vindex gnus-auto-mail-to-author
2855 If @code{ask}, you will be prompted for whether you want to send a mail
2856 copy to the author of the article you are following up.  If
2857 non-@code{nil} and not @code{ask}, Gnus will send a mail with a copy of
2858 all follow-ups to the authors of the articles you follow up.  It's nice
2859 in one way - you make sure that the person you are responding to gets
2860 your response.  Other people loathe this method and will hate you dearly
2861 for it, because it means that they will first get a mail, and then have
2862 to read the same article later when they read the news.  It is
2863 @code{nil} by default.
2864
2865 @item gnus-mail-courtesy-message
2866 @vindex gnus-mail-courtesy-message
2867 This is a string that will be prepended to all mails that are the result
2868 of using the variable described above.  
2869
2870 @end table
2871
2872 @node Cancelling and Superseding
2873 @section Cancelling Articles
2874 @cindex cancelling articles
2875 @cindex superseding articles
2876
2877 Have you ever written something, and then decided that you really,
2878 really, really wish you hadn't posted that?
2879
2880 Well, you can't cancel mail, but you can cancel posts.
2881
2882 @findex gnus-summary-cancel-article
2883 @kindex C (Summary)
2884 Find the article you wish to cancel (you can only cancel your own
2885 articles, so don't try any funny stuff).  Then press @kbd{C} or @kbd{S
2886 c} (@code{gnus-summary-cancel-article}).  Your article will be
2887 cancelled - machines all over the world will be deleting your article. 
2888
2889 Be aware, however, that not all sites honor cancels, so your article may
2890 live on here and there, while most sites will delete the article in
2891 question.
2892
2893 If you discover that you have made some mistakes and want to do some
2894 corrections, you can post a @dfn{superseding} article that will replace
2895 your original article.
2896
2897 @findex gnus-summary-supersede-article
2898 @kindex S (Summary)
2899 Go to the original article and press @kbd{S s}
2900 (@code{gnus-summary-supersede-article}).  You will be put in a buffer
2901 where you can edit the article all you want before sending it off the
2902 usual way.
2903
2904 The same goes for superseding as for cancelling, only more so: Some
2905 sites do not honor superseding.  On those sites, it will appear that you
2906 have posted almost the same article twice.
2907
2908 If you have just posted the article, and change your mind right away,
2909 there is a trick you can use to cancel/supersede the article without
2910 waiting for the article to appear on your site first.  You simply return
2911 to the post buffer (which is called @code{*post-buf*}).  There you will
2912 find the article you just posted, with all the headers intact.  Change
2913 the @samp{Message-ID} header to a @samp{Cancel} or @samp{Supersedes}
2914 header by substituting one of those words for @samp{Message-ID}.  Then
2915 just press @kbd{C-c C-c} to send the article as you would do normally.
2916 The previous article will be cancelled/superseded.
2917
2918 Just remember, kids: There is no 'c' in 'supersede'.
2919
2920 @node Ticking and Marking
2921 @section Ticking and Marking
2922 @cindex article marking
2923 @cindex article ticking
2924
2925 There are several marks you can set on an article. 
2926
2927 You have marks that decide the @dfn{readed-ness} (whoo, neato-keano
2928 neologism ohoy!) of the article.  Alphabetic marks generally mean
2929 @dfn{read}, while non-alphabetic characters generally mean @dfn{unread}.
2930
2931 In addition, you also have marks that do not affect readedness.
2932
2933 @menu
2934 * Unread Articles::      Marks for unread articles.
2935 * Read Articles::        Marks for read articles.
2936 * Other Marks::          Marks that do not affect readedness.
2937 @end menu
2938
2939 @ifinfo
2940 There's a plethora of commands for manipulating these marks:
2941 @end ifinfo
2942
2943 @menu
2944 * Setting Marks::           How to set and remove marks.
2945 * Setting Process Marks::   How to mark articles for later processing.
2946 @end menu
2947
2948 @node Unread Articles
2949 @subsection Unread Articles
2950
2951 The following marks mark articles as unread, in one form or other.
2952
2953 @vindex gnus-dormant-mark
2954 @vindex gnus-ticked-mark
2955 @table @samp
2956 @item !
2957 @dfn{Ticked articles} are articles that will remain visible always.  If
2958 you see an article that you find interesting, or you want to put off
2959 reading it, or replying to it, until sometime later, you'd typically
2960 tick it.  However, articles can be expired, so if you want to keep an
2961 article forever, you'll have to save it.  Ticked articles have a
2962 @samp{!} (@code{gnus-ticked-mark}) in the first column.
2963 @item ?
2964 A @dfn{dormant} article is marked with a @samp{?}
2965 (@code{gnus-dormant-mark}), and will only appear in the summary buffer
2966 if there are followups to it.
2967 @item SPC
2968 An @dfn{unread} article is marked with a @samp{SPC}
2969 (@code{gnus-unread-mark}).  These are articles that haven't been read at
2970 all yet.
2971 @end table
2972
2973 @node Read Articles
2974 @subsection Read Articles
2975 @cindex expirable mark
2976
2977 All the following marks mark articles as read.
2978
2979 @table @samp
2980 @item D
2981 Articles that are marked as read.  They have a @samp{D}
2982 (@code{gnus-dread-mark}) in the first column.  These are articles that the
2983 user has marked as read more or less manually.
2984 @item d
2985 Articles that are actually read are marked with @samp{d}
2986 (@code{gnus-read-mark}). 
2987 @item A
2988 Articles that were marked as read in previous sessions are now
2989 @dfn{ancient} and marked with @samp{A} (@code{gnus-ancient-mark}). 
2990 @item K
2991 Marked as killed (@code{gnus-killed-mark}).
2992 @item X
2993 Marked as killed by kill files (@code{gnus-kill-file-mark}).
2994 @item Y
2995 Marked as read by having a too low score (@code{gnus-low-score-mark}).
2996 @item C
2997 Marked as read by a catchup (@code{gnus-catchup-mark}).
2998 @item G
2999 Cancelled article (@code{gnus-cancelled-mark})
3000 @end table
3001
3002 All these marks just mean that the article is marked as read, really.
3003 They are interpreted differently by the adaptive scoring scheme,
3004 however.
3005
3006 One more special mark, though:
3007
3008 @table @samp
3009 @item E
3010 You can also mark articles as @dfn{expirable} (or have them marked as
3011 such automatically).  That doesn't make much sense in normal groups,
3012 because a user does not control the expiring of news articles, but in
3013 mail groups, for instance, articles that are marked as @dfn{expirable}
3014 can be deleted by Gnus at any time.  Expirable articles are marked with
3015 @samp{E} (@code{gnus-expirable-mark}).
3016 @end table
3017
3018 @node Other Marks
3019 @subsection Other Marks
3020 @cindex process mark
3021 @cindex bookmarks
3022
3023 There are some marks that have nothing to do with whether the article is
3024 read or not.
3025
3026 You can set a bookmark in the current article.  Say you are reading a
3027 long thesis on cat's urinary tracts, and have to go home for dinner
3028 before you've finished reading the thesis.  You can then set a bookmark
3029 in the article, and Gnus will jump to this bookmark the next time it
3030 encounters the article.
3031
3032 All articles that you have replied to or made a followup to will be
3033 marked with an @samp{R} in the second column (@code{gnus-replied-mark}). 
3034
3035 Finally we have the @dfn{process mark}.  A variety of commands react to
3036 the presence of the process mark.  For instance, @kbd{X u}
3037 (@code{gnus-uu-decode-uu}) will uudecode and view all articles that have
3038 been marked with the process mark.  Articles marked with the process
3039 mark have a @samp{#} in the second column.
3040
3041 @node Setting Marks
3042 @subsection Setting Marks
3043 @cindex setting marks
3044
3045 All the marking commands understand the numeric prefix.
3046
3047 @table @kbd
3048 @item M t
3049 @itemx !
3050 @kindex ! (Summary)
3051 @kindex M t (Summary)
3052 @findex gnus-summary-tick-article-forward
3053 Tick the current article (@code{gnus-summary-tick-article-forward}).
3054 @item M ?
3055 @itemx ?
3056 @kindex ? (Summary)
3057 @kindex M ? (Summary)
3058 @findex gnus-summary-mark-as-dormant
3059 Mark the current article as dormant
3060 (@code{gnus-summary-mark-as-dormant}).
3061 @item M d
3062 @itemx d
3063 @kindex M d (Summary)
3064 @kindex d (Summary)
3065 @findex gnus-summary-mark-as-read-forward
3066 Mark the current article as read
3067 (@code{gnus-summary-mark-as-read-forward}).
3068 @item M k
3069 @itemx k
3070 @kindex k (Summary)
3071 @kindex M k (Summary)
3072 @findex gnus-summary-kill-same-subject-and-select
3073 Mark all articles that have the same subject as the current one as read,
3074 and then select the next unread article
3075 (@code{gnus-summary-kill-same-subject-and-select}).
3076 @item M K
3077 @itemx C-k
3078 @kindex M K (Summary)
3079 @kindex C-k (Summary)
3080 @findex gnus-summary-kill-same-subject
3081 Mark all articles that have the same subject as the current one as read
3082 (@code{gnus-summary-kill-same-subject}).  
3083 @item M C
3084 @kindex M C (Summary)
3085 @findex gnus-summary-catchup
3086 Catchup the current group (@code{gnus-summary-catchup}).
3087 @item M C-c
3088 @kindex M C-c (Summary)
3089 @findex gnus-summary-catchup-all
3090 Catchup all articles in the current group (@code{gnus-summary-catchup-all}).
3091 @item M H
3092 @kindex M H (Summary)
3093 @findex gnus-summary-catchup-to-here
3094 Catchup the current group to point
3095 (@code{gnus-summary-catchup-to-here}). 
3096 @item C-w
3097 @kindex C-w (Summary)
3098 @findex gnus-summary-mark-region-as-read
3099 Mark all articles between point and mark as read
3100 (@code{gnus-summary-mark-region-as-read}). 
3101 @item M c
3102 @itemx M-u
3103 @kindex M c (Summary)
3104 @kindex M-u (Summary)
3105 @findex gnus-summary-clear-mark-forward
3106 Clear all readedness-marks from the current article
3107 (@code{gnus-summary-clear-mark-forward}).
3108 @item M e
3109 @itemx E
3110 @kindex M e (Summary)
3111 @kindex E (Summary)
3112 @findex gnus-summary-mark-as-expirable
3113 Mark the current article as expirable
3114 (@code{gnus-summary-mark-as-expirable}).
3115 @item M b
3116 @kindex M b (Summary)
3117 @findex gnus-summary-set-bookmark
3118 Set a bookmark in the current article
3119 (@code{gnus-summary-set-bookmark}).
3120 @item M B
3121 @kindex M B (Summary)
3122 @findex gnus-summary-remove-bookmark
3123 Remove the bookmark from the current article
3124 (@code{gnus-summary-remove-bookmark}).
3125 @item M M-r
3126 @itemx x
3127 @kindex M M-r (Summary)
3128 @kindex M-d (Summary)
3129 @findex gnus-summary-remove-lines-marked-as-read
3130 Expunge all deleted articles from the summary buffer
3131 (@code{gnus-summary-remove-lines-marked-as-read}). 
3132 @item M M-C-r
3133 @kindex M M-C-r (Summary)
3134 @findex gnus-summary-remove-lines-marked-with
3135 Ask for a mark and then expunge all articles that have been marked with
3136 that mark (@code{gnus-summary-remove-lines-marked-with}).
3137 @item M S
3138 @kindex M S (Summary)
3139 @findex gnus-summary-show-all-expunged
3140 Display all expunged articles (@code{gnus-summary-show-all-expunged}).
3141 @item M D
3142 @kindex M D (Summary)
3143 @findex gnus-summary-show-all-dormant
3144 Display all dormant articles (@code{gnus-summary-show-all-dormant}).
3145 @item M M-D
3146 @kindex M M-D (Summary)
3147 @findex gnus-summary-hide-all-dormant
3148 Hide all dormant articles (@code{gnus-summary-hide-all-dormant}).
3149 @item M s k
3150 @kindex M s k (Summary)
3151 @findex gnus-summary-kill-below
3152 Kill all articles with scores below the default score (or below the
3153 numeric prefix) (@code{gnus-summary-kill-below}).
3154 @item M s c
3155 @kindex M s c (Summary)
3156 @findex gnus-summary-clear-above
3157 Clear all marks from articles with scores over the default score (or
3158 over the numeric prefix) (@code{gnus-summary-clear-above}).
3159 @item M s u
3160 @kindex M s u (Summary)
3161 @findex gnus-summary-tick-above
3162 Tick all articles with scores over the default score (or over the
3163 numeric prefix) (@code{gnus-summary-tick-above}).
3164 @item M s m
3165 @kindex M s m (Summary)
3166 @findex gnus-summary-mark-above
3167 Prompt for a mark, and mark all articles with scores over the default
3168 score (or over the numeric prefix) with this mark
3169 (@code{gnus-summary-clear-above}).
3170 @end table
3171
3172 @code{gnus-summary-goto-unread}
3173 The @code{gnus-summary-goto-unread} variable controls what action should
3174 be taken after setting a mark.  If non-@code{nil}, point will move to
3175 the next/previous unread article.  If @code{nil}, point will just move
3176 one line up or down.
3177
3178 @node Setting Process Marks
3179 @subsection Setting Process Marks
3180 @cindex setting process marks
3181
3182 @table @kbd
3183 @item M p p
3184 @itemx #
3185 @kindex # (Summary)
3186 @kindex M p p (Summary)
3187 @findex gnus-summary-mark-as-processable
3188 Mark the current article with the process mark
3189 (@code{gnus-summary-mark-as-processable}). 
3190 @findex gnus-summary-unmark-as-processable
3191 @item M p u 
3192 @itemx M-#
3193 @kindex M p u (Summary)
3194 @kindex M-# (Summary)
3195 Remove the process mark, if any, from the current article
3196 (@code{gnus-summary-unmark-as-processable}).
3197 @item M p U
3198 @kindex M p U (Summary)
3199 @findex gnus-summary-unmark-all-processable
3200 Remove the process mark from all articles
3201 (@code{gnus-summary-unmark-all-processable}). 
3202 @item M p R
3203 @kindex M p R (Summary)
3204 @findex gnus-uu-mark-by-regexp
3205 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}). 
3206 @item M p r
3207 @kindex M p r (Summary)
3208 @findex gnus-uu-mark-region
3209 Mark articles in region (@code{gnus-uu-mark-region}).
3210 @item M p t
3211 @kindex M p t (Summary)
3212 @findex gnus-uu-mark-thread
3213 Mark all articles in the current (sub)thread
3214 (@code{gnus-uu-mark-thread}).
3215 @item M p s
3216 @kindex M p s (Summary)
3217 @findex gnus-uu-mark-series
3218 Mark all articles in the current series (@code{gnus-uu-mark-series}).
3219 @item M p S
3220 @kindex M p S (Summary)
3221 @findex gnus-uu-mark-sparse
3222 Mark all series that have already had some articles marked
3223 (@code{gnus-uu-mark-sparse}).
3224 @item M p a
3225 @kindex M p a (Summary)
3226 @findex gnus-uu-mark-all
3227 Mark all articles in series order (@code{gnus-uu-mark-series}).
3228 @end table
3229
3230 @node Threading
3231 @section Threading
3232 @cindex threading
3233 @cindex article threading
3234
3235 Gnus threads articles by default.  @dfn{To thread} is to put replies to
3236 articles directly after the articles they reply to - in a hierarchical
3237 fashion.
3238
3239 @menu
3240 * Customizing Threading::     Variables you can change to affect the threading.
3241 * Thread Commands::           Thread based commands in the summary buffer.
3242 @end menu
3243
3244 @node Customizing Threading
3245 @subsection Customizing Threading
3246 @cindex customizing threading
3247
3248 @table @code
3249 @item gnus-show-threads
3250 @vindex gnus-show-threads
3251 If this variable is @code{nil}, no threading will be done, and all of
3252 the rest of the variables here will have no effect.  Turning threading
3253 off will speed group selection up a bit, but it is sure to make reading
3254 slower and more awkward.
3255 @item gnus-fetch-old-headers
3256 @vindex gnus-fetch-old-headers
3257 If non-@code{nil}, Gnus will attempt to build old threads by fetching
3258 more old headers - headers to articles that are marked as read.  If you
3259 would like to display as few summary lines as possible, but still
3260 connect as many loose threads as possible, you should set this variable
3261 to @code{some}.  In either case, fetching old headers only works if the
3262 select method you are using supports @sc{xover}.  Also remember that if
3263 the root of the thread has been expired by the server, there's not much
3264 Gnus can do about that.
3265 @item gnus-gather-loose-threads
3266 @vindex gnus-gather-loose-threads
3267 If non-@code{nil}, Gnus will gather all loose subtrees into one big tree
3268 and create a dummy root at the top.  (Wait a minute.  Root at the top?
3269 Yup.)  Loose subtrees occur when the real root has expired, or you've
3270 read or killed the root in a previous session.
3271 @item gnus-summary-gather-subject-limit
3272 Loose threads are gathered by comparing subjects of articles.  If this
3273 variable is @code{nil}, Gnus requires an exact match between the
3274 subjects of the loose threads before gathering them into one big
3275 super-thread.  This might be too strict a requirement, what with the
3276 presence of stupid newsreaders that chop off long subjects lines.  If
3277 you think so, set this variable to, say, 20 to require that only the
3278 first 20 characters of the subjects have to match.  If you set this
3279 variable to a real low number, you'll find that Gnus will gather
3280 everything in sight into one thread, which isn't very helpful.
3281
3282 @cindex fuzzy article gathering
3283 If you set this variable to the special value @code{fuzzy}, Gnus will
3284 use a fuzzy string comparison algorithm on the subjects.
3285
3286 @item gnus-summary-make-false-root
3287 @vindex gnus-summary-make-false-root
3288 When there is no real root of a thread, Gnus will have to fudge
3289 something.  This variable says what fudging method Gnus should use.
3290 There are four possible values:
3291
3292 @table @code
3293 @item adopt
3294 Gnus will make the first of the orphaned articles the parent.  This
3295 parent will adopt all the other articles.  The adopted articles will be
3296 marked as such by pointy brackets instead of the standard square
3297 brackets.  This is the default method.
3298 @item dummy
3299 Gnus will create a dummy summary line that will pretend to be the
3300 parent.  This dummy line does not correspond to any real article, so
3301 selecting it will just select the first real article after the dummy
3302 article.
3303 @item empty
3304 Gnus won't actually make any article the parent, but simply leave the
3305 subject field of all orphans except the first empty.  (Actually, it will
3306 use @code{gnus-summary-same-subject} as the subject (@pxref{Summary
3307 Buffer Format}).)
3308 @item nil
3309 Don't make any article parent at all.  Just gather the threads and
3310 display them after one another.
3311 @end table
3312
3313 @item gnus-thread-hide-subtree
3314 @vindex gnus-thread-hide-subtree
3315 If non-@code{nil}, all threads will be hidden when the summary buffer is
3316 generated.
3317 @item gnus-thread-hide-killed
3318 @vindex gnus-thread-hide-killed
3319 if you kill a thread and this variable is non-@code{nil}, the subtree
3320 will be hidden.
3321 @item gnus-thread-ignore-subject
3322 @vindex gnus-thread-ignore-subject
3323 Sometimes somebody changes the subject in the middle of a thread.  If
3324 this variable is non-@code{nil}, the subject change is ignored.  If it
3325 is @code{nil}, which is the default, a change in the subject will result
3326 in a new thread.
3327 @item gnus-thread-indent-level
3328 @vindex gnus-thread-indent-level
3329 This is a number that says how much each subthread should be indented.
3330 The default is @samp{4}.
3331 @end table
3332
3333 @node Thread Commands
3334 @subsection Thread Commands
3335 @cindex thread commands
3336
3337 @table @kbd
3338 @item T k
3339 @itemx M-C-k
3340 @kindex T k (Summary)
3341 @kindex M-C-k (Summary)
3342 @findex gnus-summary-kill-thread
3343 Mark all articles in the current subtread as read
3344 (@code{gnus-summary-kill-thread}).  If the prefix argument is positive,
3345 remove all marks instead.  If the prefix argument is negative, tick
3346 articles instead.
3347 @item T l
3348 @itemx M-C-l
3349 @kindex T l (Summary)
3350 @kindex M-C-l (Summary)
3351 @findex gnus-summary-lower-thread
3352 Lower the score of the current thread
3353 (@code{gnus-summary-lower-thread}). 
3354 @item T i
3355 @kindex T i (Summary)
3356 @findex gnus-summary-raise-thread
3357 Increase the score of the current thread
3358 (@code{gnus-summary-raise-thread}).
3359 @item T #
3360 @kindex T # (Summary)
3361 @findex gnus-uu-mark-thread
3362 Mark the current thread with the process mark
3363 (@code{gnus-uu-mark-thread}).
3364 @item T T
3365 @kindex T T (Summary)
3366 @findex gnus-summary-toggle-threads
3367 Toggle threading (@code{gnus-summary-toggle-threads}).
3368 @item T s
3369 @kindex T s (Summary)
3370 @findex gnus-summary-show-thread
3371 Expose the thread hidden under the current article, if any
3372 (@code{gnus-summary-show-thread}).
3373 @item T h
3374 @kindex T h (Summary)
3375 @findex gnus-summary-hide-thread
3376 Hide the current (sub)thread (@code{gnus-summary-hide-thread}).
3377 @item T S
3378 @kindex T S (Summary)
3379 @findex gnus-summary-show-all-threads
3380 Expose all hidden threads (@code{gnus-summary-show-all-threads}).
3381 @item T H
3382 @kindex T H (Summary)
3383 @findex gnus-summary-hide-all-threads
3384 Hide all threads (@code{gnus-summary-hide-all-threads}).
3385 @end table
3386
3387 The following commands are thread movement commands.  They all
3388 understand the numeric prefix.
3389
3390 @table @kbd
3391 @item T n
3392 @kindex T n (Summary)
3393 @findex gnus-summary-next-thread
3394 Go to the next thread (@code{gnus-summary-next-thread}).
3395 @item T p
3396 @kindex T p (Summary)
3397 @findex gnus-summary-prev-thread
3398 Go to the previous thread (@code{gnus-summary-prev-thread}).
3399 @item T d
3400 @kindex T d (Summary)
3401 @findex gnus-summary-down-thread
3402 Descend the thread (@code{gnus-summary-down-thread}).
3403 @item T u
3404 @kindex T u (Summary)
3405 @findex gnus-summary-up-thread
3406 Ascend the thread (@code{gnus-summary-up-thread}).
3407 @end table
3408
3409 @node Exiting the Summary Buffer
3410 @section Exiting the Summary Buffer
3411 @cindex summary exit
3412
3413 Exiting from the summary buffer will normally update all info on the
3414 group and return you to the group buffer. 
3415
3416 @table @kbd
3417 @item Z Z
3418 @itemx q
3419 @kindex Z Z (Summary)
3420 @kindex q (Summary)
3421 @findex gnus-summary-exit
3422 Exit the current group and update all information on the group
3423 (@code{gnus-summary-exit}).
3424 @item Z E
3425 @itemx Q
3426 @kindex Z E (Summary)
3427 @kindex Q (Summary)
3428 @findex gnus-summary-exit-no-update
3429 Exit the current group without updating any information on the group
3430 (@code{gnus-summary-exit-no-update}).
3431 @item Z c
3432 @itemx c
3433 @kindex Z c (Summary)
3434 @kindex c (Summary)
3435 @findex gnus-summary-catchup-and-exit
3436 Mark all unticked articles in the group as read and then exit
3437 (@code{gnus-summary-catchup-and-exit}).
3438 @item Z C
3439 @kindex Z C (Summary)
3440 @findex gnus-summary-catchup-all-and-exit
3441 Mark all articles, even the ticked ones, as read and then exit
3442 (@code{gnus-summary-catchup-all-and-exit}).
3443 @item Z n
3444 @kindex Z n (Summary)
3445 @findex gnus-summary-catchup-and-goto-next-group
3446 Mark all articles as read and go to the next group
3447 (@code{gnus-summary-catchup-and-goto-next-group}). 
3448 @end table
3449
3450 @vindex gnus-exit-group-hook
3451 @code{gnus-exit-group-hook} is called when you exit the current
3452 group.  
3453
3454 @vindex gnus-use-cross-reference
3455 The data on the current group will be updated (which articles you have
3456 read, which articles you have replied to, etc.) when you exit the
3457 summary buffer.  If the @code{gnus-use-cross-reference} variable is
3458 @code{t}, articles that are cross-referenced to this group and are
3459 marked as read, will also be marked as read in the other subscribed
3460 groups they were cross-posted to.  If this variable is neither
3461 @code{nil} nor @code{t}, the article will be marked as read in both
3462 subscribed and unsubscribed groups.
3463
3464 Marking cross-posted articles as read ensures that you'll never have to
3465 read the same article more than once.  Unless, of course, somebody has
3466 posted it to several groups separately.  Posting the same article to
3467 several groups (not cross-posting) is called @dfn{spamming}, and you are
3468 by law required to send nasty-grams to anyone who perpetrates such a
3469 heinous crime.
3470
3471 Remember: Cross-posting is kinda ok, but posting the same article
3472 separately to several groups is not.
3473
3474 One thing that may cause Gnus to not do the cross-posting thing
3475 correctly is if you use an @sc{nntp} server that supports @sc{xover}
3476 (which is very nice, because it speeds things up considerably) which
3477 does not include the @code{Xref} header in its @sc{nov} lines.  This is
3478 Evil, but all too common, alas, alack.  Gnus tries to Do The Right Thing
3479 even with @sc{xover} by registering the @code{Xref} lines of all
3480 articles you actually read, but if you kill the articles, or just mark
3481 them as read without reading them, Gnus will not get a chance to snoop
3482 the @code{Xref} lines out of these articles, and will be unable to use
3483 the cross reference mechanism.
3484
3485 @vindex gnus-nov-is-evil
3486 If you want Gnus to get the @code{Xref}s right all the time, you have to
3487 set @code{gnus-nov-is-evil} to @code{t}, which slows things down
3488 considerably.
3489
3490 C'est la vie.
3491
3492 @node Process/Prefix
3493 @section Process/Prefix
3494 @cindex process/prefix convention
3495
3496 Many functions, among them functions for moving, decoding and saving
3497 articles, use what is known as the @dfn{Process/Prefix convention}.
3498
3499 This is a method for figuring out what articles that the user wants the
3500 command to be performed on.
3501
3502 It goes like this:
3503
3504 If the numeric prefix is N, perform the operation on the next N
3505 articles, starting with the current one.  If the numeric prefix is
3506 negative, perform the operation on the previous N articles, starting
3507 with the current one.
3508
3509 If there is no numeric prefix, but some articles are marked with the
3510 process mark, perform the operation on the articles that are marked with
3511 the process mark.
3512
3513 If there is neither a numeric prefix nor any articles marked with the
3514 process mark, just perform the operation on the current article.
3515
3516 Quite simple, really, but it needs to be made clear so that surprises
3517 are avoided.
3518
3519 @node Saving Articles
3520 @section Saving Articles
3521 @cindex saving articles
3522
3523 Gnus can save articles in a number of ways.  Below is the documentation
3524 for saving articles in a fairly straight-forward fashion (ie. little
3525 processing of the article is done before it is saved).  For a different
3526 approach (uudecoding, unsharing) you should use @code{gnus-uu}
3527 (@pxref{Decoding Articles}).
3528
3529 @vindex gnus-save-all-headers
3530 If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete
3531 unwanted headers before saving the article.
3532
3533 @table @kbd
3534 @item V o o
3535 @itemx o
3536 @kindex V o o (Summary)
3537 @kindex o (Summary)
3538 @findex gnus-summary-save-article
3539 Save the current article using the default article saver
3540 (@code{gnus-summary-save-article}). 
3541 @item V o m
3542 @kindex V o m (Summary)
3543 @findex gnus-summary-save-article-mail
3544 Save the current article in mail format
3545 (@code{gnus-summary-save-article-mail}). 
3546 @item V o r
3547 @kindex V o r (Summary)
3548 @findex gnus-summary-save-article-mail
3549 Save the current article in rmail format
3550 (@code{gnus-summary-save-article-rmail}). 
3551 @item V o f
3552 @kindex V o f (Summary)
3553 @findex gnus-summary-save-article-file
3554 Save the current article in plain file format
3555 (@code{gnus-summary-save-article-file}). 
3556 @item V o h
3557 @kindex V o h (Summary)
3558 @findex gnus-summary-save-article-folder
3559 Save the current article in mh folder format
3560 (@code{gnus-summary-save-article-folder}). 
3561 @item V o p
3562 @kindex V o p (Summary)
3563 @findex gnus-summary-pipe-output
3564 Save the current article in a pipe.  Uhm, like, what I mean is - Pipe
3565 the current article to a process (@code{gnus-summary-pipe-output}).
3566 @end table
3567
3568 All these commands use the process/prefix convention
3569 (@pxref{Process/Prefix}).
3570
3571 @vindex gnus-default-article-saver
3572 You can customize the @code{gnus-default-article-saver} variable to make
3573 Gnus do what you want it to.  You can use any of the four ready-made
3574 functions below, or you can create your own.
3575
3576 @table @code
3577 @item gnus-summary-save-in-rmail
3578 @vindex gnus-summary-save-in-rmail
3579 This is the default format, @dfn{babyl}.  Uses the function in the
3580 @code{gnus-rmail-save-name} variable to get a file name to save the
3581 article in.  The default is @code{gnus-plain-save-name}.
3582 @item gnus-summary-save-in-mail
3583 @vindex gnus-summary-save-in-mail
3584 Save in a Unix mail (mbox) file.  Uses the function in the
3585 @code{gnus-mail-save-name} variable to get a file name to save the
3586 article in.  The default is @code{gnus-plain-save-name}.
3587 @item gnus-summary-save-in-file
3588 @vindex gnus-summary-save-in-file
3589 Append the article straight to an ordinary file.  Uses the function in
3590 the @code{gnus-file-save-name} variable to get a file name to save the
3591 article in.  The default is @code{gnus-numeric-save-name}.
3592 @item gnus-summary-save-in-folder
3593 @vindex gnus-summary-save-in-folder
3594 Save the article to an MH folder using @code{rcvstore} from the MH
3595 library.
3596 @end table
3597
3598 All of these functions, except for the last one, will save the article
3599 in the @code{gnus-article-save-directory}, which is initialized from the
3600 @samp{SAVEDIR} environment variable.
3601
3602 As you can see above, the functions use different functions to find a
3603 suitable name of a file to save the article in.  Below is a list of
3604 available functions that generate names:
3605
3606 @table @code
3607 @item gnus-Numeric-save-name
3608 @findex gnus-Numeric-save-name
3609 Generates file names that look like @samp{~/News/Alt.andrea-dworkin/45}.
3610 @item gnus-numeric-save-name
3611 @findex gnus-numeric-save-name
3612 Generates file names that look like @samp{~/News/alt.andrea-dworkin/45}.
3613 @item gnus-Plain-save-name
3614 @findex gnus-Plain-save-name
3615 Generates file names that look like @samp{~/News/Alt.andrea-dworkin}.
3616 @item gnus-plain-save-name
3617 @findex gnus-plain-save-name
3618 Generates file names that look like @samp{~/News/alt.andrea-dworkin}.
3619 @end table
3620
3621 @vindex gnus-use-long-file-name
3622 Finally, you have the @code{gnus-use-long-file-name} variable.  If it is
3623 @code{nil}, all the preceding functions will replace all periods
3624 (@samp{.}) in the group names with slashes (@samp{/}) - which means that
3625 the functions will generate hierarchies of directories instead of having
3626 all the files in the toplevel directory
3627 (@samp{~/News/alt/andrea-dworkin} instead of
3628 @samp{~/News/alt.andrea-dworkin}.)
3629
3630 This function also affects kill and score file names.  If this variable
3631 is a list, and the list contains the element @code{not-score}, long file
3632 names will not be used for score files, if it contains the element
3633 @code{not-save}, long file names will not be used for saving, and if it
3634 contains the element @code{not-kill}, long file names will not be used
3635 for kill files.
3636
3637 @node Decoding Articles
3638 @section Decoding Articles
3639 @cindex decoding articles
3640
3641 Sometime users post articles (or series of articles) that have been
3642 encoded in some way or other.  Gnus can decode them for you.
3643
3644 @menu 
3645 * Uuencoded Articles::    Uudecode articles.
3646 * Shared Articles::       Unshar articles.
3647 * PostScript Files::      Split PoscScript.
3648 @end menu
3649
3650 All these functions use the process/prefix convention
3651 (@pxref{Process/Prefix}) for finding out what articles to work on, with
3652 the extension that a "single article" means "a single series".  Gnus can
3653 find out by itself what articles belong to a series, decode all the
3654 articles and unpack/view/save the resulting file(s).
3655
3656 Gnus guesses what articles are in the series according to the following
3657 simplish rule: The subjects must be (nearly) identical, except for the
3658 last two numbers of the line.  (Spaces are largely ignored, however.)
3659
3660 For example: If you choose a subject called @samp{cat.gif (2/3)}, Gnus
3661 will find all the articles that match the regexp @samp{^cat.gif
3662 ([0-9]+/[0-9]+).*$}.  
3663
3664 Subjects that are nonstandard, like @samp{cat.gif (2/3) Part 6 of a
3665 series}, will not be properly recognized by any of the automatic viewing
3666 commands, and you have to mark the articles manually with @key{#}.
3667
3668 @menu 
3669 * Decoding Variables::     Variables for a happy decoding.
3670 * Viewing Files::          You want to look at the result of the decoding?
3671 @end menu
3672
3673 @node Uuencoded Articles
3674 @subsection Uuencoded Articles
3675 @cindex uudecode
3676 @cindex uuencoded articles
3677
3678 @table @kbd
3679 @item X u
3680 @kindex X u (Summary)
3681 @findex gnus-uu-decode-uu
3682 Uudecodes the current series (@code{gnus-uu-decode-uu}).
3683 @item X U
3684 @kindex X U (Summary)
3685 @findex gnus-uu-decode-uu-and-save
3686 Uudecodes and saves the current series
3687 (@code{gnus-uu-decode-uu-and-save}).
3688 @item X v u
3689 @kindex X v u (Summary)
3690 @findex gnus-uu-decode-uu-view
3691 Uudecodes and views the current series (@code{gnus-uu-decode-uu-view}).
3692 @item X v U
3693 @kindex X v U (Summary)
3694 @findex gnus-uu-decode-uu-and-save-view
3695 Uudecodes, views and saves the current series
3696 (@code{gnus-uu-decode-uu-and-save-view}). 
3697 @end table
3698
3699 Remember that these all react to the presence of articles marked with
3700 the process mark.  If, for instance, you'd like to uncode and save an
3701 entire newsgroup, you'd typically do @kbd{M p a}
3702 (@code{gnus-uu-mark-all}) and then @kbd{X U}
3703 (@code{gnus-uu-decode-uu-and-save}).
3704
3705 All this is very much different from how @code{gnus-uu} worked with
3706 @sc{gnus 4.1}, where you had explicit keystrokes for everything under
3707 the sun.  This version of @code{gnus-uu} generally assumes that you mark
3708 articles in some way (@pxref{Setting Process Marks}) and then press
3709 @kbd{X u}.
3710
3711 Note: When trying to decode articles that have names matching
3712 @code{gnus-uu-notify-files}, which is hard-coded to
3713 @samp{[Cc][Ii][Nn][Dd][Yy][0-9]+.\\(gif\\|jpg\\)}, @code{gnus-uu} will
3714 automatically post an article on @samp{comp.unix.wizards} saying that
3715 you have just viewed the file in question.  This feature can't be turned
3716 off.
3717
3718 @node Shared Articles
3719 @subsection Shared Articles
3720 @cindex unshar
3721 @cindex shared articles
3722
3723 @table @kbd
3724 @item X s
3725 @kindex X s (Summary)
3726 @findex gnus-uu-decode-unshar
3727 Unshars the current series (@code{gnus-uu-decode-unshar}).
3728 @item X S
3729 @kindex X S (Summary)
3730 @findex gnus-uu-decode-unshar-and-save
3731 Unshars and saves the current series (@code{gnus-uu-decode-unshar-and-save}).
3732 @item X v s
3733 @kindex X v s (Summary)
3734 @findex gnus-uu-decode-unshar-view
3735 Unshars and views the current series (@code{gnus-uu-decode-unshar-view}).
3736 @item X v S
3737 @kindex X v S (Summary)
3738 @findex gnus-uu-decode-unshar-and-save-view
3739 Unshars, views and saves the current series
3740 (@code{gnus-uu-decode-unshar-and-save-view}). 
3741 @end table
3742
3743 @node PostScript Files
3744 @subsection PostScript Files
3745 @cindex PostScript
3746
3747 @table @kbd
3748 @item X p
3749 @kindex X p (Summary)
3750 @findex gnus-uu-decode-postscript
3751 Unpack the current PostScript series (@code{gnus-uu-decode-postscript}).
3752 @item X P
3753 @kindex X P (Summary)
3754 @findex gnus-uu-decode-postscript-and-save
3755 Unpack and save the current PostScript series
3756 (@code{gnus-uu-decode-postscript-and-save}).
3757 @item X v p
3758 @kindex X v p (Summary)
3759 @findex gnus-uu-decode-postscript-view
3760 View the current PostScript series
3761 (@code{gnus-uu-decode-postscript-view}).
3762 @item X v P
3763 @kindex X v P (Summary)
3764 @findex gnus-uu-decode-postscript-and-save-view
3765 View and save the current PostScript series
3766 (@code{gnus-uu-decode-postscript-and-save-view}). 
3767 @end table
3768
3769 @node Decoding Variables
3770 @subsection Decoding Variables
3771
3772 Adjective, not verb.
3773
3774 @menu 
3775 * Rule Variables::          Variables that say how a file is to be viewed.
3776 * Other Decode Variables::  Other decode variables.
3777 * Uuencoding & Posting::    Variables for customizing uuencoding.
3778 @end menu
3779
3780 @node Rule Variables
3781 @subsubsection Rule Variables
3782 @cindex rule variables
3783
3784 Gnus uses @dfn{rule variables} to decide how to view a file.  All these
3785 variables are on the form
3786   
3787 @lisp
3788       (list '(regexp1 command2)
3789             '(regexp2 command2)
3790             ...)
3791 @end lisp
3792
3793 @table @code
3794 @item gnus-uu-user-view-rules
3795 @vindex gnus-uu-user-view-rules
3796 This variable is consulted first when viewing files.  If you wish to use,
3797 for instance, @code{sox} to convert an @samp{.au} sound file, you could
3798 say something like:
3799 @lisp
3800        (setq gnus-uu-user-view-rules
3801          (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
3802 @end lisp
3803 @item gnus-uu-user-view-rules-end
3804 @vindex gnus-uu-user-view-rules-end
3805 This variable is consulted if Gnus couldn't make any matches from the
3806 user and default view rules.
3807 @item gnus-uu-user-archive-rules
3808 @vindex gnus-uu-user-archive-rules
3809 This variable can be used to say what commands should be used to unpack
3810 archives.
3811 @end table
3812
3813 @node Other Decode Variables
3814 @subsubsection Other Decode Variables
3815
3816 @table @code
3817 @item gnus-uu-ignore-files-by-name
3818 @vindex gnus-uu-ignore-files-by-name
3819 Files with name matching this regular expression won't be viewed.
3820
3821 @item gnus-uu-ignore-files-by-type
3822 @vindex gnus-uu-ignore-files-by-type
3823 Files with a @sc{mime} type matching this variable won't be viewed.
3824 Note that Gnus tries to guess what type the file is based on the name.
3825 @code{gnus-uu} is not a @sc{mime} package (yet), so this is slightly
3826 kludgy.
3827
3828 @item gnus-uu-tmp-dir
3829 @vindex gnus-uu-tmp-dir
3830 Where @code{gnus-uu} does its work.
3831
3832 @item gnus-uu-do-not-unpack-archives
3833 @vindex gnus-uu-do-not-unpack-archives
3834 Non-@code{nil} means that @code{gnus-uu} won't peek inside archives
3835 looking for files to dispay.
3836
3837 @item gnus-uu-view-and-save
3838 @vindex gnus-uu-view-and-save
3839 Non-@code{nil} means that the user will always be asked to save a file
3840 after viewing it.
3841
3842 @item gnus-uu-ignore-default-view-rules
3843 @vindex gnus-uu-ignore-default-view-rules
3844 Non-@code{nil} means that @code{gnus-uu} will ignore the default viewing
3845 rules.
3846
3847 @item gnus-uu-ignore-default-archive-rules
3848 @vindex gnus-uu-ignore-default-archive-rules
3849 Non-@code{nil} means that @code{gnus-uu} will ignore the default archive
3850 unpacking commands.
3851
3852 @item gnus-uu-kill-carriage-return
3853 @vindex gnus-uu-kill-carriage-return
3854 Non-@code{nil} means that @code{gnus-uu} will strip all carriage returns
3855 from articles.
3856
3857 @item gnus-uu-unmark-articles-not-decoded
3858 @vindex gnus-uu-unmark-articles-not-decoded
3859 Non-@code{nil} means that @code{gnus-uu} will mark articles that were
3860 unsuccessfully decoded as unread.
3861
3862 @item gnus-uu-correct-stripped-uucode
3863 @vindex gnus-uu-correct-stripped-uucode
3864 Non-@code{nil} means that @code{gnus-uu} will @emph{try} to fix
3865 uuencoded files that have had trailing spaces deleted.
3866
3867 @item gnus-uu-view-with-metamail
3868 @vindex gnus-uu-view-with-metamail
3869 Non-@code{nil} means that @code{gnus-uu} will ignore the viewing
3870 commands defined by the rule variables and just fudge a @sc{mime}
3871 content type based on the file name.  The result will be fed to
3872 @code{metamail} for viewing.
3873
3874 @item gnus-uu-save-in-digest
3875 @vindex gnus-uu-save-in-digest
3876 Non-@code{nil} means that @code{gnus-uu}, when asked to save without
3877 decoding, will save in digests.  If this variable is @code{nil},
3878 @code{gnus-uu} will just save everything in a file without any
3879 embellishments.  The digesting almost conforms to RFC1153 - no easy way
3880 to specify any meaningful volume and issue numbers were found, so I
3881 simply dropped them.
3882
3883 @end table
3884
3885 @node Uuencoding & Posting
3886 @subsubsection Uuencoding & Posting
3887
3888 @table @code
3889
3890 @item gnus-uu-post-include-before-composing
3891 @vindex gnus-uu-post-include-before-composing
3892 Non-@code{nil} means that @code{gnus-uu} will ask for a file to encode
3893 before you compose the article.  If this variable is @code{t}, you can
3894 either include an encoded file with @key{C-c C-i} or have one included
3895 for you when you post the article.
3896
3897 @item gnus-uu-post-length
3898 @vindex gnus-uu-post-length
3899 Maximum length of an article.  The encoded file will be split into how
3900 many articles it takes to post the entire file.
3901
3902 @item gnus-uu-post-threaded
3903 @vindex gnus-uu-post-threaded
3904 Non-@code{nil} means that @code{gnus-uu} will post the encoded file in a
3905 thread.  This may not be smart, as no other decoder I have seen are able
3906 to follow threads when collecting uuencoded articles.  (Well, I have
3907 seen one package that does that - @code{gnus-uu}, but somehow, I don't
3908 think that counts...) Default is @code{nil}.
3909
3910 @item gnus-uu-post-separate-description
3911 @vindex gnus-uu-post-separate-description
3912 Non-@code{nil} means that the description will be posted in a separate
3913 article.  The first article will typically be numbered (0/x).  If this
3914 variable is @code{nil}, the description the user enters will be included
3915 at the beginning of the first article, which will be numbered (1/x).
3916 Default is @code{t}.
3917
3918 @end table
3919
3920 @node Viewing Files
3921 @subsection Viewing Files
3922 @cindex viewing files
3923 @cindex pseudo-articles
3924
3925 After decoding, if the file is some sort of archive, Gnus will attempt
3926 to unpack the archive and see if any of the files in the archive can be
3927 viewed.  For instance, if you have a gzipped tar file @file{pics.tar.gz}
3928 containing the files @file{pic1.jpg} and @file{pic2.gif}, Gnus will
3929 uncompress and detar the main file, and then view the two pictures.
3930 This unpacking process is recursive, so if the archive contains archives
3931 of archives, it'll all be unpacked.
3932
3933 Finally, Gnus will normally insert a @dfn{pseudo-article} for each
3934 extracted file into the summary buffer.  If you go to these "articles",
3935 you will be prompted for a command to run (usually Gnus will make a
3936 suggestion), and then the command will be run.
3937
3938 @vindex gnus-view-pseudo-asynchronously
3939 If @code{gnus-view-pseudo-asynchronously} is @code{nil}, Emacs will wait
3940 until the viewing is done before proceeding.
3941
3942 @vindex gnus-view-pseudos
3943 If @code{gnus-view-pseudos} is @code{automatic}, Gnus will not insert
3944 the pseudo-articles into the summary buffer, but view them
3945 immediately.  If this variable is @code{not-confirm}, the user won't even
3946 be asked for a confirmation before viewing is done.
3947
3948
3949 @node Various Article Stuff 
3950 @section Various Article Stuff 
3951
3952 @table @kbd
3953 @item A w
3954 @kindex A w (Summary)
3955 @findex gnus-summary-stop-page-breaking
3956 Remove page breaks from the current article
3957 (@code{gnus-summary-stop-page-breaking}).
3958 @item A s 
3959 @kindex A s (Summary)
3960 @findex gnus-summary-isearch-article
3961 Perform an isearch in the article buffer
3962 (@code{gnus-summary-isearch-article}). 
3963 @item A c
3964 @kindex A c (Summary)
3965 @findex gnus-summary-caesar-message
3966 Do a Caesar rotate (rot13) on the article buffer
3967 (@code{gnus-summary-caesar-message}). 
3968 @item A g
3969 @kindex A g (Summary)
3970 @findex gnus-summary-show-article
3971 Select the current article (@code{gnus-summary-show-article}).
3972 @item A t
3973 @kindex A t (Summary)
3974 @findex gnus-summary-toggle-header
3975 Toggle whether to display all headers in the article buffer
3976 (@code{gnus-summary-toggle-header}). 
3977 @item A m
3978 @kindex A m (Summary)
3979 @findex gnus-summary-toggle-mime
3980 Toggle whether to run the article through @sc{mime} before displaying
3981 (@code{gnus-summary-toggle-mime}).
3982 @end table
3983
3984 There's a battery of commands for washing the article buffer:
3985
3986 @table @kbd
3987 @item A h h
3988 @kindex A h h (Summary)
3989 @findex gnus-article-hide-headers
3990 Hide headers (@code{gnus-article-hide-headers}).
3991 @item A h s
3992 @kindex A h s (Summary)
3993 @findex gnus-article-hide-signature
3994 Hide signature (@code{gnus-article-hide-signature}).
3995 @item A h c
3996 @kindex A h c (Summary)
3997 @findex gnus-article-hide-citation
3998 Hide citation (@code{gnus-article-hide-citation}).
3999 @item A h o
4000 @kindex A h o (Summary)
4001 @findex gnus-article-treat-overstrike
4002 Treat overstrike (@code{gnus-article-treat-overstrike}).
4003 @item A h w
4004 @kindex A h w (Summary)
4005 @findex gnus-article-word-wrap
4006 Do word wrap (@code{gnus-article-word-wrap}).
4007 @item A h d
4008 @kindex A h d (Summary)
4009 @findex gnus-article-remove-cr
4010 Remove CR (@code{gnus-article-remove-cr}).
4011 @item A h q
4012 @kindex A h q (Summary)
4013 @findex gnus-article-de-quoted-unreadable
4014 Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}).
4015 @item A h f
4016 @kindex A h f (Summary)
4017 @findex gnus-article-display-x-face
4018 @findex gnus-article-x-face-command
4019 Look for and display any X-Face headers
4020 (@code{gnus-article-display-x-face}).  The command executed by this
4021 function is given by the @code{gnus-article-x-face-command} variable.
4022 If this variable is a string, this string will be executed in a
4023 sub-shell.  If it is a function, this function will be called with the
4024 face as the argument.
4025 @end table
4026
4027 @node Summary Sorting
4028 @section Summary Sorting
4029 @cindex summary sorting
4030
4031 You can have the summary buffer sorted in various ways, even though I
4032 can't really see why you'd want that.
4033
4034 @table @kbd
4035 @item V s n
4036 @kindex V s n (Summary)
4037 @findex gnus-summary-sort-by-number
4038 Sort by article number (@code{gnus-summary-sort-by-number}).
4039 @item V s a
4040 @kindex V s a (Summary)
4041 @findex gnus-summary-sort-by-author
4042 Sort by author (@code{gnus-summary-sort-by-author}).
4043 @item V s s
4044 @kindex V s s (Summary)
4045 @findex gnus-summary-sort-by-subject
4046 Sort by subject (@code{gnus-summary-sort-by-subject}).
4047 @item V s d
4048 @kindex V s d (Summary)
4049 @findex gnus-summary-sort-by-date
4050 Sort by date (@code{gnus-summary-sort-by-date}).
4051 @end table
4052
4053 These functions will work both when you use threading and when you don't
4054 use threading.  In the latter case, all summary lines will be sorted,
4055 line by line.  In the former case, sorting will be done on a
4056 root-by-root basis, which might not be what you were looking for.  To
4057 toggle whether to use threading, type @kbd{T T} (@pxref{Thread
4058 Commands}).
4059
4060 @node Finding the Parent
4061 @section Finding the Parent
4062 @cindex parent articles
4063 @cindex refering articles
4064
4065 @findex gnus-summary-refer-parent-article
4066 @kindex ^ (Summary)
4067 If you'd like to read the parent of the current article, and it is not
4068 displayed in the article buffer, you might still be able to.  That is,
4069 if the current group is fetched by @sc{nntp}, the parent hasn't expired
4070 and the @code{References} in the current article are not mangled, you
4071 can just press @kbd{^} or @kbd{A r}
4072 (@code{gnus-summary-refer-parent-article}).  If everything goes well,
4073 you'll get the parent.  If the parent is already displayed in the
4074 summary buffer, point will just move to this article.
4075
4076 @findex gnus-summary-refer-article
4077 @kindex M-^ (Summary)
4078 You can also ask the @sc{nntp} server for an arbitrary article, no
4079 matter what group it belongs to.  @kbd{V r}
4080 (@code{gnus-summary-refer-article}) will ask you for a
4081 @code{Message-Id}, which is one of those long thingies that look
4082 something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}.  You have to get
4083 it all exactly right.  No fuzzy searches, I'm afraid.
4084
4085 @vindex gnus-refer-article-method
4086 If the group you are reading is located on a backend that does not
4087 support fetching by @code{Message-Id} very well (like @code{nnspool}),
4088 you can set @code{gnus-refer-article-method} to an @sc{nntp} method.  It
4089 would, perhaps, be best if the @sc{nntp} server you consult is the same
4090 as the one that keeps the spool you are reading from updated, but that's
4091 not really necessary.
4092
4093 @node Score Files
4094 @section Score Files
4095 @cindex score files
4096
4097 Other people use @dfn{kill files}, but we here at (ding) Gnus Towers
4098 like scoring better than killing, so we'd rather switch than fight.  They
4099 do something completely different as well, so sit up straight and pay
4100 attention!
4101
4102 @vindex gnus-summary-mark-below
4103 All articles have a default score (@code{gnus-summary-default-score}).
4104 This score may be raised or lowered either interactively or by score
4105 files.  Articles that have a score lower than
4106 @code{gnus-summary-mark-below} are marked as read.
4107
4108 Gnus will read any @dfn{score files} that apply to the current group
4109 before generating the summary buffer.
4110
4111 There are several commands in the summary buffer that inserts score
4112 entries based on the current article.  You can, for instance, ask Gnus
4113 to lower or increase the score of all articles with a certain subject.
4114
4115 There are two sorts of scoring entries: Permanent and temporary.
4116 Temporary score entries are self-expiring entries.  Any entries that are
4117 temporary and have not been used for, say, a week, will be removed
4118 silently to help keep the sizes of the score files down.
4119
4120 @menu 
4121 * Summary Score Commands::   Adding score commands to the score file.
4122 * Score Variables::          Customize your scoring.  (My, what terminology).
4123 * Score File Format::        What a score file may contain.
4124 * Score File Editing::       You can edit score files by hand as well.
4125 * Scoring Tips::             How to score effectively.
4126 * Reverse Scoring::          That problem child of old is not problem.
4127 * Global Score Files::       Earth-spanning, ear-splitting score files.
4128 * Kill Files::               They are still here, but they can be ignored.
4129 @end menu
4130
4131 @node Summary Score Commands
4132 @subsection Summary Score Commands
4133 @cindex score commands
4134
4135 The score commands that alter score entries do not actually modify real
4136 score files.  That would be too inefficient.  Gnus maintains a cache of
4137 previously loaded score files, one of which is considered the
4138 @dfn{current score file alist}.  The score commands simply insert
4139 entries into this list, and upon group exit, this list is saved.
4140
4141 The current score file is by default the group's local score file, even
4142 if no such score file actually exists.  To insert score commands into
4143 some other score file (eg. @file{all.SCORE}), you must first make this
4144 score file the current one.
4145
4146 General score commands that don't actually change the score file:
4147
4148 @table @kbd
4149 @item V S s
4150 @kindex V S s (Summary)
4151 @findex gnus-summary-set-score
4152 Set the score of the current article (@code{gnus-summary-set-score}).  
4153 @item V S c
4154 @kindex V S c (Summary)
4155 @findex gnus-score-change-score-file
4156 Make a different score file the current
4157 (@code{gnus-score-change-score-file}). 
4158 @item V S e
4159 @kindex V S e (Summary)
4160 @findex gnus-score-edit-alist
4161 Edit the current score file (@code{gnus-score-edit-alist}).  You will be
4162 popped into a @code{gnus-score-mode} buffer (@pxref{Score File
4163 Editing}).
4164 @item V S f
4165 @kindex V S f (Summary)
4166 @findex gnus-score-edit-file
4167 Edit a score file and make this score file the current one
4168 (@code{gnus-score-edit-file}).
4169 @item I C-i
4170 @kindex I C-i (Summary)
4171 @findex gnus-summary-raise-score
4172 Increase the score of the current article
4173 (@code{gnus-summary-raise-score}).
4174 @item L C-l
4175 @kindex L C-l (Summary)
4176 @findex gnus-summary-lower-score
4177 Lower the score of the current article
4178 (@code{gnus-summary-lower-score}). 
4179 @end table
4180
4181 The rest of these commands modify the local score file.
4182
4183 @table @kbd
4184 @item V S m
4185 @kindex V S m (Summary)
4186 @findex gnus-score-set-mark-below
4187 Prompt for a score, and mark all articles with a score below this as
4188 read (@code{gnus-score-set-mark-below}).
4189 @item V S E
4190 @kindex V S E (Summary)
4191 @findex gnus-score-set-expunge-below
4192 Expunge all articles with a score below the default score (or the
4193 numeric prefix) (@code{gnus-score-set-expunge-below}).
4194 @end table
4195
4196 Commands for increasing the score:
4197
4198 @table @kbd
4199 @item I s t
4200 @kindex I s t (Summary)
4201 @findex gnus-summary-temporarily-raise-by-subject
4202 Increase the current subject temporarily
4203 (@code{gnus-summary-temporarily-raise-by-subject}).
4204 @item I s p
4205 @kindex I s p (Summary)
4206 @findex gnus-summary-raise-by-subject
4207 Increase the current subject permanently
4208 (@code{gnus-summary-raise-by-subject}).
4209 @item I a t
4210 @kindex I a t (Summary)
4211 @findex gnus-summary-temporarily-raise-by-author
4212 Increase the current author temporarily
4213 (@code{gnus-summary-temporarily-raise-by-author}).
4214 @item I a p
4215 @kindex I a p (Summary)
4216 @findex gnus-summary-raise-by-author
4217 Increase the current author permanently
4218 (@code{gnus-summary-raise-by-author}).
4219 @item I b t
4220 @kindex I b t (Summary)
4221 @findex gnus-summary-temporarily-raise-by-body
4222 Increase based on a match on the body of an article temporarily
4223 (@code{gnus-summary-temporarily-raise-by-body}).  This is a very slow
4224 operation. 
4225 @item I b p
4226 @kindex I b p (Summary)
4227 @findex gnus-summary-raise-by-body
4228 Increase based on a match on the body of an article
4229 (@code{gnus-summary-raise-by-body}). This is a very slow operation
4230 @item I i t
4231 @kindex I i t (Summary)
4232 @findex gnus-summary-temporarily-raise-by-id
4233 Increase the current message-id temporarily
4234 (@code{gnus-summary-temporarily-raise-by-id}).
4235 @item I i p
4236 @kindex I i p (Summary)
4237 @findex gnus-summary-raise-by-id
4238 Increase the current message-id permanently
4239 (@code{gnus-summary-raise-by-id}).
4240 @item I t t
4241 @kindex I t t (Summary)
4242 @findex gnus-summary-temporarily-raise-by-thread
4243 Increase the current thread temporarily
4244 (@code{gnus-summary-temporarily-raise-by-thread}).
4245 @item I t p
4246 @kindex I t p (Summary)
4247 @findex gnus-summary-raise-by-thread
4248 Increase the current thread permanently
4249 (@code{gnus-summary-raise-by-thread}).
4250 @item I x t
4251 @kindex I x t (Summary)
4252 @findex gnus-summary-temporarily-raise-by-xref
4253 Increase the current xref temporarily
4254 (@code{gnus-summary-temporarily-raise-by-xref}).
4255 @item I x p
4256 @kindex I x p (Summary)
4257 @findex gnus-summary-raise-by-xref
4258 Increase the current xref permanently
4259 (@code{gnus-summary-raise-by-xref}).
4260 @item I f t
4261 @kindex I f t (Summary)
4262 @findex gnus-summary-temporarily-raise-followups-to-author
4263 Increase followups to the current author temporarily
4264 (@code{gnus-summary-temporarily-raise-followups-to-author}).
4265 @item I f p
4266 @kindex I f p (Summary)
4267 @findex gnus-summary-raise-followups-to-author
4268 Increase followups to the current author permanently
4269 (@code{gnus-summary-raise-followups-to-author}).
4270 @end table
4271
4272 Commands for lowering the score:
4273
4274 @table @kbd
4275 @item L s t
4276 @kindex L s t (Summary)
4277 @findex gnus-summary-temporarily-lower-by-subject
4278 Lower the current subject temporarily
4279 (@code{gnus-summary-temporarily-lower-by-subject}).
4280 @item L s p
4281 @kindex L s p (Summary)
4282 @findex gnus-summary-lower-by-subject
4283 Lower the current subject permanently
4284 (@code{gnus-summary-lower-by-subject}).
4285 @item L a t
4286 @kindex L a t (Summary)
4287 @findex gnus-summary-temporarily-lower-by-author
4288 Lower the current author temporarily
4289 (@code{gnus-summary-temporarily-lower-by-author}).
4290 @item L a p
4291 @kindex L a p (Summary)
4292 @findex gnus-summary-lower-by-author
4293 Lower the current author permanently
4294 (@code{gnus-summary-lower-by-author}).
4295 @item L b t
4296 @kindex L b t (Summary)
4297 @findex gnus-summary-temporarily-lower-by-body
4298 Lower based on a match on the article body
4299 (@code{gnus-summary-temporarily-lower-by-body}).  This is a very slow
4300 operation. 
4301 @item L b p
4302 @kindex L b p (Summary)
4303 @findex gnus-summary-lower-by-body
4304 Lower based on a match on the article body
4305 (@code{gnus-summary-lower-by-body}).  This is a very slow operation.
4306 @item L i t
4307 @kindex L i t (Summary)
4308 @findex gnus-summary-temporarily-lower-by-id
4309 Lower the current message-id temporarily
4310 (@code{gnus-summary-temporarily-lower-by-id}).
4311 @item L i p
4312 @kindex L i p (Summary)
4313 @findex gnus-summary-lower-by-id
4314 Lower the current message-id permanently
4315 (@code{gnus-summary-lower-by-id}).
4316 @item L t t
4317 @kindex L t t (Summary)
4318 @findex gnus-summary-temporarily-lower-by-thread
4319 Lower the current thread temporarily
4320 (@code{gnus-summary-temporarily-lower-by-thread}).
4321 @item L t p
4322 @kindex L t p (Summary)
4323 @findex gnus-summary-lower-by-thread
4324 Lower the current thread permanently
4325 (@code{gnus-summary-lower-by-thread}).
4326 @item L x t
4327 @kindex L x t (Summary)
4328 @findex gnus-summary-temporarily-lower-by-xref
4329 Lower the current xref temporarily
4330 (@code{gnus-summary-temporarily-lower-by-xref}).
4331 @item L x p
4332 @kindex L x p (Summary)
4333 @findex gnus-summary-lower-by-xref
4334 Lower the current xref permanently
4335 (@code{gnus-summary-lower-by-xref}).
4336 @item L f t
4337 @kindex L f t (Summary)
4338 @findex gnus-summary-temporarily-lower-followups-to-author
4339 Lower followups to the current author temporarily
4340 (@code{gnus-summary-temporarily-lower-followups-to-author}).
4341 @item L f p
4342 @kindex L f p (Summary)
4343 @findex gnus-summary-lower-followups-to-author
4344 Lower followups to the current author permanently
4345 (@code{gnus-summary-lower-followups-to-author}).
4346 @end table
4347
4348 @node Score Variables
4349 @subsection Score Variables
4350 @cindex score variables
4351
4352 @table @code
4353 @item gnus-kill-killed
4354 @vindex gnus-kill-killed
4355 If this variable is @code{nil}, Gnus will never apply score files to
4356 articles that have already been through the kill process.  While this
4357 may save you lots of time, it also means that if you apply a kill file
4358 to a group, and then change the kill file and want to run it over you
4359 group again to kill more articles, it won't work.  You have to set this
4360 variable to @code{t} to do that.
4361 @item gnus-kill-files-directory
4362 @vindex gnus-kill-files-directory
4363 All kill and score files will be stored in this directory, which is
4364 initialized from the @samp{SAVEDIR} environment variable by default.
4365 @item gnus-score-file-suffix
4366 @vindex gnus-score-file-suffix
4367 Suffix to add to the group name to arrive at the score file name
4368 (@samp{SCORE} by default.)
4369 @item gnus-score-interactive-default-score
4370 @vindex gnus-score-interactive-default-score
4371 Score used by all the interactive raise/lower commands to raise/lower
4372 score with.  Default is 1000, which may seem excessive, but this is to
4373 ensure that the adaptive scoring scheme gets enough room to play with.
4374 We don't want the small changes from the adaptive scoring to overwrite
4375 manually entered data.
4376 @item gnus-summary-default-score
4377 @vindex gnus-summary-default-score
4378 Default score of an article, which is 0 by default.
4379 @item gnus-score-over-mark
4380 @vindex gnus-score-over-mark
4381 Mark (in the third column) used for articles with a score over the
4382 default.  Default is @samp{+}.
4383 @item gnus-score-below-mark
4384 @vindex gnus-score-below-mark
4385 Mark (in the third column) used for articles with a score below the
4386 default.  Default is @samp{-}.
4387 @item gnus-score-find-score-files-function
4388 @vindex gnus-score-find-score-files-function
4389 Function used to find score files for the current group.  This function
4390 is called with the name of the group as the argument. 
4391
4392 Predefined functions available are:
4393 @table @code
4394 @item gnus-score-find-single
4395 @findex gnus-score-find-single
4396 Only apply the group's own score file.
4397 @item gnus-score-find-bnews
4398 @findex gnus-score-find-bnews
4399 Apply all score files that match, using bnews syntax.  For instance, if
4400 the current group is @samp{gnu.emacs.gnus}, @samp{all.emacs.all.SCORE},
4401 @samp{not.alt.all.SCORE} and @samp{gnu.all.SCORE} would all apply.  In
4402 short, the instances of @samp{all} in the score file names are
4403 translated into @samp{.*}, and then a regexp match is done.
4404 @item gnus-score-find-hierarchical
4405 @findex gnus-score-find-hierarchical
4406 Apply all score files from all the parent groups.
4407 @end table
4408 This variable can also be a list of functions.  In that case, all these
4409 functions will be called, and all the returned lists of score files will
4410 be applied.  These functions can also return lists of score alists
4411 directly.  In that case, the functions that return these non-file score
4412 alists should probably be placed before the "real" score file functions,
4413 to ensure that the last score file returned is the local score file.
4414 Phu. 
4415 @item gnus-kill-expiry-days
4416 @vindex gnus-kill-expiry-days
4417 This variable says how many days should pass before an unused score file
4418 entry is expired.  The default is 7.
4419 @end table
4420
4421 @node Score File Format
4422 @subsection Score File Format
4423 @cindex score file format
4424
4425 A score file is an @code{emacs-lisp} file that normally contains just a
4426 single form.  Casual users are not expected to edit these files;
4427 everything can be changed from the summary buffer.
4428
4429 Anyway, if you'd like to dig into it yourself, here's an example:
4430
4431 @lisp
4432 (("from"
4433   ("Lars Ingebrigtsen" -10000)
4434   ("Per Abrahamsen")
4435   ("larsi\\|lmi" -50000 nil R))
4436  ("subject"
4437   ("Ding is Badd" nil 728373))
4438  ("xref"
4439   ("alt.politics" -1000 728372 s))
4440  ("lines"
4441   (2 -100 nil <))
4442  (mark 0)
4443  (expunge -1000)
4444  (mark-and-expunge -10)
4445  (read-only nil)
4446  (orphan -10)
4447  (files "/hom/larsi/News/gnu.SCORE")
4448  (eval (ding)))
4449 @end lisp
4450
4451 This example demonstrates absolutely everything about a score file. 
4452
4453 Even though this looks much like lisp code, nothing here is actually
4454 @code{eval}ed.  The lisp reader is used to read this form, though, so it
4455 has to be legal syntactically, if not semantically.
4456
4457 Six keys are supported by this alist:
4458
4459 @table @code
4460 @item STRING
4461 If the key is a string, it is the name of the header to perform the
4462 match on.  Scoring can only be performed on these eight headers:
4463 @samp{From}, @samp{Subject}, @samp{References}, @samp{Message-ID},
4464 @samp{Xref}, @samp{Lines}, @samp{Chars} and @samp{Date}.  In addition to
4465 these headers, there are three strings to tell Gnus to fetch the entire
4466 article and do the match on larger parts of the article: @samp{Body}
4467 will perform the match on the body of the article, @samp{Head} will
4468 perform the match on the head of the article, and @samp{All} will
4469 perform the match on the entire article.  Note that using any of these
4470 last three keys will slow down group entry @emph{considerably}.  
4471
4472 Following this key is a random number of score entries, where each score
4473 entry has one to four elements.
4474 @enumerate
4475 @item 
4476 The first element is the @dfn{match element}.  On most headers this will
4477 be a string, but on the Lines and Chars headers, this must be an
4478 integer. 
4479 @item 
4480 If the second element is present, it should be a number - the @dfn{score
4481 element}.  This number should be an integer in the neginf to posinf
4482 interval.  This number is added to the score of the article if the match
4483 is successful.  If this element is not present, the
4484 @code{gnus-score-interactive-default-score} number will be used instead.
4485 @item 
4486 If the third element is present, it should be a number - the @dfn{date
4487 element}.  This date says when the last time this score entry matched,
4488 which provides a mechanism for expiring the score entries.  It this
4489 element is not present, the score entry is permanent.  The date is
4490 represented by the number of days since December 31, 1 ce.
4491 @item 
4492 If the fourth element is present, it should be a symbol - the @dfn{type
4493 element}.  This element specifies what function should be used to see
4494 whether this score entry matches the article.  What match types that can
4495 be used depends on what header you wish to perform the match on.
4496 @table @dfn
4497 @item From, Subject, References, Xref, Message-ID
4498 For most header types, there are the @code{r} and @code{R} (regexp) as
4499 well as @code{s} and @code{S} (substring) types.  If this element is not
4500 present, Gnus will assume that substring matching should be used.
4501 @code{R} and @code{S} differ from the other two in that the matches will
4502 be done in a case-sensitive manner.  All these one-letter types are
4503 really just abbreviations for the @code{regexp} and @code{string} types,
4504 which you can use instead, if you feel like.
4505 @item Lines, Chars
4506 These two headers use different match types: @code{<}, @code{>},
4507 @code{=}, @code{>=} and @code{<=}.
4508 @item Date
4509 For the Date header we have three match types: @code{before}, @code{at}
4510 and @code{after}.  I can't really imagine this ever being useful, but,
4511 like, it would feel kinda silly not to provide this function.  Just in
4512 case.  You never know.  Better safe than sorry.  Once burnt, twice shy.
4513 Don't judge a book by its cover.  Never not have sex on a first date.
4514 @item Head, Body, All
4515 These three match keys use the same match types as the @code{From} (etc)
4516 header uses.
4517 @end table
4518 @end enumerate
4519
4520 @item mark
4521 The value of this entry should be a number.  Any articles with a score
4522 lower than this number will be marked as read.
4523 @item expunge
4524 The value of this entry should be a number.  Any articles with a score
4525 lower than this number will be removed from the summary buffer.
4526 @item mark-and-expunge
4527 The value of this entry should be a number.  Any articles with a score
4528 lower than this number will be marked as read and removed from the
4529 summary buffer.
4530 @item files
4531 The value of this entry should be any number of file names.  These files
4532 are assumed to be score files as well, and will be loaded the same way
4533 this one was.
4534 @item exclude-files
4535 The clue of this entry should be any number of files.  This files will
4536 not be loaded, even though they would normally be so, for some reason or
4537 other. 
4538 @item eval
4539 The value of this entry will be @code{eval}el.  This element will be
4540 ignored when handling global score files. 
4541 @item read-only
4542 Read-only score files will not be updated or saved.  Global score files
4543 should feature this atom (@pxref{Global Score Files}).
4544 @item orphan
4545 The value of this entry should be a number.  Articles that do not have
4546 parents will get this number added to their scores.
4547 @end table
4548
4549 @node Score File Editing
4550 @subsection Score File Editing
4551
4552 You normally enter all scoring commands from the summary buffer, but you
4553 might feel the urge to edit them by hand as well, so we've supplied you
4554 with a mode for that.  
4555
4556 It's simply a slightly customized @code{emacs-lisp} mode, with these
4557 additional commands:
4558
4559 @table @kbd
4560 @item C-c C-c
4561 @kindex C-c C-c (Score)
4562 @findex gnus-score-edit-done
4563 Save the changes you have made and return to the summary buffer
4564 (@code{gnus-score-edit-done}). 
4565 @item C-c C-d
4566 @kindex C-c C-d (Score)
4567 @findex gnus-score-edit-insert-date
4568 Insert the current date in numerical format
4569 (@code{gnus-score-edit-insert-date}).  This is really the day number, if
4570 you were wondering.
4571 @end table
4572
4573 @node Scoring Tips
4574 @subsection Scoring Tips
4575 @cindex scoring tips
4576
4577 @table @dfn
4578 @item Crossposts
4579 If you want to lower the score of crossposts, the line to match on is
4580 the @code{Xref} header.
4581 @lisp
4582 ("xref" (" talk.politics.misc:" -1000))
4583 @end lisp
4584 @item Multiple crossposts
4585 If you want to lower the score of articles that have been crossposted to
4586 more than, say, 3 groups:
4587 @lisp
4588 ("xref" (" +[^ ]+:[0-9]+ +[^ ]+:[0-9]+ +[^ ]+:[0-9]+" -1000 nil r))
4589 @end lisp
4590 @item Matching on the body
4591 This is generally not a very good idea - it takes a very long time.
4592 Gnus actually has to fetch each individual article from the server.  But
4593 you might want to anyway, I guess.  Even though there are three match
4594 keys (@code{Head}, @code{Body} and @code{All}), you should choose one
4595 and stick with it in each score file.  If you use any two, each article
4596 will be fetched @emph{twice}.  If you want to match a bit on the
4597 @code{Head} and a bit on the @code{Body}, just use @code{All} for all
4598 the matches.  
4599 @item Marking as read
4600 You will probably want to mark articles that has a score below a certain
4601 number as read.  This is most easily achieved by putting the following
4602 in your @file{all.SCORE} file:
4603 @lisp
4604 ((mark -100))
4605 @end lisp
4606 You may also consider doing something similar with @code{expunge}.  
4607 @end table
4608
4609 @node Reverse Scoring
4610 @subsection Reverse Scoring
4611 @cindex reverse scoring
4612
4613 If you want to keep just articles that have @samp{Sex with Emacs} in the
4614 subject header, and expunge all other articles, you could put something
4615 like this in your score file:
4616
4617 @lisp
4618 (("subject"
4619   ("Sex with Emacs" 2))
4620  (mark 1)
4621  (expunge 1))
4622 @end lisp
4623
4624 So, you raise all articles that match @samp{Sex with Emacs} and mark the
4625 rest as read, and expunge them to boot.
4626
4627 @node Global Score Files
4628 @subsection Global Score Files
4629 @cindex global score files
4630
4631 Sure, other newsreaders have "global kill files".  These are usually
4632 nothing more than a single kill file that applies to all groups, stored
4633 in the user's home directory.  Bah!  Puny, weak newsreaders!
4634
4635 What I'm talking about here are Global Score Files.  Score files from
4636 all over the world, from users everywhere, uniting all nations in one
4637 big, happy score file union!  Ange-score!  New and untested!
4638
4639 @vindex gnus-global-score-files
4640 All you have to do to use other people's score files is to set the
4641 @code{gnus-global-score-files} variable.  One entry for each score file,
4642 or each score file directory.  Gnus will decide by itself what score
4643 files are applicable to which group.
4644
4645 Say you want to use all score files in the
4646 @file{/ftp@@ftp.some-where:/pub/score} directory and the single score
4647 file @file{/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE}:
4648
4649 @lisp
4650 (setq gnus-global-score-files
4651       '("/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE"
4652         "/ftp@@ftp.some-where:/pub/score/"))
4653 @end lisp
4654
4655 @findex gnus-score-search-global-directories
4656 Simple, eh?  Directory names must end with a @samp{/}.  These
4657 directories are typically scanned only once during each Gnus session.
4658 If you feel the need to manually re-scan the remote directories, you can
4659 use the @code{gnus-score-search-global-directories} command.
4660
4661 Note that, at present, using this option will slow down group entry
4662 somewhat.  (That is - a lot.)
4663
4664 If you want to start maintaining score files for other people to use,
4665 just put your score file up for anonymous ftp and announce it to the
4666 world.  Become a retro-moderator!  Participate in the retro-moderator
4667 wars sure to ensue, where retro-moderators battle it out for the
4668 sympathy of the people, luring them to use their score files on false
4669 premises!  Yay!  The net is saved!
4670
4671 Here are some tips for the would-be retro-moderator, off the top of my
4672 head: 
4673
4674 @itemize @bullet
4675 @item 
4676 Articles that are heavily crossposted are probably junk. 
4677 @item
4678 To lower a single inappropriate article, lower by @code{Message-Id}.
4679 @item
4680 Particularly brilliant authors can be raised on a permanent basis. 
4681 @item
4682 Authors that repeatedly post off-charter for the group can safely be
4683 lowered out of existence.
4684 @item
4685 Set the @code{mark} and @code{expunge} atoms to obliterate the nastiest
4686 articles completely.
4687 @item 
4688 Use expiring score entries to keep the size of the file down.  You
4689 should probably have a long expiry period, though, as some sites keep
4690 old articles for a long time.
4691 @end itemize
4692
4693 ... I wonder whether other newsreaders will support global score files
4694 in the future.  @emph{Snicker}.  Yup, any day now, newsreaders like Blue
4695 Wave, xrn and 1stReader are bound to implement scoring.  Should we start
4696 holding our breath yet?
4697
4698 @node Kill Files
4699 @subsection Kill Files
4700 @cindex kill files
4701
4702 (ding) Gnus still supports those pesky old kill files.  In fact, the
4703 kill file entries can now be expiring, which is something I wrote before
4704 Per thought of doing score files, so I've left the code in there.
4705
4706 In short, kill processing is a lot slower (and I do mean @emph{a lot})
4707 than score processing, so it might be a good idea to rewrite your kill
4708 files into score files.
4709
4710 Anyway, a kill file is a normal @code{emacs-lisp} file.  You can put any
4711 forms into this file, which means that you can use kill files as some
4712 sort of primitive hook function to be run on group entry, even though
4713 that isn't a very good idea.
4714
4715 Normal kill files look like this:
4716
4717 @lisp
4718 (gnus-kill "From" "Lars Ingebrigtsen")
4719 (gnus-kill "Subject" "ding")
4720 (gnus-expunge "X")
4721 @end lisp
4722
4723 This will mark every article written by me as read, and remove them from
4724 the summary buffer.  Very useful, you'll agree.
4725
4726 Two functions for entering kill file editing:
4727
4728 @table @kbd
4729 @item V k
4730 @kindex V k (Summary)
4731 @findex gnus-summary-edit-local-kill
4732 Edit this group's kill file (@code{gnus-summary-edit-local-kill}).
4733 @item V K
4734 @kindex V K (Summary)
4735 @findex gnus-summary-edit-global-kill
4736 Edit the general kill file (@code{gnus-summary-edit-global-kill}).
4737 @end table
4738
4739 @vindex gnus-kill-file-name
4740 A kill file for the group @samp{soc.motss} is normally called
4741 @file{soc.motss.KILL}.  The suffix appended to the group name to get
4742 this file name is detailed by the @code{gnus-kill-file-name} variable.
4743 The "global" kill file (not in the score file sense of "global", of
4744 course) is called just @file{KILL}.
4745
4746
4747 @node Mail Group Commands
4748 @section Mail Group Commands
4749 @cindex mail group commands
4750
4751 Some commands only make sense in mail groups.  If these commands are
4752 illegal in the current group, they will raise a hell and let you know.
4753
4754 All these commands (except the expiry and edit commands) use the
4755 process/prefix convention (@pxref{Process/Prefix}).
4756
4757 @table @kbd
4758 @item V m e
4759 @kindex V m e (Summary)
4760 @findex gnus-summary-expire-articles
4761 Expire all expirable articles in the group
4762 (@code{gnus-summary-expire-articles}).
4763 @item V m DEL
4764 @kindex V m DEL (Summary)
4765 @findex gnus-summary-delete-articles
4766 Delete the mail article.  This is "delete" as in "delete it from your
4767 disk forever and ever, never to return again." Use with caution.
4768 (@code{gnus-summary-delete-article}).
4769 @item V m m
4770 @kindex V m m (Summary)
4771 @findex gnus-summary-move-article
4772 Move the article from one mail group to another
4773 (@code{gnus-summary-move-article}). 
4774 @item V m c
4775 @kindex V m c (Summary)
4776 @findex gnus-summary-copy-article
4777 Copy the article from one group (mail group or not) to a mail group
4778 (@code{gnus-summary-copy-article}).
4779 @item V m r
4780 @kindex V m r (Summary)
4781 @findex gnus-summary-respool-article
4782 Respool the mail article (@code{gnus-summary-move-article}).
4783 @item V m w
4784 @itemx e
4785 @kindex V m w (Summary)
4786 @kindex e (Summary)
4787 @findex gnus-summary-edit-article
4788 @kindex C-c C-c (Article)
4789 Edit the current article (@code{gnus-summary-edit-article}).  To finish
4790 editing and make the changes permanent, type @kbd{C-c C-c}
4791 (@kbd{gnus-summary-edit-article-done}).
4792 @end table
4793
4794 @node Various Summary Stuff
4795 @section Various Summary Stuff
4796
4797 @menu
4798 * Group Information::                 Information oriented commands.
4799 * Searching for Articles::            Multiple article commands.
4800 * Really Various Summary Commands::   Those pesky non-conformant commands.
4801 @end menu
4802
4803 @vindex gnus-summary-prepare-hook
4804 @code{gnus-summary-prepare-hook} is called after the summary buffer has
4805 been generated.  You might use it to, for instance, highlight lines or
4806 modify the look of the buffer in some other ungodly manner.  I don't
4807 care.
4808
4809 @node Group Information
4810 @subsection Group Information
4811
4812 @table @kbd
4813 @item V f
4814 @kindex V f (Summary)
4815 @findex gnus-summary-fetch-faq
4816 @vindex gnus-group-faq-directory
4817 Try to fetch the FAQ (list of frequently asked questions) for the
4818 current group (@code{gnus-summary-fetch-faq}).  Gnus will try to get the
4819 FAQ from @code{gnus-group-faq-directory}, which is usually a directory
4820 on a remote machine. @code{ange-ftp} will be used for fetching the file.
4821 @item V d
4822 @kindex V d (Summary)
4823 @findex gnus-summary-describe-group
4824 Give a brief description of the current group
4825 (@code{gnus-summary-describe-group}).  If given a prefix, force
4826 rereading the description from the server.
4827 @item V ?
4828 @kindex V ? (Summary)
4829 @findex gnus-summary-describe-briefly
4830 Give a very brief description of the most important summary keystrokes
4831 (@code{gnus-summary-describe-briefly}). 
4832 @item V i
4833 @kindex V i (Summary)
4834 @findex gnus-info-find-node
4835 Go to the Gnus info node (@code{gnus-info-find-node}).
4836 @end table
4837
4838 @node Searching for Articles
4839 @subsection Searching for Articles
4840
4841 @table @kbd
4842 @item V C-s
4843 @kindex V C-s (Summary)
4844 @findex gnus-summary-search-article-forward
4845 Search through all subsequent articles for a regexp
4846 (@code{gnus-summary-search-article-forward}). 
4847 @item V C-r
4848 @kindex V C-r (Summary)
4849 @findex gnus-summary-search-article-backward
4850 Search through all previous articles for a regexp
4851 (@code{gnus-summary-search-article-backward}). 
4852 @item V &
4853 @kindex V & (Summary)
4854 @findex gnus-summary-execute-command
4855 This command will prompt you for a header field, a regular expression to
4856 match on this field, and a command to be executed if the match is made
4857 (@code{gnus-summary-execute-command}).
4858 @item V u
4859 @kindex V u (Summary)
4860 @findex gnus-summary-universal-argument
4861 Perform any operation on all articles that have been marked with
4862 the process mark (@code{gnus-summary-universal-argument}).
4863 @end table
4864
4865 @node Really Various Summary Commands
4866 @subsection Really Various Summary Commands
4867
4868 @table @kbd
4869 @item V D
4870 @kindex V D (Summary)
4871 @findex gnus-summary-enter-digest-group
4872 If the current article is a digest, you might use this command to enter
4873 you into a group based on the current digest to ease reading
4874 (@code{gnus-summary-enter-digest-group}).  @xref{nndigest}.
4875 @item V T
4876 @kindex V T (Summary)
4877 @findex gnus-summary-toggle-truncation
4878 Toggle truncation of summary lines (@code{gnus-summary-toggle-truncation}).
4879 @item V e
4880 @kindex V e (Summary)
4881 @findex gnus-summary-expand-window
4882 Expand the summary buffer window (@code{gnus-summary-expand-window}).
4883 @item V S
4884 @kindex V S (Summary)
4885 @findex gnus-summary-reselect-current-group
4886 Exit this group, and then enter it again
4887 (@code{gnus-summary-reselect-current-group}).  If given a prefix, select
4888 all articles, both read and unread.
4889 @item V g
4890 @itemx M-g
4891 @kindex V g (Summary)
4892 @kindex M-g (Summary)
4893 @findex gnus-summary-rescan-group
4894 Exit the group, check for new articles in the group, and select the
4895 group (@code{gnus-summary-rescan-group}).  If given a prefix, select all
4896 articles, both read and unread.
4897 @end table
4898
4899 @node The Article Buffer
4900 @chapter The Article Buffer
4901 @cindex article buffer
4902
4903 The articles are displayed in the article buffer, of which there is only
4904 one.  All the summary buffer share the same article buffer.
4905
4906 @menu
4907 * Hiding Headers::        Deciding what headers should be displayed.
4908 * Using Mime::            Pushing articles through @sc{mime} before reading them.
4909 * Customizing Articles::  Tailoring the look of the articles.
4910 * Article Keymap::        Keystrokes available in the article buffer
4911 * Misc Article::          Other stuff.
4912 @end menu
4913
4914 @node Hiding Headers
4915 @section Hiding Headers
4916 @cindex hiding headers
4917 @cindex deleting headers
4918
4919 The top section of each article is the @dfn{head}.  (The rest is the
4920 @dfn{body}, but you may have guessed that already.)
4921
4922 @vindex gnus-show-all-headers
4923 There is a lot of useful information in the head: the name of the person
4924 who wrote the article, the date it was written and the subject of the
4925 article.  That's well and nice, but there's also lots of information
4926 most people do not want to see - what systems the article has passed
4927 through before reaching you, the @code{Message-Id}, the
4928 @code{References}, etc. ad nauseum - and you'll probably want to get rid
4929 of some of those lines.  If you want to keep all those lines in the
4930 article buffer, you can set @code{gnus-show-all-headers} to @code{t}.
4931
4932 Gnus provides you with two variables for sifting headers:
4933
4934 @table @code
4935 @item gnus-visible-headers
4936 @vindex gnus-visible-headers
4937 If this variable is non-@code{nil}, it should be a regular expression
4938 that says what headers you wish to keep in the article buffer.  All
4939 headers that do not match this variable will be hidden.
4940
4941 For instance, if you only want to see the name of the person who wrote
4942 the article and the subject, you'd say:
4943
4944 @lisp
4945 (setq gnus-visible-headers "^From:\\|^Subject:")
4946 @end lisp
4947
4948 @item gnus-ignored-headers
4949 @vindex gnus-ignored-headers
4950 This variable is the reverse of @code{gnus-visible-headers}.  If this
4951 variable is set (and @code{gnus-visible-headers} is @code{nil}), it
4952 should be a regular expression that matches all lines that you want to
4953 hide.  All lines that do not match this variable will remain visible.
4954
4955 For instance, if you just want to get rid of the @code{References} line
4956 and the @code{Xref} line, you might say:
4957
4958 @lisp
4959 (setq gnus-ignored-headers "^References:\\|^Xref:")
4960 @end lisp
4961
4962 Note that if @code{gnus-visible-headers} is non-@code{nil}, this
4963 variable will have no effect.
4964 @end table
4965
4966 @vindex gnus-sorted-header-list
4967 Gnus can also sort the headers for you.  (It does this by default.)  You
4968 can control the sorting by setting the @code{gnus-sorted-header-list}
4969 variable.  It is a list of regular expressions that says in what order
4970 the headers are to be displayed.
4971
4972 For instance, if you want the name of the author of the article first,
4973 and then the subject, you might say something like:
4974
4975 @lisp
4976 (setq gnus-sorted-header-list '("^From:" "^Subject:"))
4977 @end lisp
4978
4979 Any headers that are to remain visible, but are not listed in this
4980 variable, will be displayed in random order after all the headers that
4981 are listed in this variable.
4982
4983 @node Using Mime
4984 @section Using Mime
4985 @cindex @sc{mime}
4986
4987 Mime is a standard for waving your hands through the air, aimlessly,
4988 while people stand around yawning.
4989
4990 @sc{mime}, however, is a standard for encoding your articles, aimlessly,
4991 while all newsreaders die of fear.
4992
4993 @sc{mime} may specify what character set the article uses, the encoding
4994 of the characters, and it also makes it possible to embed pictures and
4995 other naughty stuff in innocent-looking articles.
4996
4997 @vindex gnus-show-mime
4998 @vindex gnus-show-mime-method
4999 Gnus handles @sc{mime} by shoving the articles through
5000 @code{gnus-show-mime-method}, which is @code{metamail-buffer} by
5001 default.  Set @code{gnus-show-mime} to @code{t} if you want to use
5002 @sc{mime} all the time; it might be best to just use the toggling
5003 functions from the summary buffer to avoid getting nasty surprises. (For
5004 instance, you enter the group @samp{alt.sing-a-long} and, before you
5005 know it, @sc{mime} has decoded the sound file in the article and some
5006 horrible sing-a-long song comes streaming out out your speakers, and you
5007 can't find the volume button, because there isn't one, and people are
5008 starting to look at you, and you try to stop the program, but you can't,
5009 and you can't find the program to control the volume, and everybody else
5010 in the room suddenly decides to look at you disdainfully, and you'll
5011 feel rather stupid.)
5012
5013 Any similarity to real events and people is purely coincidental.  Ahem.
5014
5015 @node Customizing Articles
5016 @section Customizing Articles
5017 @cindex article customization
5018
5019 @vindex gnus-article-display-hook
5020 The @code{gnus-article-display-hook} is called after the article has
5021 been inserted into the article buffer.  It is meant to handle all
5022 treatment of the article before it is displayed.  By default it contains
5023 @code{gnus-article-hide-headers}, which hides unwanted headers.
5024
5025 @findex gnus-article-subcite
5026 @findex gnus-article-hide-signature
5027 @findex gnus-article-hide-citation
5028 Other useful functions you might add to this hook is
5029 @code{gnus-article-hide-citation} (which hides all cited text);
5030 @code{gnus-article-hide-signature} (which, umn, hides the signature);
5031 @code{gnus-article-subcite} (which tries to clean up the mess supercite
5032 makes in The Hands Of The Mad); @code{gnus-article-treat-overstrike}
5033 (which treats @samp{^H_} in a reasonable manner);
5034 @code{gnus-article-remove-cr} (which removes trailing carriage returns);
5035 @code{gnus-article-de-quoted-unreadble} (which does a naive decoding of
5036 articles encoded with Quoted-Printable); and
5037 @code{gnus-article-display-x-face} (which displays any X-Face headers).
5038
5039 You can, of course, write your own functions.  The functions are called
5040 from the article buffer, and you can do anything you like, pretty much.
5041 There is no information that you have to keep in the buffer - you can
5042 change everything.  However, you shouldn't delete anu headers.  Instead
5043 make them invisible if you want to make them go away.
5044
5045 @node Article Keymap
5046 @section Article Keymap
5047
5048 Most of the keystrokes in the summary buffer can also be used in the
5049 article buffer.  They should behave as if you typed them in the summary
5050 buffer, which means that you don't actually have to have a summary
5051 buffer displayed while reading.  You can do it all from the article
5052 buffer.
5053
5054 A few additional keystrokes are available:
5055
5056 @table @kbd
5057 @item SPACE
5058 @kindex SPACE (Article)
5059 @findex gnus-article-next-page
5060 Scroll forwards one page (@code{gnus-article-next-page}).
5061 @item DEL
5062 @kindex DEL (Article)
5063 @findex gnus-article-prev-page
5064 Scroll backwards one page (@code{gnus-article-prev-page}).
5065 @item C-c ^
5066 @kindex C-c ^ (Article)
5067 @findex gnus-article-refer-article
5068 If point is in the neighborhood of a @code{Message-Id} and you press
5069 @kbd{r}, Gnus will try to get that article from the server
5070 (@code{gnus-article-refer-article}).
5071 @item C-c C-m
5072 @kindex C-c C-m (Article)
5073 @findex gnus-article-mail
5074 Send a reply to the address near point (@code{gnus-article-mail}). 
5075 @item C-c C-M
5076 @kindex C-c C-M (Article)
5077 @findex gnus-article-mail-with-original
5078 Send a reply to the address near point and include the original article
5079 (@code{gnus-article-mail-with-original}). 
5080 @item s
5081 @kindex s (Article)
5082 @findex gnus-article-show-summary
5083 Reconfigure the buffers so that the summary buffer becomes visible
5084 (@code{gnus-article-show-summary}).
5085 @item ?
5086 @kindex ? (Article)
5087 @findex gnus-article-describe-briefly
5088 Give a very brief description of the available keystrokes
5089 (@code{gnus-article-describe-briefly}). 
5090 @end table
5091
5092 @node Misc Article
5093 @section Misc Article
5094
5095 @table @code
5096 @vindex gnus-article-prepare-hook
5097 @item gnus-article-prepare-hook
5098 This hook is called right after the article has been inserted into the
5099 article buffer.  It is mainly intended for functions that do something
5100 depending on the contents; it should probably not be used for changing
5101 the contents of the article buffer.
5102 @vindex gnus-article-display-hook
5103 @item gnus-article-display-hook
5104 This hook is called as the last thing when displaying an article, and is
5105 intended for modifying the contents of the buffer, doing highlights,
5106 hiding headers, and the like.
5107 @vindex gnus-article-mode-line-format
5108 @item gnus-article-mode-line-format
5109 This variable is a format string along the same lines as
5110 @code{gnus-summary-mode-line-format}.  It accepts exactly the same
5111 format specifications as that variable.
5112 @vindex gnus-break-pages
5113 @item gnus-break-pages
5114 Controls whether @dfn{page breaking} is to take place.  If this variable
5115 is non-@code{nil}, the articles will be divided into pages whenever a
5116 page delimeter appears in the article.  If this variable is @code{nil},
5117 paging will not be done.
5118 @item gnus-page-delimeter
5119 @vindex gnus-page-delimiter
5120 This is the delimeter mentioned above.  By default, it is @samp{^L}
5121 (form linefeed).
5122 @end table
5123
5124 @node The Server Buffer
5125 @chapter The Server Buffer
5126
5127 Traditionally, a @dfn{server} is a machine or a piece of software that
5128 one connects to, and then requests information from.  Gnus does not
5129 connect directly to any real servers, but does all transactions through
5130 one backend or other.  But that's just putting one layer more between
5131 the actual media and Gnus, so we might just as well say that each
5132 backend represents a virtual server.
5133
5134 For instance, the @code{nntp} backend may be used to connect to several
5135 different actual nntp servers, or, perhaps, to many different ports on
5136 the same actual nntp server.  You tell Gnus which backend to use, and
5137 what parameters to set by specifying a @dfn{select method}.  
5138
5139 These select methods specifications can sometimes become quite
5140 complicated - say, for instance, that you want to read from the nntp
5141 server @samp{news.funet.fi} on port number @samp{13}, which hangs if
5142 queried for @sc{nov} headers and has a buggy select.  Ahem.  Anyways, if
5143 you had to specify that for each group that used this server, that would
5144 be too much work, so Gnus offers a way of putting names to methods,
5145 which is what you do in the server buffer.
5146
5147 @menu
5148 * Server Buffer Format::   You can customize the look of this buffer.
5149 * Server Commands::        Commands to manipulate servers.
5150 * Example Methods::        Examples server specifications.
5151 * Servers & Methods::      You can use server names as select methods.
5152 @end menu
5153
5154 @node Server Buffer Format
5155 @section Server Buffer Format
5156 @cindex server buffer format
5157
5158 @vindex gnus-server-line-format
5159 You can change the look of the server buffer lines by changing the
5160 @code{gnus-server-line-format} variable.  This is a @code{format}-like
5161 variable, with some simple extensions:
5162
5163 @table @samp
5164 @item h 
5165 How the news is fetched - the backend name.
5166 @item n
5167 The name of this server.
5168 @item w
5169 Where the news is to be fetched from - the address.
5170 @end table
5171
5172 @node Server Commands
5173 @section Server Commands
5174 @cindex server commands
5175
5176 @table @kbd
5177 @item SPC
5178 Browse the current server (@code{gnus-server-read-server}).
5179 @item q
5180 Return to the group buffer (@code{gnus-server-exit}).
5181 @item l
5182 List all servers (@code{gnus-server-list-servers}).
5183 @item k
5184 Kill the current server (@code{gnus-server-kill-server}).
5185 @item y
5186 Yank the previously killed server (@code{gnus-server-yank-server}).
5187 @item c
5188 Copy the current server (@code{gnus-server-copy-server}).
5189 @item a
5190 Add a new server (@code{gnus-server-add-server}).
5191 @item e
5192 Edit a server (@code{gnus-server-edit-server}).
5193 @end table
5194
5195 @node Example Methods
5196 @section Example Methods
5197
5198 Most select methods are pretty simple and self-explanatory: 
5199
5200 @lisp
5201 (nntp "news.funet.fi")
5202 @end lisp
5203
5204 Reading directly from the spool is even simpler:
5205
5206 @lisp
5207 (nnspool "")
5208 @end lisp
5209
5210 As you can see, the first element in a select method is the name of the
5211 backend, and the second is the @dfn{address}, or @dfn{name}, if you
5212 will. 
5213
5214 After these two elements, there may be a random number of @var{(variable
5215 form)} pairs.
5216
5217 To go back to the first example - imagine that you want to read from
5218 port @code{15} from that machine.  This is what the select method should
5219 look like then:
5220
5221 @lisp
5222 (nntp "news.funet.fi" (nntp-port-number 15))
5223 @end lisp
5224
5225 You should read the documention to each backend to find out what
5226 variables are relevant, but here's an @code{nnmh} example. 
5227
5228 @code{nnmh} is a mail backend that reads a spool-like structure.  Say
5229 you have two structures that you wish to access: One is your private
5230 mail spool, and the other is a public one.  Here's the possible spec for
5231 you private mail:
5232
5233 @lisp
5234 (nnmh "private" (nnmh-directory "~/private/mail/"))
5235 @end lisp
5236
5237 (This server is then called @samp{private}, but you may have guessed
5238 that. 
5239
5240 Here's the method for the public spool:
5241
5242 @lisp
5243 (nnmh "public" 
5244       (nnmh-directory "/usr/information/spool/") 
5245       (nnmh-get-new-mail nil))
5246 @end lisp
5247
5248 @node Servers & Methods
5249 @section Servers & Methods
5250
5251
5252
5253 @node Various
5254 @chapter Various
5255
5256 @menu
5257 * Interactive::                Making Gnus ask you many questions.
5258 * Windows Configuration::      Configuring the Gnus buffer windows.
5259 * Various Various::            Things that are really various.
5260 @end menu
5261
5262 @node Interactive
5263 @section Interactive
5264 @cindex interaction
5265
5266 @table @code
5267 @item gnus-novice-user
5268 @vindex gnus-novice-user
5269 If this variable is non-@code{nil}, you are either a newcomer to the
5270 World of Usenet, or you are very cautious, which is a nice thing to be,
5271 really.  You will be given questions of the type "Are you sure you want
5272 to do this?" before doing anything dangerous.
5273 @item gnus-expert-user
5274 @vindex gnus-expert-user
5275 If this variable is non-@code{nil}, you will never ever be asked any
5276 questions by Gnus.  It will simply assume you know what your are doing,
5277 no matter how strange.
5278 @item gnus-interactive-catchup
5279 @vindex gnus-interactive-catchup
5280 Require confirmation before catching up a group if non-@code{nil}.
5281 @item gnus-interactive-post
5282 @vindex gnus-interactive-post
5283 If non-@code{nil}, the user will be prompted for a group name when
5284 posting an article.
5285 @item gnus-interactive-exit
5286 @vindex gnus-interactive-exit
5287 Require confirmation before exiting Gnus.
5288 @end table
5289
5290 @node Windows Configuration
5291 @section Windows Configuration
5292 @cindex windows configuration
5293
5294 No, there's nothing here about X, so be quiet.
5295
5296 @table @code
5297 @item gnus-use-full-window
5298 @vindex gnus-use-full-window
5299 If non-@code{nil}, Gnus will delete all other windows and occupy the
5300 entire Emacs screen by itself.  It is @code{t} by default.
5301 @item gnus-window-configuration
5302 @vindex gnus-window-configuration
5303 This variable describes how much space each Gnus buffer should be given,
5304 compared to the other Gnus buffers.  Here's an example:
5305
5306 @lisp
5307 (setq gnus-window-configuration
5308   '((summary (0 1 0))
5309     (groups (1 0 0))
5310     (article (0 3 10))))
5311 @end lisp
5312
5313 This variable is a list of lists, where each of these small lists is on
5314 the form @var{(action (g s a))}.  As you can see, there are three
5315 possible @var{action}s - @code{group} (which is what happens when
5316 you first start Gnus, or returns from the summary buffer),
5317 @code{summary} (which is what happens when there are no unread articles
5318 in the group, and @code{article} (which is what happens when there
5319 is an unread article in the group). 
5320
5321 We see that in the first two actions, the respective buffers will fill
5322 the screen, and in the last, the article buffer will take ten lines for
5323 each three the summary buffer gets.
5324
5325 @findex gnus-window-configuration-split
5326 This variable can also have a function as its value.  In that case,
5327 whenever Gnus tries to configure the Gnus buffers, that function will be
5328 called with the @var{action} as its parameter.  There is one pre-made
5329 function supplied, @code{gnus-window-configuration-split}, which may be
5330 suitable if you have a very wide Emacs window, and want to have the
5331 summary buffer and the article buffer side by side.
5332 @end table
5333
5334 @node Various Various
5335 @section Various Various
5336 @cindex mode lines
5337 @cindex highlights
5338
5339 @table @code
5340 @item gnus-updated-mode-lines
5341 @vindex gnus-updated-mode-lines
5342 This is a list of buffers that should keep their mode lines updated.
5343 The list may contain the symbols @code{group}, @code{article} and
5344 @code{summary}.  If the corresponding symbol is present, Gnus will keep
5345 that mode line updated with information that may be pertinent.  If this
5346 variable is @code{nil}, screen refresh may be quicker.
5347
5348 @item gnus-mode-non-string-length
5349 @vindex gnus-mode-non-string-length
5350 By default, Gnus displays information on the current article in the mode
5351 lines of the summary and article buffers.  The information Gnus wishes
5352 to display (eg. the subject of the article) is often longer than the
5353 mode lines, and therefore have to be cut off at some point.  This
5354 variable says how long the other elements on the line is (ie. the
5355 non-info part).  If you put additional elements on the mode line (eg. a
5356 clock), you should modify this variable:
5357 @c Hook written by Keinonen Kari <kk85613@cs.tut.fi>.
5358 @lisp
5359 (add-hook 'display-time-hook
5360           (lambda ()
5361             (setq gnus-mode-non-string-length
5362                   (+ 21 (length display-time-string)))))
5363 @end lisp
5364
5365 @item gnus-visual
5366 @vindex gnus-visual
5367 If @code{nil}, Gnus won't attempt to create menus or use fancy colours
5368 or fonts.  This will also inhibit loading the @file{gnus-visual.el}
5369 file.
5370 @item gnus-mouse-face
5371 @vindex gnus-mouse-face
5372 This is the face (ie. font) used for mouse highlighting in Gnus.  No
5373 mouse highlights will be done if @code{gnus-visual} is @code{nil}.
5374 @end table
5375
5376 @node Customization
5377 @chapter Customization
5378 @cindex general customization
5379
5380 All variables are properly documented elsewhere in this manual.  This
5381 section is designed to give general pointers on how to customize Gnus
5382 for some quite common situations.
5383
5384 @menu
5385 * Slow @sc{nntp} Connection::      You run a local Emacs and get the news elsewhere.
5386 * Slow Terminal Connection::  You run a remote Emacs.
5387 * Little Disk Space::         You feel that having large setup files is icky.
5388 * Slow Machine::              You feel like buying a faster machine.
5389 @end menu
5390
5391 @node Slow @sc{nntp} Connection
5392 @section Slow @sc{nntp} Connection
5393
5394 If you run Emacs on a machine locally, and get your news from a machine
5395 over some very thin strings, you want to cut down on the amount of data
5396 Gnus has to get from the @sc{nntp} server.
5397
5398 @table @code
5399 @item gnus-read-active-file
5400 Set this to @code{nil}, which will inhibit Gnus from requesting the
5401 entire active file from the server.  This file is often v.  large.  You
5402 also have to set @code{gnus-check-new-news} and
5403 @code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus
5404 doesn't suddenly decide to fetch the active file anyway.
5405 @item gnus-nov-is-evil
5406 This one has to be @code{nil}.  If not, grabbing article headers from
5407 the @sc{nntp} server will not be very fast.  Not all @sc{nntp} servers
5408 support @sc{xover}; Gnus will detect this by itself.
5409 @end table
5410
5411 @node Slow Terminal Connection
5412 @section Slow Terminal Connection
5413
5414 Let's say you use your home computer for dialling up the system that
5415 runs Emacs and Gnus.  If your modem is slow, you want to reduce the
5416 amount of data that is sent over the wires as much as possible.
5417
5418 @table @code
5419 @item gnus-auto-center-summary
5420 Set this to @code{nil} to inhibit Gnus from recentering the summary
5421 buffer all the time.
5422 @item gnus-visible-headers
5423 Cut down on the headers that are included in the articles to the
5424 minimum.  You can, in fact, make do without them altogether - most of the
5425 useful data is in the summary buffer, anyway.  Set this variable to
5426 @samp{"^NEVVVVER"} or @samp{"From:"}, or whatever you feel you need.
5427 @item gnus-article-display-hook
5428 Set this hook to all the available hiding commands:
5429 @lisp
5430 (setq gnus-article-display-hook 
5431       '(gnus-article-hide-headers gnus-article-hide-signature
5432         gnus-article-hide-citation))
5433 @end lisp
5434 @item gnus-use-full-window
5435 By setting this to @code{nil}, you can make all the windows smaller.
5436 While this doesn't really cut down much generally, it means that you
5437 have to see smaller portions of articles before deciding that you didn't
5438 want to read them anyway.
5439 @item gnus-thread-hide-subtree
5440 If this is non-@code{nil}, all threads in the summary buffer will be
5441 hidden initially.
5442 @item gnus-updated-mode-lines
5443 If this is @code{nil}, Gnus will not put information in the buffer mode
5444 lines, which might save some time.
5445 @end table
5446
5447 @node Little Disk Space
5448 @section Little Disk Space
5449
5450 The startup files can get rather large, so you may want to cut their
5451 sizes a bit if you are running out of space.
5452
5453 @table @code
5454 @item gnus-save-newsrc-file
5455 If this is @code{nil}, Gnus will never save @file{.newsrc} - it will
5456 only save @file{.newsrc.eld}.  This means that you will not be able to
5457 use any other newsreaders than Gnus.
5458 @item gnus-save-killed-list
5459 If this is @code{nil}, Gnus will not save the list of dead groups.  You
5460 should also set @code{gnus-check-new-newsgroups} to @code{ask-server}
5461 and @code{gnus-check-bogus-newsgroups} to @code{nil} if you set this
5462 variable to @code{nil}.
5463 @end table
5464
5465 @node Slow Machine
5466 @section Slow Machine
5467
5468 If you have a slow machine, or are just really impatient, there are a
5469 few things you can do to make Gnus run faster.
5470
5471 Set@code{gnus-check-new-newsgroups} and
5472 @code{gnus-check-bogus-newsgroups} to @code{nil} to make startup faster.
5473
5474 Set @code{gnus-show-threads}, @code{gnus-use-cross-reference} and
5475 @code{gnus-nov-is-evil} to @code{nil} to make entering and exiting the
5476 summary buffer faster.
5477
5478 Set @code{gnus-article-display-hook} to @code{nil} to make article
5479 processing a bit faster.
5480
5481 @node Troubleshooting
5482 @chapter Troubleshooting
5483 @cindex troubleshooting
5484
5485 (ding) Gnus works @emph{so} well straight out of the box - I can't
5486 imagine any problems, really.
5487
5488 Ahem.
5489
5490 @enumerate
5491 @item
5492 Make sure your computer is switched on.
5493 @item
5494 Make sure that you really load the current Gnus version.  If you have
5495 been running @sc{gnus}, you need to exit Emacs and start it up again before
5496 Gnus will work.
5497 @item
5498 Try doing an @kbd{M-x gnus-version}.  If you get something that looks
5499 like @samp{(ding) Gnus v0.46; nntp 4.0} you have the right files loaded.
5500 If, on the other hand, you get something like @samp{NNTP 3.x} or
5501 @samp{nntp flee}, you have some old @file{.el} files lying around.
5502 Delete these.
5503 @item
5504 Read the help group (@kbd{M h} in the group buffer) for a FAQ and a
5505 how-to. 
5506 @end enumerate
5507
5508 If all else fails, report the problem as a bug,
5509
5510 @cindex bugs
5511 @cindex reporting bugs
5512
5513 @kindex M-x gnus-bug
5514 @findex gnus-bug
5515 If you find a bug in (ding) Gnus, you can report it with the @kbd{M-x
5516 gnus-bug} command.  @code{(setq debug-on-error t)}, and send me the
5517 backtrace.  I will fix bugs, but I can only fix them if you send me a
5518 precise description as to how to reproduce the bug.
5519
5520 @c If you just need help, you are better off asking on
5521 @c @samp{gnu.emacs.gnus}.  
5522
5523 @node The End
5524 @chapter The End
5525
5526 Well, that's the manual - you can get on with your life now.  Keep in
5527 touch.  Say hello to your cats from me.  
5528
5529 My @strong{ghod} - I just can't stand goodbyes.  Sniffle.
5530
5531 Ol' Chuck Reznikoff said it pretty well, so I leave the floor to him:
5532
5533 @quotation
5534 @strong{Te Deum}
5535 @sp 1
5536 Not because of victories @*
5537 I sing,@*
5538 having none,@*
5539 but for the common sunshine,@*
5540 the breeze,@*
5541 the largess of the spring.
5542 @sp 1
5543 Not for victory@*
5544 but for the day's work done@*
5545 as well as I was able;@*
5546 not for a seat upon the dais@*
5547 but at the common table.@*
5548 @end quotation
5549
5550 @node Index
5551 @chapter Index
5552 @printindex cp
5553
5554 @node Key Index
5555 @chapter Key Index
5556 @printindex ky
5557
5558 @summarycontents
5559 @contents
5560 @bye
5561
5562 \f
5563 @c Local Variables:
5564 @c outline-regexp: "@chap\\|@\\(sub\\)*section\\|@appendix \\|@appendix\\(sub\\)*sec\\|\^L"
5565 @c End: