1 \input texinfo @c -*-texinfo-*-
2 @comment %**start of header (This is for running Texinfo on a region.)
4 @settitle (ding) Gnus 1.0 Manual
11 @setchapternewpage odd
13 @comment %**end of header (This is for running Texinfo on a region.)
16 %\global\baselineskip 30pt % For printing in double spaces
21 This file documents GNUS, the GNU Emacs newsreader.
23 Copyright (C) 1989, 1990, 1993 Free Software Foundation, Inc.
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.
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).
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.
41 Permission is granted to copy and distribute translations of this manual
42 into another language, under the above conditions for modified versions.
48 @author by Lars Ingebrigtsen
50 @vskip 0pt plus 1filll
51 Copyright @copyright{} 1989, 1990, 1993 Free Software Foundation, Inc.
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.
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.
62 Permission is granted to copy and distribute translations of this manual
63 into another language, under the above conditions for modified versions.
65 Cover art by Etienne Suvasa.
70 @top The Gnus News Reader
72 You can read news (and mail) from within Emacs by using (ding) Gnus. The
73 news can be gotten by any nefarious means you can think of - NNTP, local
74 spool, mail spool. All at the same time, if you want to push your luck.
77 * History:: How Gnus got where it is today.
78 * Starting Up:: Finding news can be a pain.
79 * The Newsgroup Buffer:: Treating newsgroups.
80 * The Summary Buffer:: Reading articles.
81 * The Article Buffer:: Doing stuff to articles.
82 * Various:: General options.
83 * Customization:: Tailoring Gnus to your needs.
84 * Troubleshooting:: What you might try if things do not work.
85 * Reporting Bugs:: Bugs? What bugs?!
87 * Key Index:: Key Index.
93 GNUS was written by Masanobu UMEDA. When autumn crept up in '94, Lars
94 Ingebrigtsen grew bored and decided to write (ding) Gnus.
96 (ding) Gnus is based on GNUS 4.1 and includes bits and pieces by Felix
99 The recommended pronounciation of the name this program is "ding
100 guh-noose", with "ding" being half-sung in a loud, high-pitched voice,
101 and "guh-noose" being grumbled and a disaffected fashion. Any irritation
102 and/or damage this name may cause you is not the responsibility of the
103 author, even though you might like to strangle him for the stupid idea.
105 "(ding)", is, of course, short for "Ding Is Not Gnus", which is a total
106 and utter lie, but who cares? (Besides, the "Gnus" in this abbreviation
107 should probably be pronounced "news" as UMEDA intended, which makes it a
108 more appropriate name, don't you think?)
111 * Compatibility:: Just how compatible is (ding) Gnus with GNUS?
112 * New Features:: A short description of all the new stuff in Gnus.
116 @section Compatibility
118 (ding) Gnus was designed to be fully compatible with GNUS. Almost all
119 key binding have been kept. More key binding have been added, of course,
120 but only in one or two obscure cases have key bindings been changed.
122 All commands have kept their names. Some internal functions have changed
125 Even though old methods of doing things are still supported, only the
126 new methods are documented in this manual. If you detect a new method of
127 doing something while reading this manual, that does not mean you have
128 to stop doing it the old way.
130 (ding) Gnus understands all GNUS startup files.
133 Overall, a casual user who hasn't written much code that depends on GNUS
134 internals should suffer no problems. If problems occur, please let me
135 know (@kbd{M-x gnus-bug}).
137 However, code that depends on the buffers looking a particular way will
138 almost invaribaly fail. For instance, the Summary buffer does not
139 display article numbers by default.
142 @section New Features
144 The look of all buffers can be changed by setting format-like variables.
146 Local spool and several NNTP servers can be used at once. Virtual
147 newsgroups and private mail newsgroups are featured.
149 Killing can be done on arbitrary headers.
151 Gnus can generate dummy roots for threads that have lost their roots
152 (thereby gathering loose sub-threads in one thread) or it can go back
153 and retrieve enough headers to build a complete thread.
155 Killed groups can be displayed in the Newsgroup buffer, and you can read
158 Gnus can do partial updates of new articles - you do not have to
159 retrieve the entire active file just to check for new articles in a few
162 Gnus implements a sliding scale of subscribedness to newsgroups.
164 Gnus can sort the displayed headers of articles.
167 @chapter Starting Gnus
170 If your systems administrator has set thing up properly, starting Gnus
171 and reading news is extremely easy - you just type @kbd{M-x gnus}.
173 If things do not go smoothly at startup, you have to twiddle some
177 * Finding the News:: Choosing a method for getting news.
178 * First Time:: What does Gnus do the first time you start it?
179 * New Newsgroups:: What is Gnus supposed to do with new newsgroups?
180 * Startup Files:: Those pesky startup files - @file{.newsrc}.
181 * Auto Save:: Recovering from a crash.
182 * The Active File:: Reading the active file over a slow line Takes Time.
183 * Startup Variables:: Other variables you might change.
186 @node Finding the News
187 @section Finding the News
189 @vindex gnus-default-select-method
190 The @code{gnus-default-select-method} variable controls how Gnus finds
191 news. This variable should be a list where the first element says "how"
192 and the second element says "where".
194 For instance, if you want to get your daily dosage of news from the NNTP
195 server "news.friendly.server", you'd say:
198 (setq gnus-default-select-method '(nntp "news.friendly.server"))
201 If you want to use a local spool, say:
204 (setq gnus-default-select-method '(nnspool ""))
207 If this variable is not set, Gnus will take a look at the
208 @code{NNTPSERVER} environment variable. If that isn't set either, it
209 will try to use the machine that is running Emacs as an NNTP server.
211 @vindex gnus-secondary-servers
212 You can also make Gnus prompt you interactively for the name of an NNTP
213 server. If you give a non-numerical prefix to `gnus' (ie. `C-u M-x
214 gnus'), Gnus will let you choose between the servers in the
215 @code{gnus-secondary-servers} variable (if any). You can also just type
216 in the name of any server you feel like visiting.
218 However, if you use one NNTP server regularly, and is just interested in
219 a couple of newsgroups from a different server, you would be better
220 served by using the @code{gnus-group-browse-foreign-server} command from
221 the Newsgroup buffer. It will let you have a look at what groups are
222 available, and you can subscribe to any of the groups you want to. This
223 also makes @file{.newsrc} maintenance much tidier.
226 @section The First Time
228 One time has to be the first, but it doesn't have to be painful.
230 If no startup files exist, Gnus will try to determine what newsgroups
231 should be subscribed by default.
233 @vindex gnus-default-subscribed-newsgroups
234 If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
235 will subscribe you to just those newsgroups in that list, leaving the
236 rest killed. Your systems administrator should have set this variable to
239 Since he hasn't, Gnus will ask the NNTP server (if you use one) if it
242 If that fails as well, Gnus will just subscribe you to a few randomly
243 picked newsgroups (ie. @samp{*.newusers}).
245 If @code{gnus-default-subscribed-newsgroups} is t, Gnus will just use
246 the normal functions for treating new newsgroups, and not do anything
250 @section New Newsgroups
252 @vindex gnus-subscribe-newsgroup-method
253 What Gnus does when it encounters a new newsgroup is determined by the
254 @code{gnus-subscribe-newsgroup-method} variable.
256 This variable should contain a function. Some handy ready-made values
260 @item gnus-subscribe-randomly
261 @vindex gnus-subscribe-randomly
262 Subscribe all new newsgroups randomly.
264 @item gnus-subscribe-alphabetically
265 @vindex gnus-subscribe-alphabetically
266 Subscribe all new newsgroups alphabetically.
268 @item gnus-subscribe-hierarchically
269 @vindex gnus-subscribe-hierarchically
270 Subscribe all new newsgroups hierarchially.
272 @item gnus-subscribe-interactively
273 @vindex gnus-subscribe-interactively
274 Subscribe new newsgroups interactively. This means that Gnus will ask
275 you about *all* new newsgroups.
277 @item gnus-subscribe-zombies
278 @vindex gnus-subscribe-zombies
279 Make all new newsgroups zombies. You can browse the zombies later and
280 either kill them off properly or subscribe to them. This is the
285 @vindex gnus-subscribe-hierarchical-interactive
286 A closely related variable is
287 @code{gnus-subscribe-hierarchical-interactive}. If this variable is
288 non-nil, Gnus will ask you in a hierarchial fashion whether to subscribe
289 to new newsgroups or not. Gnus will ask you for each sub-hierarchy
290 whether you want to descend the hierarchy or not.
292 @vindex gnus-check-new-newsgroups
293 If you are satisfied that you never really want to see any new
294 newsgroups, you could set @code{gnus-check-new-newsgroups} to
295 nil. This will also save you some time at startup. Even if this
296 variable is nil, you can always subscribe to the new newsgroups
297 by just pressing @kbd{U} in the @dfn{Newsgroup buffer}.
300 @section Startup Files
302 Now, you all know about the @file{.newsrc} files. All information about
303 what newsgroups you read is traditionally stored in this file, which has
304 a rather rigid structure.
306 Things got a bit more complicated with GNUS. In addition to keeping the
307 @file{.newsrc} file updated, it also used a file called @file{.newsrc.el} for
308 storing all the information that didn't fit into the @file{.newsrc}
309 file. (Actually, it duplicated everything in the @file{.newsrc} file.)
310 GNUS would read whichever one of these files that were the most recently
311 saved, which enabled people to swap between GNUS and other newsreaders.
313 That was kinda silly, so (ding) Gnus went one better: In addition to the
314 @file{.newsrc} and @file{.newsrc.el} files, (ding) Gnus also has a file
315 called @file{.newsrc.eld}. It will read whichever of these files that
316 are most recent, but it will never write a @file{.newsrc.el} file.
318 @vindex gnus-save-newsrc-file
319 You can also turn off writing @file{.newsrc} by setting
320 @code{gnus-save-newsrc-file} to nil, which means you can delete
321 the file and save some space, as well as some time when quitting
322 Gnus. However, that will make it impossible to use other newsreaders
323 than (ding) Gnus. But hey, who would want to, right?
325 @vindex gnus-save-killed-list
326 If @code{gnus-save-killed-list} is nil, Gnus will not save the list of
327 killed groups to the startup file. This will save both time (when
328 starting and quitting) and space (on disk). It will also means that Gnus
329 has no record of what newsgroups are new or old, so the automatic new
330 newsgroups subscription methods become meaningless. You should always
331 set `gnus-check-new-newsgroups' to nil if you set this variable to
334 @vindex gnus-startup-file
335 The @code{gnus-startup-file} variable says where the startup files
336 are. The default value is @file{"~/.newsrc"}, with the Gnus (El Dingo)
337 startup file being whatever that one is with a @samp{".eld"} appended.
339 @vindex gnus-save-newsrc-hook
340 @code{gnus-save-newsrc-hook} is called before saving the @file{.newsrc}
346 Whenever you do something that changes the Gnus data (reading articles,
347 cathing up, killing/subscribing to newsgroups,) the change is added to a
348 special @dfn{dribble} buffer. This buffer is auto-saved the normal Emacs
351 If Gnus detects this file at startup, it will ask the user whether to
354 The auto save file is deleted whenever the real startup file is saved.
356 @node The Active File
357 @section The Active File
359 When Gnus starts, or indeed whenever it tries to determine if new
360 articles has arrived, it reads the active file. This is a file stored on
361 the NNTP server or in the local spool.
363 @vindex gnus-ignored-newsgroups
364 Before examining the active file to see what newsgroups are available,
365 Gnus deletes all lines in this file that match
366 @code{gnus-ignored-newsgroups}. You may even use this variable to make
367 Gnus ignore hierarchies you aren't interested in.
369 @vindex gnus-read-active-file
370 The active file can be rather Huge, so if you have a slow network, you
371 can set @code{gnus-read-active-file} to nil to prevent Gnus from reading
372 the entire active file.
374 Gnus will try to make do by just getting information on the newsgroups
375 that you actually subscribe to.
377 Note that if you subscribe to lots and lots of newsgroups, setting this
378 variable to nil will probabaly make Gnus slower, not faster.
382 @node Startup Variables
383 @section Startup Variables
386 @item gnus-check-bogus-newsgroups
387 @vindex gnus-check-bogus-newsgroups
388 If non-nil, Gnus will check for and delete all bogus newsgroups at
389 startup. A @dfn{bogus newsgroup} is a newsgroup that you have in you
390 @file{.newsrc} file, but doesn't exist on the news server. Checking for
391 bogus newsgroups isn't very quick, so to save time and resources, it's
392 best to leave this option off, and instead do the checking for bogus
393 newsgroups once in a while from the Newsgroup buffer.
394 @item gnus-inhibit-startup-message
395 @vindex gnus-inhibit-startup-message
396 If non-nil, the startup message won't be displayed. That way, nobody will
397 notice thay you are reading news instead of doing your job.
400 @node The Newsgroup Buffer
401 @chapter The Newsgroup Buffer
403 The @dfn{Newsgroup buffer} lists all (or parts) of the available
404 newsgroups and displays various information regarding these groups.
405 It is the first buffer displayed when Gnus starts.
408 * Newsgroup Buffer Format:: Information listed and how you can change it.
409 * Newsgroup Manouvering:: Commands for moving in the newsgroup buffer.
410 * Selecting a Newsgroup:: Actually reading news.
411 * Newsgroup Subscribing:: Unsubscribing, killing, subscribing.
412 * Newsgroup Levels:: Levels? What are those, then?
413 * Foreign Newsgroups:: How to create foreign newsgroups.
414 * Listing Groups:: Gnus can list various portions of the groups.
415 * Newsgroup Maintenance:: Maintaining a tidy @file{.newsrc} file.
416 * Browse Foreign Server:: You can browse a server. See what if has to offer.
417 * Exiting Gnus:: Stop reading news and get some work done.
418 * Misc Newsgroup Stuff:: Other stuff that you can to do.
421 @node Newsgroup Buffer Format
422 @section Newsgroup Buffer Format
424 The default format of the Newsgroup buffer is nice and dull, but you can
425 make it as exciting and ugly as you feel like.
427 Here's a couple of example newsgroup lines:
430 25: news.announce.newusers
431 * 3: alt.fan.andrea-dworkin
436 Those lines mean that there are 25 unread articles in
437 @samp{news.announce.newusers} and 3 marked articles in
438 @samp{alt.fan.andrea-dworkin} and no unread artcles (see that little
439 asterisk at the beginning of the line?)
441 @vindex gnus-group-line-format
442 You can fuck that up to your hearts delight by fiddling with the
443 @code{gnus-group-line-format} variable. This variable works along the
444 lines of a @code{format} specification, which is pretty much the same as
445 a @code{printf} specifications, for those of you who use (feh!) C.
447 One extension is that specifications like @samp{%7,12s} is allowed,
448 which means that the field will be at least 7 characters long, and no
449 more that 12 characters long.
451 The default value that produced those lines above is
452 @samp{"%M%S%5N: %G\n"}.
454 There should always be a colon on the line; the cursor is always moved
455 to the colon. Nothing else is required - not even the newsgroup name.
457 Here's a list of all available format characters:
463 Whether the group is subscribed
465 Level of subscribedness
467 Number of unread articles
471 Number of marked articles
473 Total number of articles; both read and unread
475 Newsgroup description
481 A string that look like @samp{<%s:%n>} if a foreign select method is
485 @vindex gnus-group-mode-line-format
486 The mode line can also be changed by using the
487 @code{gnus-group-mode-line-format} variable. It does not understand that
488 many format specifiers:
494 Default select method
497 @node Newsgroup Manouvering
498 @section Newsgroup Manouvering
500 All movement commands understand the numeric prefix and will behave as
506 @findex gnus-group-next-unread-group
507 Go to the next group with unread articles
508 (@code{gnus-group-next-unread-group}).
512 @findex gnus-group-prev-unread-group
513 Go to the previous group group with unread articles
514 (@code{gnus-group-prev-unread-group}).
518 @findex gnus-group-next-group
519 Go to the next group (@code{gnus-group-next-group}).
523 @findex gnus-group-prev-group
524 Go to the previous group (@code{gnus-group-prev-group}).
527 @findex gnus-group-next-unread-group-same-level
528 Go to the next unread group on the same level (or lower)
529 (@code{gnus-group-next-unread-group-same-level}).
532 @findex gnus-group-prev-unread-group-same-level
533 Go to the previous unread group on the same level (or lower)
534 (@code{gnus-group-prev-unread-group-same-level}).
537 @findex gnus-group-jump-to-group
538 Jump to a group (and make it visible if it isn't already)
539 (@code{gnus-group-jump-to-group}).
542 @node Selecting a Newsgroup
543 @section Selecting a Newsgroup
547 @kindex SPACE (Group)
548 @findex gnus-group-read-group
549 Select the current newsgroup, switch to the Summary buffer and display
550 the first unread article in the newsgroup
551 (@code{gnus-group-read-group}). If there are no unread articles in the
552 newsgroup, or if you give a prefix to this command, Gnus will offer to
553 fetch all the old articles in this newsgroup from the server.
557 @findex gnus-group-select-group
558 Select the current newsgroup and switch to the Summary buffer
559 (@code{gnus-group-select-group}).
562 @findex gnus-group-catchup-current
563 Mark all unticked articles in this newsgroup as read
564 (@code{gnus-group-catchup-current}).
567 @findex gnus-group-catchup-current-all
568 Mark all articles in this newsgroup, even the ticked ones, as read
569 (@code{gnus-group-catchup-current-all}).
572 @vindex gnus-large-newsgroup
573 The @code{gnus-large-newsgroup} variable says what Gnus considers to be
574 a "big" newsgroup. If the newsgroup is big, Gnus will query the user
575 before entering the newsgroup. The user can then specify how many
576 articles should be fetched from the server. If the user specifies a
577 negative number (@samp{-n}), the @samp{n} articles that have arrived
578 most recently will be fetched. If it is positive, the @samp{n} oldest
579 articles will be fetched.
581 @vindex gnus-auto-select-newsgroup
582 If @code{gnus-auto-select-newsgroup} is non-nil, the first unread
583 article in the newsgroup will be displayed when you enter the
584 newsgroup. If you want to prevent automatic selection in some newsgroup
585 (say, in a binary newsgroup with Huge articles) you can set til variable
586 to nil in `gnus-select-group-hook', which is called when a newsgroup is
587 selected. This hook is also popularly used for sorting headers before
588 generating the Summary buffer.
590 @node Newsgroup Subscribing
591 @section Newsgroup Subscribing
596 @findex gnus-group-unsubscribe-current-group
597 Unsubscribe the current newsgroup, or, if it was unsubscribed already,
598 subscribe it (@code{gnus-group-unsubscribe-current-group}).
601 @findex gnus-group-unsubscribe-group
602 Ask the user for a newsgroup to unsubscribe, and then unsubscribe it. If
603 it was unsubscribed already, subscribe it instead
604 (@code{gnus-group-unsubscribe-group}).
607 @findex gnus-group-kill-group
608 Kill the current newsgroup (@code{gnus-group-kill-group}).
611 @findex gnus-group-yank-group
612 Yank the last killed newsgroup (@code{gnus-group-yank-group}).
615 @findex gnus-group-kill-region
616 Kill all newsgroups in the region (@code{gnus-group-kill-region}).
619 @findex gnus-group-kill-all-zombies
620 Kill all zombie newsgroups (@code{gnus-group-kill-all-zombies}).
623 @node Newsgroup Levels
624 @section Newsgroup Levels
626 All newsgroups have a level of "subscribedness". For instance, if a
627 newsgroup is on level 2, it is "more" subscribed than a newsgroup on
628 level 5. You can ask Gnus to just list newsgroups on a given level and
629 lower, or to just check new articles in newsgroups on a given level and
635 @findex gnus-group-set-current-level
636 Set the level of the current newsgroup depending on the numeric
637 prefix. For instance, @kbd{3 s} will set the level of the current
638 newsgroup to three (@code{gnus-group-set-current-level}).
641 Gnus considers groups on levels 1-5 to be subscribed, 6-7 to be
642 unsubscribed, 8 to be zombies (walking dead) and 9 to be killed,
643 completely dead. Gnus treats subscribed and unsubscribed groups exactly
644 the same, but zombie and killed groups have no information on what
645 articles you have read, etc, stored.
647 @vindex gnus-keep-same-level
648 If @code{gnus-keep-same-level} is non-nil, some movement commands will
649 only move to groups that are of the same level (or lower). In
650 particular, going from the last article in one newsgroup to the next
651 newsgroup will go to the next newsgroup of the same level (or
652 lower). This might be handy if you want to read the most important
653 newsgroups before you read the rest.
655 @node Foreign Newsgroups
656 @section Foreign Newsgroups
658 A @dfn{foreign newsgroup} is a newsgroup that is not read by the usual
659 (or default) means. It could be, for instance, a newsgroup from a
660 different NNTP server, it could be a virtual newsgroup or it could be a
661 "newsgroup" of your own personal mail.
666 @findex gnus-group-add-newsgroup
667 Add a new newsgroup. Gnus will prompt you for a name, a method and an
668 "address" (@code{gnus-group-add-newsgroup}).
671 @findex gnus-group-edit-newsgroup
672 Edit a newsgroup entry. Gnus will pop up a new buffer where you can edit
673 the entry (@code{gnus-group-edit-newsgroup}).
676 The different methods all have their peculiarities, of course.
679 * nntp:: Reading news from a different NNTP server
680 * nnspool:: Reading news from the local spool
681 * nnvirtual:: Combining articles from many newsgroups
682 * Mail:: Reading your personal mail with Gnus
685 @vindex gnus-activate-foreign-newsgroups
686 If the @code{gnus-activate-foreign-newsgroups} is t, Gnus will
687 check all foreign newsgroup at startup. This might take quite a while,
688 especially if you subscribe to lots of groups from different NNTP
689 servers. It is @code{nil} by default, which means that you won't be told
690 whether there are new articles in these groups. How many unread articles
691 there are will be determined when, or if, you decide to enter them.
696 Subscribing to a foreign group from an NNTP server is rather easy. You
697 just specify @code{nntp} as method and the address of the NNTP server as
700 The name of the foreign newsgroup can be the same as a native
701 newsgroup. However, two foreign newsgroup can not have the same names.
706 Subscribing to a foreign group from the local spool is extremely easy,
707 even though I don't see quite why you'd want to. If you have a local
708 spool, why don't you use that as the default method?
710 Anyways, you just specify @code{nnspool} as the method and @samp{""} as
714 @subsection nnvirtual
716 A @dfn{virtual newsgroup} is really nothing more than a collection of
719 You specify @code{nnvirtual} as the method and a regular expression that
720 says which newsgroups that you wish to have in this one as the address.
722 For instance, if you are tired of reading many small newsgroup, you can
723 put them all in one big newsgroup, and then grow tired of reading one
724 big, unwieldy newsgroup. The joys of computing!
727 "^alt\\.fan\\.andrea-dworkin$\\|rec\\.dworkin.*"
730 These newsgroups can be native or foreign; everything should work
731 smoothly, but if your computer should explode, it was probably my
732 fault. (Including other virtual newsgroups in this one will probably
733 confuse Gnus, so don't do that.)
735 One limitation, however - all newsgroups that are included in
736 a virtual newsgroup has to be alive (ie. subscribed or unsubscribed). In
737 fact, if you include a newsgroup in a virtual newsgroup, and it was
738 killed, it will be subscribed automagically.
743 Reading mail with a newsreader - isn't that just plain WeIrD? But of
747 * Creating Mail Newsgroups:: How to create mail newsgroups (duh).
748 * Expiring Old Mail Articles:: Yes.
751 Gnus will read the mail spool when you activate the newsgroup. The mail
752 file is first copied to your home directory. What happens after that
753 depends on what format you want to store you mail in.
756 * nnmail:: Using the quite standard Un*x mbox.
757 * nnrmail:: Many Emacs programs use the rmail babyl format.
758 * nnml:: Store your mail in a private spool?
761 @vindex nnmail-read-incoming-hook
762 The mail backends all call @code{nnmail-read-incoming-hook} after
763 reading new mail. You can use this hook to notify any mail watch
764 programs, if you want to.
766 Gnus gives you all the opportunity you want for shooting yourself in
767 your foot. Let's say you create a newsgroup that will contain all the
768 mail you get from your boss. And then you accidentally unsubscribe from
769 the newsgroup. Gnus will still put all the mail from your boss in the
770 unsubscribed newsgroup, and so, when your boss mails you "Have that
771 report ready by Monday or you're fired!", you'll never see it and, come
772 Tuesday, you'll still beleive that you're gainfully unemplyed while you
773 really should be out collecting empty bottles to save up for next
776 @node Creating Mail Newsgroups
777 @subsubsection Creating Mail Newsgroups
779 There are two ways of making Gnus read your personal, private, secret
780 mail. One is pretty easy, and the other requires minor tinkering.
782 @kindex M-x gnus-group-make-mail-groups (Summary)
783 First the easy way: Type @kbd{M-x gnus-group-make-mail-groups}. That
784 will create a newsgroup called @samp{mail.misc} that will contain all
787 Then the hard(er) way.
789 @vindex nnmail-split-methods
790 Set the variable @code{nnmail-split-methods} to specify how the incoming
791 mail is to be split into newsgroups.
794 (setq nnmail-split-methods
795 '(("mail.junk" "^From:.*Lars Ingebrigtsen")
796 ("mail.crazzy" "^Subject:.*die\\|^Organization:.*flabby")
800 This variable is a list of lists, where the first element of each of
801 these lists contain the name of the mail newsgroup (they do not have to
802 be called something beginning with @samp{"mail"}, by the way), and the
803 second element is a regular expression used on the header of each mail
804 to determine if it belongs in this mail newsgroup.
806 The last of these newsgroups should always be a general one, and the
807 regular expression should *always* be @samp{""} so that it matches all
810 You should always do a @kbd{M-x gnus-group-make-mail-groups} after
811 changing this variable to create all the newsgroups you have specified.
813 @node Expiring Old Mail Articles
814 @subsubsection Expiring Old Mail Articles
816 Traditional mail readers have a tendency to remove mail articles when
817 you mark them as read, in some way. Gnus takes a fundamentally different
818 approach to mail reading.
820 Gnus basically considers mail just to be news that has been received in
821 a rather peculiar manner. It does not think that it has the power to
822 actually change the mail, or delete any mail messages. If you enter a
823 mail newsgroup, and mark articles as "read", or kill them in some other
824 fashion, the mail articles will still exist on the system. I repeat:
825 Gnus will not delete your old, read mail. Unless you ask it to, of
828 To make Gnus get rid of your unwanted mail, you have to mark the
829 articles as @dfn{expirable}. This does not mean that the articles will
830 disappear right away, however. In general, a mail article will be
831 deleted from your system if, 1) it is marked as expirable, AND 2) it is
832 more than one week old. If you do not mark an article as expirable, it
833 will remain on your system until hell freezes over.
835 @vindex gnus-auto-expirable-newsgroups
836 You do not have to mark articles as expirable by
837 hand. Newsgroups that match the regular expression
838 @code{gnus-auto-expirable-newsgroups} will have all articles that you
839 read marked as expirable automatically. All articles that are marked as
840 expirable have an "X" in the third column in the Summary buffer.
842 Let's say you subscribe to a couple of mailing lists, and you want the
843 articles you have read to disappear after a while:
846 (setq gnus-auto-expirable-newsgroups
847 "^mail.nonsense-list\\|^mail.nice-list")
850 @vindex nnmail-expiry-wait
851 The @code{nnmail-expiry-wait} variable supplies the default time an
852 expirable article has to live. The default is 7 - seven days.
854 Gnus also supplies a function that lets you fine-tune how long articles
855 are to live, based on what newsgroup they are in. Let's say you want to
856 have one month expiry period in the @samp{mail.private} newsgroup, a
857 one day expiry period in the @samp{mail.junk} newsgroup, and a six day
858 expiry period everywhere else:
861 (setq nnmail-expiry-wait-function
863 (cond ((string= group "mail.private")
865 ((string= group "mail.junk")
872 @subsubsection nnmail
874 @vindex nnmail-active-file
875 @vindex nnmail-mbox-file
876 The @dfn{nnmail} backend will use the standard Un*x mbox file to store
877 mail. The path of the mbox file is given by the @code{nnmail-mbox-file}
878 variable. In addition, Gnus needs to store information about active
879 articles. The file specified by @code{nnmail-active-file} will be used
883 @subsubsection nnrmail
885 @vindex nnrmail-active-file
886 @vindex nnrmail-mbox-file
887 The @dfn{nnrmail} backend will use a babyl mail box to store mail. The
888 path of the rmail mail box file is given by the @code{nnrmail-mbox-file}
889 variable. In addition, Gnus needs to store information about active
890 articles. The file specified by @code{nnrmail-active-file} will be used
896 The spool mail format (@code{nnml}) isn't compatible with any other
897 known format. It should be used with some caution.
899 @vindex nnml-directory
900 If you use this backend, Gnus will split all incoming mail into files;
901 one file for each mail and put the articles into the correct directories
902 under the directory specified by the @code{nnml-directory} variable. The
903 default value is @samp{"~/Mail/"}.
905 You do not have to create any directories beforehand; Gnus will take
908 If you have a strict limit as to how many files you are allowed to store
909 in your account, you should not use this backend. As each mail gets its
910 own file, you might very well occupy thousands of inodes within a few
911 weeks. If this is no problem for you, and it isn't a problem for you
912 having your friendly systems administrator walking around, madly,
913 shouting "Who is eating all my inodes?! Who? Who!?!", then you should
914 know that this is probably the fastest format to use. You do not have to
915 trudge through a big mbox file just to read your new mail.
918 @section Listing Groups
923 @findex gnus-group-list-groups
924 List all subscribed groups that have unread articles
925 (@code{gnus-group-list-groups}).
926 If the numeric prefix is used, this command will list only newsgroups of
927 level ARG and lower. By default, it only lists newsgroups of level five
928 or lower (ie. just subscribed groups).
931 @findex gnus-group-list-all-groups
932 List all subscribed and unsubscribed newsgroups, whether they have
933 unread articles or not (@code{gnus-group-list-all-groups}).
934 If the numeric prefix is used, this command will list only newsgroups of
935 level ARG and lower. By default, it lists newsgroups of level seven or
936 lower (ie. just subscribed and unsubscribed groups).
938 @kindex C-c C-k (Group)
939 @findex gnus-group-list-killed
940 List all killed newsgroups (@code{gnus-group-list-killed}).
942 @kindex C-c C-z (Group)
943 @findex gnus-group-list-zombies
944 List all zombie newsgroups (@code{gnus-group-list-zombies}).
947 @node Newsgroup Maintenance
948 @section Newsgroup Maintenance
953 @findex gnus-group-check-bogus-groups
954 Check bogus groups and delete them
955 (@code{gnus-group-check-bogus-groups}).
958 @findex gnus-find-new-newsgroups
959 Find new newsgroups (@code{gnus-find-new-newsgroups}).
961 @kindex C-c C-x (Group)
962 @findex gnus-group-expire-articles
963 Run all expirable articles in the current newsgroup through the expiry
964 process (if any) (@code{gnus-group-expire-articles}).
966 @kindex C-c M-C-x (Group)
967 @findex gnus-group-expire-all-groups
968 Run all articles in all newsgroups through the expiry process
969 (@code{gnus-group-expire-all-groups}).
972 @node Browse Foreign Server
973 @section Browse Foreign Server
978 @findex gnus-group-browse-foreign-server
979 You will be queried for a select method and a server name. Gnus will
980 then attempt to contact this server and let you browse the newsgroups
981 there (@code{gnus-group-browse-foreign-server}).
984 A new buffer with a list of available newsgroups will appear. This
985 buffer will be in the @code{gnus-browse-server-mode}. This buffer looks
986 a bit (well, a lot) like a normal Newsgroup buffer, but with one major
987 difference - you can't enter any of the newsgroups. If you want to read
988 any of the news available on that server, you have to subscribe to the
989 newsgroups you think may be interesting, and then you have to exit this
990 buffer. The new groups will be added to the Newsgroup buffer, and then
991 you can read them as you would any other newsgroup.
993 Here's a list of keystrokes available in the browse mode:
999 @findex gnus-group-next-group
1000 Go to the next group (@code{gnus-group-next-group}).
1002 @kindex C-p (Browse)
1004 @findex gnus-group-prev-group
1005 Go to the previous group (@code{gnus-group-prev-group}).
1008 @findex gnus-browse-unsubscribe-current-group
1009 Unsubscribe to the current group, or, as will be the case here,
1010 subscribe to it (@code{gnus-browse-unsubscribe-current-group}).
1013 @findex gnus-browse-exit
1014 Exit browse mode (@code{gnus-browse-exit}).
1017 @findex gnus-browse-describe-briefly
1018 Describe browse mode briefly (well, there's not much to describe, is
1019 there) (@code{gnus-browse-describe-briefly}).
1023 @section Exiting Gnus
1025 Yes, Gnus is exiting.
1030 @findex gnus-group-suspend
1031 Suspend Gnus (@code{gnus-group-suspend}).
1034 @findex gnus-group-exit
1035 Quit Gnus (@code{gnus-group-exit}).
1038 @findex gnus-group-quit
1039 Quit Gnus without saving any startup files (@code{gnus-group-quit}).
1042 @vindex gnus-exit-gnus-hook
1043 @vindex gnus-suspend-gnus-hook
1044 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
1045 @code{gnus-exit-gnus-hook} is called when you quit Gnus.
1047 @node Misc Newsgroup Stuff
1048 @section Misc Newsgroup Stuff
1053 @findex gnus-group-get-new-news
1054 Check server for new articles.
1055 If the numeric prefix is used, this command will check only newsgroups of
1056 level ARG and lower (@code{gnus-group-get-new-news}).
1059 @findex gnus-group-restart
1060 Restart Gnus (@code{gnus-group-restart}).
1063 @findex gnus-group-describe-group
1064 Give a description of the current newsgroup
1065 (@code{gnus-group-describe-group}).
1068 @findex gnus-group-post-news
1069 Post an article to a newsgroup (@code{gnus-group-post-news}).
1072 @findex gnus-group-mail
1073 Mail a message somewhere (@code{gnus-group-mail}).
1075 @kindex C-x C-t (Group)
1076 @findex gnus-group-transpose-groups
1077 Transpose two newsgroups (@code{gnus-group-transpose-groups}).
1080 @findex gnus-version
1081 Display current Gnus version numbers (@code{gnus-version}).
1084 @findex gnus-group-describe-briefly
1085 Give a very short help message (@code{gnus-group-describe-briefly}).
1087 @kindex C-c C-i (Group)
1088 @findex gnus-info-find-node
1089 Go to the Gnus info node (@code{gnus-info-find-node}).
1092 @vindex gnus-group-prepare-hook
1093 @code{gnus-group-prepare-hook} is called after the newsgroup list is
1094 created in the Newsgroup buffer. It may be used to modify the newsgroup
1095 buffer in some strange, unnatural way.
1097 @node The Summary Buffer
1098 @chapter The Summary Buffer
1100 A line for each article is displayed in the Summay buffer. You can move
1101 around, read articles, post articles and reply to them.
1104 * Summary Buffer Format:: Deciding how the summar buffer is to look
1105 * Summary Manouvering:: Moving around the Summary buffer
1106 * Choosing Articles:: Reading articles
1107 * Paging the Article:: Scrolling the current article
1108 * Reply Followup and Post:: Posting articles
1109 * Cancelling and Superceding:: "Whoops, I shouldn't have called him that"
1110 * Ticking and Marking:: Marking articles as read, expirable, etc.
1111 * Threading:: How threads are made
1112 * Exiting the Summary Buffer:: Returning to the Newsgroup buffer
1113 * Saving Articles:: Ways of customizing article saving
1114 * Decoding Articles:: Gnus can treat series of (uu)encoded articles.
1115 * Various Article Stuff:: Various stuff dealing with articles
1116 * Summary Sorting:: You can sort the summary buffer four ways
1117 * Finding the Parent:: No child support? Get the parent
1118 * Kill Files:: Maintaining a kill file
1119 * Various Summary Stuff:: What didn't fit anywhere else
1122 @node Summary Buffer Format
1123 @section Summary Buffer Format
1125 @vindex gnus-summary-line-format
1126 You can change the format of the lines in the summary buffer by changing
1127 the @code{gnus-summary-line-format} variable. It works along the same
1128 lines a a normal @code{format} string, with some extensions.
1130 The default string is @samp{"%U%R%X %I[%3L: %-20,20n]%T %S\n"}.
1132 The following format specification characters are understood:
1142 The name (from the @code{From} header field)
1144 The address (from the @code{From} header field)
1146 Number of lines in the article
1148 Indentation based on thread level
1150 Nothing if the article is a root and lots of spaces if it isn't (it
1151 pushes everything after it off the screen)
1170 No elements are required, except the @samp{%U}, @samp{%R} and @samp{%X}
1171 fields which have to be at the beginning of the line for reasons of
1172 efficiency. If you try to remove those, or change them, you'll probably
1175 @vindex gnus-summary-mode-line-format
1176 You can also change the format of the Summary mode bar. Set
1177 @code{gnus-summary-mode-line-format} to whatever you like. Here's what
1178 elements you have to play with:
1184 Current article number
1188 Number of unread articles in this group
1190 Number of unselected articles in this group
1192 A string with the number of unread and unselected articles represented
1193 either as @samp{<%U(+%u) more>} if there are both unselected articles,
1194 and just as @samp{<%U more>} if there are just unread articles and no
1198 @node Summary Manouvering
1199 @section Summary Manouvering
1201 All the straight movement commands understand the numeric prefix and
1202 behave pretty much as you'd expect.
1204 None of these commands select articles.
1208 @kindex C-n (Summary)
1209 @kindex down (Summary)
1210 @findex gnus-summary-next-subject
1211 Go to the next subject line (@code{gnus-summary-next-subject}).
1213 @kindex C-p (Summary)
1214 @kindex up (Summary)
1215 @findex gnus-summary-prev-subject
1216 Go to the previous subject line (@code{gnus-summary-prev-subject}).
1218 @kindex M-n (Summary)
1219 @findex gnus-summary-next-unread-subject
1220 Go to the next summary line of an unread article
1221 (@code{gnus-summary-next-unread-subject}).
1223 @kindex M-p (Summary)
1224 @findex gnus-summary-prev-unread-subject
1225 Go to the previous summary line of an unread article
1226 (@code{gnus-summary-prev-unread-subject}).
1229 @findex gnus-summary-goto-subject
1230 Ask for an article number and then go to this summary line
1231 (@code{gnus-summary-goto-subject}).
1234 @findex gnus-summary-goto-last-article
1235 Go to the summary line of the previous article
1236 (@code{gnus-summary-goto-last-article}).
1239 @vindex gnus-auto-select-next
1240 If you are at the end of the newsgroup and issue one of the movement
1241 commands, Gnus will offer to go to the next newsgroup. If
1242 @code{gnus-auto-select-next} is t and the next newsgroup is empty, Gnus
1243 will exit Summary mode and return to the Newsgroup buffer. If this
1244 variable is neither t nor nil, Gnus will select the next newsgroup, no
1245 matter if it has any unread articles or not. As a special case, if this
1246 variable equals @code{quietly}, Gnus will select the next newsgroup
1247 without asking for confirmation. Also see @code{gnus-keep-same-level}.
1249 @vindex gnus-auto-center-summary
1250 If @code{gnus-auto-center-summary} is non-nil, Gnus will keep the point
1251 in the Summary buffer centered at all times. This makes things quite
1252 tidy, but if you have a slow network connection, or do simply not like
1253 this un-Emacsism, you can set this variable to nil to get the normal
1254 Emacs scrolling action.
1256 @node Choosing Articles
1257 @section Choosing Articles
1259 All the movement commands understand the numeric prefix.
1261 All the following commands select an article.
1265 @kindex SPACE (Summary)
1266 @findex gnus-summary-next-page
1267 Select the current article, of, if that one's read already, the next
1268 unread article (@code{gnus-summary-next-page}).
1271 @findex gnus-summary-next-unread-article
1272 Go to next unread article (@code{gnus-summary-next-unread-article}).
1275 @findex gnus-summary-prev-unread-article
1276 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
1279 @findex gnus-summary-next-article
1280 Go to the next article (@code{gnus-summary-next-article}).
1283 @findex gnus-summary-prev-article
1284 Go to the previous article (@code{gnus-summary-prev-article}).
1286 @kindex M-C-n (Summary)
1287 @findex gnus-summary-next-same-subject
1288 Go to the next article with the same subject
1289 (@code{gnus-summary-next-same-subject}).
1291 @kindex M-C-p (Summary)
1292 @findex gnus-summary-prev-same-subject
1293 Go to the previous article with the same subject
1294 (@code{gnus-summary-prev-same-subject}).
1297 @findex gnus-summary-first-unread-article
1298 Go to the first unread article (@code{gnus-summary-first-unread-article}).
1301 @vindex gnus-auto-extend-newsgroup
1302 All the movement commands will try to go to the previous (or next)
1303 article, even if that article isn't displayed in the Summary buffer if
1304 @code{gnus-auto-extend-newsgroup} is non-nil. Gnus will fetch the
1305 article from the server and present it in the Article buffer.
1307 @vindex gnus-select-article-hook
1308 @code{gnus-select-article-hook} is called whenever an article is
1309 selected. By default it makes any threads hidden under the current
1312 @vindex gnus-mark-article-hook
1313 @code{gnus-mark-article-hook} is called when an article is selected for
1314 the first time. It is intended to be used for marking articles as read
1315 automatically when articles are selected.
1317 @node Paging the Article
1318 @section Scrolling the Article
1322 @kindex SPACE (Summary)
1323 @findex gnus-summary-next-page
1324 Pressing @kbd{SPACE} will scroll the current article forward one page,
1325 or, if you have come to the end of the current article, will choose the
1326 next article (@code{gnus-summary-next-page}).
1328 @kindex DEL (Summary)
1329 @findex gnus-summary-prev-page
1330 Scoll the current article back one page (@code{gnus-summary-prev-page}).
1332 @kindex RETURN (Summary)
1333 @findex gnus-summary-scroll-up
1334 Scroll the current article one line forward
1335 (@code{gnus-summary-scroll-up}).
1338 @findex gnus-summary-beginning-of-article
1339 Scroll to the beginning of the article
1340 (@code{gnus-summary-beginning-of-article}).
1343 @findex gnus-summary-end-of-article
1344 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
1347 @node Reply Followup and Post
1348 @section Reply Followup and Post
1350 @kindex C-c C-c (Post)
1351 All the commands for posting and mailing will put you in a post or mail
1352 buffer where you can edit the article all you like, before you send the
1353 article by pressing @kbd{C-c C-c}.
1358 @findex gnus-summary-post-news
1359 Post an article to the current newsgroup
1360 (@code{gnus-summary-post-news}).
1363 @findex gnus-summary-followup
1364 Post a followup to the current article (@code{gnus-summary-followup}).
1367 @findex gnus-summary-followup-with-original
1368 Post a followup to the current article and include the original message
1369 (@code{gnus-summary-followup-with-original}).
1372 @findex gnus-summary-reply
1373 Mail a reply to the author of the current article
1374 (@code{gnus-summary-reply}).
1377 @findex gnus-summary-reply-with-original
1378 Mail a reply to the author of the current article and include the
1379 original message (@code{gnus-summary-reply-with-original}).
1381 @kindex C-c C-f (Summary)
1382 @findex gnus-summary-mail-forward
1383 Forward the current article to some other person
1384 (@code{gnus-summary-mail-forward}).
1387 @findex gnus-summary-mail-other-window
1388 Send a mail to some other person
1389 (@code{gnus-summary-mail-other-window}).
1392 @vindex gnus-required-headers
1393 Gnus determines which headers it should generate in outgoing posts by
1394 consulting the @code{gnus-required-headers} variable. This is a list of
1395 headers that Gnus makes sure is present in all outgoing posts before it
1398 @vindex gnus-followup-to-function
1399 @vindex gnus-reply-to-function
1400 Gnus uses the normal methods to determine where replys and follow-ups
1401 are to go, but you can change the behaviour to suit your need by
1402 fiddling with the @code{gnus-reply-to-function} and
1403 @code{gnus-followup-to-function} variables.
1405 To take "reply" as an example: If you want the replies to go to the
1406 "sender" instead of the "from" in the newsgroup "mail.stupid-list", you
1407 could do something like this:
1410 (setq gnus-reply-to-function
1412 (cond ((string= group "mail.stupid-list")
1413 (mail-fetch-field "sender"))
1418 These functions will be called with point in the buffer of the article
1419 that is being replied to (or followed up).
1421 @vindex mail-signature
1422 @vindex gnus-signature-file
1423 If @code{gnus-signature-file} is non-nil, it should be the name of a
1424 file containing a signature (@samp{~/.signature} by default). This
1425 signature will be appended to all outgoing post. Most people find it
1426 more convenient to use @code{mail-signature}, which does the same, but
1427 inserts the signature into the buffer before you start editing the post
1428 (or mail). So - if you have both of these variables set, you will get
1431 @vindex gnus-post-prepare-function
1432 In any case, @code{gnus-post-prepare-function} is called with the name
1433 of the current newsgroup after the post buffer has been initialized, and
1434 can be used for inserting a signature. Nice if you use different
1435 signatures in different newsgroups.
1437 @vindex gnus-auto-mail-to-author
1438 If @code{gnus-auto-mail-to-author} is non-nil, Gnus will send a mail
1439 with a copy of all follow-ups to the authors of the articles you follow
1440 up. It's nice in one way - you make sure that the person you are
1441 responding to gets your response. Other people loathe this method and
1442 will hate you dearly for it, because it means that they will first get a
1443 mail, and then have to read the same article later when they read the
1444 news. It is nil by default.
1446 @vindex gnus-mail-send-method
1447 @code{gnus-mail-send-method} says how a mail should be mailed. It uses
1448 the function in the @code{send-mail-function} as the default.
1450 @vindex gnus-prepare-article-hook
1451 @code{gnus-prepare-article-hook} is called before the header fields have
1452 been prepared. By default it inserts the signature specified by
1453 @code{gnus-signature-file}.
1455 @vindex gnus-inews-article-hook
1456 @code{gnus-inews-article-hook} is called right before the article is
1457 posted. By default it handles FCC processing (ie. saving the article to
1460 @node Cancelling and Superceding
1461 @section Cancelling Articles
1463 Have you ever written something, and then decided that you really,
1464 really, really hadn't posted that?
1466 Well, you can't cancel mail, but you can cancel posts.
1468 @findex gnus-summary-cancel-article
1470 Find the article you wish to cancel (you can only cancel your own
1471 articles, so don't try any funny stuff). Then press @kbd{C}
1472 (@code{gnus-summary-cancel-article}). Your article will be cancelled.
1474 Be aware, however, that not all sites honor cancels, so your article may
1475 live on in some parts of the world, while most sites will delete the
1478 If you discover that you have made some mistakes and want to do some
1479 corrections, you can post a @dfn{superceding} article that will replace
1480 your original article.
1482 @findex gnus-summary-supersede-article
1484 Go to the original article and press @kbd{S}
1485 (@code{gnus-summary-supersede-article}). You will be put in a buffer
1486 where you can edit the article all you want before sending it off the
1489 The same goes for superceding as for cancelling, only more so: Some
1490 sites do not honor superceding. On those sites, it will appear that you
1491 have posted almost the same article twice.
1493 If you have just posted the article, and changed your mind right away,
1494 there is a trick yuo can use to cancel/supersede the article without
1495 waiting for the article to appear on your site first. You simply return
1496 to the post buffer (which is called @code{*post-buf*}). There you will
1497 find the article you just posted, with all the headers intact. Change
1498 the @samp{Message-ID} header to a @samp{Cancel} or @samp{Supersedes}
1499 header by substituting one of those words for @samp{Message-ID}. Then
1500 just press @kbd{C-c C-c} to send the article as you would do
1501 normally. The previous article will be cancelled/superseded.
1503 @node Ticking and Marking
1504 @section Ticking and Marking
1506 There are four kinds of @dfn{marks}: Tick marks, process marks, read
1507 marks and expiry marks.
1509 @dfn{Ticked articles} are articles that will remain visible always. If
1510 you see an article that you find interesting, or you want to put off
1511 reading it, or replying to it, until sometime later, you'd typically
1512 tick it. However, articles can be expired, so if you want to keep an
1513 article forever, you'll have to save it. Ticked articles have a @samp{-}
1514 in the first column.
1516 Articles that are marked as read - are just that. They have a @samp{D}
1517 in the first column. Unread articles have a space in the first column.
1519 You can also mark articles as @dfn{expirable} (or have them marked as
1520 such automatically). That doesn't make much sense in normal newsgroups,
1521 because a user does not control the expiring of news articles, but in
1522 mail newsgroups, for instance, articles that are marked as
1523 @dfn{expirable} can be deleted by Gnus at any time. Expirable articles
1524 have a @samp{X} in the third column.
1526 Finally we have the @dfn{process mark}. A variety of commands react to
1527 the presence of the process mark. For instance, @kbd{C-c C-v M-C-v}
1528 (@code{gnus-uu-decode-and-view-marked-articles}) will uudecode and view
1529 all artciles that have been marked with the process mark. Articles
1530 marked with the process mark have a @samp{#} in the third column.
1532 All the marking commands understand the numeric prefix.
1537 @findex gnus-summary-mark-as-unread-forward
1538 Tick the current article (@code{gnus-summary-mark-as-unread-forward}).
1541 @findex gnus-summary-mark-as-read-forward
1542 Mark the current article as read
1543 (@code{gnus-summary-mark-as-read-forward}).
1546 @findex gnus-summary-kill-same-subject-and-select
1547 Mark all articles that have the same subject as the current one as read,
1548 and then select the next unread article
1549 (@code{gnus-summary-kill-same-subject-and-select}).
1551 @kindex C-k (Summary)
1552 @findex gnus-summary-kill-same-subject
1553 Mark all articles that have the same subject as the current one as read
1554 (@code{gnus-summary-kill-same-subject}).
1556 @kindex M-u (Summary)
1557 @findex gnus-summary-clear-mark-forward
1558 Clear tick and read marks from the current article
1559 (@code{gnus-summary-clear-mark-forward}).
1562 @findex gnus-summary-mark-as-expirable
1563 Mark the current article as expirable
1564 (@code{gnus-summary-mark-as-expirable}).
1567 @findex gnus-summary-unmark-as-expirable
1568 Remove the expiry mark from the current article
1569 (@code{gnus-summary-unmark-as-expirable}).
1571 @kindex M-d (Summary)
1572 @findex gnus-summary-delete-marked-as-read
1573 Remove all deleted articles from the Summary buffer
1574 (@code{gnus-summary-delete-marked-as-read}).
1576 @kindex M-C-d (Summary)
1577 @findex gnus-summary-delete-marked-with
1578 Ask for a mark and then remove all articles that have been marked with
1579 that mark (@code{gnus-summary-delete-marked-with}).
1582 There are a few functions for setting the process mark:
1587 @findex gnus-summary-mark-article-as-processable
1588 Mark the current article with the process mark
1589 (@code{gnus-summary-mark-article-as-processable}).
1590 @findex gnus-summary-unmark-article-as-processable
1592 @kindex M-# (Summary)
1593 Remove the process mark from the current article
1594 (@code{gnus-summary-unmark-article-as-processable}).
1596 @kindex C-c M-# (Summary)
1597 @findex gnus-summary-unmark-all-articles-as-processable
1598 Remove the process mark from all articles
1599 (@code{gnus-summary-unmark-all-articles-as-processable}).
1601 @kindex C-c C-v C-r (Summary)
1602 @findex gnus-uu-mark-by-regexp
1603 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}).
1605 @kindex C-c C-v r (Summary)
1606 @findex gnus-uu-mark-region
1607 Mark articles in the region (@code{gnus-uu-mark-region}).
1609 @kindex C-c C-v t (Summary)
1610 @findex gnus-uu-mark-thread
1611 Mark all articles in the current (sub)thread
1612 (@code{gnus-uu-mark-thread}).
1615 @findex gnus-uu-marked-universal-argument
1616 @kindex C-c C-v C-u (Summary)
1617 Finally, we have @kbd{C-c C-v C-u}
1618 (@code{gnus-uu-marked-universal-argument}) that will perform any
1619 operation on all articles that have been marked with the process mark.
1624 Gnus @dfn{threads} articles by default. @dfn{Threading} is to put
1625 replies to articles directly after the articles they reply to - in a
1626 hierarchial fashion.
1629 * Customizing Threading:: Variables you can change to affect the threading
1630 * Threading Commands:: Thread based commands in the Summary Buffer
1633 @node Customizing Threading
1634 @subsection Customizing Threading
1637 @item gnus-show-threads
1638 @vindex gnus-show-threads
1639 If this variable is nil, no threading will be done, and all of the rest
1640 of the variables here will have no effect. Turning threading off will
1641 speed newsgroup selection up a bit, but it is sure to make reading
1642 slower and more awkward.
1643 @item gnus-gather-loose-threads
1644 @vindex gnus-gather-loose-threads
1645 If non-nil, Gnus will gather all loose subtrees into one big tree and
1646 create a dummy root at the top. (Wait a minute. Root at the top? Yup.)
1647 Loose subtrees occur when the real root has expired, or you've read it
1648 in a previous session.
1649 @item gnus-summary-print-dummy-lines
1650 @vindex gnus-summary-print-dummy-lines
1651 If non-nil, Gnus will print those dummy roots described above. It it is
1652 nil, the dummy roots won't be printed, but the gathering will still take
1653 place (if @code{gnus-gather-loose-threads} is non-nil, that is.)
1654 @item gnus-thread-hide-subtree
1655 @vindex gnus-thread-hide-subtree
1656 If non-nil, all subtrees will be hidden when the Summary buffer is
1658 @item gnus-thread-hide-killed
1659 @vindex gnus-thread-hide-killed
1660 if you kill a thread and this variable is non-nil, the subtree will be
1662 @item gnus-thread-ignore-subject
1663 @vindex gnus-thread-ignore-subject
1664 Sometimes somebody changes the subject in the middle of a thread. If
1665 this variable is non-nil, the change in subject is ignored. If it is
1666 nil, which is the default, a change in the subject will result in a new
1668 @item gnus-thread-indent-level
1669 @vindex gnus-thread-indent-level
1670 This is a number which says how many spaces to indent a thread. The
1671 default is @samp{4}.
1674 @node Threading Commands
1675 @subsection Threading Commands
1679 @kindex M-C-k (Summary)
1680 @findex gnus-summary-kill-thread
1681 Mark all articles under the current one as read
1682 (@code{gnus-summary-kill-thread}). If the prefix argument is positive,
1683 remove all marks. If the prefix argument is negative, tick articles.
1685 @kindex M-C-t (Summary)
1686 @findex gnus-summary-toggle-threads
1687 Toggle showing threads (@code{gnus-summary-toggle-threads}).
1689 @kindex M-C-s (Summary)
1690 @findex gnus-summary-show-thread
1691 Show the thread hidden under the current article, if any
1692 (@code{gnus-summary-show-thread}).
1694 @kindex M-C-h (Summary)
1695 @findex gnus-summary-hide-thread
1696 Hide the current (sub)thread (@code{gnus-summary-hide-thread}).
1699 The following commands are all thread movement commands. They all
1700 understand the numeric prefix.
1704 @kindex M-C-f (Summary)
1705 @findex gnus-summary-next-thread
1706 Go to the next thread (@code{gnus-summary-next-thread}).
1708 @kindex M-C-b (Summary)
1709 @findex gnus-summary-prev-thread
1710 Go to the previous thread (@code{gnus-summary-prev-thread}).
1712 @kindex M-C-d (Summary)
1713 @findex gnus-summary-down-thread
1714 Descend the thread (@code{gnus-summary-down-thread}).
1716 @kindex M-C-u (Summary)
1717 @findex gnus-summary-up-thread
1718 Ascend the thread (@code{gnus-summary-up-thread}).
1721 @node Exiting the Summary Buffer
1722 @section Exiting the Summary Buffer
1727 @findex gnus-summary-exit
1728 Exit the current newsgroup and update all the information
1729 (@code{gnus-summary-exit}).
1732 @findex gnus-summary-quit
1733 Exit the current newsgroup without updating any information
1734 (@code{gnus-summary-quit}).
1737 @findex gnus-summary-catchup-and-exit
1738 Mark all articles in the newsgroup as read and exit
1739 (@code{gnus-summary-catchup-and-exit}).
1742 @vindex gnus-exit-group-hook
1743 @code{gnus-exit-group-hook} is called when you exit the current
1746 @vindex gnus-use-cross-reference
1747 When you exit the Summary buffer, the data on the current newsgroup will
1748 be updated (which articles you have read, which articles you have
1749 replied to, etc.) If the @code{gnus-use-cross-reference} variable is
1750 non-nil, articles that are cross-referenced to this newsgroup, and are
1751 marked as read, will also be marked as read in the other newsgroups they
1752 were cross-posted to. This ensures that you'll never have to read the
1753 same article more than once.
1755 Unless, of course, somebody has posted it to several newsgroups
1758 One other thing that may cause Gnus to not do the cross-posting thing
1759 correctly is if you use an NNTP server that supports xover (which is
1760 very nice, because it speeds things up considerably) which does not
1761 include the Xref header in its NOV lines. This is Evil, but it's
1762 common. Gnus tries to Do The Right Thing even with xover by registering
1763 the Xref lines of all articles you actually read, but if you kill the
1764 articles, or just mark them as read without reading them, Gnus will not
1765 get a chance to snoop the Xref lines out of these articles, and will be
1766 unable to use the cross reference mechanism.
1768 @vindex nntp-xover-is-evil
1769 If you want Gnus to get the Xrefs right all the time, you have to set
1770 @code{nntp-xover-is-evil} to t, which slows things down considerably.
1774 @node Saving Articles
1775 @section Saving Articles
1777 Gnus can save articles in a number of ways. Below is the documentation
1778 for saving articles in a fairly straight-forward fashion (ie. little
1779 processing of the article is done before it is saved). For a different
1780 approach (uudecoding, unsharing, digesting) see gnus-uu.
1782 @vindex gnus-save-all-headers
1783 If @code{gnus-save-all-headers} is non-nil, Gnus will not delete
1784 unwanted headers before saving the article.
1789 @findex gnus-summary-save-article
1790 Save the current article (@code{gnus-summary-save-article}).
1792 @kindex C-o (Summary)
1793 @findex gnus-summary-save-in-mail
1794 Save the current article in mail format
1795 (@code{gnus-summary-save-in-mail}).
1798 @vindex gnus-default-article-saver
1799 You can customize the @code{gnus-default-article-saver} variable to make
1800 Gnus what you want it to. You can use any of the four ready-made
1801 functions below, or you can create your own.
1804 @item gnus-summary-save-in-rmail
1805 @vindex gnus-summary-save-in-rmail
1806 This is the format Gnus uses by default, @dfn{babyl}.
1807 Uses the function in the @code{gnus-rmail-save-name} variable to get a
1808 file name to save the article in. The default is
1809 @code{gnus-plain-save-name}.
1810 @item gnus-summary-save-in-mail
1811 @vindex gnus-summary-save-in-mail
1812 Save in a Unix mail (mbox) file.
1813 Uses the function in the @code{gnus-mail-save-name} variable to get a
1814 file name to save the article in. The default is
1815 @code{gnus-plain-save-name}.
1816 @item gnus-summary-save-in-file
1817 @vindex gnus-summary-save-in-file
1818 Append the article straight to an ordinary file.
1819 Uses the function in the @code{gnus-file-save-name} variable to get a
1820 file name to save the article in. The default is
1821 @code{gnus-numeric-save-name}.
1822 @item gnus-summary-save-in-folder
1823 @vindex gnus-summary-save-in-folder
1824 Save the article to an MH folder using @code{rcvstore} from the MH
1828 All of these functions, except for the last one, will save the article
1829 in the @code{gnus-article-save-directory}, which is initialized from the
1830 @samp{SAVEDIR} environment variable.
1832 As you can see above, the functions use different functions to find a
1833 suitable name of a file to save the article in. Below is a list of
1834 available functions that generates names:
1837 @item gnus-Numeric-save-name
1838 @findex gnus-Numeric-save-name
1839 Generates file names that look like @samp{~/News/Alt.andrea-dworkin/45}.
1840 @item gnus-numeric-save-name
1841 @findex gnus-numeric-save-name
1842 Generates file names that look like @samp{~/News/alt.andrea-dworkin/45}.
1843 @item gnus-Plain-save-name
1844 @findex gnus-Plain-save-name
1845 Generates file names that look like @samp{~/News/Alt.andrea-dworkin}.
1846 @item gnus-plain-save-name
1847 @findex gnus-plain-save-name
1848 Generates file names that look like @samp{~/News/alt.andrea-dworkin}.
1851 @vindex gnus-use-long-file-name
1852 Finally, you have the @code{gnus-use-long-file-name} variable. If it is
1853 nil, all the preceding functions will replace all periods (@samp{.}) in
1854 the newsgroup names with slashes (@samp{/}) - which means that the
1855 functions will generate hierarchies of directories instead of having all
1856 the files in the toplevel directory (@samp{~/News/alt/andrea-dworkin}
1857 instead of @samp{~/News/alt.andrea-dworkin}.)
1859 @node Decoding Articles
1860 @section Decoding Articles
1862 Gnus has a plethora of functions for handling series of (uu)encoded
1863 articles. Gnus can find out by itself what articles belong to one
1864 series, decode all the articles and unpack/view/save the resulting
1865 file(s). All these functions belong to the `gnus-uu' package and are
1866 reached from the Summary buffer as three-key keystrokes: @key{C-c C-v
1867 KEY}. That last key varies, of course, but all these functions use the
1868 @key{C-c C-v} prefix keystroke.
1870 Gnus guesses what articles are in the series according to the following
1871 simplish rule: The subjects must be (nearly) identical, except for the
1872 last two numbers of the line. (Spaces are largely ignored, however.)
1874 For example: If you choose a subject called @samp{cat.gif (2/3)}, Gnus
1875 will find all the articles that match the regexp @samp{^cat.gif
1876 ([0-9]+/[0-9]+).*$}.
1878 Subjects that are nonstandard, like @samp{cat.gif (2/3) Part 6 of a
1879 series}, will not be properly recognized by any of the automatic viewing
1880 commands, and you have to mark the articles manually with @key{#}.
1883 * Decoding Commands:: Decoding in various ways.
1884 * Setting the Process Mark:: You can mark which articles to work on.
1885 * Other Related Commands:: Other related commands.
1886 * Viewing Files:: You can view the resulting decoded files.
1887 * Decoding Variables:: No, you do not have to decode any variables.
1890 @node Decoding Commands
1891 @subsection Decoding Commands
1893 All the keystrokes for decoding follow a strict pattern.
1897 This is a function for decoding and viewing.
1899 This is a function for decoding and saving.
1900 @item C-c C-v M-C-KEY
1901 This is a function for decoding and viewing marked articles.
1903 This is a function for decoding and saving marked articles.
1907 * Decoding With uudecode:: The most common encoding on the net.
1908 * Decoding With unshar:: This is used some in source groups.
1909 * Decoding With Other Decoders:: Binhex and plain save.
1912 @node Decoding With uudecode
1913 @subsubsection Decoding With uudecode
1917 @kindex C-c C-v C-v (Summary)
1918 @findex gnus-uu-decode-and-view
1919 Decode and view the series of articles that the current article is a
1920 part of (@code{gnus-uu-decode-and-view}).
1922 @kindex C-c C-v v (Summary)
1923 @findex gnus-uu-decode-and-save
1924 Decode and save the series of articles that the current article is a
1925 part of (@code{gnus-uu-decode-and-save}).
1927 @kindex C-c C-v M-C-v (Summary)
1928 @findex gnus-uu-marked-decode-and-view
1929 Decode and view the marked articles
1930 (@code{gnus-uu-marked-decode-and-view}).
1932 @kindex C-c C-v M-v (Summary)
1933 @findex gnus-uu-marked-decode-and-view
1934 Decode and save the marked articles
1935 (@code{gnus-uu-marked-decode-and-view}).
1937 @kindex C-c C-v C-w (Summary)
1938 @findex gnus-uu-decode-and-view-all-articles
1939 Decode and view all articles in the newsgroup
1940 (@code{gnus-uu-decode-and-view-all-articles}).
1942 @kindex C-c C-v w (Summary)
1943 @findex gnus-uu-decode-and-save-all-articles
1944 Decode and save all articles in the newsgroup
1945 (@code{gnus-uu-decode-and-save-all-articles}).
1947 @kindex C-c C-v M-C-w (Summary)
1948 @findex gnus-uu-decode-and-view-all-marked-files
1949 Decode and view all series of articles that are marked
1950 (@code{gnus-uu-decode-and-view-all-marked-files}).
1952 @kindex C-c C-v M-w (Summary)
1953 @findex gnus-uu-decode-and-save-all-marked-files
1954 Decode and save all series of articles that are marked
1955 (@code{gnus-uu-decode-and-save-all-marked-files}).
1957 @kindex C-c C-v C-a (Summary)
1958 @findex gnus-uu-decode-and-view-all-articles
1959 Decode and view all unread articles in the newsgroup
1960 (@code{gnus-uu-decode-and-view-all-articles}).
1962 @kindex C-c C-v a (Summary)
1963 @findex gnus-uu-decode-and-save-all-articles
1964 Decode and save all unread articles in the newsgroup
1965 (@code{gnus-uu-decode-and-save-all-articles}).
1967 @kindex C-c C-v C-b (Summary)
1968 @findex gnus-uu-decode-and-show-in-buffer
1969 Decode the current article and show the result in the article
1970 buffer. This might be useful if somebody has encoded (parts of) an
1971 article, for some strange reason
1972 (@code{gnus-uu-decode-and-show-in-buffer}).
1975 The @code{gnus-uu-decode-and-save-all-marked-files} need some
1976 explanation. It allows you to mark all articles that are part of series
1977 of articles you are interested in in a newsgroup. You only have to mark
1978 one article for each series of articles you want, and then you call this
1979 function, which will find all articles that are part of the series you
1980 want. Is that clear? And they say it's a stupid idea getting drunk
1981 before writing documentation! Bah!
1983 @node Decoding With unshar
1984 @subsubsection Decoding With unshar
1986 Using @code{unshar} introduces rather large security holes - it actually
1987 runs the code it finds in the articles. So you should, at least, peek
1988 through the articles you want to unshar before using these functions.
1992 @kindex C-c C-v C-s (Summary)
1993 @findex gnus-uu-shar-and-view
1994 @kindex C-c C-v C-s (Summary)
1995 @findex gnus-uu-shar-and-view
1996 Unshar and view the series of articles that the current article is a
1997 part of (@code{gnus-uu-shar-and-view}).
1999 @kindex C-c C-v s (Summary)
2000 @findex gnus-uu-shar-and-save
2001 @kindex C-c C-v s (Summary)
2002 @findex gnus-uu-shar-and-save
2003 Unshar and save the series of articles that the current article is a
2004 part of (@code{gnus-uu-shar-and-save}).
2006 @kindex C-c C-v M-C-s (Summary)
2007 @findex gnus-uu-marked-shar-and-view
2008 @kindex C-c C-v M-C-s (Summary)
2009 @findex gnus-uu-marked-shar-and-view
2010 Unshar and view the marked articles
2011 (@code{gnus-uu-marked-shar-and-view}).
2013 @kindex C-c C-v M-s (Summary)
2014 @findex gnus-uu-marked-shar-and-view
2015 @kindex C-c C-v M-s (Summary)
2016 @findex gnus-uu-marked-shar-and-view
2017 Unshar and save the marked articles
2018 (@code{gnus-uu-marked-shar-and-view}).
2021 @node Decoding With Other Decoders
2022 @subsubsection Decoding With Other Decoders
2024 These commands are entry points to all the decoding methods Gnus knows -
2025 uudecode, unshar, unbinhex and save. You will be prompted for what
2026 method you want to employ.
2030 @kindex C-c C-v C-m (Summary)
2031 @findex gnus-uu-multi-decode-and-view
2032 Decode (by some method) and view the series of articles that the current
2033 article is a part of (@code{gnus-uu-multi-decode-and-view}).
2035 @kindex C-c C-v m (Summary)
2036 @findex gnus-uu-multi-decode-and-save
2037 Decode (by some method) and save the series of articles that the current
2038 article is a part of (@code{gnus-uu-multi-decode-and-save}).
2040 @kindex C-c C-v M-C-m (Summary)
2041 @findex gnus-uu-marked-multi-decode-and-view
2042 Decode (by some method) and view the marked articles
2043 (@code{gnus-uu-marked-multi-decode-and-view}).
2045 @kindex C-c C-v M-m (Summary)
2046 @findex gnus-uu-marked-multi-decode-and-view
2047 Decode (by some method) and save the marked articles
2048 (@code{gnus-uu-marked-multi-decode-and-view}).
2050 @kindex C-c C-v C-j (Summary)
2051 @findex gnus-uu-threaded-multi-decode-and-view
2052 Decode (by some method) and view all articles in the current thread
2053 (@code{gnus-uu-threaded-multi-decode-and-view}).
2055 @kindex C-c C-v C-j (Summary)
2056 @findex gnus-uu-threaded-multi-decode-and-view
2057 Decode (by some method) and save all articles in the current thread
2058 (@code{gnus-uu-threaded-multi-decode-and-view}).
2061 @node Setting the Process Mark
2062 @subsection Setting the Process Mark
2064 The process mark is used by other parts of Gnus, not just the `gnus-uu'
2065 package. However, this is where it is most useful, so it adds some
2066 further methods for setting the mark.
2070 @kindex C-c C-v C-r (Summary)
2071 @findex gnus-uu-mark-by-regexp
2072 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}).
2074 @kindex C-c C-v r (Summary)
2075 @findex gnus-uu-mark-region
2076 Mark all articles between point and mark (@code{gnus-uu-mark-region}).
2078 @kindex C-c C-v t (Summary)
2079 @findex gnus-uu-mark-thread
2080 Mark all articles downward in the current thread
2081 (@code{gnus-uu-mark-thread}).
2084 @node Other Related Commands
2085 @subsection Other Related Commands
2089 @kindex C-c C-v f (Summary)
2090 @findex gnus-uu-digest-and-forward
2091 Digest and forward all articles that are part of a series
2092 (@code{gnus-uu-digest-and-forward}).
2094 @kindex C-c C-v M-f (Summary)
2095 @findex gnus-uu-marked-digest-and-forward
2096 Digest and forward all marked articles
2097 (@code{gnus-uu-marked-digest-and-forward}).
2099 @kindex C-c C-v C-i (Summary)
2100 @findex gnus-uu-toggle-interactive-view
2101 Instead of having windows popping up automatically, it can be handy to
2102 view files interactivly, especially when viewing archives
2103 (@code{gnus-uu-toggle-interactive-view}).
2105 @kindex C-c C-v C-t (Summary)
2107 Toggle any of the most important @code{gnus-uu} variables
2108 (@code{gnus-uu-toggle-any-variable}).
2110 @kindex C-c C-v C-l (Summary)
2111 @findex gnus-uu-edit-begin-line
2112 Edit the @samp{begin} line of an uuencoded article, if any
2113 (@code{gnus-uu-edit-begin-line}).
2115 @kindex C-c C-v p (Summary)
2116 @findex gnus-uu-post-news
2117 Uuencode and post an file. If the file is large, it will be split into a
2118 series of articles that will be posted (@code{gnus-uu-post-news}).
2122 @subsection Viewing Files
2124 When using the view commands, @code{gnus-uu-decode-and-view} for
2125 instance, Gnus will (normally, see below) try to view the file according
2126 to the rules given in @code{gnus-uu-default-view-rules} and
2127 @code{gnus-uu-user-view-rules}. If it recognizes the file, it will
2128 display it immediately. If the file is some sort of archive, Gnus will
2129 attempt to unpack the archive and see if any of the files in the archive
2130 can be viewed. For instance, if you have a gzipped tar file
2131 @file{pics.tar.gz} containing the files @file{pic1.jpg} and
2132 @file{pic2.gif}, Gnus will uncompress and detar the main file, and then
2133 view the two pictures. This unpacking process is recursive, so if the
2134 archive contains archives of archives, it'll all be unpacked.
2136 If the view command doesn't recognise the file type, or can't view it
2137 because you don't have the viewer, or can't view *any* of the files in
2138 the archive, the user will be asked if she wishes to have the file saved
2139 somewhere. Note that if the decoded file is an archive, and Gnus
2140 manages to view some of the files in the archive, it won't tell the user
2141 that there were some files that were unviewable. Try interactive view
2142 for a different approach.
2144 @node Decoding Variables
2145 @subsection Decoding Variables
2148 * Rule Variables:: Variables that say how a file is to be viewed.
2149 * Other Decode Variables:: Other decode variables.
2152 @node Rule Variables
2153 @subsubsection Rule Variables
2155 Gnus uses @dfn{rule} variables to decide how to view a file. All these
2156 variables are on the form
2159 (list '(regexp1 command2)
2165 @item gnus-uu-user-view-rules
2166 @vindex gnus-uu-user-view-rules
2167 This variable is consulted first when viewing files. If you wish to use,
2168 for instance, @code{sox} to convert an @samp{.au} sound file, you could
2171 (setq gnus-uu-user-view-rules
2172 (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
2174 @item gnus-uu-user-view-rules-end
2175 @vindex gnus-uu-user-view-rules-end
2176 This variable is consulted if Gnus couldn't make any matches from the
2177 user and default view rules.
2178 @item gnus-uu-user-interactive-view-rules
2179 @vindex gnus-uu-user-interactive-view-rules
2180 This is the variable used instead of @code{gnus-uu-user-view-rules}
2181 when in interactive mode.
2182 @item gnus-uu-user-interactive-view-rules-end
2183 @vindex gnus-uu-user-interactive-view-rules-end
2184 This variable is used instead of @code{gnus-uu-user-view-rules-end} when
2185 in interactive mode.
2186 @item gnus-uu-user-archive-rules
2187 @vindex gnus-uu-user-archive-rules
2188 This variable can be used to say what comamnds should be used to unpack
2192 @node Other Decode Variables
2193 @subsubsection Other Decode Variables
2196 @item gnus-uu-ignore-files-by-name
2197 @vindex gnus-uu-ignore-files-by-name
2198 Files with name matching this regular expression won't be viewed.
2200 @item gnus-uu-ignore-files-by-type
2201 @vindex gnus-uu-ignore-files-by-type
2202 Files with a MIME type matching this variable won't be viewed. Note
2203 that Gnus tries to guess what type the file is based on the
2204 name. gnus-uu is not a MIME package, so this is slightly kludgy.
2206 @item gnus-uu-tmp-dir
2207 @vindex gnus-uu-tmp-dir
2208 Where gnus-uu does its work.
2210 @item gnus-uu-do-not-unpack-archives
2211 @vindex gnus-uu-do-not-unpack-archives
2212 Non-nil means that gnus-uu won't peek inside archives looking for files
2215 @item gnus-uu-view-and-save
2216 @vindex gnus-uu-view-and-save
2217 Non-nil means that the user will always be asked to save a file after
2220 @item gnus-uu-asynchronous
2221 @vindex gnus-uu-asynchronous
2222 Non-nil means that files will be viewed asynchronously. This can be
2223 useful if you're viewing long @file{.mod} files, for instance, which
2224 often takes several minutes. Note, however, that since gnus-uu doesn't
2225 ask, and if you are viewing an archive with lots of viewable files,
2226 you'll get them all up more or less at once, which can be confusing, to
2227 say the least. To get gnus-uu to ask you before viewing a file, set the
2228 @code{gnus-uu-ask-before-view} variable.
2230 @item gnus-uu-ask-before-view
2231 @vindex gnus-uu-ask-before-view
2232 Non-nil means that gnus-uu will ask you before viewing each file.
2234 @item gnus-uu-ignore-default-view-rules
2235 @vindex gnus-uu-ignore-default-view-rules
2236 Non-nil means that gnus-uu will ignore the default viewing rules.
2238 @item gnus-uu-ignore-default-archive-rules
2239 @vindex gnus-uu-ignore-default-archive-rules
2240 Non-nil means that gnus-uu will ignore the default archive unpacking
2243 @item gnus-uu-kill-carriage-return
2244 @vindex gnus-uu-kill-carriage-return
2245 Non-nil means that gnus-uu will strip all carriage returns from
2248 @item gnus-uu-unmark-articles-not-decoded
2249 @vindex gnus-uu-unmark-articles-not-decoded
2250 Non-nil means that gnus-uu will mark articles that were unsuccessfully
2253 @item gnus-uu-output-window-height
2254 @vindex gnus-uu-output-window-height
2255 This variable says how tall the output buffer window is to be when using
2256 interactive view mode.
2258 @item gnus-uu-correct-stripped-uucode
2259 @vindex gnus-uu-correct-stripped-uucode
2260 Non-nil means that gnus-uu will *try* to fix uuencoded files that have
2261 had traling spaces deleted.
2263 @item gnus-uu-use-interactive-view
2264 @vindex gnus-uu-use-interactive-view
2265 Non-nil means that gnus-uu will use interactive viewing mode.
2267 @item gnus-uu-view-with-metamail
2268 @vindex gnus-uu-view-with-metamail
2269 Non-nil means that gnus-uu will ignore the viewing commands defined by
2270 the rule variables and just fudge a MIME content type based on the file
2271 name. The result will be fed to metamail for viewing.
2273 @item gnus-uu-save-in-digest
2274 @vindex gnus-uu-save-in-digest
2275 Non-nil means that gnus-uu, when asked to save without decoding, will
2276 save in digests. If this variable is nil, gnus-uu will just save
2277 everything in a file without any embellishments. The digesting almost
2278 conforms to RFC1153 - no easy way to specify any meaningful volume and
2279 issue numbers were found, so I simply dropped them.
2281 @item gnus-uu-post-include-before-composing
2282 @vindex gnus-uu-post-include-before-composing
2283 Non-nil means that gnus-uu will ask for a file to encode before you
2284 compose the article. If this variable is t, you can either include an
2285 encoded file with @key{C-c C-i} or have one included for you when you
2288 @item gnus-uu-post-length
2289 @vindex gnus-uu-post-length
2290 Maximum length of an article. The encoded file will be split into how
2291 many articles it takes to post the entire file.
2293 @item gnus-uu-post-threaded
2294 @vindex gnus-uu-post-threaded
2295 Non-nil means that gnus-uu will post the encoded file in a thread. This
2296 may not be smart, as no other decoder I have seen are able to follow
2297 threads when collecting uuencoded articles. (Well, I have seen one
2298 package that does that - gnus-uu, but somehow, I don't think that
2299 counts...) Default is nil.
2301 @item gnus-uu-post-separate-description
2302 @vindex gnus-uu-post-separate-description
2303 Non-nil means that the description will be posted in a separate article.
2304 The first article will typically be numbered (0/x). If this variable is
2305 nil, the description the user enters will be included at the beginning
2306 of the first article, which will be numbered (1/x). Default is t.
2310 @node Various Article Stuff
2311 @section Various Article Stuff
2316 @findex gnus-summary-stop-page-breaking
2317 Remove page breaking from the current article
2318 (@code{gnus-summary-stop-page-breaking}).
2320 @kindex C-c C-r (Summary)
2321 @findex gnus-summary-caesar-message
2322 Do a Caesar rotate (rot13) on the article buffer
2323 (@code{gnus-summary-caesar-message}).
2326 @findex gnus-summary-show-article
2327 Select the current article (@code{gnus-summary-show-article}).
2330 @findex gnus-summary-toggle-header
2331 Toggle whether to display all headers in the article buffer
2332 (@code{gnus-summary-toggle-header}).
2334 @kindex M-t (Summary)
2335 @findex gnus-summary-toggle-mime
2336 Toggle whether to run the article through MIME before displaying
2337 (@code{gnus-summary-toggle-mime}).
2340 @findex gnus-summary-pipe-output
2341 Pipe the current article through a filter
2342 (@code{gnus-summary-pipe-output}).
2345 @node Summary Sorting
2346 @section Summary Sorting
2348 You can have the Summary buffer sorted in various ways, even though I
2349 can't really se why you'd want that.
2353 @kindex C-c C-s C-n (Summary)
2354 @findex gnus-summary-sort-by-number
2355 Sort by article number (@code{gnus-summary-sort-by-number}).
2357 @kindex C-c C-s C-a (Summary)
2358 @findex gnus-summary-sort-by-author
2359 Sort by author (@code{gnus-summary-sort-by-author}).
2361 @kindex C-c C-s C-s (Summary)
2362 @findex gnus-summary-sort-by-subject
2363 Sort by subject (@code{gnus-summary-sort-by-subject}).
2365 @kindex C-c C-s C-d (Summary)
2366 @findex gnus-summary-sort-by-date
2367 Sort by date (@code{gnus-summary-sort-by-date}).
2370 @node Finding the Parent
2371 @section Finding the Parent
2373 @findex gnus-summary-refer-parent-article
2375 If you'd like to read the parent of the current article, and it is not
2376 displayed in the article buffer, you might still be able to. That is, if
2377 the current group is fetched by NNTP, the parent hasn't expired and the
2378 References in the current article are not mangled, you can just press
2379 @kbd{^} (@code{gnus-summary-refer-parent-article}). If everything goes
2380 well, you'll get the parent.
2382 @findex gnus-summary-refer-article
2383 @kindex M-^ (Summary)
2384 You can also ask the NNTP server for an arbitrary article, no matter
2385 what newsgroup it belongs to. @kbd{M-^}
2386 (@code{gnus-summary-refer-article}) will ask you for a message-id, which
2387 is one of those long thingies that look something like
2388 @samp{<38o6up$6f2@@hymir.ifi.uio.no>}. You have to get it all exactly
2394 If a @dfn{kill file} for the current newsgroup exists, Gnus will read it
2395 just after having gotten the article headers from the server.
2397 The kill files are files that may contain, in general, any elisp
2398 functions. However, it is most common just to put functions that either
2399 delete or undelete articles based on their headers in those files -
2400 in short, killing articles. Hence the name.
2402 There are several commands reachable from the Summary buffer that
2403 inserts commands for killing articles based on the current article. You
2404 can, for instance, ask Gnus to kill all articles with a certain subject.
2406 If you get really irrirated with some annoying twit, you can kill the
2407 author. Note that the author won't literally be killed, unless, of
2408 course, he has an SCSI Gun Extension fitted to his machine.
2411 * Summary Kill Commands:: Adding simple kill commands to the kill file.
2412 * Kill Mode:: A mode for editing the kill file.
2413 * Kill Variables:: Customize your killing. (My, what terminology).
2416 One note: I have seen a few people confused about what killing an
2417 articles really does. Killing an article does not remove it from the
2418 news server. It does not inhibit other people from reading the
2419 article. It only means that you won't ever see that article, nothing
2420 more. To really remove an article from the news server, you have to send
2421 a cancel message, which you can't do if you haven't written the
2422 article. (Well, you can, but that's Not Nice.)
2424 @node Summary Kill Commands
2425 @subsection Summary Kill Commands
2429 @kindex C-c C-k C-s (Summary)
2430 @findex gnus-kill-file-kill-by-subject
2431 Kill all articles with the current subject
2432 (@code{gnus-kill-file-kill-by-subject}).
2434 @kindex C-c C-k C-a (Summary)
2435 @findex gnus-kill-file-kill-by-author
2436 Kill all articles from the current author
2437 (@code{gnus-kill-file-kill-by-author}).
2439 @kindex C-c C-k C-t (Summary)
2440 @findex gnus-kill-file-kill-by-thread
2441 Kill all articles in the current subthread
2442 (@code{gnus-kill-file-kill-by-thread}).
2444 @kindex C-c C-k C-o (Summary)
2445 @findex gnus-kill-file-kill-by-organization
2446 Kill all articles from the current organization
2447 (@code{gnus-kill-file-kill-by-organization}).
2449 @kindex C-c C-k C-x (Summary)
2450 @findex gnus-kill-file-kill-by-xref
2451 Kill all articles that have similar Xrefs to the current article
2452 (@code{gnus-kill-file-kill-by-xref}). This is one way to get rid of
2457 @subsection Kill Mode
2459 To enter either the global or local kill file, you can use the following
2460 keystrokes in the Summary buffer:
2464 @kindex M-k (Summary)
2465 @findex gnus-summary-edit-local-kill
2466 Edit the kill file for the current newsgroup
2467 (@code{gnus-summary-edit-local-kill}).
2469 @kindex M-K (Summary)
2470 @findex gnus-summary-edit-global-kill
2471 Edit the global kill file (@code{gnus-summary-edit-global-kill}).
2474 @node Kill Variables
2475 @subsection Kill Variables
2478 @item gnus-kill-killed
2479 @vindex gnus-kill-killed
2480 If this variable is nil, Gnus will never apply kill files to articles
2481 that have already been through the kill process. While may save you lots
2482 of time, it also means that if you apply a kill file to a newsgroup, and
2483 then change the kill file and want to run it over you newsgroup again to
2484 kill more articles, it won't work. You have to set this variable to t to
2486 @item gnus-apply-kill-hook
2487 @vindex gnus-apply-kill-hook
2488 This hook is called to do the actual article killing. This hook may do
2489 anything, of course, but it should call the @code{gnus-apply-kill-file}
2490 function, or some equivalent function, to do the killing.
2491 @item gnus-kill-files-directory
2492 @vindex gnus-kill-files-directory
2493 All kill files will be stored in this directory, which is initialized
2494 from the @samp{SAVEDIR} environment variable by default.
2495 @item gnus-kill-file-name
2496 @vindex gnus-kill-file-name
2497 This variable is a string that will be appended to newsgroup names to
2498 make a kill file name. The default is @samp{KILL}.
2501 @node Various Summary Stuff
2502 @section Various Summary Stuff
2507 @findex gnus-summary-expand-window
2508 This command will prompt you for a header field, a regular expression to
2509 be matched this field, and a command to be executed if the match is
2513 @findex gnus-summary-expand-window
2514 Delete all other windows (@code{gnus-summary-expand-window}).
2516 @kindex C-x C-s (Summary)
2517 @findex gnus-summary-reselect-current-group
2518 Exit this group, and then enter it again
2519 (@code{gnus-summary-reselect-current-group}).
2522 @findex gnus-version
2523 Display the Gnus version numbers (@code{gnus-version}).
2526 @findex gnus-summary-describe-briefly
2527 Give a very brief description of the most important Summary keystrokes
2528 (@code{gnus-summary-describe-briefly}).
2530 @kindex C-c C-i (Summary)
2531 @findex gnus-info-find-node
2532 Go to the Gnus info node (@code{gnus-info-find-node}).
2535 @vindex gnus-summary-prepare-hook
2536 @code{gnus-summary-prepare-hook} is called after the Summary buffer has
2537 been generated. You might use it to, for instance, hilight lines, modify
2538 the look, or anything else you feel like. I don't care.
2540 @node The Article Buffer
2541 @chapter The Article Buffer
2543 The articles are displayed in the Article buffer, of which there is only
2544 one. All the Summary buffer share the same Article buffer.
2547 * Hiding Headers:: Deciding what headers should be displayed.
2548 * Using Mime:: Pushing articles through MIME before reading them.
2549 * Customizing Articles:: Tailoring the look of the articles.
2550 * Article Keymap:: Keystrokes available in the Article buffer
2551 * Misc Article:: Other stuff
2554 @node Hiding Headers
2555 @section Hiding Headers
2557 The top section of each article is the @dfn{header}. (The rest is the
2558 @dfn{body}, but you may have guessed that already.)
2560 @vindex gnus-show-all-headers
2561 There is a lot of information in the header - the name of the person who
2562 wrote the article, the date and the subject of the article. That might
2563 be very useful, buf there's also lots of information most people do not
2564 want to see - what systems the article has passed through before
2565 reaching you, the message id, the references, etc. ad nauseum - and
2566 you'll probably want to get rid of some of those lines. If you want to
2567 keep all those lines in the Article buffer, you can set
2568 @code{gnus-show-all-headers} to t.
2570 Gnus provides you with two variables for sifting header lines:
2573 @item gnus-visible-headers
2574 @vindex gnus-visible-headers
2575 If this variable is non-nil, it should be a regular expression that says
2576 what header lines you wish to keep in the Article buffer. All header
2577 lines that does not match this variable will be hidden.
2579 For instance, if you only want to see the name of the person who wrote
2580 the article and the subject, you'd say:
2583 (setq gnus-visible-headers "^From:\\^Subject:")
2586 @item gnus-ignored-headers
2587 @vindex gnus-ignored-headers
2588 This variable is the reverse of @code{gnus-visible-headers}. If this
2589 variable is set (and @code{gnus-visible-headers} is nil), it should be a
2590 regular expression that matches all lines that you want to hide. All
2591 lines that does not match this variable will remain visible.
2593 For instance, if you just want to get rid of the references line and the
2594 xref line, you might say:
2597 (setq gnus-ignored-headers "^References:\\^Xref:")
2600 Note that if @code{gnus-visible-headers} is non-nil, this variable will
2604 @vindex gnus-sorted-header-list
2605 Gnus can also sort the headers for you. (It does this by default.) You
2606 can control the sorting by setting the @code{gnus-sorted-header-list}
2607 variable. It is a list of regular expressions that says in what order
2608 the header lines are to be displayed.
2610 For instance, if you want the name of the author of the article first,
2611 and then the subject, you might say something like:
2614 (setq gnus-sorted-header-list '("^From:" "^Subject:"))
2617 Any headers that are to remain visible, but are not listed in this
2618 variable, will be displayed after all the headers that are listed in
2624 Mime is a standard for waving your hands through the air, aimlessly,
2625 while people stand around yawning.
2627 MIME, however, is a standard for encoding your articles, aimlessly,
2628 while all newsreaders die of fear.
2630 MIME may specify what character set the article uses, the encoding of
2631 the characters, and it also makes it possible to embed pictures and
2632 other naughty stuff in innocent-looking articles.
2634 @vindex gnus-show-mime
2635 @vindex gnus-show-mime-method
2636 Gnus handles MIME by shoving the articles through
2637 @code{gnus-show-mime-method}, which is @code{metamail-buffer} by
2638 default. Set @code{gnus-show-mime} to t if you want to use MIME all the
2639 time; it might be best just use the toggling functions from the summary
2640 buffer to avoid getting nasty surprises (for instance, you enter the
2641 newsgroup @samp{alt.sing-a-long} and, before you know it, MIME has
2642 decoded the sounds file in the article and some horrible sing-a-long
2643 song comes streaming out out your speakers, and you can't find the
2644 volume button, because there isn't one, and people are starting to look
2645 at you, and you try to stop the program, but you can't, and you can't
2646 find the program to control the volume, and everybody else in the room
2647 suddenly decides to look at you disdainfully, and you'll feel rather
2650 Any similarity between real events and this info page is purely
2653 @node Customizing Articles
2654 @section Customizing Articles
2656 @vindex gnus-article-display-hook
2657 The @code{gnus-article-display-hook} is called after the article has
2658 been inserted into the Article buffer. It is meant to handle all
2659 treatment of the article before it is displayed. By default it contains
2660 @code{gnus-article-hide-headers}, which hides unwanted headers.
2662 @findex gnus-article-subcite
2663 @findex gnus-article-hide-signature
2664 @findex gnus-article-hide-citation
2665 Other useful functions you might add to this hook is
2666 @code{gnus-article-hide-citation} (which hides all cited text),
2667 @code{gnus-article-hide-signature} (which, umn, hides the signature) and
2668 @code{gnus-article-subcite} (which tries to clean up the mess supercite
2669 makes in The Hands Of The Mad.
2671 You can, of course, write your own functions. The functions are called
2672 in the Article buffer, and you can do anything you like, pretty
2673 much. There is no information that you have to keep in the buffer - you
2674 can change everything.
2676 @node Article Keymap
2677 @section Article Keymap
2679 Not many keystrokes are available in the Article buffer. You would,
2680 during normal reading, seldom put the point in that buffer. All the
2681 really useful functions are more readily available from the Summary
2686 @kindex SPACE (Article)
2687 @findex gnus-article-next-page
2688 Scroll forwards one page (@code{gnus-article-next-page}).
2690 @kindex DEL (Article)
2691 @findex gnus-article-prev-page
2692 Scroll backwards one page (@code{gnus-article-prev-page}).
2695 @findex gnus-article-refer-article
2696 If point is in the neighborhood of a message-id and you press @kbd{r},
2697 Gnus will try to get that article from the server. (Only available with
2698 nntp). (@code{gnus-article-refer-article}).
2701 @findex gnus-article-mail
2702 Send a reply to the address near point (@code{gnus-article-mail}).
2705 @findex gnus-article-mail-with-original
2706 Send a reply to the address near point and include the original article
2707 (@code{gnus-article-mail-with-original}).
2710 @findex gnus-article-show-summary
2711 Reconfigure the buffers so that the Summary buffer becomes visible
2712 (@code{gnus-article-show-summary}).
2715 @findex gnus-article-describe-briefly
2716 Give a very brief description of the available keystrokes
2717 (@code{gnus-article-describe-briefly}).
2723 @section Misc Article
2725 @vindex gnus-article-display-hook
2726 @vindex gnus-article-prepare-hook
2727 The @code{gnus-article-prepare-hook} is called right after the article
2728 has been inserted into the Article buffer. It is mainly intended for
2729 functions that do something depending on the contents; it should
2730 probably not be used for changing the contents of the Article
2731 buffer. Use the @code{gnus-article-display-hook} for that, which is
2732 called after this hook is called.
2734 @vindex gnus-article-mode-line-format
2735 @code{gnus-article-mode-line-format} is a format string along the same
2736 lines as @code{gnus-summary-mode-line-format}. It accepts exactly the
2737 same format specifications as that variable.
2739 @vindex gnus-break-pages
2740 The @code{gnus-break-pages} variable controls whether @dfn{page
2741 breaking} is to take place. If this variable is non-nil, the articles
2742 will be divided into pages whenever a @code{gnus-page-delimiter} appears
2743 in the article. If this variable is nil, paging will not be done.
2745 @vindex gnus-page-delimiter
2746 @code{gnus-page-delimiter} is @samp{^L} (linefeed) by default.
2752 * Interactive:: Making Gnus ask you many questions.
2753 * Windows Configuration:: Configuring the Gnus buffer windows.
2754 * Various Various:: Things that are really various.
2758 @section Interactive
2761 @item gnus-novice-user
2762 @vindex gnus-novice-user
2763 If this variable is non-nil, you are either a newcomer to the usenet
2764 world, or you are very cautious, which is a nice thing to be,
2765 really. You will be given questions of the type "Are you sure you want
2766 to do this?" before doing anything dangerous.
2767 @item gnus-expert-user
2768 @vindex gnus-expert-user
2769 If this variable is non-nil, you will never ever be asked any questions
2770 by Gnus. It will simply assume you know what your are doing, no matter
2772 @item gnus-interactive-catchup
2773 @vindex gnus-interactive-catchup
2774 Require confirmation before catching up a newsgroup if non-nil.
2775 @item gnus-interactive-post
2776 @vindex gnus-interactive-post
2777 If non-nil, the user will be prompted for a newsgroup name when posting
2779 @item gnus-interactive-exit
2780 @vindex gnus-interactive-exit
2781 Require confirmation before exiting Gnus.
2784 @node Windows Configuration
2785 @section Windows Configuration
2787 No, there's nothing here about X, so be quiet.
2790 @item gnus-use-full-window
2791 @vindex gnus-use-full-window
2792 If non-nil, Gnus will delete all other windows and occupy the entire
2793 Emacs screen by itself. It is t by default.
2794 @item gnus-window-configuration
2795 @vindex gnus-window-configuration
2796 This variable describes how much space each Gnus buffer should be given,
2797 compared to the other Gnus buffers. Here's an example:
2800 (setq gnus-window-configuration
2802 (newsgroups (1 0 0))
2803 (article (0 3 10))))
2806 This variable is a list of lists, where each of these small lists is on
2807 the form @var{(action (g s a))}. As you can see, there are three
2808 possible @var{action}s - @code{newsgroup} (which is what happens when
2809 you first start Gnus, or returns from the Summary buffer),
2810 @code{summary} (which is what happens when there are no unread articles
2811 in the newsgroup, and @code{article} (which is what happens when there
2812 is an unread article in the newsgroup).
2814 We see that in the first two actions, the respective buffers will fill
2815 the screen, and in the last, the Article buffer will take ten lines for
2816 each three the Summary buffer gets.
2818 @findex gnus-window-configuration-split
2819 This variable can also have a function as its value. In that case,
2820 whenever Gnus tries to configure the Gnus buffers, that function will be
2821 called with the @var{action} as its parameter. There is one pre-made
2822 function supplied, @code{gnus-window-configuration-split}, which may be
2823 suitable if you have a very wide Emacs window, and wants to have the
2824 Summary buffer and the Article buffer side by side. Here's the
2825 definition of this function, which you may use as a template for your
2829 (defun gnus-window-configuration-split (action)
2830 ;; The group buffer always exists, so it's nice to use
2831 ;; it as a starting point.
2832 (switch-to-buffer gnus-group-buffer t)
2833 (delete-other-windows)
2834 (split-window-horizontally)
2835 (cond ((or (eq action 'newsgroup) (eq action 'summary))
2836 (if (and (get-buffer gnus-summary-buffer)
2837 (buffer-name gnus-summary-buffer))
2838 (switch-to-buffer-other-window gnus-summary-buffer)))
2839 ((eq action 'article)
2840 (switch-to-buffer gnus-summary-buffer t)
2842 ;; Create and initialize the Article buffer if it doesn't
2844 (gnus-article-setup-buffer)
2845 (switch-to-buffer gnus-article-buffer t))))
2849 @node Various Various
2850 @section Various Various
2852 @vindex gnus-updated-mode-lines
2853 The @code{gnus-updated-mode-lines} variable is a list of buffers that
2854 should keep their mode lines updated. The list may contain the symbols
2855 `group', `article' and `summary'. If the corresponding symbol is
2856 present, Gnus will keep that mode line updated with information that may
2857 be pertinent. If this variable is nil, screen refresh may be quicker.
2860 @chapter Customization
2862 All variables are properly documented elsewhere in this manual. This
2863 section is designed to give general pointers on how to customize Gnus
2864 for some quite common situations.
2867 * Slow NNTP Connection:: You run a local Emacs and get the news elsewhere.
2868 * Slow Terminal Connection:: You run a remote Emacs.
2869 * Little Disk Space:: You feel that having large setup files is icky.
2870 * Slow Machine:: You feel like buying a faster machine.
2873 @node Slow NNTP Connection
2874 @section Slow NNTP Connection
2876 If you run Emacs on a machine locally, and get your news from a machine
2877 over some very thin strings, you want to cut down on the amount of data
2878 Gnus has to get from the NNTP server.
2881 @item gnus-read-active-file
2882 Set this to nil, which will inhibit Gnus from requesting the entire active
2883 file from the server. This file is often v. large. You also have to set
2884 @code{gnus-check-new-news} and @code{gnus-check-bogus-newsgroups} to nil
2885 to make sure that Gnus doesn't suddenly decide to fetch the active file
2886 anyway. Note that this will make it difficult for you to get hold of new
2888 @item nntp-xover-is-evil
2889 This one has to be nil. If not, grabbing article headers from the NNTP
2890 server will not be very fast. Not all NNTP servers support XOVER; Gnus
2891 will detect this by itself.
2894 @node Slow Terminal Connection
2895 @section Slow Terminal Connection
2897 Let's say you use your home computer for dialling up the system that
2898 runs Emacs and Gnus. If your modem is slow, you want to reduce the
2899 amount of data that is sent over the wires as much as possible.
2902 @item gnus-auto-center-summary
2903 Set this to nil to inhibit Gnus from recentering the Summary buffer all
2905 @item gnus-visible-headers
2906 Cut down on the headers that are included in the articles to the
2907 minimum. You can, in fact, make do without them altogether - most of the
2908 useful data is in the Summary buffer, anyway. Set this variable to
2909 @samp{""} or @samp{"^Date:"}, or whatever you feel you need.
2910 @item gnus-article-display-hook
2911 Set this hook to all the available hiding commands:
2913 (setq gnus-article-display-hook
2914 '(gnus-article-hide-headers gnus-article-hide-signature
2915 gnus-article-hide-citation))
2917 @item gnus-use-full-window
2918 By setting this to nil, you can make all the windows smaller. While this
2919 doesn't really cut down much generally, it means that you have to see
2920 smaller portions of articles before deciding that you didn't want to
2922 @item gnus-thread-hide-subtree
2923 If this is non-nil, all threads in the Summary buffer will be hidden
2925 @item gnus-updated-mode-lines
2926 If this is nil, Gnus will not put information in the buffer mode lines,
2927 which might save some time.
2930 @node Little Disk Space
2931 @section Little Disk Space
2933 The startup files can get rather large, so you may want to keep their
2934 sizes down a bit if you are running out of space.
2937 @item gnus-save-newsrc-file
2938 If this is nil, Gnus will never save @file{.newsrc} - it will only save
2939 @file{.newsrc.eld}. This means that you will not be able to use any
2940 other newsreaders than Gnus.
2941 @item gnus-save-killed-list
2942 If this is nil, Gnus will not save the list of dead newsgroups. That
2943 means that Gnus will not know whether newsgroups are new or old, which
2944 makes automatic handling of new newsgroups impossible. You should also
2945 set @code{gnus-check-new-newsgroups} and
2946 @code{gnus-check-bogus-newsgroups} to nil if you set this variable to
2951 @section Slow Machine
2953 If you have a slow machine, or are just really impatient, there are a
2954 few things you can do to make Gnus run faster.
2956 Set @code{gnus-read-active-file}, @code{gnus-check-new-newsgroups},
2957 @code{gnus-check-bogus-newsgroups} to nil to make startup faster.
2959 Set @code{gnus-show-threads}, @code{gnus-use-cross-reference} and
2960 @code{nntp-xover-is-evil} to nil to make entering and exiting the
2961 Summary buffer faster.
2963 Set @code{gnus-article-display-hook} to nil to make article processing a
2966 @node Troubleshooting
2967 @chapter Troubleshooting
2969 @node Reporting Bugs
2970 @chapter Reporting Bugs
2988 @c outline-regexp: "@chap\\|@\\(sub\\)*section\\|@appendix \\|@appendix\\(sub\\)*sec\\|\^L"